diff --git a/.github/actions/git-check-release/action-build/index.js b/.github/actions/git-check-release/action-build/index.js deleted file mode 100644 index 093cb334c79..00000000000 --- a/.github/actions/git-check-release/action-build/index.js +++ /dev/null @@ -1,34993 +0,0 @@ -/******/ (() => { - // webpackBootstrap - /******/ var __webpack_modules__ = { - /***/ 7351: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.issue = exports.issueCommand = void 0; - const os = __importStar(__nccwpck_require__(2037)); - const utils_1 = __nccwpck_require__(5278); - /** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ - function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); - } - exports.issueCommand = issueCommand; - function issue(name, message = "") { - issueCommand(name, {}, message); - } - exports.issue = issue; - const CMD_STRING = "::"; - class Command { - constructor(command, properties, message) { - if (!command) { - command = "missing.command"; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += " "; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } else { - cmdStr += ","; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } - } - function escapeData(s) { - return utils_1 - .toCommandValue(s) - .replace(/%/g, "%25") - .replace(/\r/g, "%0D") - .replace(/\n/g, "%0A"); - } - function escapeProperty(s) { - return utils_1 - .toCommandValue(s) - .replace(/%/g, "%25") - .replace(/\r/g, "%0D") - .replace(/\n/g, "%0A") - .replace(/:/g, "%3A") - .replace(/,/g, "%2C"); - } - //# sourceMappingURL=command.js.map - - /***/ - }, - - /***/ 2186: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getIDToken = - exports.getState = - exports.saveState = - exports.group = - exports.endGroup = - exports.startGroup = - exports.info = - exports.notice = - exports.warning = - exports.error = - exports.debug = - exports.isDebug = - exports.setFailed = - exports.setCommandEcho = - exports.setOutput = - exports.getBooleanInput = - exports.getMultilineInput = - exports.getInput = - exports.addPath = - exports.setSecret = - exports.exportVariable = - exports.ExitCode = - void 0; - const command_1 = __nccwpck_require__(7351); - const file_command_1 = __nccwpck_require__(717); - const utils_1 = __nccwpck_require__(5278); - const os = __importStar(__nccwpck_require__(2037)); - const path = __importStar(__nccwpck_require__(1017)); - const oidc_utils_1 = __nccwpck_require__(8041); - /** - * The code to exit an action - */ - var ExitCode; - (function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[(ExitCode["Success"] = 0)] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[(ExitCode["Failure"] = 1)] = "Failure"; - })((ExitCode = exports.ExitCode || (exports.ExitCode = {}))); - //----------------------------------------------------------------------- - // Variables - //----------------------------------------------------------------------- - /** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ - // oxlint-disable-next-line @typescript-eslint/no-explicit-any - function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env["GITHUB_ENV"] || ""; - if (filePath) { - return file_command_1.issueFileCommand( - "ENV", - file_command_1.prepareKeyValueMessage(name, val), - ); - } - command_1.issueCommand("set-env", { name }, convertedVal); - } - exports.exportVariable = exportVariable; - /** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ - function setSecret(secret) { - command_1.issueCommand("add-mask", {}, secret); - } - exports.setSecret = setSecret; - /** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ - function addPath(inputPath) { - const filePath = process.env["GITHUB_PATH"] || ""; - if (filePath) { - file_command_1.issueFileCommand("PATH", inputPath); - } else { - command_1.issueCommand("add-path", {}, inputPath); - } - process.env["PATH"] = `${inputPath}${path.delimiter}${process.env["PATH"]}`; - } - exports.addPath = addPath; - /** - * Gets the value of an input. - * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. - * Returns an empty string if the value is not defined. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ - function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - if (options && options.trimWhitespace === false) { - return val; - } - return val.trim(); - } - exports.getInput = getInput; - /** - * Gets the values of an multiline input. Each value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string[] - * - */ - function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split("\n") - .filter((x) => x !== ""); - if (options && options.trimWhitespace === false) { - return inputs; - } - return inputs.map((input) => input.trim()); - } - exports.getMultilineInput = getMultilineInput; - /** - * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. - * Support boolean input list: `true | True | TRUE | false | False | FALSE` . - * The return value is also in boolean type. - * ref: https://yaml.org/spec/1.2/spec.html#id2804923 - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns boolean - */ - function getBooleanInput(name, options) { - const trueValue = ["true", "True", "TRUE"]; - const falseValue = ["false", "False", "FALSE"]; - const val = getInput(name, options); - if (trueValue.includes(val)) return true; - if (falseValue.includes(val)) return false; - throw new TypeError( - `Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + - `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``, - ); - } - exports.getBooleanInput = getBooleanInput; - /** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ - // oxlint-disable-next-line @typescript-eslint/no-explicit-any - function setOutput(name, value) { - const filePath = process.env["GITHUB_OUTPUT"] || ""; - if (filePath) { - return file_command_1.issueFileCommand( - "OUTPUT", - file_command_1.prepareKeyValueMessage(name, value), - ); - } - process.stdout.write(os.EOL); - command_1.issueCommand("set-output", { name }, utils_1.toCommandValue(value)); - } - exports.setOutput = setOutput; - /** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ - function setCommandEcho(enabled) { - command_1.issue("echo", enabled ? "on" : "off"); - } - exports.setCommandEcho = setCommandEcho; - //----------------------------------------------------------------------- - // Results - //----------------------------------------------------------------------- - /** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ - function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); - } - exports.setFailed = setFailed; - //----------------------------------------------------------------------- - // Logging Commands - //----------------------------------------------------------------------- - /** - * Gets whether Actions Step Debug is on or not - */ - function isDebug() { - return process.env["RUNNER_DEBUG"] === "1"; - } - exports.isDebug = isDebug; - /** - * Writes debug message to user log - * @param message debug message - */ - function debug(message) { - command_1.issueCommand("debug", {}, message); - } - exports.debug = debug; - /** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ - function error(message, properties = {}) { - command_1.issueCommand( - "error", - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message, - ); - } - exports.error = error; - /** - * Adds a warning issue - * @param message warning issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ - function warning(message, properties = {}) { - command_1.issueCommand( - "warning", - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message, - ); - } - exports.warning = warning; - /** - * Adds a notice issue - * @param message notice issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ - function notice(message, properties = {}) { - command_1.issueCommand( - "notice", - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message, - ); - } - exports.notice = notice; - /** - * Writes info to log with console.log. - * @param message info message - */ - function info(message) { - process.stdout.write(message + os.EOL); - } - exports.info = info; - /** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ - function startGroup(name) { - command_1.issue("group", name); - } - exports.startGroup = startGroup; - /** - * End an output group. - */ - function endGroup() { - command_1.issue("endgroup"); - } - exports.endGroup = endGroup; - /** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ - function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } finally { - endGroup(); - } - return result; - }); - } - exports.group = group; - //----------------------------------------------------------------------- - // Wrapper action state - //----------------------------------------------------------------------- - /** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ - // oxlint-disable-next-line @typescript-eslint/no-explicit-any - function saveState(name, value) { - const filePath = process.env["GITHUB_STATE"] || ""; - if (filePath) { - return file_command_1.issueFileCommand( - "STATE", - file_command_1.prepareKeyValueMessage(name, value), - ); - } - command_1.issueCommand("save-state", { name }, utils_1.toCommandValue(value)); - } - exports.saveState = saveState; - /** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ - function getState(name) { - return process.env[`STATE_${name}`] || ""; - } - exports.getState = getState; - function getIDToken(aud) { - return __awaiter(this, void 0, void 0, function* () { - return yield oidc_utils_1.OidcClient.getIDToken(aud); - }); - } - exports.getIDToken = getIDToken; - /** - * Summary exports - */ - var summary_1 = __nccwpck_require__(1327); - Object.defineProperty(exports, "summary", { - enumerable: true, - get: function () { - return summary_1.summary; - }, - }); - /** - * @deprecated use core.summary - */ - var summary_2 = __nccwpck_require__(1327); - Object.defineProperty(exports, "markdownSummary", { - enumerable: true, - get: function () { - return summary_2.markdownSummary; - }, - }); - /** - * Path exports - */ - var path_utils_1 = __nccwpck_require__(2981); - Object.defineProperty(exports, "toPosixPath", { - enumerable: true, - get: function () { - return path_utils_1.toPosixPath; - }, - }); - Object.defineProperty(exports, "toWin32Path", { - enumerable: true, - get: function () { - return path_utils_1.toWin32Path; - }, - }); - Object.defineProperty(exports, "toPlatformPath", { - enumerable: true, - get: function () { - return path_utils_1.toPlatformPath; - }, - }); - //# sourceMappingURL=core.js.map - - /***/ - }, - - /***/ 717: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - // For internal use, subject to change. - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; - // We use any as a valid input type - /* eslint-disable @typescript-eslint/no-explicit-any */ - const fs = __importStar(__nccwpck_require__(7147)); - const os = __importStar(__nccwpck_require__(2037)); - const uuid_1 = __nccwpck_require__(5840); - const utils_1 = __nccwpck_require__(5278); - function issueFileCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: "utf8", - }); - } - exports.issueFileCommand = issueFileCommand; - function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - const convertedValue = utils_1.toCommandValue(value); - // These should realistically never happen, but just in case someone finds a - // way to exploit uuid generation let's not allow keys or values that contain - // the delimiter. - if (key.includes(delimiter)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); - } - if (convertedValue.includes(delimiter)) { - throw new Error( - `Unexpected input: value should not contain the delimiter "${delimiter}"`, - ); - } - return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; - } - exports.prepareKeyValueMessage = prepareKeyValueMessage; - //# sourceMappingURL=file-command.js.map - - /***/ - }, - - /***/ 8041: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.OidcClient = void 0; - const http_client_1 = __nccwpck_require__(6255); - const auth_1 = __nccwpck_require__(5526); - const core_1 = __nccwpck_require__(2186); - class OidcClient { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry, - }; - return new http_client_1.HttpClient( - "actions/oidc-client", - [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], - requestOptions, - ); - } - static getRequestToken() { - const token = process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]; - if (!token) { - throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable"); - } - return token; - } - static getIDTokenUrl() { - const runtimeUrl = process.env["ACTIONS_ID_TOKEN_REQUEST_URL"]; - if (!runtimeUrl) { - throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable"); - } - return runtimeUrl; - } - static getCall(id_token_url) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const httpclient = OidcClient.createHttpClient(); - const res = yield httpclient.getJson(id_token_url).catch((error) => { - throw new Error(`Failed to get ID Token. \n - Error Code : ${error.statusCode}\n - Error Message: ${error.message}`); - }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error("Response json body do not have ID Token field"); - } - return id_token; - }); - } - static getIDToken(audience) { - return __awaiter(this, void 0, void 0, function* () { - try { - // New ID Token is requested from action service - let id_token_url = OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; - } - core_1.debug(`ID token url is ${id_token_url}`); - const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); - return id_token; - } catch (error) { - throw new Error(`Error message: ${error.message}`); - } - }); - } - } - exports.OidcClient = OidcClient; - //# sourceMappingURL=oidc-utils.js.map - - /***/ - }, - - /***/ 2981: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; - const path = __importStar(__nccwpck_require__(1017)); - /** - * toPosixPath converts the given path to the posix form. On Windows, \\ will be - * replaced with /. - * - * @param pth. Path to transform. - * @return string Posix path. - */ - function toPosixPath(pth) { - return pth.replace(/[\\]/g, "/"); - } - exports.toPosixPath = toPosixPath; - /** - * toWin32Path converts the given path to the win32 form. On Linux, / will be - * replaced with \\. - * - * @param pth. Path to transform. - * @return string Win32 path. - */ - function toWin32Path(pth) { - return pth.replace(/[/]/g, "\\"); - } - exports.toWin32Path = toWin32Path; - /** - * toPlatformPath converts the given path to a platform-specific path. It does - * this by replacing instances of / and \ with the platform-specific path - * separator. - * - * @param pth The path to platformize. - * @return string The platform-specific path. - */ - function toPlatformPath(pth) { - return pth.replace(/[/\\]/g, path.sep); - } - exports.toPlatformPath = toPlatformPath; - //# sourceMappingURL=path-utils.js.map - - /***/ - }, - - /***/ 1327: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.summary = - exports.markdownSummary = - exports.SUMMARY_DOCS_URL = - exports.SUMMARY_ENV_VAR = - void 0; - const os_1 = __nccwpck_require__(2037); - const fs_1 = __nccwpck_require__(7147); - const { access, appendFile, writeFile } = fs_1.promises; - exports.SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; - exports.SUMMARY_DOCS_URL = - "https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary"; - class Summary { - constructor() { - this._buffer = ""; - } - /** - * Finds the summary file path from the environment, rejects if env var is not found or file does not exist - * Also checks r/w permissions. - * - * @returns step summary file path - */ - filePath() { - return __awaiter(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; - } - const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error( - `Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`, - ); - } - try { - yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); - } catch (_a) { - throw new Error( - `Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`, - ); - } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - /** - * Wraps content in an HTML tag, adding any HTML attributes - * - * @param {string} tag HTML tag to wrap - * @param {string | null} content content within the tag - * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add - * - * @returns {string} content wrapped in HTML element - */ - wrap(tag, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs) - .map(([key, value]) => ` ${key}="${value}"`) - .join(""); - if (!content) { - return `<${tag}${htmlAttrs}>`; - } - return `<${tag}${htmlAttrs}>${content}`; - } - /** - * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. - * - * @param {SummaryWriteOptions} [options] (optional) options for write operation - * - * @returns {Promise} summary instance - */ - write(options) { - return __awaiter(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 - ? void 0 - : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: "utf8" }); - return this.emptyBuffer(); - }); - } - /** - * Clears the summary buffer and wipes the summary file - * - * @returns {Summary} summary instance - */ - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - /** - * Returns the current summary buffer as a string - * - * @returns {string} string of summary buffer - */ - stringify() { - return this._buffer; - } - /** - * If the summary buffer is empty - * - * @returns {boolen} true if the buffer is empty - */ - isEmptyBuffer() { - return this._buffer.length === 0; - } - /** - * Resets the summary buffer without writing to summary file - * - * @returns {Summary} summary instance - */ - emptyBuffer() { - this._buffer = ""; - return this; - } - /** - * Adds raw text to the summary buffer - * - * @param {string} text content to add - * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) - * - * @returns {Summary} summary instance - */ - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - /** - * Adds the operating system-specific end-of-line marker to the buffer - * - * @returns {Summary} summary instance - */ - addEOL() { - return this.addRaw(os_1.EOL); - } - /** - * Adds an HTML codeblock to the summary buffer - * - * @param {string} code content to render within fenced code block - * @param {string} lang (optional) language to syntax highlight code - * - * @returns {Summary} summary instance - */ - addCodeBlock(code, lang) { - const attrs = Object.assign({}, lang && { lang }); - const element = this.wrap("pre", this.wrap("code", code), attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML list to the summary buffer - * - * @param {string[]} items list of items to render - * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) - * - * @returns {Summary} summary instance - */ - addList(items, ordered = false) { - const tag = ordered ? "ol" : "ul"; - const listItems = items.map((item) => this.wrap("li", item)).join(""); - const element = this.wrap(tag, listItems); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML table to the summary buffer - * - * @param {SummaryTableCell[]} rows table rows - * - * @returns {Summary} summary instance - */ - addTable(rows) { - const tableBody = rows - .map((row) => { - const cells = row - .map((cell) => { - if (typeof cell === "string") { - return this.wrap("td", cell); - } - const { header, data, colspan, rowspan } = cell; - const tag = header ? "th" : "td"; - const attrs = Object.assign( - Object.assign({}, colspan && { colspan }), - rowspan && { rowspan }, - ); - return this.wrap(tag, data, attrs); - }) - .join(""); - return this.wrap("tr", cells); - }) - .join(""); - const element = this.wrap("table", tableBody); - return this.addRaw(element).addEOL(); - } - /** - * Adds a collapsable HTML details element to the summary buffer - * - * @param {string} label text for the closed state - * @param {string} content collapsable content - * - * @returns {Summary} summary instance - */ - addDetails(label, content) { - const element = this.wrap("details", this.wrap("summary", label) + content); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML image tag to the summary buffer - * - * @param {string} src path to the image you to embed - * @param {string} alt text description of the image - * @param {SummaryImageOptions} options (optional) addition image attributes - * - * @returns {Summary} summary instance - */ - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); - const element = this.wrap("img", null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML section heading element - * - * @param {string} text heading text - * @param {number | string} [level=1] (optional) the heading level, default: 1 - * - * @returns {Summary} summary instance - */ - addHeading(text, level) { - const tag = `h${level}`; - const allowedTag = ["h1", "h2", "h3", "h4", "h5", "h6"].includes(tag) ? tag : "h1"; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML thematic break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addSeparator() { - const element = this.wrap("hr", null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML line break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addBreak() { - const element = this.wrap("br", null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML blockquote to the summary buffer - * - * @param {string} text quote text - * @param {string} cite (optional) citation url - * - * @returns {Summary} summary instance - */ - addQuote(text, cite) { - const attrs = Object.assign({}, cite && { cite }); - const element = this.wrap("blockquote", text, attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML anchor tag to the summary buffer - * - * @param {string} text link text/content - * @param {string} href hyperlink - * - * @returns {Summary} summary instance - */ - addLink(text, href) { - const element = this.wrap("a", text, { href }); - return this.addRaw(element).addEOL(); - } - } - const _summary = new Summary(); - /** - * @deprecated use `core.summary` - */ - exports.markdownSummary = _summary; - exports.summary = _summary; - //# sourceMappingURL=summary.js.map - - /***/ - }, - - /***/ 5278: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - // We use any as a valid input type - /* eslint-disable @typescript-eslint/no-explicit-any */ - Object.defineProperty(exports, "__esModule", { value: true }); - exports.toCommandProperties = exports.toCommandValue = void 0; - /** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ - function toCommandValue(input) { - if (input === null || input === undefined) { - return ""; - } else if (typeof input === "string" || input instanceof String) { - return input; - } - return JSON.stringify(input); - } - exports.toCommandValue = toCommandValue; - /** - * - * @param annotationProperties - * @returns The command properties to send with the actual annotation command - * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 - */ - function toCommandProperties(annotationProperties) { - if (!Object.keys(annotationProperties).length) { - return {}; - } - return { - title: annotationProperties.title, - file: annotationProperties.file, - line: annotationProperties.startLine, - endLine: annotationProperties.endLine, - col: annotationProperties.startColumn, - endColumn: annotationProperties.endColumn, - }; - } - exports.toCommandProperties = toCommandProperties; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 4087: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Context = void 0; - const fs_1 = __nccwpck_require__(7147); - const os_1 = __nccwpck_require__(2037); - class Context { - /** - * Hydrate the context from the environment - */ - constructor() { - var _a, _b, _c; - this.payload = {}; - if (process.env.GITHUB_EVENT_PATH) { - if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) { - this.payload = JSON.parse( - (0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: "utf8" }), - ); - } else { - const path = process.env.GITHUB_EVENT_PATH; - process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); - } - } - this.eventName = process.env.GITHUB_EVENT_NAME; - this.sha = process.env.GITHUB_SHA; - this.ref = process.env.GITHUB_REF; - this.workflow = process.env.GITHUB_WORKFLOW; - this.action = process.env.GITHUB_ACTION; - this.actor = process.env.GITHUB_ACTOR; - this.job = process.env.GITHUB_JOB; - this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); - this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); - this.apiUrl = - (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 - ? _a - : `https://api.github.com`; - this.serverUrl = - (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 - ? _b - : `https://github.com`; - this.graphqlUrl = - (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 - ? _c - : `https://api.github.com/graphql`; - } - get issue() { - const payload = this.payload; - return Object.assign(Object.assign({}, this.repo), { - number: (payload.issue || payload.pull_request || payload).number, - }); - } - get repo() { - if (process.env.GITHUB_REPOSITORY) { - const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); - return { owner, repo }; - } - if (this.payload.repository) { - return { - owner: this.payload.repository.owner.login, - repo: this.payload.repository.name, - }; - } - throw new Error( - "context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'", - ); - } - } - exports.Context = Context; - //# sourceMappingURL=context.js.map - - /***/ - }, - - /***/ 5438: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getOctokit = exports.context = void 0; - const Context = __importStar(__nccwpck_require__(4087)); - const utils_1 = __nccwpck_require__(3030); - exports.context = new Context.Context(); - /** - * Returns a hydrated octokit ready to use for GitHub Actions - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ - function getOctokit(token, options, ...additionalPlugins) { - const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); - return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options)); - } - exports.getOctokit = getOctokit; - //# sourceMappingURL=github.js.map - - /***/ - }, - - /***/ 7914: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getApiBaseUrl = - exports.getProxyFetch = - exports.getProxyAgentDispatcher = - exports.getProxyAgent = - exports.getAuthString = - void 0; - const httpClient = __importStar(__nccwpck_require__(6255)); - const undici_1 = __nccwpck_require__(1773); - function getAuthString(token, options) { - if (!token && !options.auth) { - throw new Error("Parameter token or opts.auth is required"); - } else if (token && options.auth) { - throw new Error("Parameters token and opts.auth may not both be specified"); - } - return typeof options.auth === "string" ? options.auth : `token ${token}`; - } - exports.getAuthString = getAuthString; - function getProxyAgent(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgent(destinationUrl); - } - exports.getProxyAgent = getProxyAgent; - function getProxyAgentDispatcher(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgentDispatcher(destinationUrl); - } - exports.getProxyAgentDispatcher = getProxyAgentDispatcher; - function getProxyFetch(destinationUrl) { - const httpDispatcher = getProxyAgentDispatcher(destinationUrl); - const proxyFetch = (url, opts) => - __awaiter(this, void 0, void 0, function* () { - return (0, undici_1.fetch)( - url, - Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }), - ); - }); - return proxyFetch; - } - exports.getProxyFetch = getProxyFetch; - function getApiBaseUrl() { - return process.env["GITHUB_API_URL"] || "https://api.github.com"; - } - exports.getApiBaseUrl = getApiBaseUrl; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 3030: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; - const Context = __importStar(__nccwpck_require__(4087)); - const Utils = __importStar(__nccwpck_require__(7914)); - // octokit + plugins - const core_1 = __nccwpck_require__(6762); - const plugin_rest_endpoint_methods_1 = __nccwpck_require__(3044); - const plugin_paginate_rest_1 = __nccwpck_require__(4193); - exports.context = new Context.Context(); - const baseUrl = Utils.getApiBaseUrl(); - exports.defaults = { - baseUrl, - request: { - agent: Utils.getProxyAgent(baseUrl), - fetch: Utils.getProxyFetch(baseUrl), - }, - }; - exports.GitHub = core_1.Octokit.plugin( - plugin_rest_endpoint_methods_1.restEndpointMethods, - plugin_paginate_rest_1.paginateRest, - ).defaults(exports.defaults); - /** - * Convience function to correctly format Octokit Options to pass into the constructor. - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ - function getOctokitOptions(token, options) { - const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller - // Auth - const auth = Utils.getAuthString(token, opts); - if (auth) { - opts.auth = auth; - } - return opts; - } - exports.getOctokitOptions = getOctokitOptions; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 5526: /***/ function (__unused_webpack_module, exports) { - "use strict"; - - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.PersonalAccessTokenCredentialHandler = - exports.BearerCredentialHandler = - exports.BasicCredentialHandler = - void 0; - class BasicCredentialHandler { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - if (!options.headers) { - throw Error("The request has no headers"); - } - options.headers["Authorization"] = `Basic ${Buffer.from( - `${this.username}:${this.password}`, - ).toString("base64")}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error("not implemented"); - }); - } - } - exports.BasicCredentialHandler = BasicCredentialHandler; - class BearerCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error("The request has no headers"); - } - options.headers["Authorization"] = `Bearer ${this.token}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error("not implemented"); - }); - } - } - exports.BearerCredentialHandler = BearerCredentialHandler; - class PersonalAccessTokenCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error("The request has no headers"); - } - options.headers["Authorization"] = `Basic ${Buffer.from(`PAT:${this.token}`).toString( - "base64", - )}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error("not implemented"); - }); - } - } - exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; - //# sourceMappingURL=auth.js.map - - /***/ - }, - - /***/ 6255: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - /* eslint-disable @typescript-eslint/no-explicit-any */ - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.HttpClient = - exports.isHttps = - exports.HttpClientResponse = - exports.HttpClientError = - exports.getProxyUrl = - exports.MediaTypes = - exports.Headers = - exports.HttpCodes = - void 0; - const http = __importStar(__nccwpck_require__(3685)); - const https = __importStar(__nccwpck_require__(5687)); - const pm = __importStar(__nccwpck_require__(9835)); - const tunnel = __importStar(__nccwpck_require__(4294)); - const undici_1 = __nccwpck_require__(1773); - var HttpCodes; - (function (HttpCodes) { - HttpCodes[(HttpCodes["OK"] = 200)] = "OK"; - HttpCodes[(HttpCodes["MultipleChoices"] = 300)] = "MultipleChoices"; - HttpCodes[(HttpCodes["MovedPermanently"] = 301)] = "MovedPermanently"; - HttpCodes[(HttpCodes["ResourceMoved"] = 302)] = "ResourceMoved"; - HttpCodes[(HttpCodes["SeeOther"] = 303)] = "SeeOther"; - HttpCodes[(HttpCodes["NotModified"] = 304)] = "NotModified"; - HttpCodes[(HttpCodes["UseProxy"] = 305)] = "UseProxy"; - HttpCodes[(HttpCodes["SwitchProxy"] = 306)] = "SwitchProxy"; - HttpCodes[(HttpCodes["TemporaryRedirect"] = 307)] = "TemporaryRedirect"; - HttpCodes[(HttpCodes["PermanentRedirect"] = 308)] = "PermanentRedirect"; - HttpCodes[(HttpCodes["BadRequest"] = 400)] = "BadRequest"; - HttpCodes[(HttpCodes["Unauthorized"] = 401)] = "Unauthorized"; - HttpCodes[(HttpCodes["PaymentRequired"] = 402)] = "PaymentRequired"; - HttpCodes[(HttpCodes["Forbidden"] = 403)] = "Forbidden"; - HttpCodes[(HttpCodes["NotFound"] = 404)] = "NotFound"; - HttpCodes[(HttpCodes["MethodNotAllowed"] = 405)] = "MethodNotAllowed"; - HttpCodes[(HttpCodes["NotAcceptable"] = 406)] = "NotAcceptable"; - HttpCodes[(HttpCodes["ProxyAuthenticationRequired"] = 407)] = "ProxyAuthenticationRequired"; - HttpCodes[(HttpCodes["RequestTimeout"] = 408)] = "RequestTimeout"; - HttpCodes[(HttpCodes["Conflict"] = 409)] = "Conflict"; - HttpCodes[(HttpCodes["Gone"] = 410)] = "Gone"; - HttpCodes[(HttpCodes["TooManyRequests"] = 429)] = "TooManyRequests"; - HttpCodes[(HttpCodes["InternalServerError"] = 500)] = "InternalServerError"; - HttpCodes[(HttpCodes["NotImplemented"] = 501)] = "NotImplemented"; - HttpCodes[(HttpCodes["BadGateway"] = 502)] = "BadGateway"; - HttpCodes[(HttpCodes["ServiceUnavailable"] = 503)] = "ServiceUnavailable"; - HttpCodes[(HttpCodes["GatewayTimeout"] = 504)] = "GatewayTimeout"; - })(HttpCodes || (exports.HttpCodes = HttpCodes = {})); - var Headers; - (function (Headers) { - Headers["Accept"] = "accept"; - Headers["ContentType"] = "content-type"; - })(Headers || (exports.Headers = Headers = {})); - var MediaTypes; - (function (MediaTypes) { - MediaTypes["ApplicationJson"] = "application/json"; - })(MediaTypes || (exports.MediaTypes = MediaTypes = {})); - /** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ""; - } - exports.getProxyUrl = getProxyUrl; - const HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect, - ]; - const HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout, - ]; - const RetryableHttpVerbs = ["OPTIONS", "GET", "DELETE", "HEAD"]; - const ExponentialBackoffCeiling = 10; - const ExponentialBackoffTimeSlice = 5; - class HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = "HttpClientError"; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); - } - } - exports.HttpClientError = HttpClientError; - class HttpClientResponse { - constructor(message) { - this.message = message; - } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => - __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on("data", (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on("end", () => { - resolve(output.toString()); - }); - }), - ); - }); - } - readBodyBuffer() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => - __awaiter(this, void 0, void 0, function* () { - const chunks = []; - this.message.on("data", (chunk) => { - chunks.push(chunk); - }); - this.message.on("end", () => { - resolve(Buffer.concat(chunks)); - }); - }), - ); - }); - } - } - exports.HttpClientResponse = HttpClientResponse; - function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === "https:"; - } - exports.isHttps = isHttps; - class HttpClient { - constructor(userAgent, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } - } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("OPTIONS", requestUrl, null, additionalHeaders || {}); - }); - } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("GET", requestUrl, null, additionalHeaders || {}); - }); - } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("DELETE", requestUrl, null, additionalHeaders || {}); - }); - } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("POST", requestUrl, data, additionalHeaders || {}); - }); - } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("PATCH", requestUrl, data, additionalHeaders || {}); - }); - } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("PUT", requestUrl, data, additionalHeaders || {}); - }); - } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("HEAD", requestUrl, null, additionalHeaders || {}); - }); - } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); - } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson, - ); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson, - ); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson, - ); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error("Client has already been disposed."); - } - const parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - // Only perform retries on reads since writes may not be idempotent. - const maxTries = - this._allowRetries && RetryableHttpVerbs.includes(verb) - ? this._maxRetries + 1 - : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info, data); - // Check if it's an authentication challenge - if ( - response && - response.message && - response.message.statusCode === HttpCodes.Unauthorized - ) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } else { - // We have received an unauthorized response but have no handlers to handle it. - // Let the response return to the caller. - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while ( - response.message.statusCode && - HttpRedirectCodes.includes(response.message.statusCode) && - this._allowRedirects && - redirectsRemaining > 0 - ) { - const redirectUrl = response.message.headers["location"]; - if (!redirectUrl) { - // if there's no location to redirect to, we won't - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if ( - parsedUrl.protocol === "https:" && - parsedUrl.protocol !== parsedRedirectUrl.protocol && - !this._allowRedirectDowngrade - ) { - throw new Error( - "Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.", - ); - } - // we need to finish reading the response before reassigning response - // which will leak the open socket. - yield response.readBody(); - // strip authorization header if redirected to a different hostname - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - // header names are case insensitive - if (header.toLowerCase() === "authorization") { - delete headers[header]; - } - } - } - // let's make the request with the new redirectUrl - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; - } - if ( - !response.message.statusCode || - !HttpResponseRetryCodes.includes(response.message.statusCode) - ) { - // If not a retry code, return immediately instead of retrying - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); - } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; - } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } else if (!res) { - // If `err` is not passed, then `res` must be passed. - reject(new Error("Unknown error")); - } else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); - } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info, data, onResult) { - if (typeof data === "string") { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8"); - } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - } - const req = info.httpModule.request(info.options, (msg) => { - const res = new HttpClientResponse(msg); - handleResult(undefined, res); - }); - let socket; - req.on("socket", (sock) => { - socket = sock; - }); - // If we ever get disconnected, we want the socket to timeout eventually - req.setTimeout(this._socketTimeout || 3 * 60000, () => { - if (socket) { - socket.end(); - } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on("error", function (err) { - // err has statusCode property - // res should have headers - handleResult(err); - }); - if (data && typeof data === "string") { - req.write(data, "utf8"); - } - if (data && typeof data !== "string") { - data.on("close", function () { - req.end(); - }); - data.pipe(req); - } else { - req.end(); - } - } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - getAgentDispatcher(serverUrl) { - const parsedUrl = new URL(serverUrl); - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (!useProxy) { - return; - } - return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === "https:"; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; - info.options.path = (info.parsedUrl.pathname || "") + (info.parsedUrl.search || ""); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers["user-agent"] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - // gives handlers an opportunity to participate - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); - } - } - return info; - } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign( - {}, - lowercaseKeys(this.requestOptions.headers), - lowercaseKeys(headers || {}), - ); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - // if agent is already assigned use that agent. - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === "https:"; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign( - Object.assign( - {}, - (proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`, - }, - ), - { host: proxyUrl.hostname, port: proxyUrl.port }, - ), - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === "https:"; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false, - }); - } - return agent; - } - _getProxyAgentDispatcher(parsedUrl, proxyUrl) { - let proxyAgent; - if (this._keepAlive) { - proxyAgent = this._proxyAgentDispatcher; - } - // if agent is already assigned use that agent. - if (proxyAgent) { - return proxyAgent; - } - const usingSsl = parsedUrl.protocol === "https:"; - proxyAgent = new undici_1.ProxyAgent( - Object.assign( - { uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, - (proxyUrl.username || proxyUrl.password) && { - token: `${proxyUrl.username}:${proxyUrl.password}`, - }, - ), - ); - this._proxyAgentDispatcher = proxyAgent; - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { - rejectUnauthorized: false, - }); - } - return proxyAgent; - } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise((resolve) => setTimeout(() => resolve(), ms)); - }); - } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => - __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {}, - }; - // not found leads to null obj returned - if (statusCode === HttpCodes.NotFound) { - resolve(response); - } - // get the result from the body - function dateTimeDeserializer(key, value) { - if (typeof value === "string") { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } catch (err) { - // Invalid resource (contents not json); leaving result obj null - } - // note that 3xx redirects are handled by the http layer. - if (statusCode > 299) { - let msg; - // if exception/error in body, attempt to get better error - if (obj && obj.message) { - msg = obj.message; - } else if (contents && contents.length > 0) { - // it may be the case that the exception is in the body message as string - msg = contents; - } else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } else { - resolve(response); - } - }), - ); - }); - } - } - exports.HttpClient = HttpClient; - const lowercaseKeys = (obj) => - Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); - //# sourceMappingURL=index.js.map - - /***/ - }, - - /***/ 9835: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.checkBypass = exports.getProxyUrl = void 0; - function getProxyUrl(reqUrl) { - const usingSsl = reqUrl.protocol === "https:"; - if (checkBypass(reqUrl)) { - return undefined; - } - const proxyVar = (() => { - if (usingSsl) { - return process.env["https_proxy"] || process.env["HTTPS_PROXY"]; - } else { - return process.env["http_proxy"] || process.env["HTTP_PROXY"]; - } - })(); - if (proxyVar) { - try { - return new URL(proxyVar); - } catch (_a) { - if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://")) - return new URL(`http://${proxyVar}`); - } - } else { - return undefined; - } - } - exports.getProxyUrl = getProxyUrl; - function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - const reqHost = reqUrl.hostname; - if (isLoopbackAddress(reqHost)) { - return true; - } - const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ""; - if (!noProxy) { - return false; - } - // Determine the request port - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } else if (reqUrl.protocol === "http:") { - reqPort = 80; - } else if (reqUrl.protocol === "https:") { - reqPort = 443; - } - // Format the request hostname and hostname with port - const upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === "number") { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); - } - // Compare request host against noproxy - for (const upperNoProxyItem of noProxy - .split(",") - .map((x) => x.trim().toUpperCase()) - .filter((x) => x)) { - if ( - upperNoProxyItem === "*" || - upperReqHosts.some( - (x) => - x === upperNoProxyItem || - x.endsWith(`.${upperNoProxyItem}`) || - (upperNoProxyItem.startsWith(".") && x.endsWith(`${upperNoProxyItem}`)), - ) - ) { - return true; - } - } - return false; - } - exports.checkBypass = checkBypass; - function isLoopbackAddress(host) { - const hostLower = host.toLowerCase(); - return ( - hostLower === "localhost" || - hostLower.startsWith("127.") || - hostLower.startsWith("[::1]") || - hostLower.startsWith("[0:0:0:0:0:0:0:1]") - ); - } - //# sourceMappingURL=proxy.js.map - - /***/ - }, - - /***/ 334: /***/ (module) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - 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; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - createTokenAuth: () => createTokenAuth, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/auth.js - var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; - var REGEX_IS_INSTALLATION = /^ghs_/; - var REGEX_IS_USER_TO_SERVER = /^ghu_/; - async function auth(token) { - const isApp = token.split(/\./).length === 3; - const isInstallation = - REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); - const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); - const tokenType = isApp - ? "app" - : isInstallation - ? "installation" - : isUserToServer - ? "user-to-server" - : "oauth"; - return { - type: "token", - token, - tokenType, - }; - } - - // pkg/dist-src/with-authorization-prefix.js - function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; - } - - // pkg/dist-src/hook.js - async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); - } - - // pkg/dist-src/index.js - var createTokenAuth = function createTokenAuth2(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token), - }); - }; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 6762: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - 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; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - Octokit: () => Octokit, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_universal_user_agent = __nccwpck_require__(5030); - var import_before_after_hook = __nccwpck_require__(3682); - var import_request = __nccwpck_require__(6234); - var import_graphql = __nccwpck_require__(8467); - var import_auth_token = __nccwpck_require__(334); - - // pkg/dist-src/version.js - var VERSION = "5.1.0"; - - // pkg/dist-src/index.js - var noop = () => {}; - var consoleWarn = console.warn.bind(console); - var consoleError = console.error.bind(console); - var userAgentTrail = `octokit-core.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`; - var Octokit = class { - static { - this.VERSION = VERSION; - } - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - super( - Object.assign( - {}, - defaults, - options, - options.userAgent && defaults.userAgent - ? { - userAgent: `${options.userAgent} ${defaults.userAgent}`, - } - : null, - ), - ); - } - }; - return OctokitWithDefaults; - } - static { - this.plugins = []; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin(...newPlugins) { - const currentPlugins = this.plugins; - const NewOctokit = class extends this { - static { - this.plugins = currentPlugins.concat( - newPlugins.filter((plugin) => !currentPlugins.includes(plugin)), - ); - } - }; - return NewOctokit; - } - constructor(options = {}) { - const hook = new import_before_after_hook.Collection(); - const requestDefaults = { - baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - // @ts-ignore internal usage only, no need to type - hook: hook.bind(null, "request"), - }), - mediaType: { - previews: [], - format: "", - }, - }; - requestDefaults.headers["user-agent"] = options.userAgent - ? `${options.userAgent} ${userAgentTrail}` - : userAgentTrail; - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - this.request = import_request.request.defaults(requestDefaults); - this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults( - requestDefaults, - ); - this.log = Object.assign( - { - debug: noop, - info: noop, - warn: consoleWarn, - error: consoleError, - }, - options.log, - ); - this.hook = hook; - if (!options.authStrategy) { - if (!options.auth) { - this.auth = async () => ({ - type: "unauthenticated", - }); - } else { - const auth = (0, import_auth_token.createTokenAuth)(options.auth); - hook.wrap("request", auth.hook); - this.auth = auth; - } - } else { - const { authStrategy, ...otherOptions } = options; - const auth = authStrategy( - Object.assign( - { - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions, - }, - options.auth, - ), - ); - hook.wrap("request", auth.hook); - this.auth = auth; - } - const classConstructor = this.constructor; - for (let i = 0; i < classConstructor.plugins.length; ++i) { - Object.assign(this, classConstructor.plugins[i](this, options)); - } - } - }; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 9440: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - 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; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - endpoint: () => endpoint, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/defaults.js - var import_universal_user_agent = __nccwpck_require__(5030); - - // pkg/dist-src/version.js - var VERSION = "9.0.4"; - - // pkg/dist-src/defaults.js - var userAgent = `octokit-endpoint.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`; - var DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent, - }, - mediaType: { - format: "", - }, - }; - - // pkg/dist-src/util/lowercase-keys.js - function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); - } - - // pkg/dist-src/util/is-plain-object.js - function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return ( - typeof Ctor === "function" && - Ctor instanceof Ctor && - Function.prototype.call(Ctor) === Function.prototype.call(value) - ); - } - - // pkg/dist-src/util/merge-deep.js - function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { [key]: options[key] }); - else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; - } - - // pkg/dist-src/util/remove-undefined-properties.js - function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; - } - } - return obj; - } - - // pkg/dist-src/merge.js - function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } else { - options = Object.assign({}, route); - } - options.headers = lowercaseKeys(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - if (options.url === "/graphql") { - if (defaults && defaults.mediaType.previews?.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews - .filter((preview) => !mergedOptions.mediaType.previews.includes(preview)) - .concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map( - (preview) => preview.replace(/-preview/, ""), - ); - } - return mergedOptions; - } - - // pkg/dist-src/util/add-query-parameters.js - function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return ( - url + - separator + - names - .map((name) => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }) - .join("&") - ); - } - - // pkg/dist-src/util/extract-url-variable-names.js - var urlVariableRegex = /\{[^}]+\}/g; - function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); - } - function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - if (!matches) { - return []; - } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); - } - - // pkg/dist-src/util/omit.js - function omit(object, keysToOmit) { - const result = { __proto__: null }; - for (const key of Object.keys(object)) { - if (keysToOmit.indexOf(key) === -1) { - result[key] = object[key]; - } - } - return result; - } - - // pkg/dist-src/util/url-template.js - function encodeReserved(str) { - return str - .split(/(%[0-9A-Fa-f]{2})/g) - .map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }) - .join(""); - } - function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); - } - function encodeValue(operator, value, key) { - value = - operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } - } - function isDefined(value) { - return value !== void 0 && value !== null; - } - function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; - } - function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - if (isDefined(value) && value !== "") { - if ( - typeof value === "string" || - typeof value === "number" || - typeof value === "boolean" - ) { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - result.push( - encodeValue(operator, value2, isKeyOperator(operator) ? key : ""), - ); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - tmp.push(encodeValue(operator, value2)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - return result; - } - function parseUrl(template) { - return { - expand: expand.bind(null, template), - }; - } - function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - template = template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - }); - if (template === "/") { - return template; - } else { - return template.replace(/\/$/, ""); - } - } - - // pkg/dist-src/parse.js - function parse(options) { - let method = options.method.toUpperCase(); - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType", - ]); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options) - .filter((option) => urlVariableNames.includes(option)) - .concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept - .split(/,/) - .map((format) => - format.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}`, - ), - ) - .join(","); - } - if (url.endsWith("/graphql")) { - if (options.mediaType.previews?.length) { - const previewsFromAcceptHeader = - headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader - .concat(options.mediaType.previews) - .map((preview) => { - const format = options.mediaType.format - ? `.${options.mediaType.format}` - : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }) - .join(","); - } - } - } - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - return Object.assign( - { method, url, headers }, - typeof body !== "undefined" ? { body } : null, - options.request ? { request: options.request } : null, - ); - } - - // pkg/dist-src/endpoint-with-defaults.js - function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); - } - - // pkg/dist-src/with-defaults.js - function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS2 = merge(oldDefaults, newDefaults); - const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); - return Object.assign(endpoint2, { - DEFAULTS: DEFAULTS2, - defaults: withDefaults.bind(null, DEFAULTS2), - merge: merge.bind(null, DEFAULTS2), - parse, - }); - } - - // pkg/dist-src/index.js - var endpoint = withDefaults(null, DEFAULTS); - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 8467: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - 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; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - GraphqlResponseError: () => GraphqlResponseError, - graphql: () => graphql2, - withCustomRequest: () => withCustomRequest, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_request3 = __nccwpck_require__(6234); - var import_universal_user_agent = __nccwpck_require__(5030); - - // pkg/dist-src/version.js - var VERSION = "7.0.2"; - - // pkg/dist-src/with-defaults.js - var import_request2 = __nccwpck_require__(6234); - - // pkg/dist-src/graphql.js - var import_request = __nccwpck_require__(6234); - - // pkg/dist-src/error.js - function _buildMessageForResponseErrors(data) { - return ( - `Request failed due to following response errors: -` + data.errors.map((e) => ` - ${e.message}`).join("\n") - ); - } - var GraphqlResponseError = class extends Error { - constructor(request2, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request2; - this.headers = headers; - this.response = response; - this.name = "GraphqlResponseError"; - this.errors = response.errors; - this.data = response.data; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - }; - - // pkg/dist-src/graphql.js - var NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType", - ]; - var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; - var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; - function graphql(request2, query, options) { - if (options) { - if (typeof query === "string" && "query" in options) { - return Promise.reject( - new Error(`[@octokit/graphql] "query" cannot be used as variable name`), - ); - } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject( - new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`), - ); - } - } - const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request2(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlResponseError(requestOptions, headers, response.data); - } - return response.data.data; - }); - } - - // pkg/dist-src/with-defaults.js - function withDefaults(request2, newDefaults) { - const newRequest = request2.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: newRequest.endpoint, - }); - } - - // pkg/dist-src/index.js - var graphql2 = withDefaults(import_request3.request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`, - }, - method: "POST", - url: "/graphql", - }); - function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql", - }); - } - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 4193: /***/ (module) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - 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; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - composePaginateRest: () => composePaginateRest, - isPaginatingEndpoint: () => isPaginatingEndpoint, - paginateRest: () => paginateRest, - paginatingEndpoints: () => paginatingEndpoints, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/version.js - var VERSION = "9.1.5"; - - // pkg/dist-src/normalize-paginated-list-response.js - function normalizePaginatedListResponse(response) { - if (!response.data) { - return { - ...response, - data: [], - }; - } - const responseNeedsNormalization = - "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) return response; - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - return response; - } - - // pkg/dist-src/iterator.js - function iterator(octokit, route, parameters) { - const options = - typeof route === "function" - ? route.endpoint(parameters) - : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { done: true }; - try { - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - url = ((normalizedResponse.headers.link || "").match( - /<([^>]+)>;\s*rel="next"/, - ) || [])[1]; - return { value: normalizedResponse }; - } catch (error) { - if (error.status !== 409) throw error; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [], - }, - }; - } - }, - }), - }; - } - - // pkg/dist-src/paginate.js - function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = void 0; - } - return gather( - octokit, - [], - iterator(octokit, route, parameters)[Symbol.asyncIterator](), - mapFn, - ); - } - function gather(octokit, results, iterator2, mapFn) { - return iterator2.next().then((result) => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - if (earlyExit) { - return results; - } - return gather(octokit, results, iterator2, mapFn); - }); - } - - // pkg/dist-src/compose-paginate.js - var composePaginateRest = Object.assign(paginate, { - iterator, - }); - - // pkg/dist-src/generated/paginating-endpoints.js - var paginatingEndpoints = [ - "GET /advisories", - "GET /app/hook/deliveries", - "GET /app/installation-requests", - "GET /app/installations", - "GET /assignments/{assignment_id}/accepted_assignments", - "GET /classrooms", - "GET /classrooms/{classroom_id}/assignments", - "GET /enterprises/{enterprise}/dependabot/alerts", - "GET /enterprises/{enterprise}/secret-scanning/alerts", - "GET /events", - "GET /gists", - "GET /gists/public", - "GET /gists/starred", - "GET /gists/{gist_id}/comments", - "GET /gists/{gist_id}/commits", - "GET /gists/{gist_id}/forks", - "GET /installation/repositories", - "GET /issues", - "GET /licenses", - "GET /marketplace_listing/plans", - "GET /marketplace_listing/plans/{plan_id}/accounts", - "GET /marketplace_listing/stubbed/plans", - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", - "GET /networks/{owner}/{repo}/events", - "GET /notifications", - "GET /organizations", - "GET /orgs/{org}/actions/cache/usage-by-repository", - "GET /orgs/{org}/actions/permissions/repositories", - "GET /orgs/{org}/actions/runners", - "GET /orgs/{org}/actions/secrets", - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - "GET /orgs/{org}/actions/variables", - "GET /orgs/{org}/actions/variables/{name}/repositories", - "GET /orgs/{org}/blocks", - "GET /orgs/{org}/code-scanning/alerts", - "GET /orgs/{org}/codespaces", - "GET /orgs/{org}/codespaces/secrets", - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - "GET /orgs/{org}/copilot/billing/seats", - "GET /orgs/{org}/dependabot/alerts", - "GET /orgs/{org}/dependabot/secrets", - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - "GET /orgs/{org}/events", - "GET /orgs/{org}/failed_invitations", - "GET /orgs/{org}/hooks", - "GET /orgs/{org}/hooks/{hook_id}/deliveries", - "GET /orgs/{org}/installations", - "GET /orgs/{org}/invitations", - "GET /orgs/{org}/invitations/{invitation_id}/teams", - "GET /orgs/{org}/issues", - "GET /orgs/{org}/members", - "GET /orgs/{org}/members/{username}/codespaces", - "GET /orgs/{org}/migrations", - "GET /orgs/{org}/migrations/{migration_id}/repositories", - "GET /orgs/{org}/outside_collaborators", - "GET /orgs/{org}/packages", - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - "GET /orgs/{org}/personal-access-token-requests", - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", - "GET /orgs/{org}/personal-access-tokens", - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", - "GET /orgs/{org}/projects", - "GET /orgs/{org}/properties/values", - "GET /orgs/{org}/public_members", - "GET /orgs/{org}/repos", - "GET /orgs/{org}/rulesets", - "GET /orgs/{org}/rulesets/rule-suites", - "GET /orgs/{org}/secret-scanning/alerts", - "GET /orgs/{org}/security-advisories", - "GET /orgs/{org}/teams", - "GET /orgs/{org}/teams/{team_slug}/discussions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/invitations", - "GET /orgs/{org}/teams/{team_slug}/members", - "GET /orgs/{org}/teams/{team_slug}/projects", - "GET /orgs/{org}/teams/{team_slug}/repos", - "GET /orgs/{org}/teams/{team_slug}/teams", - "GET /projects/columns/{column_id}/cards", - "GET /projects/{project_id}/collaborators", - "GET /projects/{project_id}/columns", - "GET /repos/{owner}/{repo}/actions/artifacts", - "GET /repos/{owner}/{repo}/actions/caches", - "GET /repos/{owner}/{repo}/actions/organization-secrets", - "GET /repos/{owner}/{repo}/actions/organization-variables", - "GET /repos/{owner}/{repo}/actions/runners", - "GET /repos/{owner}/{repo}/actions/runs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", - "GET /repos/{owner}/{repo}/actions/secrets", - "GET /repos/{owner}/{repo}/actions/variables", - "GET /repos/{owner}/{repo}/actions/workflows", - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", - "GET /repos/{owner}/{repo}/activity", - "GET /repos/{owner}/{repo}/assignees", - "GET /repos/{owner}/{repo}/branches", - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", - "GET /repos/{owner}/{repo}/code-scanning/alerts", - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - "GET /repos/{owner}/{repo}/code-scanning/analyses", - "GET /repos/{owner}/{repo}/codespaces", - "GET /repos/{owner}/{repo}/codespaces/devcontainers", - "GET /repos/{owner}/{repo}/codespaces/secrets", - "GET /repos/{owner}/{repo}/collaborators", - "GET /repos/{owner}/{repo}/comments", - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/commits", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", - "GET /repos/{owner}/{repo}/commits/{ref}/status", - "GET /repos/{owner}/{repo}/commits/{ref}/statuses", - "GET /repos/{owner}/{repo}/contributors", - "GET /repos/{owner}/{repo}/dependabot/alerts", - "GET /repos/{owner}/{repo}/dependabot/secrets", - "GET /repos/{owner}/{repo}/deployments", - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - "GET /repos/{owner}/{repo}/environments", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", - "GET /repos/{owner}/{repo}/events", - "GET /repos/{owner}/{repo}/forks", - "GET /repos/{owner}/{repo}/hooks", - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", - "GET /repos/{owner}/{repo}/invitations", - "GET /repos/{owner}/{repo}/issues", - "GET /repos/{owner}/{repo}/issues/comments", - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/issues/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", - "GET /repos/{owner}/{repo}/issues/{issue_number}/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", - "GET /repos/{owner}/{repo}/keys", - "GET /repos/{owner}/{repo}/labels", - "GET /repos/{owner}/{repo}/milestones", - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - "GET /repos/{owner}/{repo}/notifications", - "GET /repos/{owner}/{repo}/pages/builds", - "GET /repos/{owner}/{repo}/projects", - "GET /repos/{owner}/{repo}/pulls", - "GET /repos/{owner}/{repo}/pulls/comments", - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - "GET /repos/{owner}/{repo}/releases", - "GET /repos/{owner}/{repo}/releases/{release_id}/assets", - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", - "GET /repos/{owner}/{repo}/rules/branches/{branch}", - "GET /repos/{owner}/{repo}/rulesets", - "GET /repos/{owner}/{repo}/rulesets/rule-suites", - "GET /repos/{owner}/{repo}/secret-scanning/alerts", - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", - "GET /repos/{owner}/{repo}/security-advisories", - "GET /repos/{owner}/{repo}/stargazers", - "GET /repos/{owner}/{repo}/subscribers", - "GET /repos/{owner}/{repo}/tags", - "GET /repos/{owner}/{repo}/teams", - "GET /repos/{owner}/{repo}/topics", - "GET /repositories", - "GET /repositories/{repository_id}/environments/{environment_name}/secrets", - "GET /repositories/{repository_id}/environments/{environment_name}/variables", - "GET /search/code", - "GET /search/commits", - "GET /search/issues", - "GET /search/labels", - "GET /search/repositories", - "GET /search/topics", - "GET /search/users", - "GET /teams/{team_id}/discussions", - "GET /teams/{team_id}/discussions/{discussion_number}/comments", - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /teams/{team_id}/discussions/{discussion_number}/reactions", - "GET /teams/{team_id}/invitations", - "GET /teams/{team_id}/members", - "GET /teams/{team_id}/projects", - "GET /teams/{team_id}/repos", - "GET /teams/{team_id}/teams", - "GET /user/blocks", - "GET /user/codespaces", - "GET /user/codespaces/secrets", - "GET /user/emails", - "GET /user/followers", - "GET /user/following", - "GET /user/gpg_keys", - "GET /user/installations", - "GET /user/installations/{installation_id}/repositories", - "GET /user/issues", - "GET /user/keys", - "GET /user/marketplace_purchases", - "GET /user/marketplace_purchases/stubbed", - "GET /user/memberships/orgs", - "GET /user/migrations", - "GET /user/migrations/{migration_id}/repositories", - "GET /user/orgs", - "GET /user/packages", - "GET /user/packages/{package_type}/{package_name}/versions", - "GET /user/public_emails", - "GET /user/repos", - "GET /user/repository_invitations", - "GET /user/social_accounts", - "GET /user/ssh_signing_keys", - "GET /user/starred", - "GET /user/subscriptions", - "GET /user/teams", - "GET /users", - "GET /users/{username}/events", - "GET /users/{username}/events/orgs/{org}", - "GET /users/{username}/events/public", - "GET /users/{username}/followers", - "GET /users/{username}/following", - "GET /users/{username}/gists", - "GET /users/{username}/gpg_keys", - "GET /users/{username}/keys", - "GET /users/{username}/orgs", - "GET /users/{username}/packages", - "GET /users/{username}/projects", - "GET /users/{username}/received_events", - "GET /users/{username}/received_events/public", - "GET /users/{username}/repos", - "GET /users/{username}/social_accounts", - "GET /users/{username}/ssh_signing_keys", - "GET /users/{username}/starred", - "GET /users/{username}/subscriptions", - ]; - - // pkg/dist-src/paginating-endpoints.js - function isPaginatingEndpoint(arg) { - if (typeof arg === "string") { - return paginatingEndpoints.includes(arg); - } else { - return false; - } - } - - // pkg/dist-src/index.js - function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit), - }), - }; - } - paginateRest.VERSION = VERSION; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 3044: /***/ (module) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - 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; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - legacyRestEndpointMethods: () => legacyRestEndpointMethods, - restEndpointMethods: () => restEndpointMethods, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/version.js - var VERSION = "10.3.0"; - - // pkg/dist-src/generated/endpoints.js - var Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: [ - "POST /orgs/{org}/actions/runners/{runner_id}/labels", - ], - addCustomLabelsToSelfHostedRunnerForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - addSelectedRepoToOrgVariable: [ - "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}", - ], - approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], - cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], - createEnvironmentVariable: [ - "POST /repositories/{repository_id}/environments/{environment_name}/variables", - ], - createOrUpdateEnvironmentSecret: [ - "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - createOrgVariable: ["POST /orgs/{org}/actions/variables"], - createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], - createRegistrationTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/registration-token", - ], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], - createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], - createWorkflowDispatch: [ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", - ], - deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], - deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], - deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - deleteEnvironmentSecret: [ - "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", - ], - deleteEnvironmentVariable: [ - "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}", - ], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - deleteRepoVariable: ["DELETE /repos/{owner}/{repo}/actions/variables/{name}"], - deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], - deleteSelfHostedRunnerFromRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}", - ], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - disableSelectedRepositoryGithubActionsOrganization: [ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], - downloadArtifact: [ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", - ], - downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], - downloadWorkflowRunAttemptLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs", - ], - downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - enableSelectedRepositoryGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], - forceCancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"], - generateRunnerJitconfigForOrg: ["POST /orgs/{org}/actions/runners/generate-jitconfig"], - generateRunnerJitconfigForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig", - ], - getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], - getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], - getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], - getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], - getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], - getAllowedActionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getCustomOidcSubClaimForRepo: [ - "GET /repos/{owner}/{repo}/actions/oidc/customization/sub", - ], - getEnvironmentPublicKey: [ - "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key", - ], - getEnvironmentSecret: [ - "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", - ], - getEnvironmentVariable: [ - "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}", - ], - getGithubActionsDefaultWorkflowPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions/workflow", - ], - getGithubActionsDefaultWorkflowPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/workflow", - ], - getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], - getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], - getPendingDeploymentsForRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", - ], - getRepoPermissions: [ - "GET /repos/{owner}/{repo}/actions/permissions", - {}, - { renamed: ["actions", "getGithubActionsPermissionsRepository"] }, - ], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], - getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}", - ], - getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], - getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listEnvironmentSecrets: [ - "GET /repositories/{repository_id}/environments/{environment_name}/secrets", - ], - listEnvironmentVariables: [ - "GET /repositories/{repository_id}/environments/{environment_name}/variables", - ], - listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], - listJobsForWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", - ], - listLabelsForSelfHostedRunnerForOrg: [ - "GET /orgs/{org}/actions/runners/{runner_id}/labels", - ], - listLabelsForSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listOrgVariables: ["GET /orgs/{org}/actions/variables"], - listRepoOrganizationSecrets: ["GET /repos/{owner}/{repo}/actions/organization-secrets"], - listRepoOrganizationVariables: [ - "GET /repos/{owner}/{repo}/actions/organization-variables", - ], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - listSelectedReposForOrgVariable: [ - "GET /orgs/{org}/actions/variables/{name}/repositories", - ], - listSelectedRepositoriesEnabledGithubActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/repositories", - ], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], - listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - reRunWorkflowFailedJobs: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs", - ], - removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels", - ], - removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - removeCustomLabelFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}", - ], - removeCustomLabelFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}", - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - removeSelectedRepoFromOrgVariable: [ - "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}", - ], - reviewCustomGatesForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule", - ], - reviewPendingDeploymentsForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", - ], - setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], - setAllowedActionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - setCustomLabelsForSelfHostedRunnerForOrg: [ - "PUT /orgs/{org}/actions/runners/{runner_id}/labels", - ], - setCustomLabelsForSelfHostedRunnerForRepo: [ - "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - setCustomOidcSubClaimForRepo: [ - "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub", - ], - setGithubActionsDefaultWorkflowPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/workflow", - ], - setGithubActionsDefaultWorkflowPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/workflow", - ], - setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], - setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - setSelectedReposForOrgVariable: ["PUT /orgs/{org}/actions/variables/{name}/repositories"], - setSelectedRepositoriesEnabledGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories", - ], - setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"], - updateEnvironmentVariable: [ - "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}", - ], - updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], - updateRepoVariable: ["PATCH /repos/{owner}/{repo}/actions/variables/{name}"], - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: [ - "GET /notifications/threads/{thread_id}/subscription", - ], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"], - }, - apps: { - addRepoToInstallation: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }, - ], - addRepoToInstallationForAuthenticatedUser: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - ], - checkToken: ["POST /applications/{client_id}/token"], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: [ - "POST /app/installations/{installation_id}/access_tokens", - ], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], - getSubscriptionPlanForAccountStubbed: [ - "GET /marketplace_listing/stubbed/accounts/{account_id}", - ], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], - listInstallationReposForAuthenticatedUser: [ - "GET /user/installations/{installation_id}/repositories", - ], - listInstallationRequestsForAuthenticatedApp: ["GET /app/installation-requests"], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], - listWebhookDeliveries: ["GET /app/hook/deliveries"], - redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], - removeRepoFromInstallation: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }, - ], - removeRepoFromInstallationForAuthenticatedUser: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - ], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - scopeToken: ["POST /applications/{client_id}/token/scoped"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], - updateWebhookConfigForApp: ["PATCH /app/hook/config"], - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], - getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], - getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"], - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], - rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], - setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"], - }, - codeScanning: { - deleteAnalysis: [ - "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}", - ], - getAlert: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - {}, - { renamedParameters: { alert_id: "alert_number" } }, - ], - getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], - getCodeqlDatabase: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", - ], - getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], - getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], - listAlertInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - ], - listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listAlertsInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - {}, - { renamed: ["codeScanning", "listAlertInstances"] }, - ], - listCodeqlDatabases: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], - updateDefaultSetup: ["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"], - }, - codesOfConduct: { - getAllCodesOfConduct: ["GET /codes_of_conduct"], - getConductCode: ["GET /codes_of_conduct/{key}"], - }, - codespaces: { - addRepositoryForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - checkPermissionsForDevcontainer: [ - "GET /repos/{owner}/{repo}/codespaces/permissions_check", - ], - codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], - createForAuthenticatedUser: ["POST /user/codespaces"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/codespaces/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], - createWithPrForAuthenticatedUser: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces", - ], - createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], - deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], - deleteFromOrganization: [ - "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}", - ], - deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], - exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], - getCodespacesForUserInOrg: ["GET /orgs/{org}/members/{username}/codespaces"], - getExportDetailsForAuthenticatedUser: [ - "GET /user/codespaces/{codespace_name}/exports/{export_id}", - ], - getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], - getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], - getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], - listDevcontainersInRepositoryForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/devcontainers", - ], - listForAuthenticatedUser: ["GET /user/codespaces"], - listInOrganization: [ - "GET /orgs/{org}/codespaces", - {}, - { renamedParameters: { org_id: "org" } }, - ], - listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], - listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], - listRepositoriesForSecretForAuthenticatedUser: [ - "GET /user/codespaces/secrets/{secret_name}/repositories", - ], - listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - ], - preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"], - publishForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/publish"], - removeRepositoryForSecretForAuthenticatedUser: [ - "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], - setRepositoriesForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories", - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - ], - startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], - stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], - stopInOrganization: [ - "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop", - ], - updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"], - }, - copilot: { - addCopilotForBusinessSeatsForTeams: ["POST /orgs/{org}/copilot/billing/selected_teams"], - addCopilotForBusinessSeatsForUsers: ["POST /orgs/{org}/copilot/billing/selected_users"], - cancelCopilotSeatAssignmentForTeams: [ - "DELETE /orgs/{org}/copilot/billing/selected_teams", - ], - cancelCopilotSeatAssignmentForUsers: [ - "DELETE /orgs/{org}/copilot/billing/selected_users", - ], - getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], - getCopilotSeatDetailsForUser: ["GET /orgs/{org}/members/{username}/copilot"], - listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"], - }, - dependabot: { - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], - getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/dependabot/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], - listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - ], - updateAlert: ["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], - }, - dependencyGraph: { - createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], - diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"], - exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"], - }, - emojis: { get: ["GET /emojis"] }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"], - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"], - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"], - }, - interactions: { - getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: [ - "GET /user/interaction-limits", - {}, - { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }, - ], - removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], - removeRestrictionsForYourPublicRepos: [ - "DELETE /user/interaction-limits", - {}, - { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }, - ], - setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: [ - "PUT /user/interaction-limits", - {}, - { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }, - ], - }, - issues: { - addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - checkUserCanBeAssignedToIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}", - ], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: [ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - ], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], - removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"], - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"], - }, - markdown: { - render: ["POST /markdown"], - renderRaw: [ - "POST /markdown/raw", - { headers: { "content-type": "text/plain; charset=utf-8" } }, - ], - }, - meta: { - get: ["GET /meta"], - getAllVersions: ["GET /versions"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"], - }, - migrations: { - cancelImport: [ - "DELETE /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import", - }, - ], - deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], - deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], - downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], - getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], - getCommitAuthors: [ - "GET /repos/{owner}/{repo}/import/authors", - {}, - { - deprecated: - "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors", - }, - ], - getImportStatus: [ - "GET /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status", - }, - ], - getLargeFiles: [ - "GET /repos/{owner}/{repo}/import/large_files", - {}, - { - deprecated: - "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files", - }, - ], - getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], - getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], - listForAuthenticatedUser: ["GET /user/migrations"], - listForOrg: ["GET /orgs/{org}/migrations"], - listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], - listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], - listReposForUser: [ - "GET /user/migrations/{migration_id}/repositories", - {}, - { renamed: ["migrations", "listReposForAuthenticatedUser"] }, - ], - mapCommitAuthor: [ - "PATCH /repos/{owner}/{repo}/import/authors/{author_id}", - {}, - { - deprecated: - "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author", - }, - ], - setLfsPreference: [ - "PATCH /repos/{owner}/{repo}/import/lfs", - {}, - { - deprecated: - "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference", - }, - ], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - startImport: [ - "PUT /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import", - }, - ], - unlockRepoForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock", - ], - unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], - updateImport: [ - "PATCH /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import", - }, - ], - }, - oidc: { - getOidcCustomSubTemplateForOrg: ["GET /orgs/{org}/actions/oidc/customization/sub"], - updateOidcCustomSubTemplateForOrg: ["PUT /orgs/{org}/actions/oidc/customization/sub"], - }, - orgs: { - addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"], - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], - createInvitation: ["POST /orgs/{org}/invitations"], - createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], - createOrUpdateCustomPropertiesValuesForRepos: ["PATCH /orgs/{org}/properties/values"], - createOrUpdateCustomProperty: [ - "PUT /orgs/{org}/properties/schema/{custom_property_name}", - ], - createWebhook: ["POST /orgs/{org}/hooks"], - delete: ["DELETE /orgs/{org}"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - enableOrDisableSecurityProductOnAllOrgRepos: [ - "POST /orgs/{org}/{security_product}/{enablement}", - ], - get: ["GET /orgs/{org}"], - getAllCustomProperties: ["GET /orgs/{org}/properties/schema"], - getCustomProperty: ["GET /orgs/{org}/properties/schema/{custom_property_name}"], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"], - listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPatGrantRepositories: [ - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", - ], - listPatGrantRequestRepositories: [ - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", - ], - listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], - listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], - listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", - ], - removeCustomProperty: ["DELETE /orgs/{org}/properties/schema/{custom_property_name}"], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], - removePublicMembershipForAuthenticatedUser: [ - "DELETE /orgs/{org}/public_members/{username}", - ], - removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"], - reviewPatGrantRequest: [ - "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}", - ], - reviewPatGrantRequestsInBulk: ["POST /orgs/{org}/personal-access-token-requests"], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], - updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], - updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"], - }, - packages: { - deletePackageForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}", - ], - deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], - deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], - deletePackageVersionForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - deletePackageVersionForOrg: [ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - deletePackageVersionForUser: [ - "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - getAllPackageVersionsForAPackageOwnedByAnOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - {}, - { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }, - ], - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions", - {}, - { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"], - }, - ], - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions", - ], - getAllPackageVersionsForPackageOwnedByOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - ], - getAllPackageVersionsForPackageOwnedByUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions", - ], - getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], - getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], - getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], - getPackageVersionForAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - getPackageVersionForOrganization: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - getPackageVersionForUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - listDockerMigrationConflictingPackagesForAuthenticatedUser: [ - "GET /user/docker/conflicts", - ], - listDockerMigrationConflictingPackagesForOrganization: [ - "GET /orgs/{org}/docker/conflicts", - ], - listDockerMigrationConflictingPackagesForUser: ["GET /users/{username}/docker/conflicts"], - listPackagesForAuthenticatedUser: ["GET /user/packages"], - listPackagesForOrganization: ["GET /orgs/{org}/packages"], - listPackagesForUser: ["GET /users/{username}/packages"], - restorePackageForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/restore{?token}", - ], - restorePackageForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}", - ], - restorePackageForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}", - ], - restorePackageVersionForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", - ], - restorePackageVersionForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", - ], - restorePackageVersionForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", - ], - }, - projects: { - addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], - createCard: ["POST /projects/columns/{column_id}/cards"], - createColumn: ["POST /projects/{project_id}/columns"], - createForAuthenticatedUser: ["POST /user/projects"], - createForOrg: ["POST /orgs/{org}/projects"], - createForRepo: ["POST /repos/{owner}/{repo}/projects"], - delete: ["DELETE /projects/{project_id}"], - deleteCard: ["DELETE /projects/columns/cards/{card_id}"], - deleteColumn: ["DELETE /projects/columns/{column_id}"], - get: ["GET /projects/{project_id}"], - getCard: ["GET /projects/columns/cards/{card_id}"], - getColumn: ["GET /projects/columns/{column_id}"], - getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], - listCards: ["GET /projects/columns/{column_id}/cards"], - listCollaborators: ["GET /projects/{project_id}/collaborators"], - listColumns: ["GET /projects/{project_id}/columns"], - listForOrg: ["GET /orgs/{org}/projects"], - listForRepo: ["GET /repos/{owner}/{repo}/projects"], - listForUser: ["GET /users/{username}/projects"], - moveCard: ["POST /projects/columns/cards/{card_id}/moves"], - moveColumn: ["POST /projects/columns/{column_id}/moves"], - removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], - update: ["PATCH /projects/{project_id}"], - updateCard: ["PATCH /projects/columns/cards/{card_id}"], - updateColumn: ["PATCH /projects/columns/{column_id}"], - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", - ], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - deletePendingReview: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - dismissReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", - ], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - ], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - submitReview: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", - ], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], - updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - }, - rateLimit: { get: ["GET /rate_limit"] }, - reactions: { - createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - createForIssueComment: [ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - ], - createForPullRequestReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - ], - createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], - createForTeamDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - ], - createForTeamDiscussionInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - ], - deleteForCommitComment: [ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", - ], - deleteForIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", - ], - deleteForIssueComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", - ], - deleteForPullRequestComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", - ], - deleteForRelease: [ - "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}", - ], - deleteForTeamDiscussion: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", - ], - deleteForTeamDiscussionComment: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", - ], - listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - listForPullRequestReviewComment: [ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - ], - listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], - listForTeamDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - ], - listForTeamDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - ], - }, - repos: { - acceptInvitation: [ - "PATCH /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }, - ], - acceptInvitationForAuthenticatedUser: [ - "PATCH /user/repository_invitations/{invitation_id}", - ], - addAppAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - addTeamAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - addUserAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - checkAutomatedSecurityFixes: ["GET /repos/{owner}/{repo}/automated-security-fixes"], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], - codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], - createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], - createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - createCommitSignatureProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - ], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentBranchPolicy: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - ], - createDeploymentProtectionRule: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", - ], - createDeploymentStatus: [ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createOrgRuleset: ["POST /orgs/{org}/rulesets"], - createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], - createPagesSite: ["POST /repos/{owner}/{repo}/pages"], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], - createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], - createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: [ - "DELETE /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }, - ], - declineInvitationForAuthenticatedUser: [ - "DELETE /user/repository_invitations/{invitation_id}", - ], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - deleteAdminBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], - deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], - deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - ], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], - deleteDeploymentBranchPolicy: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", - ], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], - deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], - deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], - deletePullRequestReviewProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], - deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], - disableDeploymentProtectionRule: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", - ], - disablePrivateVulnerabilityReporting: [ - "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting", - ], - disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], - downloadArchive: [ - "GET /repos/{owner}/{repo}/zipball/{ref}", - {}, - { renamed: ["repos", "downloadZipballArchive"] }, - ], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], - enablePrivateVulnerabilityReporting: [ - "PUT /repos/{owner}/{repo}/private-vulnerability-reporting", - ], - enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], - generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - getAdminBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - getAllDeploymentProtectionRules: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", - ], - getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], - getAllStatusCheckContexts: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - ], - getAllTopics: ["GET /repos/{owner}/{repo}/topics"], - getAppsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - ], - getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], - getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: [ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission", - ], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - ], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getCustomDeploymentProtectionRule: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", - ], - getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentBranchPolicy: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", - ], - getDeploymentStatus: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", - ], - getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], - getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], - getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], - getOrgRulesets: ["GET /orgs/{org}/rulesets"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getRepoRuleSuite: ["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"], - getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], - getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], - getStatusChecksProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - getTeamsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - ], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - ], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], - getWebhookDelivery: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}", - ], - listActivities: ["GET /repos/{owner}/{repo}/activity"], - listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", - ], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listCustomDeploymentRuleIntegrations: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", - ], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentBranchPolicies: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - ], - listDeploymentStatuses: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - ], - listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", - ], - removeAppAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], - removeStatusCheckContexts: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - removeStatusCheckProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - removeTeamAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - removeUserAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], - replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - setAppAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - setStatusCheckContexts: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - setTeamAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - setUserAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateDeploymentBranchPolicy: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", - ], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], - updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], - updatePullRequestReviewProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], - updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - updateStatusCheckPotection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - {}, - { renamed: ["repos", "updateStatusCheckProtection"] }, - ], - updateStatusCheckProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], - uploadReleaseAsset: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", - { baseUrl: "https://uploads.github.com" }, - ], - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits"], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics"], - users: ["GET /search/users"], - }, - secretScanning: { - getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - listLocationsForAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", - ], - updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - }, - securityAdvisories: { - createPrivateVulnerabilityReport: [ - "POST /repos/{owner}/{repo}/security-advisories/reports", - ], - createRepositoryAdvisory: ["POST /repos/{owner}/{repo}/security-advisories"], - createRepositoryAdvisoryCveRequest: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve", - ], - getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], - getRepositoryAdvisory: ["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"], - listGlobalAdvisories: ["GET /advisories"], - listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], - listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], - updateRepositoryAdvisory: ["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"], - }, - teams: { - addOrUpdateMembershipForUserInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - addOrUpdateProjectPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}", - ], - addOrUpdateRepoPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - checkPermissionsForProjectInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}", - ], - checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - deleteDiscussionInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], - listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - updateDiscussionCommentInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - updateDiscussionInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"], - }, - users: { - addEmailForAuthenticated: [ - "POST /user/emails", - {}, - { renamed: ["users", "addEmailForAuthenticatedUser"] }, - ], - addEmailForAuthenticatedUser: ["POST /user/emails"], - addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: [ - "POST /user/gpg_keys", - {}, - { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }, - ], - createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: [ - "POST /user/keys", - {}, - { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }, - ], - createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], - deleteEmailForAuthenticated: [ - "DELETE /user/emails", - {}, - { renamed: ["users", "deleteEmailForAuthenticatedUser"] }, - ], - deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: [ - "DELETE /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }, - ], - deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: [ - "DELETE /user/keys/{key_id}", - {}, - { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }, - ], - deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], - deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], - deleteSshSigningKeyForAuthenticatedUser: [ - "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}", - ], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: [ - "GET /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }, - ], - getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: [ - "GET /user/keys/{key_id}", - {}, - { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }, - ], - getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], - getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"], - list: ["GET /users"], - listBlockedByAuthenticated: [ - "GET /user/blocks", - {}, - { renamed: ["users", "listBlockedByAuthenticatedUser"] }, - ], - listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: [ - "GET /user/emails", - {}, - { renamed: ["users", "listEmailsForAuthenticatedUser"] }, - ], - listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: [ - "GET /user/following", - {}, - { renamed: ["users", "listFollowedByAuthenticatedUser"] }, - ], - listFollowedByAuthenticatedUser: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: [ - "GET /user/gpg_keys", - {}, - { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }, - ], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: [ - "GET /user/public_emails", - {}, - { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }, - ], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: [ - "GET /user/keys", - {}, - { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }, - ], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], - listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: [ - "PATCH /user/email/visibility", - {}, - { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }, - ], - setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"], - }, - }; - var endpoints_default = Endpoints; - - // pkg/dist-src/endpoints-to-methods.js - var endpointMethodsMap = /* @__PURE__ */ new Map(); - for (const [scope, endpoints] of Object.entries(endpoints_default)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url, - }, - defaults, - ); - if (!endpointMethodsMap.has(scope)) { - endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); - } - endpointMethodsMap.get(scope).set(methodName, { - scope, - methodName, - endpointDefaults, - decorations, - }); - } - } - var handler = { - has({ scope }, methodName) { - return endpointMethodsMap.get(scope).has(methodName); - }, - getOwnPropertyDescriptor(target, methodName) { - return { - value: this.get(target, methodName), - // ensures method is in the cache - configurable: true, - writable: true, - enumerable: true, - }; - }, - defineProperty(target, methodName, descriptor) { - Object.defineProperty(target.cache, methodName, descriptor); - return true; - }, - deleteProperty(target, methodName) { - delete target.cache[methodName]; - return true; - }, - ownKeys({ scope }) { - return [...endpointMethodsMap.get(scope).keys()]; - }, - set(target, methodName, value) { - return (target.cache[methodName] = value); - }, - get({ octokit, scope, cache }, methodName) { - if (cache[methodName]) { - return cache[methodName]; - } - const method = endpointMethodsMap.get(scope).get(methodName); - if (!method) { - return void 0; - } - const { endpointDefaults, decorations } = method; - if (decorations) { - cache[methodName] = decorate( - octokit, - scope, - methodName, - endpointDefaults, - decorations, - ); - } else { - cache[methodName] = octokit.request.defaults(endpointDefaults); - } - return cache[methodName]; - }, - }; - function endpointsToMethods(octokit) { - const newMethods = {}; - for (const scope of endpointMethodsMap.keys()) { - newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); - } - return newMethods; - } - function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - function withDecorations(...args) { - let options = requestWithDefaults.endpoint.merge(...args); - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: void 0, - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn( - `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`, - ); - } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - const options2 = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options2) { - octokit.log.warn( - `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`, - ); - if (!(alias in options2)) { - options2[alias] = options2[name]; - } - delete options2[name]; - } - } - return requestWithDefaults(options2); - } - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); - } - - // pkg/dist-src/index.js - function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - rest: api, - }; - } - restEndpointMethods.VERSION = VERSION; - function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - ...api, - rest: api, - }; - } - legacyRestEndpointMethods.VERSION = VERSION; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 537: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - 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 __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; - }; - 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, - ) - ); - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - RequestError: () => RequestError, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_deprecation = __nccwpck_require__(8932); - var import_once = __toESM(__nccwpck_require__(1223)); - var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation)); - var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation)); - var RequestError = class extends Error { - constructor(message, statusCode, options) { - super(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = "HttpError"; - this.status = statusCode; - let headers; - if ("headers" in options && typeof options.headers !== "undefined") { - headers = options.headers; - } - if ("response" in options) { - this.response = options.response; - headers = options.response.headers; - } - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace( - / .*$/, - " [REDACTED]", - ), - }); - } - requestCopy.url = requestCopy.url - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; - Object.defineProperty(this, "code", { - get() { - logOnceCode( - new import_deprecation.Deprecation( - "[@octokit/request-error] `error.code` is deprecated, use `error.status`.", - ), - ); - return statusCode; - }, - }); - Object.defineProperty(this, "headers", { - get() { - logOnceHeaders( - new import_deprecation.Deprecation( - "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.", - ), - ); - return headers || {}; - }, - }); - } - }; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 6234: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - 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; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - request: () => request, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_endpoint = __nccwpck_require__(9440); - var import_universal_user_agent = __nccwpck_require__(5030); - - // pkg/dist-src/version.js - var VERSION = "8.2.0"; - - // pkg/dist-src/is-plain-object.js - function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return ( - typeof Ctor === "function" && - Ctor instanceof Ctor && - Function.prototype.call(Ctor) === Function.prototype.call(value) - ); - } - - // pkg/dist-src/fetch-wrapper.js - var import_request_error = __nccwpck_require__(537); - - // pkg/dist-src/get-buffer-response.js - function getBufferResponse(response) { - return response.arrayBuffer(); - } - - // pkg/dist-src/fetch-wrapper.js - function fetchWrapper(requestOptions) { - var _a, _b, _c; - const log = - requestOptions.request && requestOptions.request.log - ? requestOptions.request.log - : console; - const parseSuccessResponseBody = - ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; - if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - let headers = {}; - let status; - let url; - let { fetch } = globalThis; - if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { - fetch = requestOptions.request.fetch; - } - if (!fetch) { - throw new Error( - "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing", - ); - } - return fetch(requestOptions.url, { - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - signal: (_c = requestOptions.request) == null ? void 0 : _c.signal, - // duplex must be set if request.body is ReadableStream or Async Iterables. - // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. - ...(requestOptions.body && { duplex: "half" }), - }) - .then(async (response) => { - url = response.url; - status = response.status; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if ("deprecation" in headers) { - const matches = - headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${ - requestOptions.url - }" is deprecated. It is scheduled to be removed on ${headers.sunset}${ - deprecationLink ? `. See ${deprecationLink}` : "" - }`, - ); - } - if (status === 204 || status === 205) { - return; - } - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - throw new import_request_error.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: void 0, - }, - request: requestOptions, - }); - } - if (status === 304) { - throw new import_request_error.RequestError("Not modified", status, { - response: { - url, - status, - headers, - data: await getResponseData(response), - }, - request: requestOptions, - }); - } - if (status >= 400) { - const data = await getResponseData(response); - const error = new import_request_error.RequestError( - toErrorMessage(data), - status, - { - response: { - url, - status, - headers, - data, - }, - request: requestOptions, - }, - ); - throw error; - } - return parseSuccessResponseBody ? await getResponseData(response) : response.body; - }) - .then((data) => { - return { - status, - url, - headers, - data, - }; - }) - .catch((error) => { - if (error instanceof import_request_error.RequestError) throw error; - else if (error.name === "AbortError") throw error; - let message = error.message; - if (error.name === "TypeError" && "cause" in error) { - if (error.cause instanceof Error) { - message = error.cause.message; - } else if (typeof error.cause === "string") { - message = error.cause; - } - } - throw new import_request_error.RequestError(message, 500, { - request: requestOptions, - }); - }); - } - async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - if (/application\/json/.test(contentType)) { - return response - .json() - .catch(() => response.text()) - .catch(() => ""); - } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - return getBufferResponse(response); - } - function toErrorMessage(data) { - if (typeof data === "string") return data; - let suffix; - if ("documentation_url" in data) { - suffix = ` - ${data.documentation_url}`; - } else { - suffix = ""; - } - if ("message" in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}${suffix}`; - } - return `${data.message}${suffix}`; - } - return `Unknown error: ${JSON.stringify(data)}`; - } - - // pkg/dist-src/with-defaults.js - function withDefaults(oldEndpoint, newDefaults) { - const endpoint2 = oldEndpoint.defaults(newDefaults); - const newApi = function (route, parameters) { - const endpointOptions = endpoint2.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint2.parse(endpointOptions)); - } - const request2 = (route2, parameters2) => { - return fetchWrapper(endpoint2.parse(endpoint2.merge(route2, parameters2))); - }; - Object.assign(request2, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2), - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2), - }); - } - - // pkg/dist-src/index.js - var request = withDefaults(import_endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`, - }, - }); - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 3682: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - var register = __nccwpck_require__(4670); - var addHook = __nccwpck_require__(5549); - var removeHook = __nccwpck_require__(6819); - - // bind with array of arguments: https://stackoverflow.com/a/21792913 - var bind = Function.bind; - var bindable = bind.bind(bind); - - function bindApi(hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); - hook.api = { remove: removeHookRef }; - hook.remove = removeHookRef; - ["before", "error", "after", "wrap"].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind]; - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); - }); - } - - function HookSingular() { - var singularHookName = "h"; - var singularHookState = { - registry: {}, - }; - var singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; - } - - function HookCollection() { - var state = { - registry: {}, - }; - - var hook = register.bind(null, state); - bindApi(hook, state); - - return hook; - } - - var collectionHookDeprecationMessageDisplayed = false; - function Hook() { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn( - '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4', - ); - collectionHookDeprecationMessageDisplayed = true; - } - return HookCollection(); - } - - Hook.Singular = HookSingular.bind(); - Hook.Collection = HookCollection.bind(); - - module.exports = Hook; - // expose constructors as a named property for TypeScript - module.exports.Hook = Hook; - module.exports.Singular = Hook.Singular; - module.exports.Collection = Hook.Collection; - - /***/ - }, - - /***/ 5549: /***/ (module) => { - module.exports = addHook; - - function addHook(state, kind, name, hook) { - var orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; - } - - if (kind === "before") { - hook = function (method, options) { - return Promise.resolve() - .then(orig.bind(null, options)) - .then(method.bind(null, options)); - }; - } - - if (kind === "after") { - hook = function (method, options) { - var result; - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_; - return orig(result, options); - }) - .then(function () { - return result; - }); - }; - } - - if (kind === "error") { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options); - }); - }; - } - - state.registry[name].push({ - hook: hook, - orig: orig, - }); - } - - /***/ - }, - - /***/ 4670: /***/ (module) => { - module.exports = register; - - function register(state, name, method, options) { - if (typeof method !== "function") { - throw new Error("method for before hook must be a function"); - } - - if (!options) { - options = {}; - } - - if (Array.isArray(name)) { - return name.reverse().reduce(function (callback, name) { - return register.bind(null, state, name, callback, options); - }, method)(); - } - - return Promise.resolve().then(function () { - if (!state.registry[name]) { - return method(options); - } - - return state.registry[name].reduce(function (method, registered) { - return registered.hook.bind(null, method, options); - }, method)(); - }); - } - - /***/ - }, - - /***/ 6819: /***/ (module) => { - module.exports = removeHook; - - function removeHook(state, name, method) { - if (!state.registry[name]) { - return; - } - - var index = state.registry[name] - .map(function (registered) { - return registered.orig; - }) - .indexOf(method); - - if (index === -1) { - return; - } - - state.registry[name].splice(index, 1); - } - - /***/ - }, - - /***/ 8932: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - - class Deprecation extends Error { - constructor(message) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = "Deprecation"; - } - } - - exports.Deprecation = Deprecation; - - /***/ - }, - - /***/ 7129: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - // A linked list to keep track of recently-used-ness - const Yallist = __nccwpck_require__(665); - - const MAX = Symbol("max"); - const LENGTH = Symbol("length"); - const LENGTH_CALCULATOR = Symbol("lengthCalculator"); - const ALLOW_STALE = Symbol("allowStale"); - const MAX_AGE = Symbol("maxAge"); - const DISPOSE = Symbol("dispose"); - const NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet"); - const LRU_LIST = Symbol("lruList"); - const CACHE = Symbol("cache"); - const UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet"); - - const naiveLength = () => 1; - - // lruList is a yallist where the head is the youngest - // item, and the tail is the oldest. the list contains the Hit - // objects as the entries. - // Each Hit object has a reference to its Yallist.Node. This - // never changes. - // - // cache is a Map (or PseudoMap) that matches the keys to - // the Yallist.Node object. - class LRUCache { - constructor(options) { - if (typeof options === "number") options = { max: options }; - - if (!options) options = {}; - - if (options.max && (typeof options.max !== "number" || options.max < 0)) - throw new TypeError("max must be a non-negative number"); - // Kind of weird to have a default max of Infinity, but oh well. - const max = (this[MAX] = options.max || Infinity); - - const lc = options.length || naiveLength; - this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc; - this[ALLOW_STALE] = options.stale || false; - if (options.maxAge && typeof options.maxAge !== "number") - throw new TypeError("maxAge must be a number"); - this[MAX_AGE] = options.maxAge || 0; - this[DISPOSE] = options.dispose; - this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; - this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; - this.reset(); - } - - // resize the cache when the max changes. - set max(mL) { - if (typeof mL !== "number" || mL < 0) - throw new TypeError("max must be a non-negative number"); - - this[MAX] = mL || Infinity; - trim(this); - } - get max() { - return this[MAX]; - } - - set allowStale(allowStale) { - this[ALLOW_STALE] = !!allowStale; - } - get allowStale() { - return this[ALLOW_STALE]; - } - - set maxAge(mA) { - if (typeof mA !== "number") throw new TypeError("maxAge must be a non-negative number"); - - this[MAX_AGE] = mA; - trim(this); - } - get maxAge() { - return this[MAX_AGE]; - } - - // resize the cache when the lengthCalculator changes. - set lengthCalculator(lC) { - if (typeof lC !== "function") lC = naiveLength; - - if (lC !== this[LENGTH_CALCULATOR]) { - this[LENGTH_CALCULATOR] = lC; - this[LENGTH] = 0; - this[LRU_LIST].forEach((hit) => { - hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); - this[LENGTH] += hit.length; - }); - } - trim(this); - } - get lengthCalculator() { - return this[LENGTH_CALCULATOR]; - } - - get length() { - return this[LENGTH]; - } - get itemCount() { - return this[LRU_LIST].length; - } - - rforEach(fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].tail; walker !== null; ) { - const prev = walker.prev; - forEachStep(this, fn, walker, thisp); - walker = prev; - } - } - - forEach(fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].head; walker !== null; ) { - const next = walker.next; - forEachStep(this, fn, walker, thisp); - walker = next; - } - } - - keys() { - return this[LRU_LIST].toArray().map((k) => k.key); - } - - values() { - return this[LRU_LIST].toArray().map((k) => k.value); - } - - reset() { - if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) { - this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value)); - } - - this[CACHE] = new Map(); // hash of items by key - this[LRU_LIST] = new Yallist(); // list of items in order of use recency - this[LENGTH] = 0; // length of items in the list - } - - dump() { - return this[LRU_LIST] - .map((hit) => - isStale(this, hit) - ? false - : { - k: hit.key, - v: hit.value, - e: hit.now + (hit.maxAge || 0), - }, - ) - .toArray() - .filter((h) => h); - } - - dumpLru() { - return this[LRU_LIST]; - } - - set(key, value, maxAge) { - maxAge = maxAge || this[MAX_AGE]; - - if (maxAge && typeof maxAge !== "number") throw new TypeError("maxAge must be a number"); - - const now = maxAge ? Date.now() : 0; - const len = this[LENGTH_CALCULATOR](value, key); - - if (this[CACHE].has(key)) { - if (len > this[MAX]) { - del(this, this[CACHE].get(key)); - return false; - } - - const node = this[CACHE].get(key); - const item = node.value; - - // dispose of the old one before overwriting - // split out into 2 ifs for better coverage tracking - if (this[DISPOSE]) { - if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value); - } - - item.now = now; - item.maxAge = maxAge; - item.value = value; - this[LENGTH] += len - item.length; - item.length = len; - this.get(key); - trim(this); - return true; - } - - const hit = new Entry(key, value, len, now, maxAge); - - // oversized objects fall out of cache automatically. - if (hit.length > this[MAX]) { - if (this[DISPOSE]) this[DISPOSE](key, value); - - return false; - } - - this[LENGTH] += hit.length; - this[LRU_LIST].unshift(hit); - this[CACHE].set(key, this[LRU_LIST].head); - trim(this); - return true; - } - - has(key) { - if (!this[CACHE].has(key)) return false; - const hit = this[CACHE].get(key).value; - return !isStale(this, hit); - } - - get(key) { - return get(this, key, true); - } - - peek(key) { - return get(this, key, false); - } - - pop() { - const node = this[LRU_LIST].tail; - if (!node) return null; - - del(this, node); - return node.value; - } - - del(key) { - del(this, this[CACHE].get(key)); - } - - load(arr) { - // reset the cache - this.reset(); - - const now = Date.now(); - // A previous serialized cache has the most recent items first - for (let l = arr.length - 1; l >= 0; l--) { - const hit = arr[l]; - const expiresAt = hit.e || 0; - if (expiresAt === 0) - // the item was created without expiration in a non aged cache - this.set(hit.k, hit.v); - else { - const maxAge = expiresAt - now; - // dont add already expired items - if (maxAge > 0) { - this.set(hit.k, hit.v, maxAge); - } - } - } - } - - prune() { - this[CACHE].forEach((value, key) => get(this, key, false)); - } - } - - const get = (self, key, doUse) => { - const node = self[CACHE].get(key); - if (node) { - const hit = node.value; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) return undefined; - } else { - if (doUse) { - if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now(); - self[LRU_LIST].unshiftNode(node); - } - } - return hit.value; - } - }; - - const isStale = (self, hit) => { - if (!hit || (!hit.maxAge && !self[MAX_AGE])) return false; - - const diff = Date.now() - hit.now; - return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE]; - }; - - const trim = (self) => { - if (self[LENGTH] > self[MAX]) { - for (let walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null; ) { - // We know that we're about to delete this one, and also - // what the next least recently used key will be, so just - // go ahead and set it now. - const prev = walker.prev; - del(self, walker); - walker = prev; - } - } - }; - - const del = (self, node) => { - if (node) { - const hit = node.value; - if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value); - - self[LENGTH] -= hit.length; - self[CACHE].delete(hit.key); - self[LRU_LIST].removeNode(node); - } - }; - - class Entry { - constructor(key, value, length, now, maxAge) { - this.key = key; - this.value = value; - this.length = length; - this.now = now; - this.maxAge = maxAge || 0; - } - } - - const forEachStep = (self, fn, node, thisp) => { - let hit = node.value; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) hit = undefined; - } - if (hit) fn.call(thisp, hit.value, hit.key, self); - }; - - module.exports = LRUCache; - - /***/ - }, - - /***/ 1223: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - var wrappy = __nccwpck_require__(2940); - module.exports = wrappy(once); - module.exports.strict = wrappy(onceStrict); - - once.proto = once(function () { - Object.defineProperty(Function.prototype, "once", { - value: function () { - return once(this); - }, - configurable: true, - }); - - Object.defineProperty(Function.prototype, "onceStrict", { - value: function () { - return onceStrict(this); - }, - configurable: true, - }); - }); - - function once(fn) { - var f = function () { - if (f.called) return f.value; - f.called = true; - return (f.value = fn.apply(this, arguments)); - }; - f.called = false; - return f; - } - - function onceStrict(fn) { - var f = function () { - if (f.called) throw new Error(f.onceError); - f.called = true; - return (f.value = fn.apply(this, arguments)); - }; - var name = fn.name || "Function wrapped with `once`"; - f.onceError = name + " shouldn't be called more than once"; - f.called = false; - return f; - } - - /***/ - }, - - /***/ 1532: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const ANY = Symbol("SemVer ANY"); - // hoisted class for cyclic dependency - class Comparator { - static get ANY() { - return ANY; - } - - constructor(comp, options) { - options = parseOptions(options); - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp; - } else { - comp = comp.value; - } - } - - comp = comp.trim().split(/\s+/).join(" "); - debug("comparator", comp, options); - this.options = options; - this.loose = !!options.loose; - this.parse(comp); - - if (this.semver === ANY) { - this.value = ""; - } else { - this.value = this.operator + this.semver.version; - } - - debug("comp", this); - } - - parse(comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; - const m = comp.match(r); - - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`); - } - - this.operator = m[1] !== undefined ? m[1] : ""; - if (this.operator === "=") { - this.operator = ""; - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY; - } else { - this.semver = new SemVer(m[2], this.options.loose); - } - } - - toString() { - return this.value; - } - - test(version) { - debug("Comparator.test", version, this.options.loose); - - if (this.semver === ANY || version === ANY) { - return true; - } - - if (typeof version === "string") { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false; - } - } - - return cmp(version, this.operator, this.semver, this.options); - } - - intersects(comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError("a Comparator is required"); - } - - if (this.operator === "") { - if (this.value === "") { - return true; - } - return new Range(comp.value, options).test(this.value); - } else if (comp.operator === "") { - if (comp.value === "") { - return true; - } - return new Range(this.value, options).test(comp.semver); - } - - options = parseOptions(options); - - // Special cases where nothing can possibly be lower - if ( - options.includePrerelease && - (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0") - ) { - return false; - } - if ( - !options.includePrerelease && - (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0")) - ) { - return false; - } - - // Same direction increasing (> or >=) - if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { - return true; - } - // Same direction decreasing (< or <=) - if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { - return true; - } - // same SemVer and both sides are inclusive (<= or >=) - if ( - this.semver.version === comp.semver.version && - this.operator.includes("=") && - comp.operator.includes("=") - ) { - return true; - } - // opposite directions less than - if ( - cmp(this.semver, "<", comp.semver, options) && - this.operator.startsWith(">") && - comp.operator.startsWith("<") - ) { - return true; - } - // opposite directions greater than - if ( - cmp(this.semver, ">", comp.semver, options) && - this.operator.startsWith("<") && - comp.operator.startsWith(">") - ) { - return true; - } - return false; - } - } - - module.exports = Comparator; - - const parseOptions = __nccwpck_require__(785); - const { safeRe: re, t } = __nccwpck_require__(9523); - const cmp = __nccwpck_require__(5098); - const debug = __nccwpck_require__(427); - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - - /***/ - }, - - /***/ 9828: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // hoisted class for cyclic dependency - class Range { - constructor(range, options) { - options = parseOptions(options); - - if (range instanceof Range) { - if ( - range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease - ) { - return range; - } else { - return new Range(range.raw, options); - } - } - - if (range instanceof Comparator) { - // just put it in the set and return - this.raw = range.value; - this.set = [[range]]; - this.format(); - return this; - } - - this.options = options; - this.loose = !!options.loose; - this.includePrerelease = !!options.includePrerelease; - - // First reduce all whitespace as much as possible so we do not have to rely - // on potentially slow regexes like \s*. This is then stored and used for - // future error messages as well. - this.raw = range.trim().split(/\s+/).join(" "); - - // First, split on || - this.set = this.raw - .split("||") - // map the range to a 2d array of comparators - .map((r) => this.parseRange(r.trim())) - // throw out any comparator lists that are empty - // this generally means that it was not a valid range, which is allowed - // in loose mode, but will still throw if the WHOLE range is invalid. - .filter((c) => c.length); - - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${this.raw}`); - } - - // if we have any that are not the null set, throw out null sets. - if (this.set.length > 1) { - // keep the first one, in case they're all null sets - const first = this.set[0]; - this.set = this.set.filter((c) => !isNullSet(c[0])); - if (this.set.length === 0) { - this.set = [first]; - } else if (this.set.length > 1) { - // if we have any that are *, then the range is just * - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c]; - break; - } - } - } - } - - this.format(); - } - - format() { - this.range = this.set - .map((comps) => comps.join(" ").trim()) - .join("||") - .trim(); - return this.range; - } - - toString() { - return this.range; - } - - parseRange(range) { - // memoize range parsing for performance. - // this is a very hot path, and fully deterministic. - const memoOpts = - (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | - (this.options.loose && FLAG_LOOSE); - const memoKey = memoOpts + ":" + range; - const cached = cache.get(memoKey); - if (cached) { - return cached; - } - - const loose = this.options.loose; - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); - debug("hyphen replace", range); - - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); - debug("comparator trim", range); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace); - debug("tilde trim", range); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace); - debug("caret trim", range); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - let rangeList = range - .split(" ") - .map((comp) => parseComparator(comp, this.options)) - .join(" ") - .split(/\s+/) - // >=0.0.0 is equivalent to * - .map((comp) => replaceGTE0(comp, this.options)); - - if (loose) { - // in loose mode, throw out any that are not valid comparators - rangeList = rangeList.filter((comp) => { - debug("loose invalid filter", comp, this.options); - return !!comp.match(re[t.COMPARATORLOOSE]); - }); - } - debug("range list", rangeList); - - // if any comparators are the null set, then replace with JUST null set - // if more than one comparator, remove any * comparators - // also, don't include the same comparator more than once - const rangeMap = new Map(); - const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); - for (const comp of comparators) { - if (isNullSet(comp)) { - return [comp]; - } - rangeMap.set(comp.value, comp); - } - if (rangeMap.size > 1 && rangeMap.has("")) { - rangeMap.delete(""); - } - - const result = [...rangeMap.values()]; - cache.set(memoKey, result); - return result; - } - - intersects(range, options) { - if (!(range instanceof Range)) { - throw new TypeError("a Range is required"); - } - - return this.set.some((thisComparators) => { - return ( - isSatisfiable(thisComparators, options) && - range.set.some((rangeComparators) => { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options); - }); - }) - ); - }) - ); - }); - } - - // if ANY of the sets match ALL of its comparators, then pass - test(version) { - if (!version) { - return false; - } - - if (typeof version === "string") { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false; - } - } - - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true; - } - } - return false; - } - } - - module.exports = Range; - - const LRU = __nccwpck_require__(7129); - const cache = new LRU({ max: 1000 }); - - const parseOptions = __nccwpck_require__(785); - const Comparator = __nccwpck_require__(1532); - const debug = __nccwpck_require__(427); - const SemVer = __nccwpck_require__(8088); - const { - safeRe: re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace, - } = __nccwpck_require__(9523); - const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = __nccwpck_require__(2293); - - const isNullSet = (c) => c.value === "<0.0.0-0"; - const isAny = (c) => c.value === ""; - - // take a set of comparators and determine whether there - // exists a version which can satisfy it - const isSatisfiable = (comparators, options) => { - let result = true; - const remainingComparators = comparators.slice(); - let testComparator = remainingComparators.pop(); - - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options); - }); - - testComparator = remainingComparators.pop(); - } - - return result; - }; - - // comprised of xranges, tildes, stars, and gtlt's at this point. - // already replaced the hyphen ranges - // turn into a set of JUST comparators. - const parseComparator = (comp, options) => { - debug("comp", comp, options); - comp = replaceCarets(comp, options); - debug("caret", comp); - comp = replaceTildes(comp, options); - debug("tildes", comp); - comp = replaceXRanges(comp, options); - debug("xrange", comp); - comp = replaceStars(comp, options); - debug("stars", comp); - return comp; - }; - - const isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; - - // ~, ~> --> * (any, kinda silly) - // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 - // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 - // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 - // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 - // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 - // ~0.0.1 --> >=0.0.1 <0.1.0-0 - const replaceTildes = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceTilde(c, options)) - .join(" "); - }; - - const replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; - return comp.replace(r, (_, M, m, p, pr) => { - debug("tilde", comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ""; - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0-0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; - } else if (pr) { - debug("replaceTilde pr", pr); - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; - } else { - // ~1.2.3 == >=1.2.3 <1.3.0-0 - ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; - } - - debug("tilde return", ret); - return ret; - }); - }; - - // ^ --> * (any, kinda silly) - // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 - // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 - // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 - // ^1.2.3 --> >=1.2.3 <2.0.0-0 - // ^1.2.0 --> >=1.2.0 <2.0.0-0 - // ^0.0.1 --> >=0.0.1 <0.0.2-0 - // ^0.1.0 --> >=0.1.0 <0.2.0-0 - const replaceCarets = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceCaret(c, options)) - .join(" "); - }; - - const replaceCaret = (comp, options) => { - debug("caret", comp, options); - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; - const z = options.includePrerelease ? "-0" : ""; - return comp.replace(r, (_, M, m, p, pr) => { - debug("caret", comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ""; - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; - } else if (isX(p)) { - if (M === "0") { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; - } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; - } - } else if (pr) { - debug("replaceCaret pr", pr); - if (M === "0") { - if (m === "0") { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; - } - } else { - debug("no pr"); - if (M === "0") { - if (m === "0") { - ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; - } - } - - debug("caret return", ret); - return ret; - }); - }; - - const replaceXRanges = (comp, options) => { - debug("replaceXRanges", comp, options); - return comp - .split(/\s+/) - .map((c) => replaceXRange(c, options)) - .join(" "); - }; - - const replaceXRange = (comp, options) => { - comp = comp.trim(); - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug("xRange", comp, ret, gtlt, M, m, p, pr); - const xM = isX(M); - const xm = xM || isX(m); - const xp = xm || isX(p); - const anyX = xp; - - if (gtlt === "=" && anyX) { - gtlt = ""; - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? "-0" : ""; - - if (xM) { - if (gtlt === ">" || gtlt === "<") { - // nothing is allowed - ret = "<0.0.0-0"; - } else { - // nothing is forbidden - ret = "*"; - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0; - } - p = 0; - - if (gtlt === ">") { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - gtlt = ">="; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else { - m = +m + 1; - p = 0; - } - } else if (gtlt === "<=") { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = "<"; - if (xm) { - M = +M + 1; - } else { - m = +m + 1; - } - } - - if (gtlt === "<") { - pr = "-0"; - } - - ret = `${gtlt + M}.${m}.${p}${pr}`; - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; - } else if (xp) { - ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; - } - - debug("xRange return", ret); - - return ret; - }); - }; - - // Because * is AND-ed with everything else in the comparator, - // and '' means "any version", just remove the *s entirely. - const replaceStars = (comp, options) => { - debug("replaceStars", comp, options); - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], ""); - }; - - const replaceGTE0 = (comp, options) => { - debug("replaceGTE0", comp, options); - return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); - }; - - // This function is passed to string.replace(re[t.HYPHENRANGE]) - // M, m, patch, prerelease, build - // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 - // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do - // 1.2 - 3.4 => >=1.2.0 <3.5.0-0 - const hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => { - if (isX(fM)) { - from = ""; - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? "-0" : ""}`; - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; - } else if (fpr) { - from = `>=${from}`; - } else { - from = `>=${from}${incPr ? "-0" : ""}`; - } - - if (isX(tM)) { - to = ""; - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0`; - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0`; - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}`; - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0`; - } else { - to = `<=${to}`; - } - - return `${from} ${to}`.trim(); - }; - - const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false; - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (let i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === Comparator.ANY) { - continue; - } - - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver; - if ( - allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch - ) { - return true; - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; - }; - - /***/ - }, - - /***/ 8088: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const debug = __nccwpck_require__(427); - const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(2293); - const { safeRe: re, t } = __nccwpck_require__(9523); - - const parseOptions = __nccwpck_require__(785); - const { compareIdentifiers } = __nccwpck_require__(2463); - class SemVer { - constructor(version, options) { - options = parseOptions(options); - - if (version instanceof SemVer) { - if ( - version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease - ) { - return version; - } else { - version = version.version; - } - } else if (typeof version !== "string") { - throw new TypeError( - `Invalid version. Must be a string. Got type "${typeof version}".`, - ); - } - - if (version.length > MAX_LENGTH) { - throw new TypeError(`version is longer than ${MAX_LENGTH} characters`); - } - - debug("SemVer", version, options); - this.options = options; - this.loose = !!options.loose; - // this isn't actually relevant for versions, but keep it so that we - // don't run into trouble passing this.options around. - this.includePrerelease = !!options.includePrerelease; - - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); - - if (!m) { - throw new TypeError(`Invalid Version: ${version}`); - } - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError("Invalid major version"); - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError("Invalid minor version"); - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError("Invalid patch version"); - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = []; - } else { - this.prerelease = m[4].split(".").map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num; - } - } - return id; - }); - } - - this.build = m[5] ? m[5].split(".") : []; - this.format(); - } - - format() { - this.version = `${this.major}.${this.minor}.${this.patch}`; - if (this.prerelease.length) { - this.version += `-${this.prerelease.join(".")}`; - } - return this.version; - } - - toString() { - return this.version; - } - - compare(other) { - debug("SemVer.compare", this.version, this.options, other); - if (!(other instanceof SemVer)) { - if (typeof other === "string" && other === this.version) { - return 0; - } - other = new SemVer(other, this.options); - } - - if (other.version === this.version) { - return 0; - } - - return this.compareMain(other) || this.comparePre(other); - } - - compareMain(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - return ( - compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) - ); - } - - comparePre(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1; - } else if (!this.prerelease.length && other.prerelease.length) { - return 1; - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0; - } - - let i = 0; - do { - const a = this.prerelease[i]; - const b = other.prerelease[i]; - debug("prerelease compare", i, a, b); - if (a === undefined && b === undefined) { - return 0; - } else if (b === undefined) { - return 1; - } else if (a === undefined) { - return -1; - } else if (a === b) { - continue; - } else { - return compareIdentifiers(a, b); - } - } while (++i); - } - - compareBuild(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - let i = 0; - do { - const a = this.build[i]; - const b = other.build[i]; - debug("prerelease compare", i, a, b); - if (a === undefined && b === undefined) { - return 0; - } else if (b === undefined) { - return 1; - } else if (a === undefined) { - return -1; - } else if (a === b) { - continue; - } else { - return compareIdentifiers(a, b); - } - } while (++i); - } - - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - inc(release, identifier, identifierBase) { - switch (release) { - case "premajor": - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc("pre", identifier, identifierBase); - break; - case "preminor": - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc("pre", identifier, identifierBase); - break; - case "prepatch": - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc("patch", identifier, identifierBase); - this.inc("pre", identifier, identifierBase); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case "prerelease": - if (this.prerelease.length === 0) { - this.inc("patch", identifier, identifierBase); - } - this.inc("pre", identifier, identifierBase); - break; - - case "major": - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { - this.major++; - } - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case "minor": - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++; - } - this.patch = 0; - this.prerelease = []; - break; - case "patch": - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++; - } - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. - case "pre": { - const base = Number(identifierBase) ? 1 : 0; - - if (!identifier && identifierBase === false) { - throw new Error("invalid increment argument: identifier is empty"); - } - - if (this.prerelease.length === 0) { - this.prerelease = [base]; - } else { - let i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === "number") { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) { - // didn't increment anything - if ( - identifier === this.prerelease.join(".") && - identifierBase === false - ) { - throw new Error( - "invalid increment argument: identifier already exists", - ); - } - this.prerelease.push(base); - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - let prerelease = [identifier, base]; - if (identifierBase === false) { - prerelease = [identifier]; - } - if (compareIdentifiers(this.prerelease[0], identifier) === 0) { - if (isNaN(this.prerelease[1])) { - this.prerelease = prerelease; - } - } else { - this.prerelease = prerelease; - } - } - break; - } - default: - throw new Error(`invalid increment argument: ${release}`); - } - this.raw = this.format(); - if (this.build.length) { - this.raw += `+${this.build.join(".")}`; - } - return this; - } - } - - module.exports = SemVer; - - /***/ - }, - - /***/ 8848: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - const clean = (version, options) => { - const s = parse(version.trim().replace(/^[=v]+/, ""), options); - return s ? s.version : null; - }; - module.exports = clean; - - /***/ - }, - - /***/ 5098: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const eq = __nccwpck_require__(1898); - const neq = __nccwpck_require__(6017); - const gt = __nccwpck_require__(4123); - const gte = __nccwpck_require__(5522); - const lt = __nccwpck_require__(194); - const lte = __nccwpck_require__(7520); - - const cmp = (a, op, b, loose) => { - switch (op) { - case "===": - if (typeof a === "object") { - a = a.version; - } - if (typeof b === "object") { - b = b.version; - } - return a === b; - - case "!==": - if (typeof a === "object") { - a = a.version; - } - if (typeof b === "object") { - b = b.version; - } - return a !== b; - - case "": - case "=": - case "==": - return eq(a, b, loose); - - case "!=": - return neq(a, b, loose); - - case ">": - return gt(a, b, loose); - - case ">=": - return gte(a, b, loose); - - case "<": - return lt(a, b, loose); - - case "<=": - return lte(a, b, loose); - - default: - throw new TypeError(`Invalid operator: ${op}`); - } - }; - module.exports = cmp; - - /***/ - }, - - /***/ 3466: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const parse = __nccwpck_require__(5925); - const { safeRe: re, t } = __nccwpck_require__(9523); - - const coerce = (version, options) => { - if (version instanceof SemVer) { - return version; - } - - if (typeof version === "number") { - version = String(version); - } - - if (typeof version !== "string") { - return null; - } - - options = options || {}; - - let match = null; - if (!options.rtl) { - match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; - let next; - while ( - (next = coerceRtlRegex.exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || next.index + next[0].length !== match.index + match[0].length) { - match = next; - } - coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; - } - // leave it in a clean state - coerceRtlRegex.lastIndex = -1; - } - - if (match === null) { - return null; - } - - const major = match[2]; - const minor = match[3] || "0"; - const patch = match[4] || "0"; - const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ""; - const build = options.includePrerelease && match[6] ? `+${match[6]}` : ""; - - return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options); - }; - module.exports = coerce; - - /***/ - }, - - /***/ 2156: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose); - const versionB = new SemVer(b, loose); - return versionA.compare(versionB) || versionA.compareBuild(versionB); - }; - module.exports = compareBuild; - - /***/ - }, - - /***/ 2804: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const compareLoose = (a, b) => compare(a, b, true); - module.exports = compareLoose; - - /***/ - }, - - /***/ 4309: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); - - module.exports = compare; - - /***/ - }, - - /***/ 4297: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - - const diff = (version1, version2) => { - const v1 = parse(version1, null, true); - const v2 = parse(version2, null, true); - const comparison = v1.compare(v2); - - if (comparison === 0) { - return null; - } - - const v1Higher = comparison > 0; - const highVersion = v1Higher ? v1 : v2; - const lowVersion = v1Higher ? v2 : v1; - const highHasPre = !!highVersion.prerelease.length; - const lowHasPre = !!lowVersion.prerelease.length; - - if (lowHasPre && !highHasPre) { - // Going from prerelease -> no prerelease requires some special casing - - // If the low version has only a major, then it will always be a major - // Some examples: - // 1.0.0-1 -> 1.0.0 - // 1.0.0-1 -> 1.1.1 - // 1.0.0-1 -> 2.0.0 - if (!lowVersion.patch && !lowVersion.minor) { - return "major"; - } - - // Otherwise it can be determined by checking the high version - - if (highVersion.patch) { - // anything higher than a patch bump would result in the wrong version - return "patch"; - } - - if (highVersion.minor) { - // anything higher than a minor bump would result in the wrong version - return "minor"; - } - - // bumping major/minor/patch all have same result - return "major"; - } - - // add the `pre` prefix if we are going to a prerelease version - const prefix = highHasPre ? "pre" : ""; - - if (v1.major !== v2.major) { - return prefix + "major"; - } - - if (v1.minor !== v2.minor) { - return prefix + "minor"; - } - - if (v1.patch !== v2.patch) { - return prefix + "patch"; - } - - // high and low are preleases - return "prerelease"; - }; - - module.exports = diff; - - /***/ - }, - - /***/ 1898: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const eq = (a, b, loose) => compare(a, b, loose) === 0; - module.exports = eq; - - /***/ - }, - - /***/ 4123: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const gt = (a, b, loose) => compare(a, b, loose) > 0; - module.exports = gt; - - /***/ - }, - - /***/ 5522: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const gte = (a, b, loose) => compare(a, b, loose) >= 0; - module.exports = gte; - - /***/ - }, - - /***/ 900: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - - const inc = (version, release, options, identifier, identifierBase) => { - if (typeof options === "string") { - identifierBase = identifier; - identifier = options; - options = undefined; - } - - try { - return new SemVer(version instanceof SemVer ? version.version : version, options).inc( - release, - identifier, - identifierBase, - ).version; - } catch (er) { - return null; - } - }; - module.exports = inc; - - /***/ - }, - - /***/ 194: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const lt = (a, b, loose) => compare(a, b, loose) < 0; - module.exports = lt; - - /***/ - }, - - /***/ 7520: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const lte = (a, b, loose) => compare(a, b, loose) <= 0; - module.exports = lte; - - /***/ - }, - - /***/ 6688: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const major = (a, loose) => new SemVer(a, loose).major; - module.exports = major; - - /***/ - }, - - /***/ 8447: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const minor = (a, loose) => new SemVer(a, loose).minor; - module.exports = minor; - - /***/ - }, - - /***/ 6017: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const neq = (a, b, loose) => compare(a, b, loose) !== 0; - module.exports = neq; - - /***/ - }, - - /***/ 5925: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const parse = (version, options, throwErrors = false) => { - if (version instanceof SemVer) { - return version; - } - try { - return new SemVer(version, options); - } catch (er) { - if (!throwErrors) { - return null; - } - throw er; - } - }; - - module.exports = parse; - - /***/ - }, - - /***/ 2866: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const patch = (a, loose) => new SemVer(a, loose).patch; - module.exports = patch; - - /***/ - }, - - /***/ 4016: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - const prerelease = (version, options) => { - const parsed = parse(version, options); - return parsed && parsed.prerelease.length ? parsed.prerelease : null; - }; - module.exports = prerelease; - - /***/ - }, - - /***/ 6417: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const rcompare = (a, b, loose) => compare(b, a, loose); - module.exports = rcompare; - - /***/ - }, - - /***/ 8701: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compareBuild = __nccwpck_require__(2156); - const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); - module.exports = rsort; - - /***/ - }, - - /***/ 6055: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const satisfies = (version, range, options) => { - try { - range = new Range(range, options); - } catch (er) { - return false; - } - return range.test(version); - }; - module.exports = satisfies; - - /***/ - }, - - /***/ 1426: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compareBuild = __nccwpck_require__(2156); - const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); - module.exports = sort; - - /***/ - }, - - /***/ 9601: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - const valid = (version, options) => { - const v = parse(version, options); - return v ? v.version : null; - }; - module.exports = valid; - - /***/ - }, - - /***/ 1383: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // just pre-load all the stuff that index.js lazily exports - const internalRe = __nccwpck_require__(9523); - const constants = __nccwpck_require__(2293); - const SemVer = __nccwpck_require__(8088); - const identifiers = __nccwpck_require__(2463); - const parse = __nccwpck_require__(5925); - const valid = __nccwpck_require__(9601); - const clean = __nccwpck_require__(8848); - const inc = __nccwpck_require__(900); - const diff = __nccwpck_require__(4297); - const major = __nccwpck_require__(6688); - const minor = __nccwpck_require__(8447); - const patch = __nccwpck_require__(2866); - const prerelease = __nccwpck_require__(4016); - const compare = __nccwpck_require__(4309); - const rcompare = __nccwpck_require__(6417); - const compareLoose = __nccwpck_require__(2804); - const compareBuild = __nccwpck_require__(2156); - const sort = __nccwpck_require__(1426); - const rsort = __nccwpck_require__(8701); - const gt = __nccwpck_require__(4123); - const lt = __nccwpck_require__(194); - const eq = __nccwpck_require__(1898); - const neq = __nccwpck_require__(6017); - const gte = __nccwpck_require__(5522); - const lte = __nccwpck_require__(7520); - const cmp = __nccwpck_require__(5098); - const coerce = __nccwpck_require__(3466); - const Comparator = __nccwpck_require__(1532); - const Range = __nccwpck_require__(9828); - const satisfies = __nccwpck_require__(6055); - const toComparators = __nccwpck_require__(2706); - const maxSatisfying = __nccwpck_require__(579); - const minSatisfying = __nccwpck_require__(832); - const minVersion = __nccwpck_require__(4179); - const validRange = __nccwpck_require__(2098); - const outside = __nccwpck_require__(420); - const gtr = __nccwpck_require__(9380); - const ltr = __nccwpck_require__(3323); - const intersects = __nccwpck_require__(7008); - const simplifyRange = __nccwpck_require__(5297); - const subset = __nccwpck_require__(7863); - module.exports = { - parse, - valid, - clean, - inc, - diff, - major, - minor, - patch, - prerelease, - compare, - rcompare, - compareLoose, - compareBuild, - sort, - rsort, - gt, - lt, - eq, - neq, - gte, - lte, - cmp, - coerce, - Comparator, - Range, - satisfies, - toComparators, - maxSatisfying, - minSatisfying, - minVersion, - validRange, - outside, - gtr, - ltr, - intersects, - simplifyRange, - subset, - SemVer, - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, - RELEASE_TYPES: constants.RELEASE_TYPES, - compareIdentifiers: identifiers.compareIdentifiers, - rcompareIdentifiers: identifiers.rcompareIdentifiers, - }; - - /***/ - }, - - /***/ 2293: /***/ (module) => { - // Note: this is the semver.org version of the spec that it implements - // Not necessarily the package version of this code. - const SEMVER_SPEC_VERSION = "2.0.0"; - - const MAX_LENGTH = 256; - const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ 9007199254740991; - - // Max safe segment length for coercion. - const MAX_SAFE_COMPONENT_LENGTH = 16; - - // Max safe length for a build identifier. The max length minus 6 characters for - // the shortest version with a build 0.0.0+BUILD. - const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; - - const RELEASE_TYPES = [ - "major", - "premajor", - "minor", - "preminor", - "patch", - "prepatch", - "prerelease", - ]; - - module.exports = { - MAX_LENGTH, - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_SAFE_INTEGER, - RELEASE_TYPES, - SEMVER_SPEC_VERSION, - FLAG_INCLUDE_PRERELEASE: 0b001, - FLAG_LOOSE: 0b010, - }; - - /***/ - }, - - /***/ 427: /***/ (module) => { - const debug = - typeof process === "object" && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG) - ? (...args) => console.error("SEMVER", ...args) - : () => {}; - - module.exports = debug; - - /***/ - }, - - /***/ 2463: /***/ (module) => { - const numeric = /^[0-9]+$/; - const compareIdentifiers = (a, b) => { - const anum = numeric.test(a); - const bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; - }; - - const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); - - module.exports = { - compareIdentifiers, - rcompareIdentifiers, - }; - - /***/ - }, - - /***/ 785: /***/ (module) => { - // parse out just the options we care about - const looseOption = Object.freeze({ loose: true }); - const emptyOpts = Object.freeze({}); - const parseOptions = (options) => { - if (!options) { - return emptyOpts; - } - - if (typeof options !== "object") { - return looseOption; - } - - return options; - }; - module.exports = parseOptions; - - /***/ - }, - - /***/ 9523: /***/ (module, exports, __nccwpck_require__) => { - const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH } = - __nccwpck_require__(2293); - const debug = __nccwpck_require__(427); - exports = module.exports = {}; - - // The actual regexps go on exports.re - const re = (exports.re = []); - const safeRe = (exports.safeRe = []); - const src = (exports.src = []); - const t = (exports.t = {}); - let R = 0; - - const LETTERDASHNUMBER = "[a-zA-Z0-9-]"; - - // Replace some greedy regex tokens to prevent regex dos issues. These regex are - // used internally via the safeRe object since all inputs in this library get - // normalized first to trim and collapse all extra whitespace. The original - // regexes are exported for userland consumption and lower level usage. A - // future breaking change could export the safer regex only with a note that - // all input should have extra whitespace removed. - const safeRegexReplacements = [ - ["\\s", 1], - ["\\d", MAX_LENGTH], - [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], - ]; - - const makeSafeRegex = (value) => { - for (const [token, max] of safeRegexReplacements) { - value = value - .split(`${token}*`) - .join(`${token}{0,${max}}`) - .split(`${token}+`) - .join(`${token}{1,${max}}`); - } - return value; - }; - - const createToken = (name, value, isGlobal) => { - const safe = makeSafeRegex(value); - const index = R++; - debug(name, index, value); - t[name] = index; - src[index] = value; - re[index] = new RegExp(value, isGlobal ? "g" : undefined); - safeRe[index] = new RegExp(safe, isGlobal ? "g" : undefined); - }; - - // The following Regular Expressions can be used for tokenizing, - // validating, and parsing SemVer version strings. - - // ## Numeric Identifier - // A single `0`, or a non-zero digit followed by zero or more digits. - - createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); - createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); - - // ## Non-numeric Identifier - // Zero or more digits, followed by a letter or hyphen, and then zero or - // more letters, digits, or hyphens. - - createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); - - // ## Main Version - // Three dot-separated numeric identifiers. - - createToken( - "MAINVERSION", - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`, - ); - - createToken( - "MAINVERSIONLOOSE", - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`, - ); - - // ## Pre-release Version Identifier - // A numeric identifier, or a non-numeric identifier. - - createToken( - "PRERELEASEIDENTIFIER", - `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`, - ); - - createToken( - "PRERELEASEIDENTIFIERLOOSE", - `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`, - ); - - // ## Pre-release Version - // Hyphen, followed by one or more dot-separated pre-release version - // identifiers. - - createToken( - "PRERELEASE", - `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`, - ); - - createToken( - "PRERELEASELOOSE", - `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`, - ); - - // ## Build Metadata Identifier - // Any combination of digits, letters, or hyphens. - - createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); - - // ## Build Metadata - // Plus sign, followed by one or more period-separated build metadata - // identifiers. - - createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); - - // ## Full Version String - // A main version, followed optionally by a pre-release version and - // build metadata. - - // Note that the only major, minor, patch, and pre-release sections of - // the version string are capturing groups. The build metadata is not a - // capturing group, because it should not ever be used in version - // comparison. - - createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); - - createToken("FULL", `^${src[t.FULLPLAIN]}$`); - - // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. - // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty - // common in the npm registry. - createToken( - "LOOSEPLAIN", - `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`, - ); - - createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); - - createToken("GTLT", "((?:<|>)?=?)"); - - // Something like "2.*" or "1.2.x". - // Note that "x.x" is a valid xRange identifer, meaning "any version" - // Only the first item is strictly required. - createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); - createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); - - createToken( - "XRANGEPLAIN", - `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?` + - `)?)?`, - ); - - createToken( - "XRANGEPLAINLOOSE", - `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?` + - `)?)?`, - ); - - createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); - createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); - - // Coercion. - // Extract anything that could conceivably be a part of a valid semver - createToken( - "COERCEPLAIN", - `${"(^|[^\\d])" + "(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`, - ); - createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); - createToken( - "COERCEFULL", - src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?` + `(?:${src[t.BUILD]})?` + `(?:$|[^\\d])`, - ); - createToken("COERCERTL", src[t.COERCE], true); - createToken("COERCERTLFULL", src[t.COERCEFULL], true); - - // Tilde ranges. - // Meaning is "reasonably at or greater than" - createToken("LONETILDE", "(?:~>?)"); - - createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); - exports.tildeTrimReplace = "$1~"; - - createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); - createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); - - // Caret ranges. - // Meaning is "at least and backwards compatible with" - createToken("LONECARET", "(?:\\^)"); - - createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); - exports.caretTrimReplace = "$1^"; - - createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); - createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); - - // A simple gt/lt/eq thing, or just "" to indicate "any version" - createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); - createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); - - // An expression to strip any whitespace between the gtlt and the thing - // it modifies, so that `> 1.2.3` ==> `>1.2.3` - createToken( - "COMPARATORTRIM", - `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, - true, - ); - exports.comparatorTrimReplace = "$1$2$3"; - - // Something like `1.2.3 - 1.2.4` - // Note that these all use the loose form, because they'll be - // checked against either the strict or loose comparator form - // later. - createToken( - "HYPHENRANGE", - `^\\s*(${src[t.XRANGEPLAIN]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAIN]})` + `\\s*$`, - ); - - createToken( - "HYPHENRANGELOOSE", - `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAINLOOSE]})` + `\\s*$`, - ); - - // Star ranges basically just allow anything at all. - createToken("STAR", "(<|>)?=?\\s*\\*"); - // >=0.0.0 is like a star - createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); - createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); - - /***/ - }, - - /***/ 9380: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // Determine if version is greater than all the versions possible in the range. - const outside = __nccwpck_require__(420); - const gtr = (version, range, options) => outside(version, range, ">", options); - module.exports = gtr; - - /***/ - }, - - /***/ 7008: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const intersects = (r1, r2, options) => { - r1 = new Range(r1, options); - r2 = new Range(r2, options); - return r1.intersects(r2, options); - }; - module.exports = intersects; - - /***/ - }, - - /***/ 3323: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const outside = __nccwpck_require__(420); - // Determine if version is less than all the versions possible in the range - const ltr = (version, range, options) => outside(version, range, "<", options); - module.exports = ltr; - - /***/ - }, - - /***/ 579: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - - const maxSatisfying = (versions, range, options) => { - let max = null; - let maxSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null; - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v; - maxSV = new SemVer(max, options); - } - } - }); - return max; - }; - module.exports = maxSatisfying; - - /***/ - }, - - /***/ 832: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - const minSatisfying = (versions, range, options) => { - let min = null; - let minSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null; - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v; - minSV = new SemVer(min, options); - } - } - }); - return min; - }; - module.exports = minSatisfying; - - /***/ - }, - - /***/ 4179: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - const gt = __nccwpck_require__(4123); - - const minVersion = (range, loose) => { - range = new Range(range, loose); - - let minver = new SemVer("0.0.0"); - if (range.test(minver)) { - return minver; - } - - minver = new SemVer("0.0.0-0"); - if (range.test(minver)) { - return minver; - } - - minver = null; - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - - let setMin = null; - comparators.forEach((comparator) => { - // Clone to avoid manipulating the comparator's semver object. - const compver = new SemVer(comparator.semver.version); - switch (comparator.operator) { - case ">": - if (compver.prerelease.length === 0) { - compver.patch++; - } else { - compver.prerelease.push(0); - } - compver.raw = compver.format(); - /* fallthrough */ - case "": - case ">=": - if (!setMin || gt(compver, setMin)) { - setMin = compver; - } - break; - case "<": - case "<=": - /* Ignore maximum versions */ - break; - /* istanbul ignore next */ - default: - throw new Error(`Unexpected operation: ${comparator.operator}`); - } - }); - if (setMin && (!minver || gt(minver, setMin))) { - minver = setMin; - } - } - - if (minver && range.test(minver)) { - return minver; - } - - return null; - }; - module.exports = minVersion; - - /***/ - }, - - /***/ 420: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Comparator = __nccwpck_require__(1532); - const { ANY } = Comparator; - const Range = __nccwpck_require__(9828); - const satisfies = __nccwpck_require__(6055); - const gt = __nccwpck_require__(4123); - const lt = __nccwpck_require__(194); - const lte = __nccwpck_require__(7520); - const gte = __nccwpck_require__(5522); - - const outside = (version, range, hilo, options) => { - version = new SemVer(version, options); - range = new Range(range, options); - - let gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case ">": - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = ">"; - ecomp = ">="; - break; - case "<": - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = "<"; - ecomp = "<="; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisfies the range it is not outside - if (satisfies(version, range, options)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - - let high = null; - let low = null; - - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator(">=0.0.0"); - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; - }; - - module.exports = outside; - - /***/ - }, - - /***/ 5297: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // given a set of versions and a range, create a "simplified" range - // that includes the same versions that the original range does - // If the original range is shorter than the simplified one, return that. - const satisfies = __nccwpck_require__(6055); - const compare = __nccwpck_require__(4309); - module.exports = (versions, range, options) => { - const set = []; - let first = null; - let prev = null; - const v = versions.sort((a, b) => compare(a, b, options)); - for (const version of v) { - const included = satisfies(version, range, options); - if (included) { - prev = version; - if (!first) { - first = version; - } - } else { - if (prev) { - set.push([first, prev]); - } - prev = null; - first = null; - } - } - if (first) { - set.push([first, null]); - } - - const ranges = []; - for (const [min, max] of set) { - if (min === max) { - ranges.push(min); - } else if (!max && min === v[0]) { - ranges.push("*"); - } else if (!max) { - ranges.push(`>=${min}`); - } else if (min === v[0]) { - ranges.push(`<=${max}`); - } else { - ranges.push(`${min} - ${max}`); - } - } - const simplified = ranges.join(" || "); - const original = typeof range.raw === "string" ? range.raw : String(range); - return simplified.length < original.length ? simplified : range; - }; - - /***/ - }, - - /***/ 7863: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const Comparator = __nccwpck_require__(1532); - const { ANY } = Comparator; - const satisfies = __nccwpck_require__(6055); - const compare = __nccwpck_require__(4309); - - // Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: - // - Every simple range `r1, r2, ...` is a null set, OR - // - Every simple range `r1, r2, ...` which is not a null set is a subset of - // some `R1, R2, ...` - // - // Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: - // - If c is only the ANY comparator - // - If C is only the ANY comparator, return true - // - Else if in prerelease mode, return false - // - else replace c with `[>=0.0.0]` - // - If C is only the ANY comparator - // - if in prerelease mode, return true - // - else replace C with `[>=0.0.0]` - // - Let EQ be the set of = comparators in c - // - If EQ is more than one, return true (null set) - // - Let GT be the highest > or >= comparator in c - // - Let LT be the lowest < or <= comparator in c - // - If GT and LT, and GT.semver > LT.semver, return true (null set) - // - If any C is a = range, and GT or LT are set, return false - // - If EQ - // - If GT, and EQ does not satisfy GT, return true (null set) - // - If LT, and EQ does not satisfy LT, return true (null set) - // - If EQ satisfies every C, return true - // - Else return false - // - If GT - // - If GT.semver is lower than any > or >= comp in C, return false - // - If GT is >=, and GT.semver does not satisfy every C, return false - // - If GT.semver has a prerelease, and not in prerelease mode - // - If no C has a prerelease and the GT.semver tuple, return false - // - If LT - // - If LT.semver is greater than any < or <= comp in C, return false - // - If LT is <=, and LT.semver does not satisfy every C, return false - // - If GT.semver has a prerelease, and not in prerelease mode - // - If no C has a prerelease and the LT.semver tuple, return false - // - Else return true - - const subset = (sub, dom, options = {}) => { - if (sub === dom) { - return true; - } - - sub = new Range(sub, options); - dom = new Range(dom, options); - let sawNonNull = false; - - OUTER: for (const simpleSub of sub.set) { - for (const simpleDom of dom.set) { - const isSub = simpleSubset(simpleSub, simpleDom, options); - sawNonNull = sawNonNull || isSub !== null; - if (isSub) { - continue OUTER; - } - } - // the null set is a subset of everything, but null simple ranges in - // a complex range should be ignored. so if we saw a non-null range, - // then we know this isn't a subset, but if EVERY simple range was null, - // then it is a subset. - if (sawNonNull) { - return false; - } - } - return true; - }; - - const minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; - const minimumVersion = [new Comparator(">=0.0.0")]; - - const simpleSubset = (sub, dom, options) => { - if (sub === dom) { - return true; - } - - if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) { - return true; - } else if (options.includePrerelease) { - sub = minimumVersionWithPreRelease; - } else { - sub = minimumVersion; - } - } - - if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) { - return true; - } else { - dom = minimumVersion; - } - } - - const eqSet = new Set(); - let gt, lt; - for (const c of sub) { - if (c.operator === ">" || c.operator === ">=") { - gt = higherGT(gt, c, options); - } else if (c.operator === "<" || c.operator === "<=") { - lt = lowerLT(lt, c, options); - } else { - eqSet.add(c.semver); - } - } - - if (eqSet.size > 1) { - return null; - } - - let gtltComp; - if (gt && lt) { - gtltComp = compare(gt.semver, lt.semver, options); - if (gtltComp > 0) { - return null; - } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { - return null; - } - } - - // will iterate one or zero times - for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) { - return null; - } - - if (lt && !satisfies(eq, String(lt), options)) { - return null; - } - - for (const c of dom) { - if (!satisfies(eq, String(c), options)) { - return false; - } - } - - return true; - } - - let higher, lower; - let hasDomLT, hasDomGT; - // if the subset has a prerelease, we need a comparator in the superset - // with the same tuple and a prerelease, or it's not a subset - let needDomLTPre = - lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; - let needDomGTPre = - gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; - // exception: <1.2.3-0 is the same as <1.2.3 - if ( - needDomLTPre && - needDomLTPre.prerelease.length === 1 && - lt.operator === "<" && - needDomLTPre.prerelease[0] === 0 - ) { - needDomLTPre = false; - } - - for (const c of dom) { - hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; - hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; - if (gt) { - if (needDomGTPre) { - if ( - c.semver.prerelease && - c.semver.prerelease.length && - c.semver.major === needDomGTPre.major && - c.semver.minor === needDomGTPre.minor && - c.semver.patch === needDomGTPre.patch - ) { - needDomGTPre = false; - } - } - if (c.operator === ">" || c.operator === ">=") { - higher = higherGT(gt, c, options); - if (higher === c && higher !== gt) { - return false; - } - } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) { - return false; - } - } - if (lt) { - if (needDomLTPre) { - if ( - c.semver.prerelease && - c.semver.prerelease.length && - c.semver.major === needDomLTPre.major && - c.semver.minor === needDomLTPre.minor && - c.semver.patch === needDomLTPre.patch - ) { - needDomLTPre = false; - } - } - if (c.operator === "<" || c.operator === "<=") { - lower = lowerLT(lt, c, options); - if (lower === c && lower !== lt) { - return false; - } - } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) { - return false; - } - } - if (!c.operator && (lt || gt) && gtltComp !== 0) { - return false; - } - } - - // if there was a < or >, and nothing in the dom, then must be false - // UNLESS it was limited by another range in the other direction. - // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 - if (gt && hasDomLT && !lt && gtltComp !== 0) { - return false; - } - - if (lt && hasDomGT && !gt && gtltComp !== 0) { - return false; - } - - // we needed a prerelease range in a specific tuple, but didn't get one - // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, - // because it includes prereleases in the 1.2.3 tuple - if (needDomGTPre || needDomLTPre) { - return false; - } - - return true; - }; - - // >=1.2.3 is lower than >1.2.3 - const higherGT = (a, b, options) => { - if (!a) { - return b; - } - const comp = compare(a.semver, b.semver, options); - return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; - }; - - // <=1.2.3 is higher than <1.2.3 - const lowerLT = (a, b, options) => { - if (!a) { - return b; - } - const comp = compare(a.semver, b.semver, options); - return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; - }; - - module.exports = subset; - - /***/ - }, - - /***/ 2706: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - - // Mostly just for testing and legacy API reasons - const toComparators = (range, options) => - new Range(range, options).set.map((comp) => - comp - .map((c) => c.value) - .join(" ") - .trim() - .split(" "), - ); - - module.exports = toComparators; - - /***/ - }, - - /***/ 2098: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const validRange = (range, options) => { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || "*"; - } catch (er) { - return null; - } - }; - module.exports = validRange; - - /***/ - }, - - /***/ 4294: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - module.exports = __nccwpck_require__(4219); - - /***/ - }, - - /***/ 4219: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - var net = __nccwpck_require__(1808); - var tls = __nccwpck_require__(4404); - var http = __nccwpck_require__(3685); - var https = __nccwpck_require__(5687); - var events = __nccwpck_require__(2361); - var assert = __nccwpck_require__(9491); - var util = __nccwpck_require__(3837); - - exports.httpOverHttp = httpOverHttp; - exports.httpsOverHttp = httpsOverHttp; - exports.httpOverHttps = httpOverHttps; - exports.httpsOverHttps = httpsOverHttps; - - function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; - } - - function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; - } - - function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; - } - - function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; - } - - function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; - - self.on("free", function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); - } - util.inherits(TunnelingAgent, events.EventEmitter); - - TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions( - { request: req }, - self.options, - toOptions(host, port, localAddress), - ); - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } - - // If we are under maxSockets create a new one. - self.createSocket(options, function (socket) { - socket.on("free", onFree); - socket.on("close", onCloseOrRemove); - socket.on("agentRemove", onCloseOrRemove); - req.onSocket(socket); - - function onFree() { - self.emit("free", socket, options); - } - - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener("free", onFree); - socket.removeListener("close", onCloseOrRemove); - socket.removeListener("agentRemove", onCloseOrRemove); - } - }); - }; - - TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); - - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: "CONNECT", - path: options.host + ":" + options.port, - agent: false, - headers: { - host: options.host + ":" + options.port, - }, - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers["Proxy-Authorization"] = - "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); - } - - debug("making CONNECT request"); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once("response", onResponse); // for v0.6 - connectReq.once("upgrade", onUpgrade); // for v0.6 - connectReq.once("connect", onConnect); // for v0.7 or later - connectReq.once("error", onError); - connectReq.end(); - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function () { - onConnect(res, socket, head); - }); - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - - if (res.statusCode !== 200) { - debug("tunneling socket could not be established, statusCode=%d", res.statusCode); - socket.destroy(); - var error = new Error( - "tunneling socket could not be established, " + "statusCode=" + res.statusCode, - ); - error.code = "ECONNRESET"; - options.request.emit("error", error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug("got illegal response body from proxy"); - socket.destroy(); - var error = new Error("got illegal response body from proxy"); - error.code = "ECONNRESET"; - options.request.emit("error", error); - self.removeSocket(placeholder); - return; - } - debug("tunneling connection has established"); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } - - function onError(cause) { - connectReq.removeAllListeners(); - - debug( - "tunneling socket could not be established, cause=%s\n", - cause.message, - cause.stack, - ); - var error = new Error( - "tunneling socket could not be established, " + "cause=" + cause.message, - ); - error.code = "ECONNRESET"; - options.request.emit("error", error); - self.removeSocket(placeholder); - } - }; - - TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket); - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); - - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function (socket) { - pending.request.onSocket(socket); - }); - } - }; - - function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function (socket) { - var hostHeader = options.request.getHeader("host"); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, "") : options.host, - }); - - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); - } - - function toOptions(host, port, localAddress) { - if (typeof host === "string") { - // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress, - }; - } - return host; // for v0.11 or later - } - - function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === "object") { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } - } - } - return target; - } - - var debug; - if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === "string") { - args[0] = "TUNNEL: " + args[0]; - } else { - args.unshift("TUNNEL:"); - } - console.error.apply(console, args); - }; - } else { - debug = function () {}; - } - exports.debug = debug; // for test - - /***/ - }, - - /***/ 1773: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Client = __nccwpck_require__(3598); - const Dispatcher = __nccwpck_require__(412); - const errors = __nccwpck_require__(8045); - const Pool = __nccwpck_require__(4634); - const BalancedPool = __nccwpck_require__(7931); - const Agent = __nccwpck_require__(7890); - const util = __nccwpck_require__(3983); - const { InvalidArgumentError } = errors; - const api = __nccwpck_require__(4059); - const buildConnector = __nccwpck_require__(2067); - const MockClient = __nccwpck_require__(8687); - const MockAgent = __nccwpck_require__(6771); - const MockPool = __nccwpck_require__(6193); - const mockErrors = __nccwpck_require__(888); - const ProxyAgent = __nccwpck_require__(7858); - const RetryHandler = __nccwpck_require__(2286); - const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(1892); - const DecoratorHandler = __nccwpck_require__(6930); - const RedirectHandler = __nccwpck_require__(2860); - const createRedirectInterceptor = __nccwpck_require__(8861); - - let hasCrypto; - try { - __nccwpck_require__(6113); - hasCrypto = true; - } catch { - hasCrypto = false; - } - - Object.assign(Dispatcher.prototype, api); - - module.exports.Dispatcher = Dispatcher; - module.exports.Client = Client; - module.exports.Pool = Pool; - module.exports.BalancedPool = BalancedPool; - module.exports.Agent = Agent; - module.exports.ProxyAgent = ProxyAgent; - module.exports.RetryHandler = RetryHandler; - - module.exports.DecoratorHandler = DecoratorHandler; - module.exports.RedirectHandler = RedirectHandler; - module.exports.createRedirectInterceptor = createRedirectInterceptor; - - module.exports.buildConnector = buildConnector; - module.exports.errors = errors; - - function makeDispatcher(fn) { - return (url, opts, handler) => { - if (typeof opts === "function") { - handler = opts; - opts = null; - } - - if ( - !url || - (typeof url !== "string" && typeof url !== "object" && !(url instanceof URL)) - ) { - throw new InvalidArgumentError("invalid url"); - } - - if (opts != null && typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (opts && opts.path != null) { - if (typeof opts.path !== "string") { - throw new InvalidArgumentError("invalid opts.path"); - } - - let path = opts.path; - if (!opts.path.startsWith("/")) { - path = `/${path}`; - } - - url = new URL(util.parseOrigin(url).origin + path); - } else { - if (!opts) { - opts = typeof url === "object" ? url : {}; - } - - url = util.parseURL(url); - } - - const { agent, dispatcher = getGlobalDispatcher() } = opts; - - if (agent) { - throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?"); - } - - return fn.call( - dispatcher, - { - ...opts, - origin: url.origin, - path: url.search ? `${url.pathname}${url.search}` : url.pathname, - method: opts.method || (opts.body ? "PUT" : "GET"), - }, - handler, - ); - }; - } - - module.exports.setGlobalDispatcher = setGlobalDispatcher; - module.exports.getGlobalDispatcher = getGlobalDispatcher; - - if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { - let fetchImpl = null; - module.exports.fetch = async function fetch(resource) { - if (!fetchImpl) { - fetchImpl = __nccwpck_require__(4881).fetch; - } - - try { - return await fetchImpl(...arguments); - } catch (err) { - if (typeof err === "object") { - Error.captureStackTrace(err, this); - } - - throw err; - } - }; - module.exports.Headers = __nccwpck_require__(554).Headers; - module.exports.Response = __nccwpck_require__(7823).Response; - module.exports.Request = __nccwpck_require__(8359).Request; - module.exports.FormData = __nccwpck_require__(2015).FormData; - module.exports.File = __nccwpck_require__(8511).File; - module.exports.FileReader = __nccwpck_require__(1446).FileReader; - - const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(1246); - - module.exports.setGlobalOrigin = setGlobalOrigin; - module.exports.getGlobalOrigin = getGlobalOrigin; - - const { CacheStorage } = __nccwpck_require__(7907); - const { kConstruct } = __nccwpck_require__(9174); - - // Cache & CacheStorage are tightly coupled with fetch. Even if it may run - // in an older version of Node, it doesn't have any use without fetch. - module.exports.caches = new CacheStorage(kConstruct); - } - - if (util.nodeMajor >= 16) { - const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(1724); - - module.exports.deleteCookie = deleteCookie; - module.exports.getCookies = getCookies; - module.exports.getSetCookies = getSetCookies; - module.exports.setCookie = setCookie; - - const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685); - - module.exports.parseMIMEType = parseMIMEType; - module.exports.serializeAMimeType = serializeAMimeType; - } - - if (util.nodeMajor >= 18 && hasCrypto) { - const { WebSocket } = __nccwpck_require__(4284); - - module.exports.WebSocket = WebSocket; - } - - module.exports.request = makeDispatcher(api.request); - module.exports.stream = makeDispatcher(api.stream); - module.exports.pipeline = makeDispatcher(api.pipeline); - module.exports.connect = makeDispatcher(api.connect); - module.exports.upgrade = makeDispatcher(api.upgrade); - - module.exports.MockClient = MockClient; - module.exports.MockPool = MockPool; - module.exports.MockAgent = MockAgent; - module.exports.mockErrors = mockErrors; - - /***/ - }, - - /***/ 7890: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { InvalidArgumentError } = __nccwpck_require__(8045); - const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = - __nccwpck_require__(2785); - const DispatcherBase = __nccwpck_require__(4839); - const Pool = __nccwpck_require__(4634); - const Client = __nccwpck_require__(3598); - const util = __nccwpck_require__(3983); - const createRedirectInterceptor = __nccwpck_require__(8861); - const { WeakRef, FinalizationRegistry } = __nccwpck_require__(6436)(); - - const kOnConnect = Symbol("onConnect"); - const kOnDisconnect = Symbol("onDisconnect"); - const kOnConnectionError = Symbol("onConnectionError"); - const kMaxRedirections = Symbol("maxRedirections"); - const kOnDrain = Symbol("onDrain"); - const kFactory = Symbol("factory"); - const kFinalizer = Symbol("finalizer"); - const kOptions = Symbol("options"); - - function defaultFactory(origin, opts) { - return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); - } - - class Agent extends DispatcherBase { - constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { - super(); - - if (typeof factory !== "function") { - throw new InvalidArgumentError("factory must be a function."); - } - - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError("connect must be a function or an object"); - } - - if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { - throw new InvalidArgumentError("maxRedirections must be a positive number"); - } - - if (connect && typeof connect !== "function") { - connect = { ...connect }; - } - - this[kInterceptors] = - options.interceptors && - options.interceptors.Agent && - Array.isArray(options.interceptors.Agent) - ? options.interceptors.Agent - : [createRedirectInterceptor({ maxRedirections })]; - - this[kOptions] = { ...util.deepClone(options), connect }; - this[kOptions].interceptors = options.interceptors - ? { ...options.interceptors } - : undefined; - this[kMaxRedirections] = maxRedirections; - this[kFactory] = factory; - this[kClients] = new Map(); - this[kFinalizer] = new FinalizationRegistry( - /* istanbul ignore next: gc is undeterministic */ (key) => { - const ref = this[kClients].get(key); - if (ref !== undefined && ref.deref() === undefined) { - this[kClients].delete(key); - } - }, - ); - - const agent = this; - - this[kOnDrain] = (origin, targets) => { - agent.emit("drain", origin, [agent, ...targets]); - }; - - this[kOnConnect] = (origin, targets) => { - agent.emit("connect", origin, [agent, ...targets]); - }; - - this[kOnDisconnect] = (origin, targets, err) => { - agent.emit("disconnect", origin, [agent, ...targets], err); - }; - - this[kOnConnectionError] = (origin, targets, err) => { - agent.emit("connectionError", origin, [agent, ...targets], err); - }; - } - - get [kRunning]() { - let ret = 0; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore next: gc is undeterministic */ - if (client) { - ret += client[kRunning]; - } - } - return ret; - } - - [kDispatch](opts, handler) { - let key; - if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { - key = String(opts.origin); - } else { - throw new InvalidArgumentError("opts.origin must be a non-empty string or URL."); - } - - const ref = this[kClients].get(key); - - let dispatcher = ref ? ref.deref() : null; - if (!dispatcher) { - dispatcher = this[kFactory](opts.origin, this[kOptions]) - .on("drain", this[kOnDrain]) - .on("connect", this[kOnConnect]) - .on("disconnect", this[kOnDisconnect]) - .on("connectionError", this[kOnConnectionError]); - - this[kClients].set(key, new WeakRef(dispatcher)); - this[kFinalizer].register(dispatcher, key); - } - - return dispatcher.dispatch(opts, handler); - } - - async [kClose]() { - const closePromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore else: gc is undeterministic */ - if (client) { - closePromises.push(client.close()); - } - } - - await Promise.all(closePromises); - } - - async [kDestroy](err) { - const destroyPromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore else: gc is undeterministic */ - if (client) { - destroyPromises.push(client.destroy(err)); - } - } - - await Promise.all(destroyPromises); - } - } - - module.exports = Agent; - - /***/ - }, - - /***/ 7032: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const { addAbortListener } = __nccwpck_require__(3983); - const { RequestAbortedError } = __nccwpck_require__(8045); - - const kListener = Symbol("kListener"); - const kSignal = Symbol("kSignal"); - - function abort(self) { - if (self.abort) { - self.abort(); - } else { - self.onError(new RequestAbortedError()); - } - } - - function addSignal(self, signal) { - self[kSignal] = null; - self[kListener] = null; - - if (!signal) { - return; - } - - if (signal.aborted) { - abort(self); - return; - } - - self[kSignal] = signal; - self[kListener] = () => { - abort(self); - }; - - addAbortListener(self[kSignal], self[kListener]); - } - - function removeSignal(self) { - if (!self[kSignal]) { - return; - } - - if ("removeEventListener" in self[kSignal]) { - self[kSignal].removeEventListener("abort", self[kListener]); - } else { - self[kSignal].removeListener("abort", self[kListener]); - } - - self[kSignal] = null; - self[kListener] = null; - } - - module.exports = { - addSignal, - removeSignal, - }; - - /***/ - }, - - /***/ 9744: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { AsyncResource } = __nccwpck_require__(852); - const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - - class ConnectHandler extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - const { signal, opaque, responseHeaders } = opts; - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - super("UNDICI_CONNECT"); - - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.callback = callback; - this.abort = null; - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders() { - throw new SocketError("bad connect", null); - } - - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - - removeSignal(this); - - this.callback = null; - - let headers = rawHeaders; - // Indicates is an HTTP2Session - if (headers != null) { - headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - } - - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - socket, - opaque, - context, - }); - } - - onError(err) { - const { callback, opaque } = this; - - removeSignal(this); - - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - } - } - - function connect(opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - connect.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - const connectHandler = new ConnectHandler(opts, callback); - this.dispatch({ ...opts, method: "CONNECT" }, connectHandler); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = connect; - - /***/ - }, - - /***/ 8752: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Readable, Duplex, PassThrough } = __nccwpck_require__(2781); - const { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = - __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { AsyncResource } = __nccwpck_require__(852); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - const assert = __nccwpck_require__(9491); - - const kResume = Symbol("resume"); - - class PipelineRequest extends Readable { - constructor() { - super({ autoDestroy: true }); - - this[kResume] = null; - } - - _read() { - const { [kResume]: resume } = this; - - if (resume) { - this[kResume] = null; - resume(); - } - } - - _destroy(err, callback) { - this._read(); - - callback(err); - } - } - - class PipelineResponse extends Readable { - constructor(resume) { - super({ autoDestroy: true }); - this[kResume] = resume; - } - - _read() { - this[kResume](); - } - - _destroy(err, callback) { - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); - } - - callback(err); - } - } - - class PipelineHandler extends AsyncResource { - constructor(opts, handler) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (typeof handler !== "function") { - throw new InvalidArgumentError("invalid handler"); - } - - const { signal, method, opaque, onInfo, responseHeaders } = opts; - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - if (method === "CONNECT") { - throw new InvalidArgumentError("invalid method"); - } - - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError("invalid onInfo callback"); - } - - super("UNDICI_PIPELINE"); - - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.handler = handler; - this.abort = null; - this.context = null; - this.onInfo = onInfo || null; - - this.req = new PipelineRequest().on("error", util.nop); - - this.ret = new Duplex({ - readableObjectMode: opts.objectMode, - autoDestroy: true, - read: () => { - const { body } = this; - - if (body && body.resume) { - body.resume(); - } - }, - write: (chunk, encoding, callback) => { - const { req } = this; - - if (req.push(chunk, encoding) || req._readableState.destroyed) { - callback(); - } else { - req[kResume] = callback; - } - }, - destroy: (err, callback) => { - const { body, req, res, ret, abort } = this; - - if (!err && !ret._readableState.endEmitted) { - err = new RequestAbortedError(); - } - - if (abort && err) { - abort(); - } - - util.destroy(body, err); - util.destroy(req, err); - util.destroy(res, err); - - removeSignal(this); - - callback(err); - }, - }).on("prefinish", () => { - const { req } = this; - - // Node < 15 does not call _final in same tick. - req.push(null); - }); - - this.res = null; - - addSignal(this, signal); - } - - onConnect(abort, context) { - const { ret, res } = this; - - assert(!res, "pipeline cannot be retried"); - - if (ret.destroyed) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders(statusCode, rawHeaders, resume) { - const { opaque, handler, context } = this; - - if (statusCode < 200) { - if (this.onInfo) { - const headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers }); - } - return; - } - - this.res = new PipelineResponse(resume); - - let body; - try { - this.handler = null; - const headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - body = this.runInAsyncScope(handler, null, { - statusCode, - headers, - opaque, - body: this.res, - context, - }); - } catch (err) { - this.res.on("error", util.nop); - throw err; - } - - if (!body || typeof body.on !== "function") { - throw new InvalidReturnValueError("expected Readable"); - } - - body.on("data", (chunk) => { - const { ret, body } = this; - - if (!ret.push(chunk) && body.pause) { - body.pause(); - } - }) - .on("error", (err) => { - const { ret } = this; - - util.destroy(ret, err); - }) - .on("end", () => { - const { ret } = this; - - ret.push(null); - }) - .on("close", () => { - const { ret } = this; - - if (!ret._readableState.ended) { - util.destroy(ret, new RequestAbortedError()); - } - }); - - this.body = body; - } - - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - - onComplete(trailers) { - const { res } = this; - res.push(null); - } - - onError(err) { - const { ret } = this; - this.handler = null; - util.destroy(ret, err); - } - } - - function pipeline(opts, handler) { - try { - const pipelineHandler = new PipelineHandler(opts, handler); - this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); - return pipelineHandler.ret; - } catch (err) { - return new PassThrough().destroy(err); - } - } - - module.exports = pipeline; - - /***/ - }, - - /***/ 5448: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Readable = __nccwpck_require__(3858); - const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { getResolveErrorBodyCallback } = __nccwpck_require__(7474); - const { AsyncResource } = __nccwpck_require__(852); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - - class RequestHandler extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - const { - signal, - method, - opaque, - body, - onInfo, - responseHeaders, - throwOnError, - highWaterMark, - } = opts; - - try { - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) { - throw new InvalidArgumentError("invalid highWaterMark"); - } - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - if (method === "CONNECT") { - throw new InvalidArgumentError("invalid method"); - } - - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError("invalid onInfo callback"); - } - - super("UNDICI_REQUEST"); - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on("error", util.nop), err); - } - throw err; - } - - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.res = null; - this.abort = null; - this.body = body; - this.trailers = {}; - this.context = null; - this.onInfo = onInfo || null; - this.throwOnError = throwOnError; - this.highWaterMark = highWaterMark; - - if (util.isStream(body)) { - body.on("error", (err) => { - this.onError(err); - }); - } - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; - - const headers = - responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }); - } - return; - } - - const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; - const contentType = parsedHeaders["content-type"]; - const body = new Readable({ resume, abort, contentType, highWaterMark }); - - this.callback = null; - this.res = body; - if (callback !== null) { - if (this.throwOnError && statusCode >= 400) { - this.runInAsyncScope(getResolveErrorBodyCallback, null, { - callback, - body, - contentType, - statusCode, - statusMessage, - headers, - }); - } else { - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - trailers: this.trailers, - opaque, - body, - context, - }); - } - } - } - - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - - onComplete(trailers) { - const { res } = this; - - removeSignal(this); - - util.parseHeaders(trailers, this.trailers); - - res.push(null); - } - - onError(err) { - const { res, callback, body, opaque } = this; - - removeSignal(this); - - if (callback) { - // TODO: Does this need queueMicrotask? - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - - if (res) { - this.res = null; - // Ensure all queued handlers are invoked before destroying res. - queueMicrotask(() => { - util.destroy(res, err); - }); - } - - if (body) { - this.body = null; - util.destroy(body, err); - } - } - } - - function request(opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - request.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - this.dispatch(opts, new RequestHandler(opts, callback)); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = request; - module.exports.RequestHandler = RequestHandler; - - /***/ - }, - - /***/ 5395: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { finished, PassThrough } = __nccwpck_require__(2781); - const { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = - __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { getResolveErrorBodyCallback } = __nccwpck_require__(7474); - const { AsyncResource } = __nccwpck_require__(852); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - - class StreamHandler extends AsyncResource { - constructor(opts, factory, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts; - - try { - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (typeof factory !== "function") { - throw new InvalidArgumentError("invalid factory"); - } - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - if (method === "CONNECT") { - throw new InvalidArgumentError("invalid method"); - } - - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError("invalid onInfo callback"); - } - - super("UNDICI_STREAM"); - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on("error", util.nop), err); - } - throw err; - } - - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.factory = factory; - this.callback = callback; - this.res = null; - this.abort = null; - this.context = null; - this.trailers = null; - this.body = body; - this.onInfo = onInfo || null; - this.throwOnError = throwOnError || false; - - if (util.isStream(body)) { - body.on("error", (err) => { - this.onError(err); - }); - } - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const { factory, opaque, context, callback, responseHeaders } = this; - - const headers = - responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }); - } - return; - } - - this.factory = null; - - let res; - - if (this.throwOnError && statusCode >= 400) { - const parsedHeaders = - responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; - const contentType = parsedHeaders["content-type"]; - res = new PassThrough(); - - this.callback = null; - this.runInAsyncScope(getResolveErrorBodyCallback, null, { - callback, - body: res, - contentType, - statusCode, - statusMessage, - headers, - }); - } else { - if (factory === null) { - return; - } - - res = this.runInAsyncScope(factory, null, { - statusCode, - headers, - opaque, - context, - }); - - if ( - !res || - typeof res.write !== "function" || - typeof res.end !== "function" || - typeof res.on !== "function" - ) { - throw new InvalidReturnValueError("expected Writable"); - } - - // TODO: Avoid finished. It registers an unnecessary amount of listeners. - finished(res, { readable: false }, (err) => { - const { callback, res, opaque, trailers, abort } = this; - - this.res = null; - if (err || !res.readable) { - util.destroy(res, err); - } - - this.callback = null; - this.runInAsyncScope(callback, null, err || null, { opaque, trailers }); - - if (err) { - abort(); - } - }); - } - - res.on("drain", resume); - - this.res = res; - - const needDrain = - res.writableNeedDrain !== undefined - ? res.writableNeedDrain - : res._writableState && res._writableState.needDrain; - - return needDrain !== true; - } - - onData(chunk) { - const { res } = this; - - return res ? res.write(chunk) : true; - } - - onComplete(trailers) { - const { res } = this; - - removeSignal(this); - - if (!res) { - return; - } - - this.trailers = util.parseHeaders(trailers); - - res.end(); - } - - onError(err) { - const { res, callback, opaque, body } = this; - - removeSignal(this); - - this.factory = null; - - if (res) { - this.res = null; - util.destroy(res, err); - } else if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - - if (body) { - this.body = null; - util.destroy(body, err); - } - } - } - - function stream(opts, factory, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - stream.call(this, opts, factory, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - this.dispatch(opts, new StreamHandler(opts, factory, callback)); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = stream; - - /***/ - }, - - /***/ 6923: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8045); - const { AsyncResource } = __nccwpck_require__(852); - const util = __nccwpck_require__(3983); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - const assert = __nccwpck_require__(9491); - - class UpgradeHandler extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - const { signal, opaque, responseHeaders } = opts; - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - super("UNDICI_UPGRADE"); - - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.abort = null; - this.context = null; - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = null; - } - - onHeaders() { - throw new SocketError("bad upgrade", null); - } - - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - - assert.strictEqual(statusCode, 101); - - removeSignal(this); - - this.callback = null; - const headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - headers, - socket, - opaque, - context, - }); - } - - onError(err) { - const { callback, opaque } = this; - - removeSignal(this); - - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - } - } - - function upgrade(opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - upgrade.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - const upgradeHandler = new UpgradeHandler(opts, callback); - this.dispatch( - { - ...opts, - method: opts.method || "GET", - upgrade: opts.protocol || "Websocket", - }, - upgradeHandler, - ); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = upgrade; - - /***/ - }, - - /***/ 4059: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - module.exports.request = __nccwpck_require__(5448); - module.exports.stream = __nccwpck_require__(5395); - module.exports.pipeline = __nccwpck_require__(8752); - module.exports.upgrade = __nccwpck_require__(6923); - module.exports.connect = __nccwpck_require__(9744); - - /***/ - }, - - /***/ 3858: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // Ported from https://github.com/nodejs/undici/pull/907 - - const assert = __nccwpck_require__(9491); - const { Readable } = __nccwpck_require__(2781); - const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = - __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(3983); - - let Blob; - - const kConsume = Symbol("kConsume"); - const kReading = Symbol("kReading"); - const kBody = Symbol("kBody"); - const kAbort = Symbol("abort"); - const kContentType = Symbol("kContentType"); - - const noop = () => {}; - - module.exports = class BodyReadable extends Readable { - constructor({ - resume, - abort, - contentType = "", - highWaterMark = 64 * 1024, // Same as nodejs fs streams. - }) { - super({ - autoDestroy: true, - read: resume, - highWaterMark, - }); - - this._readableState.dataEmitted = false; - - this[kAbort] = abort; - this[kConsume] = null; - this[kBody] = null; - this[kContentType] = contentType; - - // Is stream being consumed through Readable API? - // This is an optimization so that we avoid checking - // for 'data' and 'readable' listeners in the hot path - // inside push(). - this[kReading] = false; - } - - destroy(err) { - if (this.destroyed) { - // Node < 16 - return this; - } - - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); - } - - if (err) { - this[kAbort](); - } - - return super.destroy(err); - } - - emit(ev, ...args) { - if (ev === "data") { - // Node < 16.7 - this._readableState.dataEmitted = true; - } else if (ev === "error") { - // Node < 16 - this._readableState.errorEmitted = true; - } - return super.emit(ev, ...args); - } - - on(ev, ...args) { - if (ev === "data" || ev === "readable") { - this[kReading] = true; - } - return super.on(ev, ...args); - } - - addListener(ev, ...args) { - return this.on(ev, ...args); - } - - off(ev, ...args) { - const ret = super.off(ev, ...args); - if (ev === "data" || ev === "readable") { - this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0; - } - return ret; - } - - removeListener(ev, ...args) { - return this.off(ev, ...args); - } - - push(chunk) { - if (this[kConsume] && chunk !== null && this.readableLength === 0) { - consumePush(this[kConsume], chunk); - return this[kReading] ? super.push(chunk) : true; - } - return super.push(chunk); - } - - // https://fetch.spec.whatwg.org/#dom-body-text - async text() { - return consume(this, "text"); - } - - // https://fetch.spec.whatwg.org/#dom-body-json - async json() { - return consume(this, "json"); - } - - // https://fetch.spec.whatwg.org/#dom-body-blob - async blob() { - return consume(this, "blob"); - } - - // https://fetch.spec.whatwg.org/#dom-body-arraybuffer - async arrayBuffer() { - return consume(this, "arrayBuffer"); - } - - // https://fetch.spec.whatwg.org/#dom-body-formdata - async formData() { - // TODO: Implement. - throw new NotSupportedError(); - } - - // https://fetch.spec.whatwg.org/#dom-body-bodyused - get bodyUsed() { - return util.isDisturbed(this); - } - - // https://fetch.spec.whatwg.org/#dom-body-body - get body() { - if (!this[kBody]) { - this[kBody] = ReadableStreamFrom(this); - if (this[kConsume]) { - // TODO: Is this the best way to force a lock? - this[kBody].getReader(); // Ensure stream is locked. - assert(this[kBody].locked); - } - } - return this[kBody]; - } - - dump(opts) { - let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; - const signal = opts && opts.signal; - - if (signal) { - try { - if (typeof signal !== "object" || !("aborted" in signal)) { - throw new InvalidArgumentError("signal must be an AbortSignal"); - } - util.throwIfAborted(signal); - } catch (err) { - return Promise.reject(err); - } - } - - if (this.closed) { - return Promise.resolve(null); - } - - return new Promise((resolve, reject) => { - const signalListenerCleanup = signal - ? util.addAbortListener(signal, () => { - this.destroy(); - }) - : noop; - - this.on("close", function () { - signalListenerCleanup(); - if (signal && signal.aborted) { - reject( - signal.reason || - Object.assign(new Error("The operation was aborted"), { - name: "AbortError", - }), - ); - } else { - resolve(null); - } - }) - .on("error", noop) - .on("data", function (chunk) { - limit -= chunk.length; - if (limit <= 0) { - this.destroy(); - } - }) - .resume(); - }); - } - }; - - // https://streams.spec.whatwg.org/#readablestream-locked - function isLocked(self) { - // Consume is an implicit lock. - return (self[kBody] && self[kBody].locked === true) || self[kConsume]; - } - - // https://fetch.spec.whatwg.org/#body-unusable - function isUnusable(self) { - return util.isDisturbed(self) || isLocked(self); - } - - async function consume(stream, type) { - if (isUnusable(stream)) { - throw new TypeError("unusable"); - } - - assert(!stream[kConsume]); - - return new Promise((resolve, reject) => { - stream[kConsume] = { - type, - stream, - resolve, - reject, - length: 0, - body: [], - }; - - stream - .on("error", function (err) { - consumeFinish(this[kConsume], err); - }) - .on("close", function () { - if (this[kConsume].body !== null) { - consumeFinish(this[kConsume], new RequestAbortedError()); - } - }); - - process.nextTick(consumeStart, stream[kConsume]); - }); - } - - function consumeStart(consume) { - if (consume.body === null) { - return; - } - - const { _readableState: state } = consume.stream; - - for (const chunk of state.buffer) { - consumePush(consume, chunk); - } - - if (state.endEmitted) { - consumeEnd(this[kConsume]); - } else { - consume.stream.on("end", function () { - consumeEnd(this[kConsume]); - }); - } - - consume.stream.resume(); - - while (consume.stream.read() != null) { - // Loop - } - } - - function consumeEnd(consume) { - const { type, body, resolve, stream, length } = consume; - - try { - if (type === "text") { - resolve(toUSVString(Buffer.concat(body))); - } else if (type === "json") { - resolve(JSON.parse(Buffer.concat(body))); - } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - - resolve(dst.buffer); - } else if (type === "blob") { - if (!Blob) { - Blob = __nccwpck_require__(4300).Blob; - } - resolve(new Blob(body, { type: stream[kContentType] })); - } - - consumeFinish(consume); - } catch (err) { - stream.destroy(err); - } - } - - function consumePush(consume, chunk) { - consume.length += chunk.length; - consume.body.push(chunk); - } - - function consumeFinish(consume, err) { - if (consume.body === null) { - return; - } - - if (err) { - consume.reject(err); - } else { - consume.resolve(); - } - - consume.type = null; - consume.stream = null; - consume.resolve = null; - consume.reject = null; - consume.length = 0; - consume.body = null; - } - - /***/ - }, - - /***/ 7474: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const assert = __nccwpck_require__(9491); - const { ResponseStatusCodeError } = __nccwpck_require__(8045); - const { toUSVString } = __nccwpck_require__(3983); - - async function getResolveErrorBodyCallback({ - callback, - body, - contentType, - statusCode, - statusMessage, - headers, - }) { - assert(body); - - let chunks = []; - let limit = 0; - - for await (const chunk of body) { - chunks.push(chunk); - limit += chunk.length; - if (limit > 128 * 1024) { - chunks = null; - break; - } - } - - if (statusCode === 204 || !contentType || !chunks) { - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, - statusCode, - headers, - ), - ); - return; - } - - try { - if (contentType.startsWith("application/json")) { - const payload = JSON.parse(toUSVString(Buffer.concat(chunks))); - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${ - statusMessage ? `: ${statusMessage}` : "" - }`, - statusCode, - headers, - payload, - ), - ); - return; - } - - if (contentType.startsWith("text/")) { - const payload = toUSVString(Buffer.concat(chunks)); - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${ - statusMessage ? `: ${statusMessage}` : "" - }`, - statusCode, - headers, - payload, - ), - ); - return; - } - } catch (err) { - // Process in a fallback if error - } - - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, - statusCode, - headers, - ), - ); - } - - module.exports = { getResolveErrorBodyCallback }; - - /***/ - }, - - /***/ 7931: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { BalancedPoolMissingUpstreamError, InvalidArgumentError } = __nccwpck_require__(8045); - const { PoolBase, kClients, kNeedDrain, kAddClient, kRemoveClient, kGetDispatcher } = - __nccwpck_require__(3198); - const Pool = __nccwpck_require__(4634); - const { kUrl, kInterceptors } = __nccwpck_require__(2785); - const { parseOrigin } = __nccwpck_require__(3983); - const kFactory = Symbol("factory"); - - const kOptions = Symbol("options"); - const kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor"); - const kCurrentWeight = Symbol("kCurrentWeight"); - const kIndex = Symbol("kIndex"); - const kWeight = Symbol("kWeight"); - const kMaxWeightPerServer = Symbol("kMaxWeightPerServer"); - const kErrorPenalty = Symbol("kErrorPenalty"); - - function getGreatestCommonDivisor(a, b) { - if (b === 0) return a; - return getGreatestCommonDivisor(b, a % b); - } - - function defaultFactory(origin, opts) { - return new Pool(origin, opts); - } - - class BalancedPool extends PoolBase { - constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { - super(); - - this[kOptions] = opts; - this[kIndex] = -1; - this[kCurrentWeight] = 0; - - this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; - this[kErrorPenalty] = this[kOptions].errorPenalty || 15; - - if (!Array.isArray(upstreams)) { - upstreams = [upstreams]; - } - - if (typeof factory !== "function") { - throw new InvalidArgumentError("factory must be a function."); - } - - this[kInterceptors] = - opts.interceptors && - opts.interceptors.BalancedPool && - Array.isArray(opts.interceptors.BalancedPool) - ? opts.interceptors.BalancedPool - : []; - this[kFactory] = factory; - - for (const upstream of upstreams) { - this.addUpstream(upstream); - } - this._updateBalancedPoolStats(); - } - - addUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - - if ( - this[kClients].find( - (pool) => - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true, - ) - ) { - return this; - } - const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); - - this[kAddClient](pool); - pool.on("connect", () => { - pool[kWeight] = Math.min( - this[kMaxWeightPerServer], - pool[kWeight] + this[kErrorPenalty], - ); - }); - - pool.on("connectionError", () => { - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); - }); - - pool.on("disconnect", (...args) => { - const err = args[2]; - if (err && err.code === "UND_ERR_SOCKET") { - // decrease the weight of the pool. - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); - } - }); - - for (const client of this[kClients]) { - client[kWeight] = this[kMaxWeightPerServer]; - } - - this._updateBalancedPoolStats(); - - return this; - } - - _updateBalancedPoolStats() { - this[kGreatestCommonDivisor] = this[kClients] - .map((p) => p[kWeight]) - .reduce(getGreatestCommonDivisor, 0); - } - - removeUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - - const pool = this[kClients].find( - (pool) => - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true, - ); - - if (pool) { - this[kRemoveClient](pool); - } - - return this; - } - - get upstreams() { - return this[kClients] - .filter((dispatcher) => dispatcher.closed !== true && dispatcher.destroyed !== true) - .map((p) => p[kUrl].origin); - } - - [kGetDispatcher]() { - // We validate that pools is greater than 0, - // otherwise we would have to wait until an upstream - // is added, which might never happen. - if (this[kClients].length === 0) { - throw new BalancedPoolMissingUpstreamError(); - } - - const dispatcher = this[kClients].find( - (dispatcher) => - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true, - ); - - if (!dispatcher) { - return; - } - - const allClientsBusy = this[kClients] - .map((pool) => pool[kNeedDrain]) - .reduce((a, b) => a && b, true); - - if (allClientsBusy) { - return; - } - - let counter = 0; - - let maxWeightIndex = this[kClients].findIndex((pool) => !pool[kNeedDrain]); - - while (counter++ < this[kClients].length) { - this[kIndex] = (this[kIndex] + 1) % this[kClients].length; - const pool = this[kClients][this[kIndex]]; - - // find pool index with the largest weight - if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { - maxWeightIndex = this[kIndex]; - } - - // decrease the current weight every `this[kClients].length`. - if (this[kIndex] === 0) { - // Set the current weight to the next lower weight. - this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; - - if (this[kCurrentWeight] <= 0) { - this[kCurrentWeight] = this[kMaxWeightPerServer]; - } - } - if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { - return pool; - } - } - - this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; - this[kIndex] = maxWeightIndex; - return this[kClients][maxWeightIndex]; - } - } - - module.exports = BalancedPool; - - /***/ - }, - - /***/ 6101: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kConstruct } = __nccwpck_require__(9174); - const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(2396); - const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(3983); - const { kHeadersList } = __nccwpck_require__(2785); - const { webidl } = __nccwpck_require__(1744); - const { Response, cloneResponse } = __nccwpck_require__(7823); - const { Request } = __nccwpck_require__(8359); - const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861); - const { fetching } = __nccwpck_require__(4881); - const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(2538); - const assert = __nccwpck_require__(9491); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation - * @typedef {Object} CacheBatchOperation - * @property {'delete' | 'put'} type - * @property {any} request - * @property {any} response - * @property {import('../../types/cache').CacheQueryOptions} options - */ - - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list - * @typedef {[any, any][]} requestResponseList - */ - - class Cache { - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list - * @type {requestResponseList} - */ - #relevantRequestResponseList; - - constructor() { - if (arguments[0] !== kConstruct) { - webidl.illegalConstructor(); - } - - this.#relevantRequestResponseList = arguments[1]; - } - - async match(request, options = {}) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.match" }); - - request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - const p = await this.matchAll(request, options); - - if (p.length === 0) { - return; - } - - return p[0]; - } - - async matchAll(request = undefined, options = {}) { - webidl.brandCheck(this, Cache); - - if (request !== undefined) request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - // 1. - let r = null; - - // 2. - if (request !== undefined) { - if (request instanceof Request) { - // 2.1.1 - r = request[kState]; - - // 2.1.2 - if (r.method !== "GET" && !options.ignoreMethod) { - return []; - } - } else if (typeof request === "string") { - // 2.2.1 - r = new Request(request)[kState]; - } - } - - // 5. - // 5.1 - const responses = []; - - // 5.2 - if (request === undefined) { - // 5.2.1 - for (const requestResponse of this.#relevantRequestResponseList) { - responses.push(requestResponse[1]); - } - } else { - // 5.3 - // 5.3.1 - const requestResponses = this.#queryCache(r, options); - - // 5.3.2 - for (const requestResponse of requestResponses) { - responses.push(requestResponse[1]); - } - } - - // 5.4 - // We don't implement CORs so we don't need to loop over the responses, yay! - - // 5.5.1 - const responseList = []; - - // 5.5.2 - for (const response of responses) { - // 5.5.2.1 - const responseObject = new Response(response.body?.source ?? null); - const body = responseObject[kState].body; - responseObject[kState] = response; - responseObject[kState].body = body; - responseObject[kHeaders][kHeadersList] = response.headersList; - responseObject[kHeaders][kGuard] = "immutable"; - - responseList.push(responseObject); - } - - // 6. - return Object.freeze(responseList); - } - - async add(request) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.add" }); - - request = webidl.converters.RequestInfo(request); - - // 1. - const requests = [request]; - - // 2. - const responseArrayPromise = this.addAll(requests); - - // 3. - return await responseArrayPromise; - } - - async addAll(requests) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.addAll" }); - - requests = webidl.converters["sequence"](requests); - - // 1. - const responsePromises = []; - - // 2. - const requestList = []; - - // 3. - for (const request of requests) { - if (typeof request === "string") { - continue; - } - - // 3.1 - const r = request[kState]; - - // 3.2 - if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") { - throw webidl.errors.exception({ - header: "Cache.addAll", - message: "Expected http/s scheme when method is not GET.", - }); - } - } - - // 4. - /** @type {ReturnType[]} */ - const fetchControllers = []; - - // 5. - for (const request of requests) { - // 5.1 - const r = new Request(request)[kState]; - - // 5.2 - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: "Cache.addAll", - message: "Expected http/s scheme.", - }); - } - - // 5.4 - r.initiator = "fetch"; - r.destination = "subresource"; - - // 5.5 - requestList.push(r); - - // 5.6 - const responsePromise = createDeferredPromise(); - - // 5.7 - fetchControllers.push( - fetching({ - request: r, - dispatcher: getGlobalDispatcher(), - processResponse(response) { - // 1. - if ( - response.type === "error" || - response.status === 206 || - response.status < 200 || - response.status > 299 - ) { - responsePromise.reject( - webidl.errors.exception({ - header: "Cache.addAll", - message: - "Received an invalid status code or the request failed.", - }), - ); - } else if (response.headersList.contains("vary")) { - // 2. - // 2.1 - const fieldValues = getFieldValues(response.headersList.get("vary")); - - // 2.2 - for (const fieldValue of fieldValues) { - // 2.2.1 - if (fieldValue === "*") { - responsePromise.reject( - webidl.errors.exception({ - header: "Cache.addAll", - message: "invalid vary field value", - }), - ); - - for (const controller of fetchControllers) { - controller.abort(); - } - - return; - } - } - } - }, - processResponseEndOfBody(response) { - // 1. - if (response.aborted) { - responsePromise.reject(new DOMException("aborted", "AbortError")); - return; - } - - // 2. - responsePromise.resolve(response); - }, - }), - ); - - // 5.8 - responsePromises.push(responsePromise.promise); - } - - // 6. - const p = Promise.all(responsePromises); - - // 7. - const responses = await p; - - // 7.1 - const operations = []; - - // 7.2 - let index = 0; - - // 7.3 - for (const response of responses) { - // 7.3.1 - /** @type {CacheBatchOperation} */ - const operation = { - type: "put", // 7.3.2 - request: requestList[index], // 7.3.3 - response, // 7.3.4 - }; - - operations.push(operation); // 7.3.5 - - index++; // 7.3.6 - } - - // 7.5 - const cacheJobPromise = createDeferredPromise(); - - // 7.6.1 - let errorData = null; - - // 7.6.2 - try { - this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; - } - - // 7.6.3 - queueMicrotask(() => { - // 7.6.3.1 - if (errorData === null) { - cacheJobPromise.resolve(undefined); - } else { - // 7.6.3.2 - cacheJobPromise.reject(errorData); - } - }); - - // 7.7 - return cacheJobPromise.promise; - } - - async put(request, response) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 2, { header: "Cache.put" }); - - request = webidl.converters.RequestInfo(request); - response = webidl.converters.Response(response); - - // 1. - let innerRequest = null; - - // 2. - if (request instanceof Request) { - innerRequest = request[kState]; - } else { - // 3. - innerRequest = new Request(request)[kState]; - } - - // 4. - if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Expected an http/s scheme when method is not GET", - }); - } - - // 5. - const innerResponse = response[kState]; - - // 6. - if (innerResponse.status === 206) { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Got 206 status", - }); - } - - // 7. - if (innerResponse.headersList.contains("vary")) { - // 7.1. - const fieldValues = getFieldValues(innerResponse.headersList.get("vary")); - - // 7.2. - for (const fieldValue of fieldValues) { - // 7.2.1 - if (fieldValue === "*") { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Got * vary field value", - }); - } - } - } - - // 8. - if ( - innerResponse.body && - (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked) - ) { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Response body is locked or disturbed", - }); - } - - // 9. - const clonedResponse = cloneResponse(innerResponse); - - // 10. - const bodyReadPromise = createDeferredPromise(); - - // 11. - if (innerResponse.body != null) { - // 11.1 - const stream = innerResponse.body.stream; - - // 11.2 - const reader = stream.getReader(); - - // 11.3 - readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); - } else { - bodyReadPromise.resolve(undefined); - } - - // 12. - /** @type {CacheBatchOperation[]} */ - const operations = []; - - // 13. - /** @type {CacheBatchOperation} */ - const operation = { - type: "put", // 14. - request: innerRequest, // 15. - response: clonedResponse, // 16. - }; - - // 17. - operations.push(operation); - - // 19. - const bytes = await bodyReadPromise.promise; - - if (clonedResponse.body != null) { - clonedResponse.body.source = bytes; - } - - // 19.1 - const cacheJobPromise = createDeferredPromise(); - - // 19.2.1 - let errorData = null; - - // 19.2.2 - try { - this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; - } - - // 19.2.3 - queueMicrotask(() => { - // 19.2.3.1 - if (errorData === null) { - cacheJobPromise.resolve(); - } else { - // 19.2.3.2 - cacheJobPromise.reject(errorData); - } - }); - - return cacheJobPromise.promise; - } - - async delete(request, options = {}) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.delete" }); - - request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - /** - * @type {Request} - */ - let r = null; - - if (request instanceof Request) { - r = request[kState]; - - if (r.method !== "GET" && !options.ignoreMethod) { - return false; - } - } else { - assert(typeof request === "string"); - - r = new Request(request)[kState]; - } - - /** @type {CacheBatchOperation[]} */ - const operations = []; - - /** @type {CacheBatchOperation} */ - const operation = { - type: "delete", - request: r, - options, - }; - - operations.push(operation); - - const cacheJobPromise = createDeferredPromise(); - - let errorData = null; - let requestResponses; - - try { - requestResponses = this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; - } - - queueMicrotask(() => { - if (errorData === null) { - cacheJobPromise.resolve(!!requestResponses?.length); - } else { - cacheJobPromise.reject(errorData); - } - }); - - return cacheJobPromise.promise; - } - - /** - * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys - * @param {any} request - * @param {import('../../types/cache').CacheQueryOptions} options - * @returns {readonly Request[]} - */ - async keys(request = undefined, options = {}) { - webidl.brandCheck(this, Cache); - - if (request !== undefined) request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - // 1. - let r = null; - - // 2. - if (request !== undefined) { - // 2.1 - if (request instanceof Request) { - // 2.1.1 - r = request[kState]; - - // 2.1.2 - if (r.method !== "GET" && !options.ignoreMethod) { - return []; - } - } else if (typeof request === "string") { - // 2.2 - r = new Request(request)[kState]; - } - } - - // 4. - const promise = createDeferredPromise(); - - // 5. - // 5.1 - const requests = []; - - // 5.2 - if (request === undefined) { - // 5.2.1 - for (const requestResponse of this.#relevantRequestResponseList) { - // 5.2.1.1 - requests.push(requestResponse[0]); - } - } else { - // 5.3 - // 5.3.1 - const requestResponses = this.#queryCache(r, options); - - // 5.3.2 - for (const requestResponse of requestResponses) { - // 5.3.2.1 - requests.push(requestResponse[0]); - } - } - - // 5.4 - queueMicrotask(() => { - // 5.4.1 - const requestList = []; - - // 5.4.2 - for (const request of requests) { - const requestObject = new Request("https://a"); - requestObject[kState] = request; - requestObject[kHeaders][kHeadersList] = request.headersList; - requestObject[kHeaders][kGuard] = "immutable"; - requestObject[kRealm] = request.client; - - // 5.4.2.1 - requestList.push(requestObject); - } - - // 5.4.3 - promise.resolve(Object.freeze(requestList)); - }); - - return promise.promise; - } - - /** - * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm - * @param {CacheBatchOperation[]} operations - * @returns {requestResponseList} - */ - #batchCacheOperations(operations) { - // 1. - const cache = this.#relevantRequestResponseList; - - // 2. - const backupCache = [...cache]; - - // 3. - const addedItems = []; - - // 4.1 - const resultList = []; - - try { - // 4.2 - for (const operation of operations) { - // 4.2.1 - if (operation.type !== "delete" && operation.type !== "put") { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: 'operation type does not match "delete" or "put"', - }); - } - - // 4.2.2 - if (operation.type === "delete" && operation.response != null) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "delete operation should not have an associated response", - }); - } - - // 4.2.3 - if (this.#queryCache(operation.request, operation.options, addedItems).length) { - throw new DOMException("???", "InvalidStateError"); - } - - // 4.2.4 - let requestResponses; - - // 4.2.5 - if (operation.type === "delete") { - // 4.2.5.1 - requestResponses = this.#queryCache(operation.request, operation.options); - - // TODO: the spec is wrong, this is needed to pass WPTs - if (requestResponses.length === 0) { - return []; - } - - // 4.2.5.2 - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse); - assert(idx !== -1); - - // 4.2.5.2.1 - cache.splice(idx, 1); - } - } else if (operation.type === "put") { - // 4.2.6 - // 4.2.6.1 - if (operation.response == null) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "put operation should have an associated response", - }); - } - - // 4.2.6.2 - const r = operation.request; - - // 4.2.6.3 - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "expected http or https scheme", - }); - } - - // 4.2.6.4 - if (r.method !== "GET") { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "not get method", - }); - } - - // 4.2.6.5 - if (operation.options != null) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "options must not be defined", - }); - } - - // 4.2.6.6 - requestResponses = this.#queryCache(operation.request); - - // 4.2.6.7 - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse); - assert(idx !== -1); - - // 4.2.6.7.1 - cache.splice(idx, 1); - } - - // 4.2.6.8 - cache.push([operation.request, operation.response]); - - // 4.2.6.10 - addedItems.push([operation.request, operation.response]); - } - - // 4.2.7 - resultList.push([operation.request, operation.response]); - } - - // 4.3 - return resultList; - } catch (e) { - // 5. - // 5.1 - this.#relevantRequestResponseList.length = 0; - - // 5.2 - this.#relevantRequestResponseList = backupCache; - - // 5.3 - throw e; - } - } - - /** - * @see https://w3c.github.io/ServiceWorker/#query-cache - * @param {any} requestQuery - * @param {import('../../types/cache').CacheQueryOptions} options - * @param {requestResponseList} targetStorage - * @returns {requestResponseList} - */ - #queryCache(requestQuery, options, targetStorage) { - /** @type {requestResponseList} */ - const resultList = []; - - const storage = targetStorage ?? this.#relevantRequestResponseList; - - for (const requestResponse of storage) { - const [cachedRequest, cachedResponse] = requestResponse; - if ( - this.#requestMatchesCachedItem( - requestQuery, - cachedRequest, - cachedResponse, - options, - ) - ) { - resultList.push(requestResponse); - } - } - - return resultList; - } - - /** - * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm - * @param {any} requestQuery - * @param {any} request - * @param {any | null} response - * @param {import('../../types/cache').CacheQueryOptions | undefined} options - * @returns {boolean} - */ - #requestMatchesCachedItem(requestQuery, request, response = null, options) { - // if (options?.ignoreMethod === false && request.method === 'GET') { - // return false - // } - - const queryURL = new URL(requestQuery.url); - - const cachedURL = new URL(request.url); - - if (options?.ignoreSearch) { - cachedURL.search = ""; - - queryURL.search = ""; - } - - if (!urlEquals(queryURL, cachedURL, true)) { - return false; - } - - if (response == null || options?.ignoreVary || !response.headersList.contains("vary")) { - return true; - } - - const fieldValues = getFieldValues(response.headersList.get("vary")); - - for (const fieldValue of fieldValues) { - if (fieldValue === "*") { - return false; - } - - const requestValue = request.headersList.get(fieldValue); - const queryValue = requestQuery.headersList.get(fieldValue); - - // If one has the header and the other doesn't, or one has - // a different value than the other, return false - if (requestValue !== queryValue) { - return false; - } - } - - return true; - } - } - - Object.defineProperties(Cache.prototype, { - [Symbol.toStringTag]: { - value: "Cache", - configurable: true, - }, - match: kEnumerableProperty, - matchAll: kEnumerableProperty, - add: kEnumerableProperty, - addAll: kEnumerableProperty, - put: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty, - }); - - const cacheQueryOptionConverters = [ - { - key: "ignoreSearch", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "ignoreMethod", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "ignoreVary", - converter: webidl.converters.boolean, - defaultValue: false, - }, - ]; - - webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); - - webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ - ...cacheQueryOptionConverters, - { - key: "cacheName", - converter: webidl.converters.DOMString, - }, - ]); - - webidl.converters.Response = webidl.interfaceConverter(Response); - - webidl.converters["sequence"] = webidl.sequenceConverter( - webidl.converters.RequestInfo, - ); - - module.exports = { - Cache, - }; - - /***/ - }, - - /***/ 7907: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kConstruct } = __nccwpck_require__(9174); - const { Cache } = __nccwpck_require__(6101); - const { webidl } = __nccwpck_require__(1744); - const { kEnumerableProperty } = __nccwpck_require__(3983); - - class CacheStorage { - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map - * @type {Map} - */ - async has(cacheName) { - webidl.brandCheck(this, CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.has" }); - - cacheName = webidl.converters.DOMString(cacheName); - - // 2.1.1 - // 2.2 - return this.#caches.has(cacheName); - } - - /** - * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open - * @param {string} cacheName - * @returns {Promise} - */ - async open(cacheName) { - webidl.brandCheck(this, CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.open" }); - - cacheName = webidl.converters.DOMString(cacheName); - - // 2.1 - if (this.#caches.has(cacheName)) { - // await caches.open('v1') !== await caches.open('v1') - - // 2.1.1 - const cache = this.#caches.get(cacheName); - - // 2.1.1.1 - return new Cache(kConstruct, cache); - } - - // 2.2 - const cache = []; - - // 2.3 - this.#caches.set(cacheName, cache); - - // 2.4 - return new Cache(kConstruct, cache); - } - - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete - * @param {string} cacheName - * @returns {Promise} - */ - async delete(cacheName) { - webidl.brandCheck(this, CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.delete" }); - - cacheName = webidl.converters.DOMString(cacheName); - - return this.#caches.delete(cacheName); - } - - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys - * @returns {string[]} - */ - async keys() { - webidl.brandCheck(this, CacheStorage); - - // 2.1 - const keys = this.#caches.keys(); - - // 2.2 - return [...keys]; - } - } - - Object.defineProperties(CacheStorage.prototype, { - [Symbol.toStringTag]: { - value: "CacheStorage", - configurable: true, - }, - match: kEnumerableProperty, - has: kEnumerableProperty, - open: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty, - }); - - module.exports = { - CacheStorage, - }; - - /***/ - }, - - /***/ 9174: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - module.exports = { - kConstruct: __nccwpck_require__(2785).kConstruct, - }; - - /***/ - }, - - /***/ 2396: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const assert = __nccwpck_require__(9491); - const { URLSerializer } = __nccwpck_require__(685); - const { isValidHeaderName } = __nccwpck_require__(2538); - - /** - * @see https://url.spec.whatwg.org/#concept-url-equals - * @param {URL} A - * @param {URL} B - * @param {boolean | undefined} excludeFragment - * @returns {boolean} - */ - function urlEquals(A, B, excludeFragment = false) { - const serializedA = URLSerializer(A, excludeFragment); - - const serializedB = URLSerializer(B, excludeFragment); - - return serializedA === serializedB; - } - - /** - * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 - * @param {string} header - */ - function fieldValues(header) { - assert(header !== null); - - const values = []; - - for (let value of header.split(",")) { - value = value.trim(); - - if (!value.length) { - continue; - } else if (!isValidHeaderName(value)) { - continue; - } - - values.push(value); - } - - return values; - } - - module.exports = { - urlEquals, - fieldValues, - }; - - /***/ - }, - - /***/ 3598: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // @ts-check - - /* global WebAssembly */ - - const assert = __nccwpck_require__(9491); - const net = __nccwpck_require__(1808); - const http = __nccwpck_require__(3685); - const { pipeline } = __nccwpck_require__(2781); - const util = __nccwpck_require__(3983); - const timers = __nccwpck_require__(9459); - const Request = __nccwpck_require__(2905); - const DispatcherBase = __nccwpck_require__(4839); - const { - RequestContentLengthMismatchError, - ResponseContentLengthMismatchError, - InvalidArgumentError, - RequestAbortedError, - HeadersTimeoutError, - HeadersOverflowError, - SocketError, - InformationalError, - BodyTimeoutError, - HTTPParserError, - ResponseExceededMaxSizeError, - ClientDestroyedError, - } = __nccwpck_require__(8045); - const buildConnector = __nccwpck_require__(2067); - const { - kUrl, - kReset, - kServerName, - kClient, - kBusy, - kParser, - kConnect, - kBlocking, - kResuming, - kRunning, - kPending, - kSize, - kWriting, - kQueue, - kConnected, - kConnecting, - kNeedDrain, - kNoRef, - kKeepAliveDefaultTimeout, - kHostHeader, - kPendingIdx, - kRunningIdx, - kError, - kPipelining, - kSocket, - kKeepAliveTimeoutValue, - kMaxHeadersSize, - kKeepAliveMaxTimeout, - kKeepAliveTimeoutThreshold, - kHeadersTimeout, - kBodyTimeout, - kStrictContentLength, - kConnector, - kMaxRedirections, - kMaxRequests, - kCounter, - kClose, - kDestroy, - kDispatch, - kInterceptors, - kLocalAddress, - kMaxResponseSize, - kHTTPConnVersion, - // HTTP2 - kHost, - kHTTP2Session, - kHTTP2SessionState, - kHTTP2BuildRequest, - kHTTP2CopyHeaders, - kHTTP1BuildRequest, - } = __nccwpck_require__(2785); - - /** @type {import('http2')} */ - let http2; - try { - http2 = __nccwpck_require__(5158); - } catch { - // @ts-ignore - http2 = { constants: {} }; - } - - const { - constants: { - HTTP2_HEADER_AUTHORITY, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_CONTENT_LENGTH, - HTTP2_HEADER_EXPECT, - HTTP2_HEADER_STATUS, - }, - } = http2; - - // Experimental - let h2ExperimentalWarned = false; - - const FastBuffer = Buffer[Symbol.species]; - - const kClosedResolve = Symbol("kClosedResolve"); - - const channels = {}; - - try { - const diagnosticsChannel = __nccwpck_require__(7643); - channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders"); - channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect"); - channels.connectError = diagnosticsChannel.channel("undici:client:connectError"); - channels.connected = diagnosticsChannel.channel("undici:client:connected"); - } catch { - channels.sendHeaders = { hasSubscribers: false }; - channels.beforeConnect = { hasSubscribers: false }; - channels.connectError = { hasSubscribers: false }; - channels.connected = { hasSubscribers: false }; - } - - /** - * @type {import('../types/client').default} - */ - class Client extends DispatcherBase { - /** - * - * @param {string|URL} url - * @param {import('../types/client').Client.Options} options - */ - constructor( - url, - { - interceptors, - maxHeaderSize, - headersTimeout, - socketTimeout, - requestTimeout, - connectTimeout, - bodyTimeout, - idleTimeout, - keepAlive, - keepAliveTimeout, - maxKeepAliveTimeout, - keepAliveMaxTimeout, - keepAliveTimeoutThreshold, - socketPath, - pipelining, - tls, - strictContentLength, - maxCachedSessions, - maxRedirections, - connect, - maxRequestsPerClient, - localAddress, - maxResponseSize, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - // h2 - allowH2, - maxConcurrentStreams, - } = {}, - ) { - super(); - - if (keepAlive !== undefined) { - throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); - } - - if (socketTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported socketTimeout, use headersTimeout & bodyTimeout instead", - ); - } - - if (requestTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported requestTimeout, use headersTimeout & bodyTimeout instead", - ); - } - - if (idleTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported idleTimeout, use keepAliveTimeout instead", - ); - } - - if (maxKeepAliveTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead", - ); - } - - if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { - throw new InvalidArgumentError("invalid maxHeaderSize"); - } - - if (socketPath != null && typeof socketPath !== "string") { - throw new InvalidArgumentError("invalid socketPath"); - } - - if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { - throw new InvalidArgumentError("invalid connectTimeout"); - } - - if ( - keepAliveTimeout != null && - (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0) - ) { - throw new InvalidArgumentError("invalid keepAliveTimeout"); - } - - if ( - keepAliveMaxTimeout != null && - (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0) - ) { - throw new InvalidArgumentError("invalid keepAliveMaxTimeout"); - } - - if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { - throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold"); - } - - if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError("headersTimeout must be a positive integer or zero"); - } - - if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero"); - } - - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError("connect must be a function or an object"); - } - - if ( - maxRedirections != null && - (!Number.isInteger(maxRedirections) || maxRedirections < 0) - ) { - throw new InvalidArgumentError("maxRedirections must be a positive number"); - } - - if ( - maxRequestsPerClient != null && - (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0) - ) { - throw new InvalidArgumentError("maxRequestsPerClient must be a positive number"); - } - - if ( - localAddress != null && - (typeof localAddress !== "string" || net.isIP(localAddress) === 0) - ) { - throw new InvalidArgumentError("localAddress must be valid string IP address"); - } - - if ( - maxResponseSize != null && - (!Number.isInteger(maxResponseSize) || maxResponseSize < -1) - ) { - throw new InvalidArgumentError("maxResponseSize must be a positive number"); - } - - if ( - autoSelectFamilyAttemptTimeout != null && - (!Number.isInteger(autoSelectFamilyAttemptTimeout) || - autoSelectFamilyAttemptTimeout < -1) - ) { - throw new InvalidArgumentError( - "autoSelectFamilyAttemptTimeout must be a positive number", - ); - } - - // h2 - if (allowH2 != null && typeof allowH2 !== "boolean") { - throw new InvalidArgumentError("allowH2 must be a valid boolean value"); - } - - if ( - maxConcurrentStreams != null && - (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1) - ) { - throw new InvalidArgumentError( - "maxConcurrentStreams must be a possitive integer, greater than 0", - ); - } - - if (typeof connect !== "function") { - connect = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily - ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } - : undefined), - ...connect, - }); - } - - this[kInterceptors] = - interceptors && interceptors.Client && Array.isArray(interceptors.Client) - ? interceptors.Client - : [createRedirectInterceptor({ maxRedirections })]; - this[kUrl] = util.parseOrigin(url); - this[kConnector] = connect; - this[kSocket] = null; - this[kPipelining] = pipelining != null ? pipelining : 1; - this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; - this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; - this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout; - this[kKeepAliveTimeoutThreshold] = - keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; - this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; - this[kServerName] = null; - this[kLocalAddress] = localAddress != null ? localAddress : null; - this[kResuming] = 0; // 0, idle, 1, scheduled, 2 resuming - this[kNeedDrain] = 0; // 0, idle, 1, scheduled, 2 resuming - this[kHostHeader] = `host: ${this[kUrl].hostname}${ - this[kUrl].port ? `:${this[kUrl].port}` : "" - }\r\n`; - this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3; - this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3; - this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; - this[kMaxRedirections] = maxRedirections; - this[kMaxRequests] = maxRequestsPerClient; - this[kClosedResolve] = null; - this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; - this[kHTTPConnVersion] = "h1"; - - // HTTP/2 - this[kHTTP2Session] = null; - this[kHTTP2SessionState] = !allowH2 - ? null - : { - // streams: null, // Fixed queue of streams - For future support of `push` - openStreams: 0, // Keep track of them to decide wether or not unref the session - maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100, // Max peerConcurrentStreams for a Node h2 server - }; - this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}`; - - // kQueue is built up of 3 sections separated by - // the kRunningIdx and kPendingIdx indices. - // | complete | running | pending | - // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length - // kRunningIdx points to the first running element. - // kPendingIdx points to the first pending element. - // This implements a fast queue with an amortized - // time of O(1). - - this[kQueue] = []; - this[kRunningIdx] = 0; - this[kPendingIdx] = 0; - } - - get pipelining() { - return this[kPipelining]; - } - - set pipelining(value) { - this[kPipelining] = value; - resume(this, true); - } - - get [kPending]() { - return this[kQueue].length - this[kPendingIdx]; - } - - get [kRunning]() { - return this[kPendingIdx] - this[kRunningIdx]; - } - - get [kSize]() { - return this[kQueue].length - this[kRunningIdx]; - } - - get [kConnected]() { - return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; - } - - get [kBusy]() { - const socket = this[kSocket]; - return ( - (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || - this[kSize] >= (this[kPipelining] || 1) || - this[kPending] > 0 - ); - } - - /* istanbul ignore: only used for test */ - [kConnect](cb) { - connect(this); - this.once("connect", cb); - } - - [kDispatch](opts, handler) { - const origin = opts.origin || this[kUrl].origin; - - const request = - this[kHTTPConnVersion] === "h2" - ? Request[kHTTP2BuildRequest](origin, opts, handler) - : Request[kHTTP1BuildRequest](origin, opts, handler); - - this[kQueue].push(request); - if (this[kResuming]) { - // Do nothing. - } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { - // Wait a tick in case stream/iterator is ended in the same tick. - this[kResuming] = 1; - process.nextTick(resume, this); - } else { - resume(this, true); - } - - if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { - this[kNeedDrain] = 2; - } - - return this[kNeedDrain] < 2; - } - - async [kClose]() { - // TODO: for H2 we need to gracefully flush the remaining enqueued - // request and close each stream. - return new Promise((resolve) => { - if (!this[kSize]) { - resolve(null); - } else { - this[kClosedResolve] = resolve; - } - }); - } - - async [kDestroy](err) { - return new Promise((resolve) => { - const requests = this[kQueue].splice(this[kPendingIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); - } - - const callback = () => { - if (this[kClosedResolve]) { - // TODO (fix): Should we error here with ClientDestroyedError? - this[kClosedResolve](); - this[kClosedResolve] = null; - } - resolve(); - }; - - if (this[kHTTP2Session] != null) { - util.destroy(this[kHTTP2Session], err); - this[kHTTP2Session] = null; - this[kHTTP2SessionState] = null; - } - - if (!this[kSocket]) { - queueMicrotask(callback); - } else { - util.destroy(this[kSocket].on("close", callback), err); - } - - resume(this); - }); - } - } - - function onHttp2SessionError(err) { - assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); - - this[kSocket][kError] = err; - - onError(this[kClient], err); - } - - function onHttp2FrameError(type, code, id) { - const err = new InformationalError( - `HTTP/2: "frameError" received - type ${type}, code ${code}`, - ); - - if (id === 0) { - this[kSocket][kError] = err; - onError(this[kClient], err); - } - } - - function onHttp2SessionEnd() { - util.destroy(this, new SocketError("other side closed")); - util.destroy(this[kSocket], new SocketError("other side closed")); - } - - function onHTTP2GoAway(code) { - const client = this[kClient]; - const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - client[kSocket] = null; - client[kHTTP2Session] = null; - - if (client.destroyed) { - assert(this[kPending] === 0); - - // Fail entire queue. - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); - } - } else if (client[kRunning] > 0) { - // Fail head of pipeline. - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; - - errorRequest(client, request, err); - } - - client[kPendingIdx] = client[kRunningIdx]; - - assert(client[kRunning] === 0); - - client.emit("disconnect", client[kUrl], [client], err); - - resume(client); - } - - const constants = __nccwpck_require__(953); - const createRedirectInterceptor = __nccwpck_require__(8861); - const EMPTY_BUF = Buffer.alloc(0); - - async function lazyllhttp() { - const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(1145) : undefined; - - let mod; - try { - mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(5627), "base64")); - } catch (e) { - /* istanbul ignore next */ - - // We could check if the error was caused by the simd option not - // being enabled, but the occurring of this other error - // * https://github.com/emscripten-core/emscripten/issues/11495 - // got me to remove that check to avoid breaking Node 12. - mod = await WebAssembly.compile( - Buffer.from(llhttpWasmData || __nccwpck_require__(1145), "base64"), - ); - } - - return await WebAssembly.instantiate(mod, { - env: { - /* eslint-disable camelcase */ - - wasm_on_url: (p, at, len) => { - /* istanbul ignore next */ - return 0; - }, - wasm_on_status: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || - 0 - ); - }, - wasm_on_message_begin: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageBegin() || 0; - }, - wasm_on_header_field: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onHeaderField( - new FastBuffer(currentBufferRef.buffer, start, len), - ) || 0 - ); - }, - wasm_on_header_value: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onHeaderValue( - new FastBuffer(currentBufferRef.buffer, start, len), - ) || 0 - ); - }, - wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { - assert.strictEqual(currentParser.ptr, p); - return ( - currentParser.onHeadersComplete( - statusCode, - Boolean(upgrade), - Boolean(shouldKeepAlive), - ) || 0 - ); - }, - wasm_on_body: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 - ); - }, - wasm_on_message_complete: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageComplete() || 0; - }, - - /* eslint-enable camelcase */ - }, - }); - } - - let llhttpInstance = null; - let llhttpPromise = lazyllhttp(); - llhttpPromise.catch(); - - let currentParser = null; - let currentBufferRef = null; - let currentBufferSize = 0; - let currentBufferPtr = null; - - const TIMEOUT_HEADERS = 1; - const TIMEOUT_BODY = 2; - const TIMEOUT_IDLE = 3; - - class Parser { - constructor(client, socket, { exports }) { - assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); - - this.llhttp = exports; - this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); - this.client = client; - this.socket = socket; - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; - this.statusCode = null; - this.statusText = ""; - this.upgrade = false; - this.headers = []; - this.headersSize = 0; - this.headersMaxSize = client[kMaxHeadersSize]; - this.shouldKeepAlive = false; - this.paused = false; - this.resume = this.resume.bind(this); - - this.bytesRead = 0; - - this.keepAlive = ""; - this.contentLength = ""; - this.connection = ""; - this.maxResponseSize = client[kMaxResponseSize]; - } - - setTimeout(value, type) { - this.timeoutType = type; - if (value !== this.timeoutValue) { - timers.clearTimeout(this.timeout); - if (value) { - this.timeout = timers.setTimeout(onParserTimeout, value, this); - // istanbul ignore else: only for jest - if (this.timeout.unref) { - this.timeout.unref(); - } - } else { - this.timeout = null; - } - this.timeoutValue = value; - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - } - - resume() { - if (this.socket.destroyed || !this.paused) { - return; - } - - assert(this.ptr != null); - assert(currentParser == null); - - this.llhttp.llhttp_resume(this.ptr); - - assert(this.timeoutType === TIMEOUT_BODY); - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - - this.paused = false; - this.execute(this.socket.read() || EMPTY_BUF); // Flush parser. - this.readMore(); - } - - readMore() { - while (!this.paused && this.ptr) { - const chunk = this.socket.read(); - if (chunk === null) { - break; - } - this.execute(chunk); - } - } - - execute(data) { - assert(this.ptr != null); - assert(currentParser == null); - assert(!this.paused); - - const { socket, llhttp } = this; - - if (data.length > currentBufferSize) { - if (currentBufferPtr) { - llhttp.free(currentBufferPtr); - } - currentBufferSize = Math.ceil(data.length / 4096) * 4096; - currentBufferPtr = llhttp.malloc(currentBufferSize); - } - - new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); - - // Call `execute` on the wasm parser. - // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, - // and finally the length of bytes to parse. - // The return value is an error code or `constants.ERROR.OK`. - try { - let ret; - - try { - currentBufferRef = data; - currentParser = this; - ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); - /* eslint-disable-next-line no-useless-catch */ - } catch (err) { - /* istanbul ignore next: difficult to make a test case for */ - throw err; - } finally { - currentParser = null; - currentBufferRef = null; - } - - const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; - - if (ret === constants.ERROR.PAUSED_UPGRADE) { - this.onUpgrade(data.slice(offset)); - } else if (ret === constants.ERROR.PAUSED) { - this.paused = true; - socket.unshift(data.slice(offset)); - } else if (ret !== constants.ERROR.OK) { - const ptr = llhttp.llhttp_get_error_reason(this.ptr); - let message = ""; - /* istanbul ignore else: difficult to make a test case for */ - if (ptr) { - const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); - message = - "Response does not match the HTTP/1.1 protocol (" + - Buffer.from(llhttp.memory.buffer, ptr, len).toString() + - ")"; - } - throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); - } - } catch (err) { - util.destroy(socket, err); - } - } - - destroy() { - assert(this.ptr != null); - assert(currentParser == null); - - this.llhttp.llhttp_free(this.ptr); - this.ptr = null; - - timers.clearTimeout(this.timeout); - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; - - this.paused = false; - } - - onStatus(buf) { - this.statusText = buf.toString(); - } - - onMessageBegin() { - const { socket, client } = this; - - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1; - } - - const request = client[kQueue][client[kRunningIdx]]; - if (!request) { - return -1; - } - } - - onHeaderField(buf) { - const len = this.headers.length; - - if ((len & 1) === 0) { - this.headers.push(buf); - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } - - this.trackHeader(buf.length); - } - - onHeaderValue(buf) { - let len = this.headers.length; - - if ((len & 1) === 1) { - this.headers.push(buf); - len += 1; - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } - - const key = this.headers[len - 2]; - if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") { - this.keepAlive += buf.toString(); - } else if (key.length === 10 && key.toString().toLowerCase() === "connection") { - this.connection += buf.toString(); - } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") { - this.contentLength += buf.toString(); - } - - this.trackHeader(buf.length); - } - - trackHeader(len) { - this.headersSize += len; - if (this.headersSize >= this.headersMaxSize) { - util.destroy(this.socket, new HeadersOverflowError()); - } - } - - onUpgrade(head) { - const { upgrade, client, socket, headers, statusCode } = this; - - assert(upgrade); - - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - - assert(!socket.destroyed); - assert(socket === client[kSocket]); - assert(!this.paused); - assert(request.upgrade || request.method === "CONNECT"); - - this.statusCode = null; - this.statusText = ""; - this.shouldKeepAlive = null; - - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - - socket.unshift(head); - - socket[kParser].destroy(); - socket[kParser] = null; - - socket[kClient] = null; - socket[kError] = null; - socket - .removeListener("error", onSocketError) - .removeListener("readable", onSocketReadable) - .removeListener("end", onSocketEnd) - .removeListener("close", onSocketClose); - - client[kSocket] = null; - client[kQueue][client[kRunningIdx]++] = null; - client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); - - try { - request.onUpgrade(statusCode, headers, socket); - } catch (err) { - util.destroy(socket, err); - } - - resume(client); - } - - onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { - const { client, socket, headers, statusText } = this; - - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1; - } - - const request = client[kQueue][client[kRunningIdx]]; - - /* istanbul ignore next: difficult to make a test case for */ - if (!request) { - return -1; - } - - assert(!this.upgrade); - assert(this.statusCode < 200); - - if (statusCode === 100) { - util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket))); - return -1; - } - - /* this can only happen if server is misbehaving */ - if (upgrade && !request.upgrade) { - util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket))); - return -1; - } - - assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); - - this.statusCode = statusCode; - this.shouldKeepAlive = - shouldKeepAlive || - // Override llhttp value which does not allow keepAlive for HEAD. - (request.method === "HEAD" && - !socket[kReset] && - this.connection.toLowerCase() === "keep-alive"); - - if (this.statusCode >= 200) { - const bodyTimeout = - request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout]; - this.setTimeout(bodyTimeout, TIMEOUT_BODY); - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - - if (request.method === "CONNECT") { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2; - } - - if (upgrade) { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2; - } - - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - - if (this.shouldKeepAlive && client[kPipelining]) { - const keepAliveTimeout = this.keepAlive - ? util.parseKeepAliveTimeout(this.keepAlive) - : null; - - if (keepAliveTimeout != null) { - const timeout = Math.min( - keepAliveTimeout - client[kKeepAliveTimeoutThreshold], - client[kKeepAliveMaxTimeout], - ); - if (timeout <= 0) { - socket[kReset] = true; - } else { - client[kKeepAliveTimeoutValue] = timeout; - } - } else { - client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; - } - } else { - // Stop more requests from being dispatched. - socket[kReset] = true; - } - - const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; - - if (request.aborted) { - return -1; - } - - if (request.method === "HEAD") { - return 1; - } - - if (statusCode < 200) { - return 1; - } - - if (socket[kBlocking]) { - socket[kBlocking] = false; - resume(client); - } - - return pause ? constants.ERROR.PAUSED : 0; - } - - onBody(buf) { - const { client, socket, statusCode, maxResponseSize } = this; - - if (socket.destroyed) { - return -1; - } - - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - - assert.strictEqual(this.timeoutType, TIMEOUT_BODY); - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - - assert(statusCode >= 200); - - if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { - util.destroy(socket, new ResponseExceededMaxSizeError()); - return -1; - } - - this.bytesRead += buf.length; - - if (request.onData(buf) === false) { - return constants.ERROR.PAUSED; - } - } - - onMessageComplete() { - const { - client, - socket, - statusCode, - upgrade, - headers, - contentLength, - bytesRead, - shouldKeepAlive, - } = this; - - if (socket.destroyed && (!statusCode || shouldKeepAlive)) { - return -1; - } - - if (upgrade) { - return; - } - - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - - assert(statusCode >= 100); - - this.statusCode = null; - this.statusText = ""; - this.bytesRead = 0; - this.contentLength = ""; - this.keepAlive = ""; - this.connection = ""; - - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - - if (statusCode < 200) { - return; - } - - /* istanbul ignore next: should be handled by llhttp? */ - if ( - request.method !== "HEAD" && - contentLength && - bytesRead !== parseInt(contentLength, 10) - ) { - util.destroy(socket, new ResponseContentLengthMismatchError()); - return -1; - } - - request.onComplete(headers); - - client[kQueue][client[kRunningIdx]++] = null; - - if (socket[kWriting]) { - assert.strictEqual(client[kRunning], 0); - // Response completed before request. - util.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (!shouldKeepAlive) { - util.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (socket[kReset] && client[kRunning] === 0) { - // Destroy socket once all requests have completed. - // The request at the tail of the pipeline is the one - // that requested reset and no further requests should - // have been queued since then. - util.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (client[kPipelining] === 1) { - // We must wait a full event loop cycle to reuse this socket to make sure - // that non-spec compliant servers are not closing the connection even if they - // said they won't. - setImmediate(resume, client); - } else { - resume(client); - } - } - } - - function onParserTimeout(parser) { - const { socket, timeoutType, client } = parser; - - /* istanbul ignore else */ - if (timeoutType === TIMEOUT_HEADERS) { - if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { - assert(!parser.paused, "cannot be paused while waiting for headers"); - util.destroy(socket, new HeadersTimeoutError()); - } - } else if (timeoutType === TIMEOUT_BODY) { - if (!parser.paused) { - util.destroy(socket, new BodyTimeoutError()); - } - } else if (timeoutType === TIMEOUT_IDLE) { - assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); - util.destroy(socket, new InformationalError("socket idle timeout")); - } - } - - function onSocketReadable() { - const { [kParser]: parser } = this; - if (parser) { - parser.readMore(); - } - } - - function onSocketError(err) { - const { [kClient]: client, [kParser]: parser } = this; - - assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); - - if (client[kHTTPConnVersion] !== "h2") { - // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded - // to the user. - if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so for as a valid response. - parser.onMessageComplete(); - return; - } - } - - this[kError] = err; - - onError(this[kClient], err); - } - - function onError(client, err) { - if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { - // Error is not caused by running request and not a recoverable - // socket error. - - assert(client[kPendingIdx] === client[kRunningIdx]); - - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - assert(client[kSize] === 0); - } - } - - function onSocketEnd() { - const { [kParser]: parser, [kClient]: client } = this; - - if (client[kHTTPConnVersion] !== "h2") { - if (parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so far as a valid response. - parser.onMessageComplete(); - return; - } - } - - util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); - } - - function onSocketClose() { - const { [kClient]: client, [kParser]: parser } = this; - - if (client[kHTTPConnVersion] === "h1" && parser) { - if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so far as a valid response. - parser.onMessageComplete(); - } - - this[kParser].destroy(); - this[kParser] = null; - } - - const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); - - client[kSocket] = null; - - if (client.destroyed) { - assert(client[kPending] === 0); - - // Fail entire queue. - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") { - // Fail head of pipeline. - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; - - errorRequest(client, request, err); - } - - client[kPendingIdx] = client[kRunningIdx]; - - assert(client[kRunning] === 0); - - client.emit("disconnect", client[kUrl], [client], err); - - resume(client); - } - - async function connect(client) { - assert(!client[kConnecting]); - assert(!client[kSocket]); - - let { host, hostname, protocol, port } = client[kUrl]; - - // Resolve ipv6 - if (hostname[0] === "[") { - const idx = hostname.indexOf("]"); - - assert(idx !== -1); - const ip = hostname.substring(1, idx); - - assert(net.isIP(ip)); - hostname = ip; - } - - client[kConnecting] = true; - - if (channels.beforeConnect.hasSubscribers) { - channels.beforeConnect.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - connector: client[kConnector], - }); - } - - try { - const socket = await new Promise((resolve, reject) => { - client[kConnector]( - { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - (err, socket) => { - if (err) { - reject(err); - } else { - resolve(socket); - } - }, - ); - }); - - if (client.destroyed) { - util.destroy( - socket.on("error", () => {}), - new ClientDestroyedError(), - ); - return; - } - - client[kConnecting] = false; - - assert(socket); - - const isH2 = socket.alpnProtocol === "h2"; - if (isH2) { - if (!h2ExperimentalWarned) { - h2ExperimentalWarned = true; - process.emitWarning( - "H2 support is experimental, expect them to change at any time.", - { - code: "UNDICI-H2", - }, - ); - } - - const session = http2.connect(client[kUrl], { - createConnection: () => socket, - peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams, - }); - - client[kHTTPConnVersion] = "h2"; - session[kClient] = client; - session[kSocket] = socket; - session.on("error", onHttp2SessionError); - session.on("frameError", onHttp2FrameError); - session.on("end", onHttp2SessionEnd); - session.on("goaway", onHTTP2GoAway); - session.on("close", onSocketClose); - session.unref(); - - client[kHTTP2Session] = session; - socket[kHTTP2Session] = session; - } else { - if (!llhttpInstance) { - llhttpInstance = await llhttpPromise; - llhttpPromise = null; - } - - socket[kNoRef] = false; - socket[kWriting] = false; - socket[kReset] = false; - socket[kBlocking] = false; - socket[kParser] = new Parser(client, socket, llhttpInstance); - } - - socket[kCounter] = 0; - socket[kMaxRequests] = client[kMaxRequests]; - socket[kClient] = client; - socket[kError] = null; - - socket - .on("error", onSocketError) - .on("readable", onSocketReadable) - .on("end", onSocketEnd) - .on("close", onSocketClose); - - client[kSocket] = socket; - - if (channels.connected.hasSubscribers) { - channels.connected.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - connector: client[kConnector], - socket, - }); - } - client.emit("connect", client[kUrl], [client]); - } catch (err) { - if (client.destroyed) { - return; - } - - client[kConnecting] = false; - - if (channels.connectError.hasSubscribers) { - channels.connectError.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - connector: client[kConnector], - error: err, - }); - } - - if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { - assert(client[kRunning] === 0); - while ( - client[kPending] > 0 && - client[kQueue][client[kPendingIdx]].servername === client[kServerName] - ) { - const request = client[kQueue][client[kPendingIdx]++]; - errorRequest(client, request, err); - } - } else { - onError(client, err); - } - - client.emit("connectionError", client[kUrl], [client], err); - } - - resume(client); - } - - function emitDrain(client) { - client[kNeedDrain] = 0; - client.emit("drain", client[kUrl], [client]); - } - - function resume(client, sync) { - if (client[kResuming] === 2) { - return; - } - - client[kResuming] = 2; - - _resume(client, sync); - client[kResuming] = 0; - - if (client[kRunningIdx] > 256) { - client[kQueue].splice(0, client[kRunningIdx]); - client[kPendingIdx] -= client[kRunningIdx]; - client[kRunningIdx] = 0; - } - } - - function _resume(client, sync) { - while (true) { - if (client.destroyed) { - assert(client[kPending] === 0); - return; - } - - if (client[kClosedResolve] && !client[kSize]) { - client[kClosedResolve](); - client[kClosedResolve] = null; - return; - } - - const socket = client[kSocket]; - - if (socket && !socket.destroyed && socket.alpnProtocol !== "h2") { - if (client[kSize] === 0) { - if (!socket[kNoRef] && socket.unref) { - socket.unref(); - socket[kNoRef] = true; - } - } else if (socket[kNoRef] && socket.ref) { - socket.ref(); - socket[kNoRef] = false; - } - - if (client[kSize] === 0) { - if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { - socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); - } - } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { - if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { - const request = client[kQueue][client[kRunningIdx]]; - const headersTimeout = - request.headersTimeout != null - ? request.headersTimeout - : client[kHeadersTimeout]; - socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); - } - } - } - - if (client[kBusy]) { - client[kNeedDrain] = 2; - } else if (client[kNeedDrain] === 2) { - if (sync) { - client[kNeedDrain] = 1; - process.nextTick(emitDrain, client); - } else { - emitDrain(client); - } - continue; - } - - if (client[kPending] === 0) { - return; - } - - if (client[kRunning] >= (client[kPipelining] || 1)) { - return; - } - - const request = client[kQueue][client[kPendingIdx]]; - - if (client[kUrl].protocol === "https:" && client[kServerName] !== request.servername) { - if (client[kRunning] > 0) { - return; - } - - client[kServerName] = request.servername; - - if (socket && socket.servername !== request.servername) { - util.destroy(socket, new InformationalError("servername changed")); - return; - } - } - - if (client[kConnecting]) { - return; - } - - if (!socket && !client[kHTTP2Session]) { - connect(client); - return; - } - - if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { - return; - } - - if (client[kRunning] > 0 && !request.idempotent) { - // Non-idempotent request cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return; - } - - if (client[kRunning] > 0 && (request.upgrade || request.method === "CONNECT")) { - // Don't dispatch an upgrade until all preceding requests have completed. - // A misbehaving server might upgrade the connection before all pipelined - // request has completed. - return; - } - - if ( - client[kRunning] > 0 && - util.bodyLength(request.body) !== 0 && - (util.isStream(request.body) || util.isAsyncIterable(request.body)) - ) { - // Request with stream or iterator body can error while other requests - // are inflight and indirectly error those as well. - // Ensure this doesn't happen by waiting for inflight - // to complete before dispatching. - - // Request with stream or iterator body cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return; - } - - if (!request.aborted && write(client, request)) { - client[kPendingIdx]++; - } else { - client[kQueue].splice(client[kPendingIdx], 1); - } - } - } - - // https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 - function shouldSendContentLength(method) { - return ( - method !== "GET" && - method !== "HEAD" && - method !== "OPTIONS" && - method !== "TRACE" && - method !== "CONNECT" - ); - } - - function write(client, request) { - if (client[kHTTPConnVersion] === "h2") { - writeH2(client, client[kHTTP2Session], request); - return; - } - - const { body, method, path, host, upgrade, headers, blocking, reset } = request; - - // https://tools.ietf.org/html/rfc7231#section-4.3.1 - // https://tools.ietf.org/html/rfc7231#section-4.3.2 - // https://tools.ietf.org/html/rfc7231#section-4.3.5 - - // Sending a payload body on a request that does not - // expect it can cause undefined behavior on some - // servers and corrupt connection state. Do not - // re-use the connection for further requests. - - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; - - if (body && typeof body.read === "function") { - // Try to read EOF in order to get length. - body.read(0); - } - - const bodyLength = util.bodyLength(body); - - let contentLength = bodyLength; - - if (contentLength === null) { - contentLength = request.contentLength; - } - - if (contentLength === 0 && !expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD NOT send a Content-Length header field when - // the request message does not contain a payload body and the method - // semantics do not anticipate such a body. - - contentLength = null; - } - - // https://github.com/nodejs/undici/issues/2046 - // A user agent may send a Content-Length header with 0 value, this should be allowed. - if ( - shouldSendContentLength(method) && - contentLength > 0 && - request.contentLength !== null && - request.contentLength !== contentLength - ) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); - return false; - } - - process.emitWarning(new RequestContentLengthMismatchError()); - } - - const socket = client[kSocket]; - - try { - request.onConnect((err) => { - if (request.aborted || request.completed) { - return; - } - - errorRequest(client, request, err || new RequestAbortedError()); - - util.destroy(socket, new InformationalError("aborted")); - }); - } catch (err) { - errorRequest(client, request, err); - } - - if (request.aborted) { - return false; - } - - if (method === "HEAD") { - // https://github.com/mcollina/undici/issues/258 - // Close after a HEAD request to interop with misbehaving servers - // that may send a body in the response. - - socket[kReset] = true; - } - - if (upgrade || method === "CONNECT") { - // On CONNECT or upgrade, block pipeline from dispatching further - // requests on this connection. - - socket[kReset] = true; - } - - if (reset != null) { - socket[kReset] = reset; - } - - if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { - socket[kReset] = true; - } - - if (blocking) { - socket[kBlocking] = true; - } - - let header = `${method} ${path} HTTP/1.1\r\n`; - - if (typeof host === "string") { - header += `host: ${host}\r\n`; - } else { - header += client[kHostHeader]; - } - - if (upgrade) { - header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n`; - } else if (client[kPipelining] && !socket[kReset]) { - header += "connection: keep-alive\r\n"; - } else { - header += "connection: close\r\n"; - } - - if (headers) { - header += headers; - } - - if (channels.sendHeaders.hasSubscribers) { - channels.sendHeaders.publish({ request, headers: header, socket }); - } - - /* istanbul ignore else: assertion */ - if (!body || bodyLength === 0) { - if (contentLength === 0) { - socket.write(`${header}content-length: 0\r\n\r\n`, "latin1"); - } else { - assert(contentLength === null, "no body must not have content length"); - socket.write(`${header}\r\n`, "latin1"); - } - request.onRequestSent(); - } else if (util.isBuffer(body)) { - assert(contentLength === body.byteLength, "buffer body must have content length"); - - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, "latin1"); - socket.write(body); - socket.uncork(); - request.onBodySent(body); - request.onRequestSent(); - if (!expectsPayload) { - socket[kReset] = true; - } - } else if (util.isBlobLike(body)) { - if (typeof body.stream === "function") { - writeIterable({ - body: body.stream(), - client, - request, - socket, - contentLength, - header, - expectsPayload, - }); - } else { - writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }); - } - } else if (util.isStream(body)) { - writeStream({ body, client, request, socket, contentLength, header, expectsPayload }); - } else if (util.isIterable(body)) { - writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }); - } else { - assert(false); - } - - return true; - } - - function writeH2(client, session, request) { - const { - body, - method, - path, - host, - upgrade, - expectContinue, - signal, - headers: reqHeaders, - } = request; - - let headers; - if (typeof reqHeaders === "string") headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()); - else headers = reqHeaders; - - if (upgrade) { - errorRequest(client, request, new Error("Upgrade not supported for H2")); - return false; - } - - try { - // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? - request.onConnect((err) => { - if (request.aborted || request.completed) { - return; - } - - errorRequest(client, request, err || new RequestAbortedError()); - }); - } catch (err) { - errorRequest(client, request, err); - } - - if (request.aborted) { - return false; - } - - /** @type {import('node:http2').ClientHttp2Stream} */ - let stream; - const h2State = client[kHTTP2SessionState]; - - headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; - headers[HTTP2_HEADER_METHOD] = method; - - if (method === "CONNECT") { - session.ref(); - // we are already connected, streams are pending, first request - // will create a new stream. We trigger a request to create the stream and wait until - // `ready` event is triggered - // We disabled endStream to allow the user to write to the stream - stream = session.request(headers, { endStream: false, signal }); - - if (stream.id && !stream.pending) { - request.onUpgrade(null, null, stream); - ++h2State.openStreams; - } else { - stream.once("ready", () => { - request.onUpgrade(null, null, stream); - ++h2State.openStreams; - }); - } - - stream.once("close", () => { - h2State.openStreams -= 1; - // TODO(HTTP/2): unref only if current streams count is 0 - if (h2State.openStreams === 0) session.unref(); - }); - - return true; - } - - // https://tools.ietf.org/html/rfc7540#section-8.3 - // :path and :scheme headers must be omited when sending CONNECT - - headers[HTTP2_HEADER_PATH] = path; - headers[HTTP2_HEADER_SCHEME] = "https"; - - // https://tools.ietf.org/html/rfc7231#section-4.3.1 - // https://tools.ietf.org/html/rfc7231#section-4.3.2 - // https://tools.ietf.org/html/rfc7231#section-4.3.5 - - // Sending a payload body on a request that does not - // expect it can cause undefined behavior on some - // servers and corrupt connection state. Do not - // re-use the connection for further requests. - - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; - - if (body && typeof body.read === "function") { - // Try to read EOF in order to get length. - body.read(0); - } - - let contentLength = util.bodyLength(body); - - if (contentLength == null) { - contentLength = request.contentLength; - } - - if (contentLength === 0 || !expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD NOT send a Content-Length header field when - // the request message does not contain a payload body and the method - // semantics do not anticipate such a body. - - contentLength = null; - } - - // https://github.com/nodejs/undici/issues/2046 - // A user agent may send a Content-Length header with 0 value, this should be allowed. - if ( - shouldSendContentLength(method) && - contentLength > 0 && - request.contentLength != null && - request.contentLength !== contentLength - ) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); - return false; - } - - process.emitWarning(new RequestContentLengthMismatchError()); - } - - if (contentLength != null) { - assert(body, "no body must not have content length"); - headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; - } - - session.ref(); - - const shouldEndStream = method === "GET" || method === "HEAD"; - if (expectContinue) { - headers[HTTP2_HEADER_EXPECT] = "100-continue"; - stream = session.request(headers, { endStream: shouldEndStream, signal }); - - stream.once("continue", writeBodyH2); - } else { - stream = session.request(headers, { - endStream: shouldEndStream, - signal, - }); - writeBodyH2(); - } - - // Increment counter as we have new several streams open - ++h2State.openStreams; - - stream.once("response", (headers) => { - const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers; - - if ( - request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), "") === - false - ) { - stream.pause(); - } - }); - - stream.once("end", () => { - request.onComplete([]); - }); - - stream.on("data", (chunk) => { - if (request.onData(chunk) === false) { - stream.pause(); - } - }); - - stream.once("close", () => { - h2State.openStreams -= 1; - // TODO(HTTP/2): unref only if current streams count is 0 - if (h2State.openStreams === 0) { - session.unref(); - } - }); - - stream.once("error", function (err) { - if ( - client[kHTTP2Session] && - !client[kHTTP2Session].destroyed && - !this.closed && - !this.destroyed - ) { - h2State.streams -= 1; - util.destroy(stream, err); - } - }); - - stream.once("frameError", (type, code) => { - const err = new InformationalError( - `HTTP/2: "frameError" received - type ${type}, code ${code}`, - ); - errorRequest(client, request, err); - - if ( - client[kHTTP2Session] && - !client[kHTTP2Session].destroyed && - !this.closed && - !this.destroyed - ) { - h2State.streams -= 1; - util.destroy(stream, err); - } - }); - - // stream.on('aborted', () => { - // // TODO(HTTP/2): Support aborted - // }) - - // stream.on('timeout', () => { - // // TODO(HTTP/2): Support timeout - // }) - - // stream.on('push', headers => { - // // TODO(HTTP/2): Suppor push - // }) - - // stream.on('trailers', headers => { - // // TODO(HTTP/2): Support trailers - // }) - - return true; - - function writeBodyH2() { - /* istanbul ignore else: assertion */ - if (!body) { - request.onRequestSent(); - } else if (util.isBuffer(body)) { - assert(contentLength === body.byteLength, "buffer body must have content length"); - stream.cork(); - stream.write(body); - stream.uncork(); - stream.end(); - request.onBodySent(body); - request.onRequestSent(); - } else if (util.isBlobLike(body)) { - if (typeof body.stream === "function") { - writeIterable({ - client, - request, - contentLength, - h2stream: stream, - expectsPayload, - body: body.stream(), - socket: client[kSocket], - header: "", - }); - } else { - writeBlob({ - body, - client, - request, - contentLength, - expectsPayload, - h2stream: stream, - header: "", - socket: client[kSocket], - }); - } - } else if (util.isStream(body)) { - writeStream({ - body, - client, - request, - contentLength, - expectsPayload, - socket: client[kSocket], - h2stream: stream, - header: "", - }); - } else if (util.isIterable(body)) { - writeIterable({ - body, - client, - request, - contentLength, - expectsPayload, - header: "", - h2stream: stream, - socket: client[kSocket], - }); - } else { - assert(false); - } - } - } - - function writeStream({ - h2stream, - body, - client, - request, - socket, - contentLength, - header, - expectsPayload, - }) { - assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); - - if (client[kHTTPConnVersion] === "h2") { - // For HTTP/2, is enough to pipe the stream - const pipe = pipeline(body, h2stream, (err) => { - if (err) { - util.destroy(body, err); - util.destroy(h2stream, err); - } else { - request.onRequestSent(); - } - }); - - pipe.on("data", onPipeData); - pipe.once("end", () => { - pipe.removeListener("data", onPipeData); - util.destroy(pipe); - }); - - function onPipeData(chunk) { - request.onBodySent(chunk); - } - - return; - } - - let finished = false; - - const writer = new AsyncWriter({ - socket, - request, - contentLength, - client, - expectsPayload, - header, - }); - - const onData = function (chunk) { - if (finished) { - return; - } - - try { - if (!writer.write(chunk) && this.pause) { - this.pause(); - } - } catch (err) { - util.destroy(this, err); - } - }; - const onDrain = function () { - if (finished) { - return; - } - - if (body.resume) { - body.resume(); - } - }; - const onAbort = function () { - if (finished) { - return; - } - const err = new RequestAbortedError(); - queueMicrotask(() => onFinished(err)); - }; - const onFinished = function (err) { - if (finished) { - return; - } - - finished = true; - - assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)); - - socket.off("drain", onDrain).off("error", onFinished); - - body.removeListener("data", onData) - .removeListener("end", onFinished) - .removeListener("error", onFinished) - .removeListener("close", onAbort); - - if (!err) { - try { - writer.end(); - } catch (er) { - err = er; - } - } - - writer.destroy(err); - - if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { - util.destroy(body, err); - } else { - util.destroy(body); - } - }; - - body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort); - - if (body.resume) { - body.resume(); - } - - socket.on("drain", onDrain).on("error", onFinished); - } - - async function writeBlob({ - h2stream, - body, - client, - request, - socket, - contentLength, - header, - expectsPayload, - }) { - assert(contentLength === body.size, "blob body must have content length"); - - const isH2 = client[kHTTPConnVersion] === "h2"; - try { - if (contentLength != null && contentLength !== body.size) { - throw new RequestContentLengthMismatchError(); - } - - const buffer = Buffer.from(await body.arrayBuffer()); - - if (isH2) { - h2stream.cork(); - h2stream.write(buffer); - h2stream.uncork(); - } else { - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, "latin1"); - socket.write(buffer); - socket.uncork(); - } - - request.onBodySent(buffer); - request.onRequestSent(); - - if (!expectsPayload) { - socket[kReset] = true; - } - - resume(client); - } catch (err) { - util.destroy(isH2 ? h2stream : socket, err); - } - } - - async function writeIterable({ - h2stream, - body, - client, - request, - socket, - contentLength, - header, - expectsPayload, - }) { - assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); - - let callback = null; - function onDrain() { - if (callback) { - const cb = callback; - callback = null; - cb(); - } - } - - const waitForDrain = () => - new Promise((resolve, reject) => { - assert(callback === null); - - if (socket[kError]) { - reject(socket[kError]); - } else { - callback = resolve; - } - }); - - if (client[kHTTPConnVersion] === "h2") { - h2stream.on("close", onDrain).on("drain", onDrain); - - try { - // It's up to the user to somehow abort the async iterable. - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError]; - } - - const res = h2stream.write(chunk); - request.onBodySent(chunk); - if (!res) { - await waitForDrain(); - } - } - } catch (err) { - h2stream.destroy(err); - } finally { - request.onRequestSent(); - h2stream.end(); - h2stream.off("close", onDrain).off("drain", onDrain); - } - - return; - } - - socket.on("close", onDrain).on("drain", onDrain); - - const writer = new AsyncWriter({ - socket, - request, - contentLength, - client, - expectsPayload, - header, - }); - try { - // It's up to the user to somehow abort the async iterable. - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError]; - } - - if (!writer.write(chunk)) { - await waitForDrain(); - } - } - - writer.end(); - } catch (err) { - writer.destroy(err); - } finally { - socket.off("close", onDrain).off("drain", onDrain); - } - } - - class AsyncWriter { - constructor({ socket, request, contentLength, client, expectsPayload, header }) { - this.socket = socket; - this.request = request; - this.contentLength = contentLength; - this.client = client; - this.bytesWritten = 0; - this.expectsPayload = expectsPayload; - this.header = header; - - socket[kWriting] = true; - } - - write(chunk) { - const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = - this; - - if (socket[kError]) { - throw socket[kError]; - } - - if (socket.destroyed) { - return false; - } - - const len = Buffer.byteLength(chunk); - if (!len) { - return true; - } - - // We should defer writing chunks. - if (contentLength !== null && bytesWritten + len > contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError(); - } - - process.emitWarning(new RequestContentLengthMismatchError()); - } - - socket.cork(); - - if (bytesWritten === 0) { - if (!expectsPayload) { - socket[kReset] = true; - } - - if (contentLength === null) { - socket.write(`${header}transfer-encoding: chunked\r\n`, "latin1"); - } else { - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, "latin1"); - } - } - - if (contentLength === null) { - socket.write(`\r\n${len.toString(16)}\r\n`, "latin1"); - } - - this.bytesWritten += len; - - const ret = socket.write(chunk); - - socket.uncork(); - - request.onBodySent(chunk); - - if (!ret) { - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh(); - } - } - } - - return ret; - } - - end() { - const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = - this; - request.onRequestSent(); - - socket[kWriting] = false; - - if (socket[kError]) { - throw socket[kError]; - } - - if (socket.destroyed) { - return; - } - - if (bytesWritten === 0) { - if (expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD send a Content-Length in a request message when - // no Transfer-Encoding is sent and the request method defines a meaning - // for an enclosed payload body. - - socket.write(`${header}content-length: 0\r\n\r\n`, "latin1"); - } else { - socket.write(`${header}\r\n`, "latin1"); - } - } else if (contentLength === null) { - socket.write("\r\n0\r\n\r\n", "latin1"); - } - - if (contentLength !== null && bytesWritten !== contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError(); - } else { - process.emitWarning(new RequestContentLengthMismatchError()); - } - } - - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh(); - } - } - - resume(client); - } - - destroy(err) { - const { socket, client } = this; - - socket[kWriting] = false; - - if (err) { - assert(client[kRunning] <= 1, "pipeline should only contain this request"); - util.destroy(socket, err); - } - } - } - - function errorRequest(client, request, err) { - try { - request.onError(err); - assert(request.aborted); - } catch (err) { - client.emit("error", err); - } - } - - module.exports = Client; - - /***/ - }, - - /***/ 6436: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - /* istanbul ignore file: only for Node 12 */ - - const { kConnected, kSize } = __nccwpck_require__(2785); - - class CompatWeakRef { - constructor(value) { - this.value = value; - } - - deref() { - return this.value[kConnected] === 0 && this.value[kSize] === 0 ? undefined : this.value; - } - } - - class CompatFinalizer { - constructor(finalizer) { - this.finalizer = finalizer; - } - - register(dispatcher, key) { - if (dispatcher.on) { - dispatcher.on("disconnect", () => { - if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { - this.finalizer(key); - } - }); - } - } - } - - module.exports = function () { - // FIXME: remove workaround when the Node bug is fixed - // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 - if (process.env.NODE_V8_COVERAGE) { - return { - WeakRef: CompatWeakRef, - FinalizationRegistry: CompatFinalizer, - }; - } - return { - WeakRef: global.WeakRef || CompatWeakRef, - FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer, - }; - }; - - /***/ - }, - - /***/ 663: /***/ (module) => { - "use strict"; - - // https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size - const maxAttributeValueSize = 1024; - - // https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size - const maxNameValuePairSize = 4096; - - module.exports = { - maxAttributeValueSize, - maxNameValuePairSize, - }; - - /***/ - }, - - /***/ 1724: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { parseSetCookie } = __nccwpck_require__(4408); - const { stringify, getHeadersList } = __nccwpck_require__(3121); - const { webidl } = __nccwpck_require__(1744); - const { Headers } = __nccwpck_require__(554); - - /** - * @typedef {Object} Cookie - * @property {string} name - * @property {string} value - * @property {Date|number|undefined} expires - * @property {number|undefined} maxAge - * @property {string|undefined} domain - * @property {string|undefined} path - * @property {boolean|undefined} secure - * @property {boolean|undefined} httpOnly - * @property {'Strict'|'Lax'|'None'} sameSite - * @property {string[]} unparsed - */ - - /** - * @param {Headers} headers - * @returns {Record} - */ - function getCookies(headers) { - webidl.argumentLengthCheck(arguments, 1, { header: "getCookies" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - const cookie = headers.get("cookie"); - const out = {}; - - if (!cookie) { - return out; - } - - for (const piece of cookie.split(";")) { - const [name, ...value] = piece.split("="); - - out[name.trim()] = value.join("="); - } - - return out; - } - - /** - * @param {Headers} headers - * @param {string} name - * @param {{ path?: string, domain?: string }|undefined} attributes - * @returns {void} - */ - function deleteCookie(headers, name, attributes) { - webidl.argumentLengthCheck(arguments, 2, { header: "deleteCookie" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - name = webidl.converters.DOMString(name); - attributes = webidl.converters.DeleteCookieAttributes(attributes); - - // Matches behavior of - // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 - setCookie(headers, { - name, - value: "", - expires: new Date(0), - ...attributes, - }); - } - - /** - * @param {Headers} headers - * @returns {Cookie[]} - */ - function getSetCookies(headers) { - webidl.argumentLengthCheck(arguments, 1, { header: "getSetCookies" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - const cookies = getHeadersList(headers).cookies; - - if (!cookies) { - return []; - } - - // In older versions of undici, cookies is a list of name:value. - return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)); - } - - /** - * @param {Headers} headers - * @param {Cookie} cookie - * @returns {void} - */ - function setCookie(headers, cookie) { - webidl.argumentLengthCheck(arguments, 2, { header: "setCookie" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - cookie = webidl.converters.Cookie(cookie); - - const str = stringify(cookie); - - if (str) { - headers.append("Set-Cookie", stringify(cookie)); - } - } - - webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "path", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "domain", - defaultValue: null, - }, - ]); - - webidl.converters.Cookie = webidl.dictionaryConverter([ - { - converter: webidl.converters.DOMString, - key: "name", - }, - { - converter: webidl.converters.DOMString, - key: "value", - }, - { - converter: webidl.nullableConverter((value) => { - if (typeof value === "number") { - return webidl.converters["unsigned long long"](value); - } - - return new Date(value); - }), - key: "expires", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters["long long"]), - key: "maxAge", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "domain", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "path", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: "secure", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: "httpOnly", - defaultValue: null, - }, - { - converter: webidl.converters.USVString, - key: "sameSite", - allowedValues: ["Strict", "Lax", "None"], - }, - { - converter: webidl.sequenceConverter(webidl.converters.DOMString), - key: "unparsed", - defaultValue: [], - }, - ]); - - module.exports = { - getCookies, - deleteCookie, - getSetCookies, - setCookie, - }; - - /***/ - }, - - /***/ 4408: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(663); - const { isCTLExcludingHtab } = __nccwpck_require__(3121); - const { collectASequenceOfCodePointsFast } = __nccwpck_require__(685); - const assert = __nccwpck_require__(9491); - - /** - * @description Parses the field-value attributes of a set-cookie header string. - * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 - * @param {string} header - * @returns if the header is invalid, null will be returned - */ - function parseSetCookie(header) { - // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F - // character (CTL characters excluding HTAB): Abort these steps and - // ignore the set-cookie-string entirely. - if (isCTLExcludingHtab(header)) { - return null; - } - - let nameValuePair = ""; - let unparsedAttributes = ""; - let name = ""; - let value = ""; - - // 2. If the set-cookie-string contains a %x3B (";") character: - if (header.includes(";")) { - // 1. The name-value-pair string consists of the characters up to, - // but not including, the first %x3B (";"), and the unparsed- - // attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question). - const position = { position: 0 }; - - nameValuePair = collectASequenceOfCodePointsFast(";", header, position); - unparsedAttributes = header.slice(position.position); - } else { - // Otherwise: - - // 1. The name-value-pair string consists of all the characters - // contained in the set-cookie-string, and the unparsed- - // attributes is the empty string. - nameValuePair = header; - } - - // 3. If the name-value-pair string lacks a %x3D ("=") character, then - // the name string is empty, and the value string is the value of - // name-value-pair. - if (!nameValuePair.includes("=")) { - value = nameValuePair; - } else { - // Otherwise, the name string consists of the characters up to, but - // not including, the first %x3D ("=") character, and the (possibly - // empty) value string consists of the characters after the first - // %x3D ("=") character. - const position = { position: 0 }; - name = collectASequenceOfCodePointsFast("=", nameValuePair, position); - value = nameValuePair.slice(position.position + 1); - } - - // 4. Remove any leading or trailing WSP characters from the name - // string and the value string. - name = name.trim(); - value = value.trim(); - - // 5. If the sum of the lengths of the name string and the value string - // is more than 4096 octets, abort these steps and ignore the set- - // cookie-string entirely. - if (name.length + value.length > maxNameValuePairSize) { - return null; - } - - // 6. The cookie-name is the name string, and the cookie-value is the - // value string. - return { - name, - value, - ...parseUnparsedAttributes(unparsedAttributes), - }; - } - - /** - * Parses the remaining attributes of a set-cookie header - * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 - * @param {string} unparsedAttributes - * @param {[Object.]={}} cookieAttributeList - */ - function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { - // 1. If the unparsed-attributes string is empty, skip the rest of - // these steps. - if (unparsedAttributes.length === 0) { - return cookieAttributeList; - } - - // 2. Discard the first character of the unparsed-attributes (which - // will be a %x3B (";") character). - assert(unparsedAttributes[0] === ";"); - unparsedAttributes = unparsedAttributes.slice(1); - - let cookieAv = ""; - - // 3. If the remaining unparsed-attributes contains a %x3B (";") - // character: - if (unparsedAttributes.includes(";")) { - // 1. Consume the characters of the unparsed-attributes up to, but - // not including, the first %x3B (";") character. - cookieAv = collectASequenceOfCodePointsFast(";", unparsedAttributes, { position: 0 }); - unparsedAttributes = unparsedAttributes.slice(cookieAv.length); - } else { - // Otherwise: - - // 1. Consume the remainder of the unparsed-attributes. - cookieAv = unparsedAttributes; - unparsedAttributes = ""; - } - - // Let the cookie-av string be the characters consumed in this step. - - let attributeName = ""; - let attributeValue = ""; - - // 4. If the cookie-av string contains a %x3D ("=") character: - if (cookieAv.includes("=")) { - // 1. The (possibly empty) attribute-name string consists of the - // characters up to, but not including, the first %x3D ("=") - // character, and the (possibly empty) attribute-value string - // consists of the characters after the first %x3D ("=") - // character. - const position = { position: 0 }; - - attributeName = collectASequenceOfCodePointsFast("=", cookieAv, position); - attributeValue = cookieAv.slice(position.position + 1); - } else { - // Otherwise: - - // 1. The attribute-name string consists of the entire cookie-av - // string, and the attribute-value string is empty. - attributeName = cookieAv; - } - - // 5. Remove any leading or trailing WSP characters from the attribute- - // name string and the attribute-value string. - attributeName = attributeName.trim(); - attributeValue = attributeValue.trim(); - - // 6. If the attribute-value is longer than 1024 octets, ignore the - // cookie-av string and return to Step 1 of this algorithm. - if (attributeValue.length > maxAttributeValueSize) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - // 7. Process the attribute-name and attribute-value according to the - // requirements in the following subsections. (Notice that - // attributes with unrecognized attribute-names are ignored.) - const attributeNameLowercase = attributeName.toLowerCase(); - - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 - // If the attribute-name case-insensitively matches the string - // "Expires", the user agent MUST process the cookie-av as follows. - if (attributeNameLowercase === "expires") { - // 1. Let the expiry-time be the result of parsing the attribute-value - // as cookie-date (see Section 5.1.1). - const expiryTime = new Date(attributeValue); - - // 2. If the attribute-value failed to parse as a cookie date, ignore - // the cookie-av. - - cookieAttributeList.expires = expiryTime; - } else if (attributeNameLowercase === "max-age") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 - // If the attribute-name case-insensitively matches the string "Max- - // Age", the user agent MUST process the cookie-av as follows. - - // 1. If the first character of the attribute-value is not a DIGIT or a - // "-" character, ignore the cookie-av. - const charCode = attributeValue.charCodeAt(0); - - if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - // 2. If the remainder of attribute-value contains a non-DIGIT - // character, ignore the cookie-av. - if (!/^\d+$/.test(attributeValue)) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - // 3. Let delta-seconds be the attribute-value converted to an integer. - const deltaSeconds = Number(attributeValue); - - // 4. Let cookie-age-limit be the maximum age of the cookie (which - // SHOULD be 400 days or less, see Section 4.1.2.2). - - // 5. Set delta-seconds to the smaller of its present value and cookie- - // age-limit. - // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) - - // 6. If delta-seconds is less than or equal to zero (0), let expiry- - // time be the earliest representable date and time. Otherwise, let - // the expiry-time be the current date and time plus delta-seconds - // seconds. - // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds - - // 7. Append an attribute to the cookie-attribute-list with an - // attribute-name of Max-Age and an attribute-value of expiry-time. - cookieAttributeList.maxAge = deltaSeconds; - } else if (attributeNameLowercase === "domain") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 - // If the attribute-name case-insensitively matches the string "Domain", - // the user agent MUST process the cookie-av as follows. - - // 1. Let cookie-domain be the attribute-value. - let cookieDomain = attributeValue; - - // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be - // cookie-domain without its leading %x2E ("."). - if (cookieDomain[0] === ".") { - cookieDomain = cookieDomain.slice(1); - } - - // 3. Convert the cookie-domain to lower case. - cookieDomain = cookieDomain.toLowerCase(); - - // 4. Append an attribute to the cookie-attribute-list with an - // attribute-name of Domain and an attribute-value of cookie-domain. - cookieAttributeList.domain = cookieDomain; - } else if (attributeNameLowercase === "path") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 - // If the attribute-name case-insensitively matches the string "Path", - // the user agent MUST process the cookie-av as follows. - - // 1. If the attribute-value is empty or if the first character of the - // attribute-value is not %x2F ("/"): - let cookiePath = ""; - if (attributeValue.length === 0 || attributeValue[0] !== "/") { - // 1. Let cookie-path be the default-path. - cookiePath = "/"; - } else { - // Otherwise: - - // 1. Let cookie-path be the attribute-value. - cookiePath = attributeValue; - } - - // 2. Append an attribute to the cookie-attribute-list with an - // attribute-name of Path and an attribute-value of cookie-path. - cookieAttributeList.path = cookiePath; - } else if (attributeNameLowercase === "secure") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 - // If the attribute-name case-insensitively matches the string "Secure", - // the user agent MUST append an attribute to the cookie-attribute-list - // with an attribute-name of Secure and an empty attribute-value. - - cookieAttributeList.secure = true; - } else if (attributeNameLowercase === "httponly") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 - // If the attribute-name case-insensitively matches the string - // "HttpOnly", the user agent MUST append an attribute to the cookie- - // attribute-list with an attribute-name of HttpOnly and an empty - // attribute-value. - - cookieAttributeList.httpOnly = true; - } else if (attributeNameLowercase === "samesite") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 - // If the attribute-name case-insensitively matches the string - // "SameSite", the user agent MUST process the cookie-av as follows: - - // 1. Let enforcement be "Default". - let enforcement = "Default"; - - const attributeValueLowercase = attributeValue.toLowerCase(); - // 2. If cookie-av's attribute-value is a case-insensitive match for - // "None", set enforcement to "None". - if (attributeValueLowercase.includes("none")) { - enforcement = "None"; - } - - // 3. If cookie-av's attribute-value is a case-insensitive match for - // "Strict", set enforcement to "Strict". - if (attributeValueLowercase.includes("strict")) { - enforcement = "Strict"; - } - - // 4. If cookie-av's attribute-value is a case-insensitive match for - // "Lax", set enforcement to "Lax". - if (attributeValueLowercase.includes("lax")) { - enforcement = "Lax"; - } - - // 5. Append an attribute to the cookie-attribute-list with an - // attribute-name of "SameSite" and an attribute-value of - // enforcement. - cookieAttributeList.sameSite = enforcement; - } else { - cookieAttributeList.unparsed ??= []; - - cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); - } - - // 8. Return to Step 1 of this algorithm. - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - module.exports = { - parseSetCookie, - parseUnparsedAttributes, - }; - - /***/ - }, - - /***/ 3121: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const assert = __nccwpck_require__(9491); - const { kHeadersList } = __nccwpck_require__(2785); - - function isCTLExcludingHtab(value) { - if (value.length === 0) { - return false; - } - - for (const char of value) { - const code = char.charCodeAt(0); - - if (code >= 0x00 || code <= 0x08 || code >= 0x0a || code <= 0x1f || code === 0x7f) { - return false; - } - } - } - - /** - CHAR = - token = 1* - separators = "(" | ")" | "<" | ">" | "@" - | "," | ";" | ":" | "\" | <"> - | "/" | "[" | "]" | "?" | "=" - | "{" | "}" | SP | HT - * @param {string} name - */ - function validateCookieName(name) { - for (const char of name) { - const code = char.charCodeAt(0); - - if ( - code <= 0x20 || - code > 0x7f || - char === "(" || - char === ")" || - char === ">" || - char === "<" || - char === "@" || - char === "," || - char === ";" || - char === ":" || - char === "\\" || - char === '"' || - char === "/" || - char === "[" || - char === "]" || - char === "?" || - char === "=" || - char === "{" || - char === "}" - ) { - throw new Error("Invalid cookie name"); - } - } - } - - /** - cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) - cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E - ; US-ASCII characters excluding CTLs, - ; whitespace DQUOTE, comma, semicolon, - ; and backslash - * @param {string} value - */ - function validateCookieValue(value) { - for (const char of value) { - const code = char.charCodeAt(0); - - if ( - code < 0x21 || // exclude CTLs (0-31) - code === 0x22 || - code === 0x2c || - code === 0x3b || - code === 0x5c || - code > 0x7e // non-ascii - ) { - throw new Error("Invalid header value"); - } - } - } - - /** - * path-value = - * @param {string} path - */ - function validateCookiePath(path) { - for (const char of path) { - const code = char.charCodeAt(0); - - if (code < 0x21 || char === ";") { - throw new Error("Invalid cookie path"); - } - } - } - - /** - * I have no idea why these values aren't allowed to be honest, - * but Deno tests these. - Khafra - * @param {string} domain - */ - function validateCookieDomain(domain) { - if (domain.startsWith("-") || domain.endsWith(".") || domain.endsWith("-")) { - throw new Error("Invalid cookie domain"); - } - } - - /** - * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 - * @param {number|Date} date - IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT - ; fixed length/zone/capitalization subset of the format - ; see Section 3.3 of [RFC5322] - - day-name = %x4D.6F.6E ; "Mon", case-sensitive - / %x54.75.65 ; "Tue", case-sensitive - / %x57.65.64 ; "Wed", case-sensitive - / %x54.68.75 ; "Thu", case-sensitive - / %x46.72.69 ; "Fri", case-sensitive - / %x53.61.74 ; "Sat", case-sensitive - / %x53.75.6E ; "Sun", case-sensitive - date1 = day SP month SP year - ; e.g., 02 Jun 1982 - - day = 2DIGIT - month = %x4A.61.6E ; "Jan", case-sensitive - / %x46.65.62 ; "Feb", case-sensitive - / %x4D.61.72 ; "Mar", case-sensitive - / %x41.70.72 ; "Apr", case-sensitive - / %x4D.61.79 ; "May", case-sensitive - / %x4A.75.6E ; "Jun", case-sensitive - / %x4A.75.6C ; "Jul", case-sensitive - / %x41.75.67 ; "Aug", case-sensitive - / %x53.65.70 ; "Sep", case-sensitive - / %x4F.63.74 ; "Oct", case-sensitive - / %x4E.6F.76 ; "Nov", case-sensitive - / %x44.65.63 ; "Dec", case-sensitive - year = 4DIGIT - - GMT = %x47.4D.54 ; "GMT", case-sensitive - - time-of-day = hour ":" minute ":" second - ; 00:00:00 - 23:59:60 (leap second) - - hour = 2DIGIT - minute = 2DIGIT - second = 2DIGIT - */ - function toIMFDate(date) { - if (typeof date === "number") { - date = new Date(date); - } - - const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - - const months = [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec", - ]; - - const dayName = days[date.getUTCDay()]; - const day = date.getUTCDate().toString().padStart(2, "0"); - const month = months[date.getUTCMonth()]; - const year = date.getUTCFullYear(); - const hour = date.getUTCHours().toString().padStart(2, "0"); - const minute = date.getUTCMinutes().toString().padStart(2, "0"); - const second = date.getUTCSeconds().toString().padStart(2, "0"); - - return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`; - } - - /** - max-age-av = "Max-Age=" non-zero-digit *DIGIT - ; In practice, both expires-av and max-age-av - ; are limited to dates representable by the - ; user agent. - * @param {number} maxAge - */ - function validateCookieMaxAge(maxAge) { - if (maxAge < 0) { - throw new Error("Invalid cookie max-age"); - } - } - - /** - * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 - * @param {import('./index').Cookie} cookie - */ - function stringify(cookie) { - if (cookie.name.length === 0) { - return null; - } - - validateCookieName(cookie.name); - validateCookieValue(cookie.value); - - const out = [`${cookie.name}=${cookie.value}`]; - - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 - if (cookie.name.startsWith("__Secure-")) { - cookie.secure = true; - } - - if (cookie.name.startsWith("__Host-")) { - cookie.secure = true; - cookie.domain = null; - cookie.path = "/"; - } - - if (cookie.secure) { - out.push("Secure"); - } - - if (cookie.httpOnly) { - out.push("HttpOnly"); - } - - if (typeof cookie.maxAge === "number") { - validateCookieMaxAge(cookie.maxAge); - out.push(`Max-Age=${cookie.maxAge}`); - } - - if (cookie.domain) { - validateCookieDomain(cookie.domain); - out.push(`Domain=${cookie.domain}`); - } - - if (cookie.path) { - validateCookiePath(cookie.path); - out.push(`Path=${cookie.path}`); - } - - if (cookie.expires && cookie.expires.toString() !== "Invalid Date") { - out.push(`Expires=${toIMFDate(cookie.expires)}`); - } - - if (cookie.sameSite) { - out.push(`SameSite=${cookie.sameSite}`); - } - - for (const part of cookie.unparsed) { - if (!part.includes("=")) { - throw new Error("Invalid unparsed"); - } - - const [key, ...value] = part.split("="); - - out.push(`${key.trim()}=${value.join("=")}`); - } - - return out.join("; "); - } - - let kHeadersListNode; - - function getHeadersList(headers) { - if (headers[kHeadersList]) { - return headers[kHeadersList]; - } - - if (!kHeadersListNode) { - kHeadersListNode = Object.getOwnPropertySymbols(headers).find( - (symbol) => symbol.description === "headers list", - ); - - assert(kHeadersListNode, "Headers cannot be parsed"); - } - - const headersList = headers[kHeadersListNode]; - assert(headersList); - - return headersList; - } - - module.exports = { - isCTLExcludingHtab, - stringify, - getHeadersList, - }; - - /***/ - }, - - /***/ 2067: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const net = __nccwpck_require__(1808); - const assert = __nccwpck_require__(9491); - const util = __nccwpck_require__(3983); - const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8045); - - let tls; // include tls conditionally since it is not always available - - // TODO: session re-use does not wait for the first - // connection to resolve the session and might therefore - // resolve the same servername multiple times even when - // re-use is enabled. - - let SessionCache; - // FIXME: remove workaround when the Node bug is fixed - // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 - if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { - SessionCache = class WeakSessionCache { - constructor(maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions; - this._sessionCache = new Map(); - this._sessionRegistry = new global.FinalizationRegistry((key) => { - if (this._sessionCache.size < this._maxCachedSessions) { - return; - } - - const ref = this._sessionCache.get(key); - if (ref !== undefined && ref.deref() === undefined) { - this._sessionCache.delete(key); - } - }); - } - - get(sessionKey) { - const ref = this._sessionCache.get(sessionKey); - return ref ? ref.deref() : null; - } - - set(sessionKey, session) { - if (this._maxCachedSessions === 0) { - return; - } - - this._sessionCache.set(sessionKey, new WeakRef(session)); - this._sessionRegistry.register(session, sessionKey); - } - }; - } else { - SessionCache = class SimpleSessionCache { - constructor(maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions; - this._sessionCache = new Map(); - } - - get(sessionKey) { - return this._sessionCache.get(sessionKey); - } - - set(sessionKey, session) { - if (this._maxCachedSessions === 0) { - return; - } - - if (this._sessionCache.size >= this._maxCachedSessions) { - // remove the oldest session - const { value: oldestKey } = this._sessionCache.keys().next(); - this._sessionCache.delete(oldestKey); - } - - this._sessionCache.set(sessionKey, session); - } - }; - } - - function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { - if ( - maxCachedSessions != null && - (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0) - ) { - throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero"); - } - - const options = { path: socketPath, ...opts }; - const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); - timeout = timeout == null ? 10e3 : timeout; - allowH2 = allowH2 != null ? allowH2 : false; - return function connect( - { hostname, host, protocol, port, servername, localAddress, httpSocket }, - callback, - ) { - let socket; - if (protocol === "https:") { - if (!tls) { - tls = __nccwpck_require__(4404); - } - servername = servername || options.servername || util.getServerName(host) || null; - - const sessionKey = servername || hostname; - const session = sessionCache.get(sessionKey) || null; - - assert(sessionKey); - - socket = tls.connect({ - highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... - ...options, - servername, - session, - localAddress, - // TODO(HTTP/2): Add support for h2c - ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"], - socket: httpSocket, // upgrade socket connection - port: port || 443, - host: hostname, - }); - - socket.on("session", function (session) { - // TODO (fix): Can a session become invalid once established? Don't think so? - sessionCache.set(sessionKey, session); - }); - } else { - assert(!httpSocket, "httpSocket can only be sent on TLS update"); - socket = net.connect({ - highWaterMark: 64 * 1024, // Same as nodejs fs streams. - ...options, - localAddress, - port: port || 80, - host: hostname, - }); - } - - // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket - if (options.keepAlive == null || options.keepAlive) { - const keepAliveInitialDelay = - options.keepAliveInitialDelay === undefined - ? 60e3 - : options.keepAliveInitialDelay; - socket.setKeepAlive(true, keepAliveInitialDelay); - } - - const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); - - socket - .setNoDelay(true) - .once(protocol === "https:" ? "secureConnect" : "connect", function () { - cancelTimeout(); - - if (callback) { - const cb = callback; - callback = null; - cb(null, this); - } - }) - .on("error", function (err) { - cancelTimeout(); - - if (callback) { - const cb = callback; - callback = null; - cb(err); - } - }); - - return socket; - }; - } - - function setupTimeout(onConnectTimeout, timeout) { - if (!timeout) { - return () => {}; - } - - let s1 = null; - let s2 = null; - const timeoutId = setTimeout(() => { - // setImmediate is added to make sure that we priotorise socket error events over timeouts - s1 = setImmediate(() => { - if (process.platform === "win32") { - // Windows needs an extra setImmediate probably due to implementation differences in the socket logic - s2 = setImmediate(() => onConnectTimeout()); - } else { - onConnectTimeout(); - } - }); - }, timeout); - return () => { - clearTimeout(timeoutId); - clearImmediate(s1); - clearImmediate(s2); - }; - } - - function onConnectTimeout(socket) { - util.destroy(socket, new ConnectTimeoutError()); - } - - module.exports = buildConnector; - - /***/ - }, - - /***/ 8045: /***/ (module) => { - "use strict"; - - class UndiciError extends Error { - constructor(message) { - super(message); - this.name = "UndiciError"; - this.code = "UND_ERR"; - } - } - - class ConnectTimeoutError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ConnectTimeoutError); - this.name = "ConnectTimeoutError"; - this.message = message || "Connect Timeout Error"; - this.code = "UND_ERR_CONNECT_TIMEOUT"; - } - } - - class HeadersTimeoutError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, HeadersTimeoutError); - this.name = "HeadersTimeoutError"; - this.message = message || "Headers Timeout Error"; - this.code = "UND_ERR_HEADERS_TIMEOUT"; - } - } - - class HeadersOverflowError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, HeadersOverflowError); - this.name = "HeadersOverflowError"; - this.message = message || "Headers Overflow Error"; - this.code = "UND_ERR_HEADERS_OVERFLOW"; - } - } - - class BodyTimeoutError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, BodyTimeoutError); - this.name = "BodyTimeoutError"; - this.message = message || "Body Timeout Error"; - this.code = "UND_ERR_BODY_TIMEOUT"; - } - } - - class ResponseStatusCodeError extends UndiciError { - constructor(message, statusCode, headers, body) { - super(message); - Error.captureStackTrace(this, ResponseStatusCodeError); - this.name = "ResponseStatusCodeError"; - this.message = message || "Response Status Code Error"; - this.code = "UND_ERR_RESPONSE_STATUS_CODE"; - this.body = body; - this.status = statusCode; - this.statusCode = statusCode; - this.headers = headers; - } - } - - class InvalidArgumentError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, InvalidArgumentError); - this.name = "InvalidArgumentError"; - this.message = message || "Invalid Argument Error"; - this.code = "UND_ERR_INVALID_ARG"; - } - } - - class InvalidReturnValueError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, InvalidReturnValueError); - this.name = "InvalidReturnValueError"; - this.message = message || "Invalid Return Value Error"; - this.code = "UND_ERR_INVALID_RETURN_VALUE"; - } - } - - class RequestAbortedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, RequestAbortedError); - this.name = "AbortError"; - this.message = message || "Request aborted"; - this.code = "UND_ERR_ABORTED"; - } - } - - class InformationalError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, InformationalError); - this.name = "InformationalError"; - this.message = message || "Request information"; - this.code = "UND_ERR_INFO"; - } - } - - class RequestContentLengthMismatchError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, RequestContentLengthMismatchError); - this.name = "RequestContentLengthMismatchError"; - this.message = message || "Request body length does not match content-length header"; - this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"; - } - } - - class ResponseContentLengthMismatchError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ResponseContentLengthMismatchError); - this.name = "ResponseContentLengthMismatchError"; - this.message = message || "Response body length does not match content-length header"; - this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH"; - } - } - - class ClientDestroyedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ClientDestroyedError); - this.name = "ClientDestroyedError"; - this.message = message || "The client is destroyed"; - this.code = "UND_ERR_DESTROYED"; - } - } - - class ClientClosedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ClientClosedError); - this.name = "ClientClosedError"; - this.message = message || "The client is closed"; - this.code = "UND_ERR_CLOSED"; - } - } - - class SocketError extends UndiciError { - constructor(message, socket) { - super(message); - Error.captureStackTrace(this, SocketError); - this.name = "SocketError"; - this.message = message || "Socket error"; - this.code = "UND_ERR_SOCKET"; - this.socket = socket; - } - } - - class NotSupportedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, NotSupportedError); - this.name = "NotSupportedError"; - this.message = message || "Not supported error"; - this.code = "UND_ERR_NOT_SUPPORTED"; - } - } - - class BalancedPoolMissingUpstreamError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, NotSupportedError); - this.name = "MissingUpstreamError"; - this.message = message || "No upstream has been added to the BalancedPool"; - this.code = "UND_ERR_BPL_MISSING_UPSTREAM"; - } - } - - class HTTPParserError extends Error { - constructor(message, code, data) { - super(message); - Error.captureStackTrace(this, HTTPParserError); - this.name = "HTTPParserError"; - this.code = code ? `HPE_${code}` : undefined; - this.data = data ? data.toString() : undefined; - } - } - - class ResponseExceededMaxSizeError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ResponseExceededMaxSizeError); - this.name = "ResponseExceededMaxSizeError"; - this.message = message || "Response content exceeded max size"; - this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE"; - } - } - - class RequestRetryError extends UndiciError { - constructor(message, code, { headers, data }) { - super(message); - Error.captureStackTrace(this, RequestRetryError); - this.name = "RequestRetryError"; - this.message = message || "Request retry error"; - this.code = "UND_ERR_REQ_RETRY"; - this.statusCode = code; - this.data = data; - this.headers = headers; - } - } - - module.exports = { - HTTPParserError, - UndiciError, - HeadersTimeoutError, - HeadersOverflowError, - BodyTimeoutError, - RequestContentLengthMismatchError, - ConnectTimeoutError, - ResponseStatusCodeError, - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError, - ClientDestroyedError, - ClientClosedError, - InformationalError, - SocketError, - NotSupportedError, - ResponseContentLengthMismatchError, - BalancedPoolMissingUpstreamError, - ResponseExceededMaxSizeError, - RequestRetryError, - }; - - /***/ - }, - - /***/ 2905: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { InvalidArgumentError, NotSupportedError } = __nccwpck_require__(8045); - const assert = __nccwpck_require__(9491); - const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(2785); - const util = __nccwpck_require__(3983); - - // tokenRegExp and headerCharRegex have been lifted from - // https://github.com/nodejs/node/blob/main/lib/_http_common.js - - /** - * Verifies that the given val is a valid HTTP token - * per the rules defined in RFC 7230 - * See https://tools.ietf.org/html/rfc7230#section-3.2.6 - */ - const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; - - /** - * Matches if val contains an invalid field-vchar - * field-value = *( field-content / obs-fold ) - * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] - * field-vchar = VCHAR / obs-text - */ - const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; - - // Verifies that a given path is valid does not contain control chars \x00 to \x20 - const invalidPathRegex = /[^\u0021-\u00ff]/; - - const kHandler = Symbol("handler"); - - const channels = {}; - - let extractBody; - - try { - const diagnosticsChannel = __nccwpck_require__(7643); - channels.create = diagnosticsChannel.channel("undici:request:create"); - channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent"); - channels.headers = diagnosticsChannel.channel("undici:request:headers"); - channels.trailers = diagnosticsChannel.channel("undici:request:trailers"); - channels.error = diagnosticsChannel.channel("undici:request:error"); - } catch { - channels.create = { hasSubscribers: false }; - channels.bodySent = { hasSubscribers: false }; - channels.headers = { hasSubscribers: false }; - channels.trailers = { hasSubscribers: false }; - channels.error = { hasSubscribers: false }; - } - - class Request { - constructor( - origin, - { - path, - method, - body, - headers, - query, - idempotent, - blocking, - upgrade, - headersTimeout, - bodyTimeout, - reset, - throwOnError, - expectContinue, - }, - handler, - ) { - if (typeof path !== "string") { - throw new InvalidArgumentError("path must be a string"); - } else if ( - path[0] !== "/" && - !(path.startsWith("http://") || path.startsWith("https://")) && - method !== "CONNECT" - ) { - throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); - } else if (invalidPathRegex.exec(path) !== null) { - throw new InvalidArgumentError("invalid request path"); - } - - if (typeof method !== "string") { - throw new InvalidArgumentError("method must be a string"); - } else if (tokenRegExp.exec(method) === null) { - throw new InvalidArgumentError("invalid request method"); - } - - if (upgrade && typeof upgrade !== "string") { - throw new InvalidArgumentError("upgrade must be a string"); - } - - if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError("invalid headersTimeout"); - } - - if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError("invalid bodyTimeout"); - } - - if (reset != null && typeof reset !== "boolean") { - throw new InvalidArgumentError("invalid reset"); - } - - if (expectContinue != null && typeof expectContinue !== "boolean") { - throw new InvalidArgumentError("invalid expectContinue"); - } - - this.headersTimeout = headersTimeout; - - this.bodyTimeout = bodyTimeout; - - this.throwOnError = throwOnError === true; - - this.method = method; - - this.abort = null; - - if (body == null) { - this.body = null; - } else if (util.isStream(body)) { - this.body = body; - - const rState = this.body._readableState; - if (!rState || !rState.autoDestroy) { - this.endHandler = function autoDestroy() { - util.destroy(this); - }; - this.body.on("end", this.endHandler); - } - - this.errorHandler = (err) => { - if (this.abort) { - this.abort(err); - } else { - this.error = err; - } - }; - this.body.on("error", this.errorHandler); - } else if (util.isBuffer(body)) { - this.body = body.byteLength ? body : null; - } else if (ArrayBuffer.isView(body)) { - this.body = body.buffer.byteLength - ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) - : null; - } else if (body instanceof ArrayBuffer) { - this.body = body.byteLength ? Buffer.from(body) : null; - } else if (typeof body === "string") { - this.body = body.length ? Buffer.from(body) : null; - } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { - this.body = body; - } else { - throw new InvalidArgumentError( - "body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable", - ); - } - - this.completed = false; - - this.aborted = false; - - this.upgrade = upgrade || null; - - this.path = query ? util.buildURL(path, query) : path; - - this.origin = origin; - - this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; - - this.blocking = blocking == null ? false : blocking; - - this.reset = reset == null ? null : reset; - - this.host = null; - - this.contentLength = null; - - this.contentType = null; - - this.headers = ""; - - // Only for H2 - this.expectContinue = expectContinue != null ? expectContinue : false; - - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError("headers array must be even"); - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(this, headers[i], headers[i + 1]); - } - } else if (headers && typeof headers === "object") { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(this, key, headers[key]); - } - } else if (headers != null) { - throw new InvalidArgumentError("headers must be an object or an array"); - } - - if (util.isFormDataLike(this.body)) { - if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { - throw new InvalidArgumentError( - "Form-Data bodies are only supported in node v16.8 and newer.", - ); - } - - if (!extractBody) { - extractBody = __nccwpck_require__(1472).extractBody; - } - - const [bodyStream, contentType] = extractBody(body); - if (this.contentType == null) { - this.contentType = contentType; - this.headers += `content-type: ${contentType}\r\n`; - } - this.body = bodyStream.stream; - this.contentLength = bodyStream.length; - } else if (util.isBlobLike(body) && this.contentType == null && body.type) { - this.contentType = body.type; - this.headers += `content-type: ${body.type}\r\n`; - } - - util.validateHandler(handler, method, upgrade); - - this.servername = util.getServerName(this.host); - - this[kHandler] = handler; - - if (channels.create.hasSubscribers) { - channels.create.publish({ request: this }); - } - } - - onBodySent(chunk) { - if (this[kHandler].onBodySent) { - try { - return this[kHandler].onBodySent(chunk); - } catch (err) { - this.abort(err); - } - } - } - - onRequestSent() { - if (channels.bodySent.hasSubscribers) { - channels.bodySent.publish({ request: this }); - } - - if (this[kHandler].onRequestSent) { - try { - return this[kHandler].onRequestSent(); - } catch (err) { - this.abort(err); - } - } - } - - onConnect(abort) { - assert(!this.aborted); - assert(!this.completed); - - if (this.error) { - abort(this.error); - } else { - this.abort = abort; - return this[kHandler].onConnect(abort); - } - } - - onHeaders(statusCode, headers, resume, statusText) { - assert(!this.aborted); - assert(!this.completed); - - if (channels.headers.hasSubscribers) { - channels.headers.publish({ - request: this, - response: { statusCode, headers, statusText }, - }); - } - - try { - return this[kHandler].onHeaders(statusCode, headers, resume, statusText); - } catch (err) { - this.abort(err); - } - } - - onData(chunk) { - assert(!this.aborted); - assert(!this.completed); - - try { - return this[kHandler].onData(chunk); - } catch (err) { - this.abort(err); - return false; - } - } - - onUpgrade(statusCode, headers, socket) { - assert(!this.aborted); - assert(!this.completed); - - return this[kHandler].onUpgrade(statusCode, headers, socket); - } - - onComplete(trailers) { - this.onFinally(); - - assert(!this.aborted); - - this.completed = true; - if (channels.trailers.hasSubscribers) { - channels.trailers.publish({ request: this, trailers }); - } - - try { - return this[kHandler].onComplete(trailers); - } catch (err) { - // TODO (fix): This might be a bad idea? - this.onError(err); - } - } - - onError(error) { - this.onFinally(); - - if (channels.error.hasSubscribers) { - channels.error.publish({ request: this, error }); - } - - if (this.aborted) { - return; - } - this.aborted = true; - - return this[kHandler].onError(error); - } - - onFinally() { - if (this.errorHandler) { - this.body.off("error", this.errorHandler); - this.errorHandler = null; - } - - if (this.endHandler) { - this.body.off("end", this.endHandler); - this.endHandler = null; - } - } - - // TODO: adjust to support H2 - addHeader(key, value) { - processHeader(this, key, value); - return this; - } - - static [kHTTP1BuildRequest](origin, opts, handler) { - // TODO: Migrate header parsing here, to make Requests - // HTTP agnostic - return new Request(origin, opts, handler); - } - - static [kHTTP2BuildRequest](origin, opts, handler) { - const headers = opts.headers; - opts = { ...opts, headers: null }; - - const request = new Request(origin, opts, handler); - - request.headers = {}; - - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError("headers array must be even"); - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(request, headers[i], headers[i + 1], true); - } - } else if (headers && typeof headers === "object") { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(request, key, headers[key], true); - } - } else if (headers != null) { - throw new InvalidArgumentError("headers must be an object or an array"); - } - - return request; - } - - static [kHTTP2CopyHeaders](raw) { - const rawHeaders = raw.split("\r\n"); - const headers = {}; - - for (const header of rawHeaders) { - const [key, value] = header.split(": "); - - if (value == null || value.length === 0) continue; - - if (headers[key]) headers[key] += `,${value}`; - else headers[key] = value; - } - - return headers; - } - } - - function processHeaderValue(key, val, skipAppend) { - if (val && typeof val === "object") { - throw new InvalidArgumentError(`invalid ${key} header`); - } - - val = val != null ? `${val}` : ""; - - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`); - } - - return skipAppend ? val : `${key}: ${val}\r\n`; - } - - function processHeader(request, key, val, skipAppend = false) { - if (val && typeof val === "object" && !Array.isArray(val)) { - throw new InvalidArgumentError(`invalid ${key} header`); - } else if (val === undefined) { - return; - } - - if (request.host === null && key.length === 4 && key.toLowerCase() === "host") { - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`); - } - // Consumed by Client - request.host = val; - } else if ( - request.contentLength === null && - key.length === 14 && - key.toLowerCase() === "content-length" - ) { - request.contentLength = parseInt(val, 10); - if (!Number.isFinite(request.contentLength)) { - throw new InvalidArgumentError("invalid content-length header"); - } - } else if ( - request.contentType === null && - key.length === 12 && - key.toLowerCase() === "content-type" - ) { - request.contentType = val; - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); - else request.headers += processHeaderValue(key, val); - } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") { - throw new InvalidArgumentError("invalid transfer-encoding header"); - } else if (key.length === 10 && key.toLowerCase() === "connection") { - const value = typeof val === "string" ? val.toLowerCase() : null; - if (value !== "close" && value !== "keep-alive") { - throw new InvalidArgumentError("invalid connection header"); - } else if (value === "close") { - request.reset = true; - } - } else if (key.length === 10 && key.toLowerCase() === "keep-alive") { - throw new InvalidArgumentError("invalid keep-alive header"); - } else if (key.length === 7 && key.toLowerCase() === "upgrade") { - throw new InvalidArgumentError("invalid upgrade header"); - } else if (key.length === 6 && key.toLowerCase() === "expect") { - throw new NotSupportedError("expect header not supported"); - } else if (tokenRegExp.exec(key) === null) { - throw new InvalidArgumentError("invalid header key"); - } else { - if (Array.isArray(val)) { - for (let i = 0; i < val.length; i++) { - if (skipAppend) { - if (request.headers[key]) - request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`; - else request.headers[key] = processHeaderValue(key, val[i], skipAppend); - } else { - request.headers += processHeaderValue(key, val[i]); - } - } - } else { - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); - else request.headers += processHeaderValue(key, val); - } - } - } - - module.exports = Request; - - /***/ - }, - - /***/ 2785: /***/ (module) => { - module.exports = { - kClose: Symbol("close"), - kDestroy: Symbol("destroy"), - kDispatch: Symbol("dispatch"), - kUrl: Symbol("url"), - kWriting: Symbol("writing"), - kResuming: Symbol("resuming"), - kQueue: Symbol("queue"), - kConnect: Symbol("connect"), - kConnecting: Symbol("connecting"), - kHeadersList: Symbol("headers list"), - kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"), - kKeepAliveMaxTimeout: Symbol("max keep alive timeout"), - kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"), - kKeepAliveTimeoutValue: Symbol("keep alive timeout"), - kKeepAlive: Symbol("keep alive"), - kHeadersTimeout: Symbol("headers timeout"), - kBodyTimeout: Symbol("body timeout"), - kServerName: Symbol("server name"), - kLocalAddress: Symbol("local address"), - kHost: Symbol("host"), - kNoRef: Symbol("no ref"), - kBodyUsed: Symbol("used"), - kRunning: Symbol("running"), - kBlocking: Symbol("blocking"), - kPending: Symbol("pending"), - kSize: Symbol("size"), - kBusy: Symbol("busy"), - kQueued: Symbol("queued"), - kFree: Symbol("free"), - kConnected: Symbol("connected"), - kClosed: Symbol("closed"), - kNeedDrain: Symbol("need drain"), - kReset: Symbol("reset"), - kDestroyed: Symbol.for("nodejs.stream.destroyed"), - kMaxHeadersSize: Symbol("max headers size"), - kRunningIdx: Symbol("running index"), - kPendingIdx: Symbol("pending index"), - kError: Symbol("error"), - kClients: Symbol("clients"), - kClient: Symbol("client"), - kParser: Symbol("parser"), - kOnDestroyed: Symbol("destroy callbacks"), - kPipelining: Symbol("pipelining"), - kSocket: Symbol("socket"), - kHostHeader: Symbol("host header"), - kConnector: Symbol("connector"), - kStrictContentLength: Symbol("strict content length"), - kMaxRedirections: Symbol("maxRedirections"), - kMaxRequests: Symbol("maxRequestsPerClient"), - kProxy: Symbol("proxy agent options"), - kCounter: Symbol("socket request counter"), - kInterceptors: Symbol("dispatch interceptors"), - kMaxResponseSize: Symbol("max response size"), - kHTTP2Session: Symbol("http2Session"), - kHTTP2SessionState: Symbol("http2Session state"), - kHTTP2BuildRequest: Symbol("http2 build request"), - kHTTP1BuildRequest: Symbol("http1 build request"), - kHTTP2CopyHeaders: Symbol("http2 copy headers"), - kHTTPConnVersion: Symbol("http connection version"), - kRetryHandlerDefaultRetry: Symbol("retry agent default retry"), - kConstruct: Symbol("constructable"), - }; - - /***/ - }, - - /***/ 3983: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const assert = __nccwpck_require__(9491); - const { kDestroyed, kBodyUsed } = __nccwpck_require__(2785); - const { IncomingMessage } = __nccwpck_require__(3685); - const stream = __nccwpck_require__(2781); - const net = __nccwpck_require__(1808); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const { Blob } = __nccwpck_require__(4300); - const nodeUtil = __nccwpck_require__(3837); - const { stringify } = __nccwpck_require__(3477); - - const [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v)); - - function nop() {} - - function isStream(obj) { - return ( - obj && - typeof obj === "object" && - typeof obj.pipe === "function" && - typeof obj.on === "function" - ); - } - - // based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) - function isBlobLike(object) { - return ( - (Blob && object instanceof Blob) || - (object && - typeof object === "object" && - (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && - /^(Blob|File)$/.test(object[Symbol.toStringTag])) - ); - } - - function buildURL(url, queryParams) { - if (url.includes("?") || url.includes("#")) { - throw new Error('Query params cannot be passed when url already contains "?" or "#".'); - } - - const stringified = stringify(queryParams); - - if (stringified) { - url += "?" + stringified; - } - - return url; - } - - function parseURL(url) { - if (typeof url === "string") { - url = new URL(url); - - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError( - "Invalid URL protocol: the URL must start with `http:` or `https:`.", - ); - } - - return url; - } - - if (!url || typeof url !== "object") { - throw new InvalidArgumentError( - "Invalid URL: The URL argument must be a non-null object.", - ); - } - - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError( - "Invalid URL protocol: the URL must start with `http:` or `https:`.", - ); - } - - if (!(url instanceof URL)) { - if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) { - throw new InvalidArgumentError( - "Invalid URL: port must be a valid integer or a string representation of an integer.", - ); - } - - if (url.path != null && typeof url.path !== "string") { - throw new InvalidArgumentError( - "Invalid URL path: the path must be a string or null/undefined.", - ); - } - - if (url.pathname != null && typeof url.pathname !== "string") { - throw new InvalidArgumentError( - "Invalid URL pathname: the pathname must be a string or null/undefined.", - ); - } - - if (url.hostname != null && typeof url.hostname !== "string") { - throw new InvalidArgumentError( - "Invalid URL hostname: the hostname must be a string or null/undefined.", - ); - } - - if (url.origin != null && typeof url.origin !== "string") { - throw new InvalidArgumentError( - "Invalid URL origin: the origin must be a string or null/undefined.", - ); - } - - const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; - let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; - let path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; - - if (origin.endsWith("/")) { - origin = origin.substring(0, origin.length - 1); - } - - if (path && !path.startsWith("/")) { - path = `/${path}`; - } - // new URL(path, origin) is unsafe when `path` contains an absolute URL - // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: - // If first parameter is a relative URL, second param is required, and will be used as the base URL. - // If first parameter is an absolute URL, a given second param will be ignored. - url = new URL(origin + path); - } - - return url; - } - - function parseOrigin(url) { - url = parseURL(url); - - if (url.pathname !== "/" || url.search || url.hash) { - throw new InvalidArgumentError("invalid url"); - } - - return url; - } - - function getHostname(host) { - if (host[0] === "[") { - const idx = host.indexOf("]"); - - assert(idx !== -1); - return host.substring(1, idx); - } - - const idx = host.indexOf(":"); - if (idx === -1) return host; - - return host.substring(0, idx); - } - - // IP addresses are not valid server names per RFC6066 - // > Currently, the only server names supported are DNS hostnames - function getServerName(host) { - if (!host) { - return null; - } - - assert.strictEqual(typeof host, "string"); - - const servername = getHostname(host); - if (net.isIP(servername)) { - return ""; - } - - return servername; - } - - function deepClone(obj) { - return JSON.parse(JSON.stringify(obj)); - } - - function isAsyncIterable(obj) { - return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); - } - - function isIterable(obj) { - return !!( - obj != null && - (typeof obj[Symbol.iterator] === "function" || - typeof obj[Symbol.asyncIterator] === "function") - ); - } - - function bodyLength(body) { - if (body == null) { - return 0; - } else if (isStream(body)) { - const state = body._readableState; - return state && - state.objectMode === false && - state.ended === true && - Number.isFinite(state.length) - ? state.length - : null; - } else if (isBlobLike(body)) { - return body.size != null ? body.size : null; - } else if (isBuffer(body)) { - return body.byteLength; - } - - return null; - } - - function isDestroyed(stream) { - return !stream || !!(stream.destroyed || stream[kDestroyed]); - } - - function isReadableAborted(stream) { - const state = stream && stream._readableState; - return isDestroyed(stream) && state && !state.endEmitted; - } - - function destroy(stream, err) { - if (stream == null || !isStream(stream) || isDestroyed(stream)) { - return; - } - - if (typeof stream.destroy === "function") { - if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { - // See: https://github.com/nodejs/node/pull/38505/files - stream.socket = null; - } - - stream.destroy(err); - } else if (err) { - process.nextTick( - (stream, err) => { - stream.emit("error", err); - }, - stream, - err, - ); - } - - if (stream.destroyed !== true) { - stream[kDestroyed] = true; - } - } - - const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; - function parseKeepAliveTimeout(val) { - const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); - return m ? parseInt(m[1], 10) * 1000 : null; - } - - function parseHeaders(headers, obj = {}) { - // For H2 support - if (!Array.isArray(headers)) return headers; - - for (let i = 0; i < headers.length; i += 2) { - const key = headers[i].toString().toLowerCase(); - let val = obj[key]; - - if (!val) { - if (Array.isArray(headers[i + 1])) { - obj[key] = headers[i + 1].map((x) => x.toString("utf8")); - } else { - obj[key] = headers[i + 1].toString("utf8"); - } - } else { - if (!Array.isArray(val)) { - val = [val]; - obj[key] = val; - } - val.push(headers[i + 1].toString("utf8")); - } - } - - // See https://github.com/nodejs/node/pull/46528 - if ("content-length" in obj && "content-disposition" in obj) { - obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1"); - } - - return obj; - } - - function parseRawHeaders(headers) { - const ret = []; - let hasContentLength = false; - let contentDispositionIdx = -1; - - for (let n = 0; n < headers.length; n += 2) { - const key = headers[n + 0].toString(); - const val = headers[n + 1].toString("utf8"); - - if ( - key.length === 14 && - (key === "content-length" || key.toLowerCase() === "content-length") - ) { - ret.push(key, val); - hasContentLength = true; - } else if ( - key.length === 19 && - (key === "content-disposition" || key.toLowerCase() === "content-disposition") - ) { - contentDispositionIdx = ret.push(key, val) - 1; - } else { - ret.push(key, val); - } - } - - // See https://github.com/nodejs/node/pull/46528 - if (hasContentLength && contentDispositionIdx !== -1) { - ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1"); - } - - return ret; - } - - function isBuffer(buffer) { - // See, https://github.com/mcollina/undici/pull/319 - return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); - } - - function validateHandler(handler, method, upgrade) { - if (!handler || typeof handler !== "object") { - throw new InvalidArgumentError("handler must be an object"); - } - - if (typeof handler.onConnect !== "function") { - throw new InvalidArgumentError("invalid onConnect method"); - } - - if (typeof handler.onError !== "function") { - throw new InvalidArgumentError("invalid onError method"); - } - - if (typeof handler.onBodySent !== "function" && handler.onBodySent !== undefined) { - throw new InvalidArgumentError("invalid onBodySent method"); - } - - if (upgrade || method === "CONNECT") { - if (typeof handler.onUpgrade !== "function") { - throw new InvalidArgumentError("invalid onUpgrade method"); - } - } else { - if (typeof handler.onHeaders !== "function") { - throw new InvalidArgumentError("invalid onHeaders method"); - } - - if (typeof handler.onData !== "function") { - throw new InvalidArgumentError("invalid onData method"); - } - - if (typeof handler.onComplete !== "function") { - throw new InvalidArgumentError("invalid onComplete method"); - } - } - } - - // A body is disturbed if it has been read from and it cannot - // be re-used without losing state or data. - function isDisturbed(body) { - return !!( - body && - (stream.isDisturbed - ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? - : body[kBodyUsed] || - body.readableDidRead || - (body._readableState && body._readableState.dataEmitted) || - isReadableAborted(body)) - ); - } - - function isErrored(body) { - return !!( - body && - (stream.isErrored - ? stream.isErrored(body) - : /state: 'errored'/.test(nodeUtil.inspect(body))) - ); - } - - function isReadable(body) { - return !!( - body && - (stream.isReadable - ? stream.isReadable(body) - : /state: 'readable'/.test(nodeUtil.inspect(body))) - ); - } - - function getSocketInfo(socket) { - return { - localAddress: socket.localAddress, - localPort: socket.localPort, - remoteAddress: socket.remoteAddress, - remotePort: socket.remotePort, - remoteFamily: socket.remoteFamily, - timeout: socket.timeout, - bytesWritten: socket.bytesWritten, - bytesRead: socket.bytesRead, - }; - } - - async function* convertIterableToBuffer(iterable) { - for await (const chunk of iterable) { - yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); - } - } - - let ReadableStream; - function ReadableStreamFrom(iterable) { - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - if (ReadableStream.from) { - return ReadableStream.from(convertIterableToBuffer(iterable)); - } - - let iterator; - return new ReadableStream( - { - async start() { - iterator = iterable[Symbol.asyncIterator](); - }, - async pull(controller) { - const { done, value } = await iterator.next(); - if (done) { - queueMicrotask(() => { - controller.close(); - }); - } else { - const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); - controller.enqueue(new Uint8Array(buf)); - } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); - }, - }, - 0, - ); - } - - // The chunk should be a FormData instance and contains - // all the required methods. - function isFormDataLike(object) { - return ( - object && - typeof object === "object" && - typeof object.append === "function" && - typeof object.delete === "function" && - typeof object.get === "function" && - typeof object.getAll === "function" && - typeof object.has === "function" && - typeof object.set === "function" && - object[Symbol.toStringTag] === "FormData" - ); - } - - function throwIfAborted(signal) { - if (!signal) { - return; - } - if (typeof signal.throwIfAborted === "function") { - signal.throwIfAborted(); - } else { - if (signal.aborted) { - // DOMException not available < v17.0.0 - const err = new Error("The operation was aborted"); - err.name = "AbortError"; - throw err; - } - } - } - - function addAbortListener(signal, listener) { - if ("addEventListener" in signal) { - signal.addEventListener("abort", listener, { once: true }); - return () => signal.removeEventListener("abort", listener); - } - signal.addListener("abort", listener); - return () => signal.removeListener("abort", listener); - } - - const hasToWellFormed = !!String.prototype.toWellFormed; - - /** - * @param {string} val - */ - function toUSVString(val) { - if (hasToWellFormed) { - return `${val}`.toWellFormed(); - } else if (nodeUtil.toUSVString) { - return nodeUtil.toUSVString(val); - } - - return `${val}`; - } - - // Parsed accordingly to RFC 9110 - // https://www.rfc-editor.org/rfc/rfc9110#field.content-range - function parseRangeHeader(range) { - if (range == null || range === "") return { start: 0, end: null, size: null }; - - const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null; - return m - ? { - start: parseInt(m[1]), - end: m[2] ? parseInt(m[2]) : null, - size: m[3] ? parseInt(m[3]) : null, - } - : null; - } - - const kEnumerableProperty = Object.create(null); - kEnumerableProperty.enumerable = true; - - module.exports = { - kEnumerableProperty, - nop, - isDisturbed, - isErrored, - isReadable, - toUSVString, - isReadableAborted, - isBlobLike, - parseOrigin, - parseURL, - getServerName, - isStream, - isIterable, - isAsyncIterable, - isDestroyed, - parseRawHeaders, - parseHeaders, - parseKeepAliveTimeout, - destroy, - bodyLength, - deepClone, - ReadableStreamFrom, - isBuffer, - validateHandler, - getSocketInfo, - isFormDataLike, - buildURL, - throwIfAborted, - addAbortListener, - parseRangeHeader, - nodeMajor, - nodeMinor, - nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), - safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"], - }; - - /***/ - }, - - /***/ 4839: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Dispatcher = __nccwpck_require__(412); - const { ClientDestroyedError, ClientClosedError, InvalidArgumentError } = - __nccwpck_require__(8045); - const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(2785); - - const kDestroyed = Symbol("destroyed"); - const kClosed = Symbol("closed"); - const kOnDestroyed = Symbol("onDestroyed"); - const kOnClosed = Symbol("onClosed"); - const kInterceptedDispatch = Symbol("Intercepted Dispatch"); - - class DispatcherBase extends Dispatcher { - constructor() { - super(); - - this[kDestroyed] = false; - this[kOnDestroyed] = null; - this[kClosed] = false; - this[kOnClosed] = []; - } - - get destroyed() { - return this[kDestroyed]; - } - - get closed() { - return this[kClosed]; - } - - get interceptors() { - return this[kInterceptors]; - } - - set interceptors(newInterceptors) { - if (newInterceptors) { - for (let i = newInterceptors.length - 1; i >= 0; i--) { - const interceptor = this[kInterceptors][i]; - if (typeof interceptor !== "function") { - throw new InvalidArgumentError("interceptor must be an function"); - } - } - } - - this[kInterceptors] = newInterceptors; - } - - close(callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.close((err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (this[kDestroyed]) { - queueMicrotask(() => callback(new ClientDestroyedError(), null)); - return; - } - - if (this[kClosed]) { - if (this[kOnClosed]) { - this[kOnClosed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return; - } - - this[kClosed] = true; - this[kOnClosed].push(callback); - - const onClosed = () => { - const callbacks = this[kOnClosed]; - this[kOnClosed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - - // Should not error. - this[kClose]() - .then(() => this.destroy()) - .then(() => { - queueMicrotask(onClosed); - }); - } - - destroy(err, callback) { - if (typeof err === "function") { - callback = err; - err = null; - } - - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.destroy(err, (err, data) => { - return err - ? /* istanbul ignore next: should never error */ reject(err) - : resolve(data); - }); - }); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (this[kDestroyed]) { - if (this[kOnDestroyed]) { - this[kOnDestroyed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return; - } - - if (!err) { - err = new ClientDestroyedError(); - } - - this[kDestroyed] = true; - this[kOnDestroyed] = this[kOnDestroyed] || []; - this[kOnDestroyed].push(callback); - - const onDestroyed = () => { - const callbacks = this[kOnDestroyed]; - this[kOnDestroyed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - - // Should not error. - this[kDestroy](err).then(() => { - queueMicrotask(onDestroyed); - }); - } - - [kInterceptedDispatch](opts, handler) { - if (!this[kInterceptors] || this[kInterceptors].length === 0) { - this[kInterceptedDispatch] = this[kDispatch]; - return this[kDispatch](opts, handler); - } - - let dispatch = this[kDispatch].bind(this); - for (let i = this[kInterceptors].length - 1; i >= 0; i--) { - dispatch = this[kInterceptors][i](dispatch); - } - this[kInterceptedDispatch] = dispatch; - return dispatch(opts, handler); - } - - dispatch(opts, handler) { - if (!handler || typeof handler !== "object") { - throw new InvalidArgumentError("handler must be an object"); - } - - try { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("opts must be an object."); - } - - if (this[kDestroyed] || this[kOnDestroyed]) { - throw new ClientDestroyedError(); - } - - if (this[kClosed]) { - throw new ClientClosedError(); - } - - return this[kInterceptedDispatch](opts, handler); - } catch (err) { - if (typeof handler.onError !== "function") { - throw new InvalidArgumentError("invalid onError method"); - } - - handler.onError(err); - - return false; - } - } - } - - module.exports = DispatcherBase; - - /***/ - }, - - /***/ 412: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const EventEmitter = __nccwpck_require__(2361); - - class Dispatcher extends EventEmitter { - dispatch() { - throw new Error("not implemented"); - } - - close() { - throw new Error("not implemented"); - } - - destroy() { - throw new Error("not implemented"); - } - } - - module.exports = Dispatcher; - - /***/ - }, - - /***/ 1472: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Busboy = __nccwpck_require__(727); - const util = __nccwpck_require__(3983); - const { - ReadableStreamFrom, - isBlobLike, - isReadableStreamLike, - readableStreamClose, - createDeferredPromise, - fullyReadBody, - } = __nccwpck_require__(2538); - const { FormData } = __nccwpck_require__(2015); - const { kState } = __nccwpck_require__(5861); - const { webidl } = __nccwpck_require__(1744); - const { DOMException, structuredClone } = __nccwpck_require__(1037); - const { Blob, File: NativeFile } = __nccwpck_require__(4300); - const { kBodyUsed } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { isErrored } = __nccwpck_require__(3983); - const { isUint8Array, isArrayBuffer } = __nccwpck_require__(9830); - const { File: UndiciFile } = __nccwpck_require__(8511); - const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685); - - let ReadableStream = globalThis.ReadableStream; - - /** @type {globalThis['File']} */ - const File = NativeFile ?? UndiciFile; - const textEncoder = new TextEncoder(); - const textDecoder = new TextDecoder(); - - // https://fetch.spec.whatwg.org/#concept-bodyinit-extract - function extractBody(object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - // 1. Let stream be null. - let stream = null; - - // 2. If object is a ReadableStream object, then set stream to object. - if (object instanceof ReadableStream) { - stream = object; - } else if (isBlobLike(object)) { - // 3. Otherwise, if object is a Blob object, set stream to the - // result of running object’s get stream. - stream = object.stream(); - } else { - // 4. Otherwise, set stream to a new ReadableStream object, and set - // up stream. - stream = new ReadableStream({ - async pull(controller) { - controller.enqueue( - typeof source === "string" ? textEncoder.encode(source) : source, - ); - queueMicrotask(() => readableStreamClose(controller)); - }, - start() {}, - type: undefined, - }); - } - - // 5. Assert: stream is a ReadableStream object. - assert(isReadableStreamLike(stream)); - - // 6. Let action be null. - let action = null; - - // 7. Let source be null. - let source = null; - - // 8. Let length be null. - let length = null; - - // 9. Let type be null. - let type = null; - - // 10. Switch on object: - if (typeof object === "string") { - // Set source to the UTF-8 encoding of object. - // Note: setting source to a Uint8Array here breaks some mocking assumptions. - source = object; - - // Set type to `text/plain;charset=UTF-8`. - type = "text/plain;charset=UTF-8"; - } else if (object instanceof URLSearchParams) { - // URLSearchParams - - // spec says to run application/x-www-form-urlencoded on body.list - // this is implemented in Node.js as apart of an URLSearchParams instance toString method - // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 - // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 - - // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. - source = object.toString(); - - // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. - type = "application/x-www-form-urlencoded;charset=UTF-8"; - } else if (isArrayBuffer(object)) { - // BufferSource/ArrayBuffer - - // Set source to a copy of the bytes held by object. - source = new Uint8Array(object.slice()); - } else if (ArrayBuffer.isView(object)) { - // BufferSource/ArrayBufferView - - // Set source to a copy of the bytes held by object. - source = new Uint8Array( - object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength), - ); - } else if (util.isFormDataLike(object)) { - const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart( - 11, - "0", - )}`; - const prefix = `--${boundary}\r\nContent-Disposition: form-data`; - - /*! formdata-polyfill. MIT License. Jimmy Wärting */ - const escape = (str) => - str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); - const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); - - // Set action to this step: run the multipart/form-data - // encoding algorithm, with object’s entry list and UTF-8. - // - This ensures that the body is immutable and can't be changed afterwords - // - That the content-length is calculated in advance. - // - And that all parts are pre-encoded and ready to be sent. - - const blobParts = []; - const rn = new Uint8Array([13, 10]); // '\r\n' - length = 0; - let hasUnknownSizeValue = false; - - for (const [name, value] of object) { - if (typeof value === "string") { - const chunk = textEncoder.encode( - prefix + - `; name="${escape(normalizeLinefeeds(name))}"` + - `\r\n\r\n${normalizeLinefeeds(value)}\r\n`, - ); - blobParts.push(chunk); - length += chunk.byteLength; - } else { - const chunk = textEncoder.encode( - `${prefix}; name="${escape(normalizeLinefeeds(name))}"` + - (value.name ? `; filename="${escape(value.name)}"` : "") + - "\r\n" + - `Content-Type: ${value.type || "application/octet-stream"}\r\n\r\n`, - ); - blobParts.push(chunk, value, rn); - if (typeof value.size === "number") { - length += chunk.byteLength + value.size + rn.byteLength; - } else { - hasUnknownSizeValue = true; - } - } - } - - const chunk = textEncoder.encode(`--${boundary}--`); - blobParts.push(chunk); - length += chunk.byteLength; - if (hasUnknownSizeValue) { - length = null; - } - - // Set source to object. - source = object; - - action = async function* () { - for (const part of blobParts) { - if (part.stream) { - yield* part.stream(); - } else { - yield part; - } - } - }; - - // Set type to `multipart/form-data; boundary=`, - // followed by the multipart/form-data boundary string generated - // by the multipart/form-data encoding algorithm. - type = "multipart/form-data; boundary=" + boundary; - } else if (isBlobLike(object)) { - // Blob - - // Set source to object. - source = object; - - // Set length to object’s size. - length = object.size; - - // If object’s type attribute is not the empty byte sequence, set - // type to its value. - if (object.type) { - type = object.type; - } - } else if (typeof object[Symbol.asyncIterator] === "function") { - // If keepalive is true, then throw a TypeError. - if (keepalive) { - throw new TypeError("keepalive"); - } - - // If object is disturbed or locked, then throw a TypeError. - if (util.isDisturbed(object) || object.locked) { - throw new TypeError("Response body object should not be disturbed or locked"); - } - - stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); - } - - // 11. If source is a byte sequence, then set action to a - // step that returns source and length to source’s length. - if (typeof source === "string" || util.isBuffer(source)) { - length = Buffer.byteLength(source); - } - - // 12. If action is non-null, then run these steps in in parallel: - if (action != null) { - // Run action. - let iterator; - stream = new ReadableStream({ - async start() { - iterator = action(object)[Symbol.asyncIterator](); - }, - async pull(controller) { - const { value, done } = await iterator.next(); - if (done) { - // When running action is done, close stream. - queueMicrotask(() => { - controller.close(); - }); - } else { - // Whenever one or more bytes are available and stream is not errored, - // enqueue a Uint8Array wrapping an ArrayBuffer containing the available - // bytes into stream. - if (!isErrored(stream)) { - controller.enqueue(new Uint8Array(value)); - } - } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); - }, - type: undefined, - }); - } - - // 13. Let body be a body whose stream is stream, source is source, - // and length is length. - const body = { stream, source, length }; - - // 14. Return (body, type). - return [body, type]; - } - - // https://fetch.spec.whatwg.org/#bodyinit-safely-extract - function safelyExtractBody(object, keepalive = false) { - if (!ReadableStream) { - // istanbul ignore next - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - // To safely extract a body and a `Content-Type` value from - // a byte sequence or BodyInit object object, run these steps: - - // 1. If object is a ReadableStream object, then: - if (object instanceof ReadableStream) { - // Assert: object is neither disturbed nor locked. - // istanbul ignore next - assert(!util.isDisturbed(object), "The body has already been consumed."); - // istanbul ignore next - assert(!object.locked, "The stream is locked."); - } - - // 2. Return the results of extracting object. - return extractBody(object, keepalive); - } - - function cloneBody(body) { - // To clone a body body, run these steps: - - // https://fetch.spec.whatwg.org/#concept-body-clone - - // 1. Let « out1, out2 » be the result of teeing body’s stream. - const [out1, out2] = body.stream.tee(); - const out2Clone = structuredClone(out2, { transfer: [out2] }); - // This, for whatever reasons, unrefs out2Clone which allows - // the process to exit by itself. - const [, finalClone] = out2Clone.tee(); - - // 2. Set body’s stream to out1. - body.stream = out1; - - // 3. Return a body whose stream is out2 and other members are copied from body. - return { - stream: finalClone, - length: body.length, - source: body.source, - }; - } - - async function* consumeBody(body) { - if (body) { - if (isUint8Array(body)) { - yield body; - } else { - const stream = body.stream; - - if (util.isDisturbed(stream)) { - throw new TypeError("The body has already been consumed."); - } - - if (stream.locked) { - throw new TypeError("The stream is locked."); - } - - // Compat. - stream[kBodyUsed] = true; - - yield* stream; - } - } - } - - function throwIfAborted(state) { - if (state.aborted) { - throw new DOMException("The operation was aborted.", "AbortError"); - } - } - - function bodyMixinMethods(instance) { - const methods = { - blob() { - // The blob() method steps are to return the result of - // running consume body with this and the following step - // given a byte sequence bytes: return a Blob whose - // contents are bytes and whose type attribute is this’s - // MIME type. - return specConsumeBody( - this, - (bytes) => { - let mimeType = bodyMimeType(this); - - if (mimeType === "failure") { - mimeType = ""; - } else if (mimeType) { - mimeType = serializeAMimeType(mimeType); - } - - // Return a Blob whose contents are bytes and type attribute - // is mimeType. - return new Blob([bytes], { type: mimeType }); - }, - instance, - ); - }, - - arrayBuffer() { - // The arrayBuffer() method steps are to return the result - // of running consume body with this and the following step - // given a byte sequence bytes: return a new ArrayBuffer - // whose contents are bytes. - return specConsumeBody( - this, - (bytes) => { - return new Uint8Array(bytes).buffer; - }, - instance, - ); - }, - - text() { - // The text() method steps are to return the result of running - // consume body with this and UTF-8 decode. - return specConsumeBody(this, utf8DecodeBytes, instance); - }, - - json() { - // The json() method steps are to return the result of running - // consume body with this and parse JSON from bytes. - return specConsumeBody(this, parseJSONFromBytes, instance); - }, - - async formData() { - webidl.brandCheck(this, instance); - - throwIfAborted(this[kState]); - - const contentType = this.headers.get("Content-Type"); - - // If mimeType’s essence is "multipart/form-data", then: - if (/multipart\/form-data/.test(contentType)) { - const headers = {}; - for (const [key, value] of this.headers) headers[key.toLowerCase()] = value; - - const responseFormData = new FormData(); - - let busboy; - - try { - busboy = new Busboy({ - headers, - preservePath: true, - }); - } catch (err) { - throw new DOMException(`${err}`, "AbortError"); - } - - busboy.on("field", (name, value) => { - responseFormData.append(name, value); - }); - busboy.on("file", (name, value, filename, encoding, mimeType) => { - const chunks = []; - - if (encoding === "base64" || encoding.toLowerCase() === "base64") { - let base64chunk = ""; - - value.on("data", (chunk) => { - base64chunk += chunk.toString().replace(/[\r\n]/gm, ""); - - const end = base64chunk.length - (base64chunk.length % 4); - chunks.push(Buffer.from(base64chunk.slice(0, end), "base64")); - - base64chunk = base64chunk.slice(end); - }); - value.on("end", () => { - chunks.push(Buffer.from(base64chunk, "base64")); - responseFormData.append( - name, - new File(chunks, filename, { type: mimeType }), - ); - }); - } else { - value.on("data", (chunk) => { - chunks.push(chunk); - }); - value.on("end", () => { - responseFormData.append( - name, - new File(chunks, filename, { type: mimeType }), - ); - }); - } - }); - - const busboyResolve = new Promise((resolve, reject) => { - busboy.on("finish", resolve); - busboy.on("error", (err) => reject(new TypeError(err))); - }); - - if (this.body !== null) - for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk); - busboy.end(); - await busboyResolve; - - return responseFormData; - } else if (/application\/x-www-form-urlencoded/.test(contentType)) { - // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: - - // 1. Let entries be the result of parsing bytes. - let entries; - try { - let text = ""; - // application/x-www-form-urlencoded parser will keep the BOM. - // https://url.spec.whatwg.org/#concept-urlencoded-parser - // Note that streaming decoder is stateful and cannot be reused - const streamingDecoder = new TextDecoder("utf-8", { ignoreBOM: true }); - - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError("Expected Uint8Array chunk"); - } - text += streamingDecoder.decode(chunk, { stream: true }); - } - text += streamingDecoder.decode(); - entries = new URLSearchParams(text); - } catch (err) { - // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. - // 2. If entries is failure, then throw a TypeError. - throw Object.assign(new TypeError(), { cause: err }); - } - - // 3. Return a new FormData object whose entries are entries. - const formData = new FormData(); - for (const [name, value] of entries) { - formData.append(name, value); - } - return formData; - } else { - // Wait a tick before checking if the request has been aborted. - // Otherwise, a TypeError can be thrown when an AbortError should. - await Promise.resolve(); - - throwIfAborted(this[kState]); - - // Otherwise, throw a TypeError. - throw webidl.errors.exception({ - header: `${instance.name}.formData`, - message: "Could not parse content as FormData.", - }); - } - }, - }; - - return methods; - } - - function mixinBody(prototype) { - Object.assign(prototype.prototype, bodyMixinMethods(prototype)); - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-body-consume-body - * @param {Response|Request} object - * @param {(value: unknown) => unknown} convertBytesToJSValue - * @param {Response|Request} instance - */ - async function specConsumeBody(object, convertBytesToJSValue, instance) { - webidl.brandCheck(object, instance); - - throwIfAborted(object[kState]); - - // 1. If object is unusable, then return a promise rejected - // with a TypeError. - if (bodyUnusable(object[kState].body)) { - throw new TypeError("Body is unusable"); - } - - // 2. Let promise be a new promise. - const promise = createDeferredPromise(); - - // 3. Let errorSteps given error be to reject promise with error. - const errorSteps = (error) => promise.reject(error); - - // 4. Let successSteps given a byte sequence data be to resolve - // promise with the result of running convertBytesToJSValue - // with data. If that threw an exception, then run errorSteps - // with that exception. - const successSteps = (data) => { - try { - promise.resolve(convertBytesToJSValue(data)); - } catch (e) { - errorSteps(e); - } - }; - - // 5. If object’s body is null, then run successSteps with an - // empty byte sequence. - if (object[kState].body == null) { - successSteps(new Uint8Array()); - return promise.promise; - } - - // 6. Otherwise, fully read object’s body given successSteps, - // errorSteps, and object’s relevant global object. - await fullyReadBody(object[kState].body, successSteps, errorSteps); - - // 7. Return promise. - return promise.promise; - } - - // https://fetch.spec.whatwg.org/#body-unusable - function bodyUnusable(body) { - // An object including the Body interface mixin is - // said to be unusable if its body is non-null and - // its body’s stream is disturbed or locked. - return body != null && (body.stream.locked || util.isDisturbed(body.stream)); - } - - /** - * @see https://encoding.spec.whatwg.org/#utf-8-decode - * @param {Buffer} buffer - */ - function utf8DecodeBytes(buffer) { - if (buffer.length === 0) { - return ""; - } - - // 1. Let buffer be the result of peeking three bytes from - // ioQueue, converted to a byte sequence. - - // 2. If buffer is 0xEF 0xBB 0xBF, then read three - // bytes from ioQueue. (Do nothing with those bytes.) - if (buffer[0] === 0xef && buffer[1] === 0xbb && buffer[2] === 0xbf) { - buffer = buffer.subarray(3); - } - - // 3. Process a queue with an instance of UTF-8’s - // decoder, ioQueue, output, and "replacement". - const output = textDecoder.decode(buffer); - - // 4. Return output. - return output; - } - - /** - * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value - * @param {Uint8Array} bytes - */ - function parseJSONFromBytes(bytes) { - return JSON.parse(utf8DecodeBytes(bytes)); - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-body-mime-type - * @param {import('./response').Response|import('./request').Request} object - */ - function bodyMimeType(object) { - const { headersList } = object[kState]; - const contentType = headersList.get("content-type"); - - if (contentType === null) { - return "failure"; - } - - return parseMIMEType(contentType); - } - - module.exports = { - extractBody, - safelyExtractBody, - cloneBody, - mixinBody, - }; - - /***/ - }, - - /***/ 1037: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(1267); - - const corsSafeListedMethods = ["GET", "HEAD", "POST"]; - const corsSafeListedMethodsSet = new Set(corsSafeListedMethods); - - const nullBodyStatus = [101, 204, 205, 304]; - - const redirectStatus = [301, 302, 303, 307, 308]; - const redirectStatusSet = new Set(redirectStatus); - - // https://fetch.spec.whatwg.org/#block-bad-port - const badPorts = [ - "1", - "7", - "9", - "11", - "13", - "15", - "17", - "19", - "20", - "21", - "22", - "23", - "25", - "37", - "42", - "43", - "53", - "69", - "77", - "79", - "87", - "95", - "101", - "102", - "103", - "104", - "109", - "110", - "111", - "113", - "115", - "117", - "119", - "123", - "135", - "137", - "139", - "143", - "161", - "179", - "389", - "427", - "465", - "512", - "513", - "514", - "515", - "526", - "530", - "531", - "532", - "540", - "548", - "554", - "556", - "563", - "587", - "601", - "636", - "989", - "990", - "993", - "995", - "1719", - "1720", - "1723", - "2049", - "3659", - "4045", - "5060", - "5061", - "6000", - "6566", - "6665", - "6666", - "6667", - "6668", - "6669", - "6697", - "10080", - ]; - - const badPortsSet = new Set(badPorts); - - // https://w3c.github.io/webappsec-referrer-policy/#referrer-policies - const referrerPolicy = [ - "", - "no-referrer", - "no-referrer-when-downgrade", - "same-origin", - "origin", - "strict-origin", - "origin-when-cross-origin", - "strict-origin-when-cross-origin", - "unsafe-url", - ]; - const referrerPolicySet = new Set(referrerPolicy); - - const requestRedirect = ["follow", "manual", "error"]; - - const safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"]; - const safeMethodsSet = new Set(safeMethods); - - const requestMode = ["navigate", "same-origin", "no-cors", "cors"]; - - const requestCredentials = ["omit", "same-origin", "include"]; - - const requestCache = [ - "default", - "no-store", - "reload", - "no-cache", - "force-cache", - "only-if-cached", - ]; - - // https://fetch.spec.whatwg.org/#request-body-header-name - const requestBodyHeader = [ - "content-encoding", - "content-language", - "content-location", - "content-type", - // See https://github.com/nodejs/undici/issues/2021 - // 'Content-Length' is a forbidden header name, which is typically - // removed in the Headers implementation. However, undici doesn't - // filter out headers, so we add it here. - "content-length", - ]; - - // https://fetch.spec.whatwg.org/#enumdef-requestduplex - const requestDuplex = ["half"]; - - // http://fetch.spec.whatwg.org/#forbidden-method - const forbiddenMethods = ["CONNECT", "TRACE", "TRACK"]; - const forbiddenMethodsSet = new Set(forbiddenMethods); - - const subresource = [ - "audio", - "audioworklet", - "font", - "image", - "manifest", - "paintworklet", - "script", - "style", - "track", - "video", - "xslt", - "", - ]; - const subresourceSet = new Set(subresource); - - /** @type {globalThis['DOMException']} */ - const DOMException = - globalThis.DOMException ?? - (() => { - // DOMException was only made a global in Node v17.0.0, - // but fetch supports >= v16.8. - try { - atob("~"); - } catch (err) { - return Object.getPrototypeOf(err).constructor; - } - })(); - - let channel; - - /** @type {globalThis['structuredClone']} */ - const structuredClone = - globalThis.structuredClone ?? - // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js - // structuredClone was added in v17.0.0, but fetch supports v16.8 - function structuredClone(value, options = undefined) { - if (arguments.length === 0) { - throw new TypeError("missing argument"); - } - - if (!channel) { - channel = new MessageChannel(); - } - channel.port1.unref(); - channel.port2.unref(); - channel.port1.postMessage(value, options?.transfer); - return receiveMessageOnPort(channel.port2).message; - }; - - module.exports = { - DOMException, - structuredClone, - subresource, - forbiddenMethods, - requestBodyHeader, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - redirectStatus, - corsSafeListedMethods, - nullBodyStatus, - safeMethods, - badPorts, - requestDuplex, - subresourceSet, - badPortsSet, - redirectStatusSet, - corsSafeListedMethodsSet, - safeMethodsSet, - forbiddenMethodsSet, - referrerPolicySet, - }; - - /***/ - }, - - /***/ 685: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const assert = __nccwpck_require__(9491); - const { atob } = __nccwpck_require__(4300); - const { isomorphicDecode } = __nccwpck_require__(2538); - - const encoder = new TextEncoder(); - - /** - * @see https://mimesniff.spec.whatwg.org/#http-token-code-point - */ - const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; - const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; // eslint-disable-line - /** - * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point - */ - const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; // eslint-disable-line - - // https://fetch.spec.whatwg.org/#data-url-processor - /** @param {URL} dataURL */ - function dataURLProcessor(dataURL) { - // 1. Assert: dataURL’s scheme is "data". - assert(dataURL.protocol === "data:"); - - // 2. Let input be the result of running the URL - // serializer on dataURL with exclude fragment - // set to true. - let input = URLSerializer(dataURL, true); - - // 3. Remove the leading "data:" string from input. - input = input.slice(5); - - // 4. Let position point at the start of input. - const position = { position: 0 }; - - // 5. Let mimeType be the result of collecting a - // sequence of code points that are not equal - // to U+002C (,), given position. - let mimeType = collectASequenceOfCodePointsFast(",", input, position); - - // 6. Strip leading and trailing ASCII whitespace - // from mimeType. - // Undici implementation note: we need to store the - // length because if the mimetype has spaces removed, - // the wrong amount will be sliced from the input in - // step #9 - const mimeTypeLength = mimeType.length; - mimeType = removeASCIIWhitespace(mimeType, true, true); - - // 7. If position is past the end of input, then - // return failure - if (position.position >= input.length) { - return "failure"; - } - - // 8. Advance position by 1. - position.position++; - - // 9. Let encodedBody be the remainder of input. - const encodedBody = input.slice(mimeTypeLength + 1); - - // 10. Let body be the percent-decoding of encodedBody. - let body = stringPercentDecode(encodedBody); - - // 11. If mimeType ends with U+003B (;), followed by - // zero or more U+0020 SPACE, followed by an ASCII - // case-insensitive match for "base64", then: - if (/;(\u0020){0,}base64$/i.test(mimeType)) { - // 1. Let stringBody be the isomorphic decode of body. - const stringBody = isomorphicDecode(body); - - // 2. Set body to the forgiving-base64 decode of - // stringBody. - body = forgivingBase64(stringBody); - - // 3. If body is failure, then return failure. - if (body === "failure") { - return "failure"; - } - - // 4. Remove the last 6 code points from mimeType. - mimeType = mimeType.slice(0, -6); - - // 5. Remove trailing U+0020 SPACE code points from mimeType, - // if any. - mimeType = mimeType.replace(/(\u0020)+$/, ""); - - // 6. Remove the last U+003B (;) code point from mimeType. - mimeType = mimeType.slice(0, -1); - } - - // 12. If mimeType starts with U+003B (;), then prepend - // "text/plain" to mimeType. - if (mimeType.startsWith(";")) { - mimeType = "text/plain" + mimeType; - } - - // 13. Let mimeTypeRecord be the result of parsing - // mimeType. - let mimeTypeRecord = parseMIMEType(mimeType); - - // 14. If mimeTypeRecord is failure, then set - // mimeTypeRecord to text/plain;charset=US-ASCII. - if (mimeTypeRecord === "failure") { - mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII"); - } - - // 15. Return a new data: URL struct whose MIME - // type is mimeTypeRecord and body is body. - // https://fetch.spec.whatwg.org/#data-url-struct - return { mimeType: mimeTypeRecord, body }; - } - - // https://url.spec.whatwg.org/#concept-url-serializer - /** - * @param {URL} url - * @param {boolean} excludeFragment - */ - function URLSerializer(url, excludeFragment = false) { - if (!excludeFragment) { - return url.href; - } - - const href = url.href; - const hashLength = url.hash.length; - - return hashLength === 0 ? href : href.substring(0, href.length - hashLength); - } - - // https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points - /** - * @param {(char: string) => boolean} condition - * @param {string} input - * @param {{ position: number }} position - */ - function collectASequenceOfCodePoints(condition, input, position) { - // 1. Let result be the empty string. - let result = ""; - - // 2. While position doesn’t point past the end of input and the - // code point at position within input meets the condition condition: - while (position.position < input.length && condition(input[position.position])) { - // 1. Append that code point to the end of result. - result += input[position.position]; - - // 2. Advance position by 1. - position.position++; - } - - // 3. Return result. - return result; - } - - /** - * A faster collectASequenceOfCodePoints that only works when comparing a single character. - * @param {string} char - * @param {string} input - * @param {{ position: number }} position - */ - function collectASequenceOfCodePointsFast(char, input, position) { - const idx = input.indexOf(char, position.position); - const start = position.position; - - if (idx === -1) { - position.position = input.length; - return input.slice(start); - } - - position.position = idx; - return input.slice(start, position.position); - } - - // https://url.spec.whatwg.org/#string-percent-decode - /** @param {string} input */ - function stringPercentDecode(input) { - // 1. Let bytes be the UTF-8 encoding of input. - const bytes = encoder.encode(input); - - // 2. Return the percent-decoding of bytes. - return percentDecode(bytes); - } - - // https://url.spec.whatwg.org/#percent-decode - /** @param {Uint8Array} input */ - function percentDecode(input) { - // 1. Let output be an empty byte sequence. - /** @type {number[]} */ - const output = []; - - // 2. For each byte byte in input: - for (let i = 0; i < input.length; i++) { - const byte = input[i]; - - // 1. If byte is not 0x25 (%), then append byte to output. - if (byte !== 0x25) { - output.push(byte); - - // 2. Otherwise, if byte is 0x25 (%) and the next two bytes - // after byte in input are not in the ranges - // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), - // and 0x61 (a) to 0x66 (f), all inclusive, append byte - // to output. - } else if ( - byte === 0x25 && - !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) - ) { - output.push(0x25); - - // 3. Otherwise: - } else { - // 1. Let bytePoint be the two bytes after byte in input, - // decoded, and then interpreted as hexadecimal number. - const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); - const bytePoint = Number.parseInt(nextTwoBytes, 16); - - // 2. Append a byte whose value is bytePoint to output. - output.push(bytePoint); - - // 3. Skip the next two bytes in input. - i += 2; - } - } - - // 3. Return output. - return Uint8Array.from(output); - } - - // https://mimesniff.spec.whatwg.org/#parse-a-mime-type - /** @param {string} input */ - function parseMIMEType(input) { - // 1. Remove any leading and trailing HTTP whitespace - // from input. - input = removeHTTPWhitespace(input, true, true); - - // 2. Let position be a position variable for input, - // initially pointing at the start of input. - const position = { position: 0 }; - - // 3. Let type be the result of collecting a sequence - // of code points that are not U+002F (/) from - // input, given position. - const type = collectASequenceOfCodePointsFast("/", input, position); - - // 4. If type is the empty string or does not solely - // contain HTTP token code points, then return failure. - // https://mimesniff.spec.whatwg.org/#http-token-code-point - if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { - return "failure"; - } - - // 5. If position is past the end of input, then return - // failure - if (position.position > input.length) { - return "failure"; - } - - // 6. Advance position by 1. (This skips past U+002F (/).) - position.position++; - - // 7. Let subtype be the result of collecting a sequence of - // code points that are not U+003B (;) from input, given - // position. - let subtype = collectASequenceOfCodePointsFast(";", input, position); - - // 8. Remove any trailing HTTP whitespace from subtype. - subtype = removeHTTPWhitespace(subtype, false, true); - - // 9. If subtype is the empty string or does not solely - // contain HTTP token code points, then return failure. - if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { - return "failure"; - } - - const typeLowercase = type.toLowerCase(); - const subtypeLowercase = subtype.toLowerCase(); - - // 10. Let mimeType be a new MIME type record whose type - // is type, in ASCII lowercase, and subtype is subtype, - // in ASCII lowercase. - // https://mimesniff.spec.whatwg.org/#mime-type - const mimeType = { - type: typeLowercase, - subtype: subtypeLowercase, - /** @type {Map} */ - parameters: new Map(), - // https://mimesniff.spec.whatwg.org/#mime-type-essence - essence: `${typeLowercase}/${subtypeLowercase}`, - }; - - // 11. While position is not past the end of input: - while (position.position < input.length) { - // 1. Advance position by 1. (This skips past U+003B (;).) - position.position++; - - // 2. Collect a sequence of code points that are HTTP - // whitespace from input given position. - collectASequenceOfCodePoints( - // https://fetch.spec.whatwg.org/#http-whitespace - (char) => HTTP_WHITESPACE_REGEX.test(char), - input, - position, - ); - - // 3. Let parameterName be the result of collecting a - // sequence of code points that are not U+003B (;) - // or U+003D (=) from input, given position. - let parameterName = collectASequenceOfCodePoints( - (char) => char !== ";" && char !== "=", - input, - position, - ); - - // 4. Set parameterName to parameterName, in ASCII - // lowercase. - parameterName = parameterName.toLowerCase(); - - // 5. If position is not past the end of input, then: - if (position.position < input.length) { - // 1. If the code point at position within input is - // U+003B (;), then continue. - if (input[position.position] === ";") { - continue; - } - - // 2. Advance position by 1. (This skips past U+003D (=).) - position.position++; - } - - // 6. If position is past the end of input, then break. - if (position.position > input.length) { - break; - } - - // 7. Let parameterValue be null. - let parameterValue = null; - - // 8. If the code point at position within input is - // U+0022 ("), then: - if (input[position.position] === '"') { - // 1. Set parameterValue to the result of collecting - // an HTTP quoted string from input, given position - // and the extract-value flag. - parameterValue = collectAnHTTPQuotedString(input, position, true); - - // 2. Collect a sequence of code points that are not - // U+003B (;) from input, given position. - collectASequenceOfCodePointsFast(";", input, position); - - // 9. Otherwise: - } else { - // 1. Set parameterValue to the result of collecting - // a sequence of code points that are not U+003B (;) - // from input, given position. - parameterValue = collectASequenceOfCodePointsFast(";", input, position); - - // 2. Remove any trailing HTTP whitespace from parameterValue. - parameterValue = removeHTTPWhitespace(parameterValue, false, true); - - // 3. If parameterValue is the empty string, then continue. - if (parameterValue.length === 0) { - continue; - } - } - - // 10. If all of the following are true - // - parameterName is not the empty string - // - parameterName solely contains HTTP token code points - // - parameterValue solely contains HTTP quoted-string token code points - // - mimeType’s parameters[parameterName] does not exist - // then set mimeType’s parameters[parameterName] to parameterValue. - if ( - parameterName.length !== 0 && - HTTP_TOKEN_CODEPOINTS.test(parameterName) && - (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && - !mimeType.parameters.has(parameterName) - ) { - mimeType.parameters.set(parameterName, parameterValue); - } - } - - // 12. Return mimeType. - return mimeType; - } - - // https://infra.spec.whatwg.org/#forgiving-base64-decode - /** @param {string} data */ - function forgivingBase64(data) { - // 1. Remove all ASCII whitespace from data. - data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ""); // eslint-disable-line - - // 2. If data’s code point length divides by 4 leaving - // no remainder, then: - if (data.length % 4 === 0) { - // 1. If data ends with one or two U+003D (=) code points, - // then remove them from data. - data = data.replace(/=?=$/, ""); - } - - // 3. If data’s code point length divides by 4 leaving - // a remainder of 1, then return failure. - if (data.length % 4 === 1) { - return "failure"; - } - - // 4. If data contains a code point that is not one of - // U+002B (+) - // U+002F (/) - // ASCII alphanumeric - // then return failure. - if (/[^+/0-9A-Za-z]/.test(data)) { - return "failure"; - } - - const binary = atob(data); - const bytes = new Uint8Array(binary.length); - - for (let byte = 0; byte < binary.length; byte++) { - bytes[byte] = binary.charCodeAt(byte); - } - - return bytes; - } - - // https://fetch.spec.whatwg.org/#collect-an-http-quoted-string - // tests: https://fetch.spec.whatwg.org/#example-http-quoted-string - /** - * @param {string} input - * @param {{ position: number }} position - * @param {boolean?} extractValue - */ - function collectAnHTTPQuotedString(input, position, extractValue) { - // 1. Let positionStart be position. - const positionStart = position.position; - - // 2. Let value be the empty string. - let value = ""; - - // 3. Assert: the code point at position within input - // is U+0022 ("). - assert(input[position.position] === '"'); - - // 4. Advance position by 1. - position.position++; - - // 5. While true: - while (true) { - // 1. Append the result of collecting a sequence of code points - // that are not U+0022 (") or U+005C (\) from input, given - // position, to value. - value += collectASequenceOfCodePoints( - (char) => char !== '"' && char !== "\\", - input, - position, - ); - - // 2. If position is past the end of input, then break. - if (position.position >= input.length) { - break; - } - - // 3. Let quoteOrBackslash be the code point at position within - // input. - const quoteOrBackslash = input[position.position]; - - // 4. Advance position by 1. - position.position++; - - // 5. If quoteOrBackslash is U+005C (\), then: - if (quoteOrBackslash === "\\") { - // 1. If position is past the end of input, then append - // U+005C (\) to value and break. - if (position.position >= input.length) { - value += "\\"; - break; - } - - // 2. Append the code point at position within input to value. - value += input[position.position]; - - // 3. Advance position by 1. - position.position++; - - // 6. Otherwise: - } else { - // 1. Assert: quoteOrBackslash is U+0022 ("). - assert(quoteOrBackslash === '"'); - - // 2. Break. - break; - } - } - - // 6. If the extract-value flag is set, then return value. - if (extractValue) { - return value; - } - - // 7. Return the code points from positionStart to position, - // inclusive, within input. - return input.slice(positionStart, position.position); - } - - /** - * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type - */ - function serializeAMimeType(mimeType) { - assert(mimeType !== "failure"); - const { parameters, essence } = mimeType; - - // 1. Let serialization be the concatenation of mimeType’s - // type, U+002F (/), and mimeType’s subtype. - let serialization = essence; - - // 2. For each name → value of mimeType’s parameters: - for (let [name, value] of parameters.entries()) { - // 1. Append U+003B (;) to serialization. - serialization += ";"; - - // 2. Append name to serialization. - serialization += name; - - // 3. Append U+003D (=) to serialization. - serialization += "="; - - // 4. If value does not solely contain HTTP token code - // points or value is the empty string, then: - if (!HTTP_TOKEN_CODEPOINTS.test(value)) { - // 1. Precede each occurence of U+0022 (") or - // U+005C (\) in value with U+005C (\). - value = value.replace(/(\\|")/g, "\\$1"); - - // 2. Prepend U+0022 (") to value. - value = '"' + value; - - // 3. Append U+0022 (") to value. - value += '"'; - } - - // 5. Append value to serialization. - serialization += value; - } - - // 3. Return serialization. - return serialization; - } - - /** - * @see https://fetch.spec.whatwg.org/#http-whitespace - * @param {string} char - */ - function isHTTPWhiteSpace(char) { - return char === "\r" || char === "\n" || char === "\t" || char === " "; - } - - /** - * @see https://fetch.spec.whatwg.org/#http-whitespace - * @param {string} str - */ - function removeHTTPWhitespace(str, leading = true, trailing = true) { - let lead = 0; - let trail = str.length - 1; - - if (leading) { - for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); - } - - if (trailing) { - for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); - } - - return str.slice(lead, trail + 1); - } - - /** - * @see https://infra.spec.whatwg.org/#ascii-whitespace - * @param {string} char - */ - function isASCIIWhitespace(char) { - return char === "\r" || char === "\n" || char === "\t" || char === "\f" || char === " "; - } - - /** - * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace - */ - function removeASCIIWhitespace(str, leading = true, trailing = true) { - let lead = 0; - let trail = str.length - 1; - - if (leading) { - for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); - } - - if (trailing) { - for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); - } - - return str.slice(lead, trail + 1); - } - - module.exports = { - dataURLProcessor, - URLSerializer, - collectASequenceOfCodePoints, - collectASequenceOfCodePointsFast, - stringPercentDecode, - parseMIMEType, - collectAnHTTPQuotedString, - serializeAMimeType, - }; - - /***/ - }, - - /***/ 8511: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Blob, File: NativeFile } = __nccwpck_require__(4300); - const { types } = __nccwpck_require__(3837); - const { kState } = __nccwpck_require__(5861); - const { isBlobLike } = __nccwpck_require__(2538); - const { webidl } = __nccwpck_require__(1744); - const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685); - const { kEnumerableProperty } = __nccwpck_require__(3983); - const encoder = new TextEncoder(); - - class File extends Blob { - constructor(fileBits, fileName, options = {}) { - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" }); - - fileBits = webidl.converters["sequence"](fileBits); - fileName = webidl.converters.USVString(fileName); - options = webidl.converters.FilePropertyBag(options); - - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. - // Note: Blob handles this for us - - // 2. Let n be the fileName argument to the constructor. - const n = fileName; - - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: - - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // 2. Convert every character in t to ASCII lowercase. - let t = options.type; - let d; - - // eslint-disable-next-line no-labels - substep: { - if (t) { - t = parseMIMEType(t); - - if (t === "failure") { - t = ""; - // eslint-disable-next-line no-labels - break substep; - } - - t = serializeAMimeType(t).toLowerCase(); - } - - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - d = options.lastModified; - } - - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. - - super(processBlobParts(fileBits, options), { type: t }); - this[kState] = { - name: n, - lastModified: d, - type: t, - }; - } - - get name() { - webidl.brandCheck(this, File); - - return this[kState].name; - } - - get lastModified() { - webidl.brandCheck(this, File); - - return this[kState].lastModified; - } - - get type() { - webidl.brandCheck(this, File); - - return this[kState].type; - } - } - - class FileLike { - constructor(blobLike, fileName, options = {}) { - // TODO: argument idl type check - - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. - - // 2. Let n be the fileName argument to the constructor. - const n = fileName; - - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: - - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // TODO - const t = options.type; - - // 2. Convert every character in t to ASCII lowercase. - // TODO - - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - const d = options.lastModified ?? Date.now(); - - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. - - this[kState] = { - blobLike, - name: n, - type: t, - lastModified: d, - }; - } - - stream(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.stream(...args); - } - - arrayBuffer(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.arrayBuffer(...args); - } - - slice(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.slice(...args); - } - - text(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.text(...args); - } - - get size() { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.size; - } - - get type() { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.type; - } - - get name() { - webidl.brandCheck(this, FileLike); - - return this[kState].name; - } - - get lastModified() { - webidl.brandCheck(this, FileLike); - - return this[kState].lastModified; - } - - get [Symbol.toStringTag]() { - return "File"; - } - } - - Object.defineProperties(File.prototype, { - [Symbol.toStringTag]: { - value: "File", - configurable: true, - }, - name: kEnumerableProperty, - lastModified: kEnumerableProperty, - }); - - webidl.converters.Blob = webidl.interfaceConverter(Blob); - - webidl.converters.BlobPart = function (V, opts) { - if (webidl.util.Type(V) === "Object") { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); - } - - if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { - return webidl.converters.BufferSource(V, opts); - } - } - - return webidl.converters.USVString(V, opts); - }; - - webidl.converters["sequence"] = webidl.sequenceConverter(webidl.converters.BlobPart); - - // https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag - webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ - { - key: "lastModified", - converter: webidl.converters["long long"], - get defaultValue() { - return Date.now(); - }, - }, - { - key: "type", - converter: webidl.converters.DOMString, - defaultValue: "", - }, - { - key: "endings", - converter: (value) => { - value = webidl.converters.DOMString(value); - value = value.toLowerCase(); - - if (value !== "native") { - value = "transparent"; - } - - return value; - }, - defaultValue: "transparent", - }, - ]); - - /** - * @see https://www.w3.org/TR/FileAPI/#process-blob-parts - * @param {(NodeJS.TypedArray|Blob|string)[]} parts - * @param {{ type: string, endings: string }} options - */ - function processBlobParts(parts, options) { - // 1. Let bytes be an empty sequence of bytes. - /** @type {NodeJS.TypedArray[]} */ - const bytes = []; - - // 2. For each element in parts: - for (const element of parts) { - // 1. If element is a USVString, run the following substeps: - if (typeof element === "string") { - // 1. Let s be element. - let s = element; - - // 2. If the endings member of options is "native", set s - // to the result of converting line endings to native - // of element. - if (options.endings === "native") { - s = convertLineEndingsNative(s); - } - - // 3. Append the result of UTF-8 encoding s to bytes. - bytes.push(encoder.encode(s)); - } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { - // 2. If element is a BufferSource, get a copy of the - // bytes held by the buffer source, and append those - // bytes to bytes. - if (!element.buffer) { - // ArrayBuffer - bytes.push(new Uint8Array(element)); - } else { - bytes.push( - new Uint8Array(element.buffer, element.byteOffset, element.byteLength), - ); - } - } else if (isBlobLike(element)) { - // 3. If element is a Blob, append the bytes it represents - // to bytes. - bytes.push(element); - } - } - - // 3. Return bytes. - return bytes; - } - - /** - * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native - * @param {string} s - */ - function convertLineEndingsNative(s) { - // 1. Let native line ending be be the code point U+000A LF. - let nativeLineEnding = "\n"; - - // 2. If the underlying platform’s conventions are to - // represent newlines as a carriage return and line feed - // sequence, set native line ending to the code point - // U+000D CR followed by the code point U+000A LF. - if (process.platform === "win32") { - nativeLineEnding = "\r\n"; - } - - return s.replace(/\r?\n/g, nativeLineEnding); - } - - // If this function is moved to ./util.js, some tools (such as - // rollup) will warn about circular dependencies. See: - // https://github.com/nodejs/undici/issues/1629 - function isFileLike(object) { - return ( - (NativeFile && object instanceof NativeFile) || - object instanceof File || - (object && - (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && - object[Symbol.toStringTag] === "File") - ); - } - - module.exports = { File, FileLike, isFileLike }; - - /***/ - }, - - /***/ 2015: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(2538); - const { kState } = __nccwpck_require__(5861); - const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(8511); - const { webidl } = __nccwpck_require__(1744); - const { Blob, File: NativeFile } = __nccwpck_require__(4300); - - /** @type {globalThis['File']} */ - const File = NativeFile ?? UndiciFile; - - // https://xhr.spec.whatwg.org/#formdata - class FormData { - constructor(form) { - if (form !== undefined) { - throw webidl.errors.conversionFailed({ - prefix: "FormData constructor", - argument: "Argument 1", - types: ["undefined"], - }); - } - - this[kState] = []; - } - - append(name, value, filename = undefined) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" }); - - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'", - ); - } - - // 1. Let value be value if given; otherwise blobValue. - - name = webidl.converters.USVString(name); - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value); - filename = arguments.length === 3 ? webidl.converters.USVString(filename) : undefined; - - // 2. Let entry be the result of creating an entry with - // name, value, and filename if given. - const entry = makeEntry(name, value, filename); - - // 3. Append entry to this’s entry list. - this[kState].push(entry); - } - - delete(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" }); - - name = webidl.converters.USVString(name); - - // The delete(name) method steps are to remove all entries whose name - // is name from this’s entry list. - this[kState] = this[kState].filter((entry) => entry.name !== name); - } - - get(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" }); - - name = webidl.converters.USVString(name); - - // 1. If there is no entry whose name is name in this’s entry list, - // then return null. - const idx = this[kState].findIndex((entry) => entry.name === name); - if (idx === -1) { - return null; - } - - // 2. Return the value of the first entry whose name is name from - // this’s entry list. - return this[kState][idx].value; - } - - getAll(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" }); - - name = webidl.converters.USVString(name); - - // 1. If there is no entry whose name is name in this’s entry list, - // then return the empty list. - // 2. Return the values of all entries whose name is name, in order, - // from this’s entry list. - return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); - } - - has(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" }); - - name = webidl.converters.USVString(name); - - // The has(name) method steps are to return true if there is an entry - // whose name is name in this’s entry list; otherwise false. - return this[kState].findIndex((entry) => entry.name === name) !== -1; - } - - set(name, value, filename = undefined) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" }); - - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'", - ); - } - - // The set(name, value) and set(name, blobValue, filename) method steps - // are: - - // 1. Let value be value if given; otherwise blobValue. - - name = webidl.converters.USVString(name); - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value); - filename = arguments.length === 3 ? toUSVString(filename) : undefined; - - // 2. Let entry be the result of creating an entry with name, value, and - // filename if given. - const entry = makeEntry(name, value, filename); - - // 3. If there are entries in this’s entry list whose name is name, then - // replace the first such entry with entry and remove the others. - const idx = this[kState].findIndex((entry) => entry.name === name); - if (idx !== -1) { - this[kState] = [ - ...this[kState].slice(0, idx), - entry, - ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name), - ]; - } else { - // 4. Otherwise, append entry to this’s entry list. - this[kState].push(entry); - } - } - - entries() { - webidl.brandCheck(this, FormData); - - return makeIterator( - () => this[kState].map((pair) => [pair.name, pair.value]), - "FormData", - "key+value", - ); - } - - keys() { - webidl.brandCheck(this, FormData); - - return makeIterator( - () => this[kState].map((pair) => [pair.name, pair.value]), - "FormData", - "key", - ); - } - - values() { - webidl.brandCheck(this, FormData); - - return makeIterator( - () => this[kState].map((pair) => [pair.name, pair.value]), - "FormData", - "value", - ); - } - - /** - * @param {(value: string, key: string, self: FormData) => void} callbackFn - * @param {unknown} thisArg - */ - forEach(callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.forEach" }); - - if (typeof callbackFn !== "function") { - throw new TypeError( - "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.", - ); - } - - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); - } - } - } - - FormData.prototype[Symbol.iterator] = FormData.prototype.entries; - - Object.defineProperties(FormData.prototype, { - [Symbol.toStringTag]: { - value: "FormData", - configurable: true, - }, - }); - - /** - * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry - * @param {string} name - * @param {string|Blob} value - * @param {?string} filename - * @returns - */ - function makeEntry(name, value, filename) { - // 1. Set name to the result of converting name into a scalar value string. - // "To convert a string into a scalar value string, replace any surrogates - // with U+FFFD." - // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end - name = Buffer.from(name).toString("utf8"); - - // 2. If value is a string, then set value to the result of converting - // value into a scalar value string. - if (typeof value === "string") { - value = Buffer.from(value).toString("utf8"); - } else { - // 3. Otherwise: - - // 1. If value is not a File object, then set value to a new File object, - // representing the same bytes, whose name attribute value is "blob" - if (!isFileLike(value)) { - value = - value instanceof Blob - ? new File([value], "blob", { type: value.type }) - : new FileLike(value, "blob", { type: value.type }); - } - - // 2. If filename is given, then set value to a new File object, - // representing the same bytes, whose name attribute is filename. - if (filename !== undefined) { - /** @type {FilePropertyBag} */ - const options = { - type: value.type, - lastModified: value.lastModified, - }; - - value = - (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile - ? new File([value], filename, options) - : new FileLike(value, filename, options); - } - } - - // 4. Return an entry whose name is name and whose value is value. - return { name, value }; - } - - module.exports = { FormData }; - - /***/ - }, - - /***/ 1246: /***/ (module) => { - "use strict"; - - // In case of breaking changes, increase the version - // number to avoid conflicts. - const globalOrigin = Symbol.for("undici.globalOrigin.1"); - - function getGlobalOrigin() { - return globalThis[globalOrigin]; - } - - function setGlobalOrigin(newOrigin) { - if (newOrigin === undefined) { - Object.defineProperty(globalThis, globalOrigin, { - value: undefined, - writable: true, - enumerable: false, - configurable: false, - }); - - return; - } - - const parsedURL = new URL(newOrigin); - - if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") { - throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); - } - - Object.defineProperty(globalThis, globalOrigin, { - value: parsedURL, - writable: true, - enumerable: false, - configurable: false, - }); - } - - module.exports = { - getGlobalOrigin, - setGlobalOrigin, - }; - - /***/ - }, - - /***/ 554: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // https://github.com/Ethan-Arrowood/undici-fetch - - const { kHeadersList, kConstruct } = __nccwpck_require__(2785); - const { kGuard } = __nccwpck_require__(5861); - const { kEnumerableProperty } = __nccwpck_require__(3983); - const { makeIterator, isValidHeaderName, isValidHeaderValue } = __nccwpck_require__(2538); - const { webidl } = __nccwpck_require__(1744); - const assert = __nccwpck_require__(9491); - - const kHeadersMap = Symbol("headers map"); - const kHeadersSortedMap = Symbol("headers map sorted"); - - /** - * @param {number} code - */ - function isHTTPWhiteSpaceCharCode(code) { - return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020; - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize - * @param {string} potentialValue - */ - function headerValueNormalize(potentialValue) { - // To normalize a byte sequence potentialValue, remove - // any leading and trailing HTTP whitespace bytes from - // potentialValue. - let i = 0; - let j = potentialValue.length; - - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j; - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i; - - return i === 0 && j === potentialValue.length - ? potentialValue - : potentialValue.substring(i, j); - } - - function fill(headers, object) { - // To fill a Headers object headers with a given object object, run these steps: - - // 1. If object is a sequence, then for each header in object: - // Note: webidl conversion to array has already been done. - if (Array.isArray(object)) { - for (let i = 0; i < object.length; ++i) { - const header = object[i]; - // 1. If header does not contain exactly two items, then throw a TypeError. - if (header.length !== 2) { - throw webidl.errors.exception({ - header: "Headers constructor", - message: `expected name/value pair to be length 2, found ${header.length}.`, - }); - } - - // 2. Append (header’s first item, header’s second item) to headers. - appendHeader(headers, header[0], header[1]); - } - } else if (typeof object === "object" && object !== null) { - // Note: null should throw - - // 2. Otherwise, object is a record, then for each key → value in object, - // append (key, value) to headers - const keys = Object.keys(object); - for (let i = 0; i < keys.length; ++i) { - appendHeader(headers, keys[i], object[keys[i]]); - } - } else { - throw webidl.errors.conversionFailed({ - prefix: "Headers constructor", - argument: "Argument 1", - types: ["sequence>", "record"], - }); - } - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-headers-append - */ - function appendHeader(headers, name, value) { - // 1. Normalize value. - value = headerValueNormalize(value); - - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.append", - value: name, - type: "header name", - }); - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.append", - value, - type: "header value", - }); - } - - // 3. If headers’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if headers’s guard is "request" and name is a - // forbidden header name, return. - // Note: undici does not implement forbidden header names - if (headers[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (headers[kGuard] === "request-no-cors") { - // 5. Otherwise, if headers’s guard is "request-no-cors": - // TODO - } - - // 6. Otherwise, if headers’s guard is "response" and name is a - // forbidden response-header name, return. - - // 7. Append (name, value) to headers’s header list. - return headers[kHeadersList].append(name, value); - - // 8. If headers’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from headers - } - - class HeadersList { - /** @type {[string, string][]|null} */ - cookies = null; - - constructor(init) { - if (init instanceof HeadersList) { - this[kHeadersMap] = new Map(init[kHeadersMap]); - this[kHeadersSortedMap] = init[kHeadersSortedMap]; - this.cookies = init.cookies === null ? null : [...init.cookies]; - } else { - this[kHeadersMap] = new Map(init); - this[kHeadersSortedMap] = null; - } - } - - // https://fetch.spec.whatwg.org/#header-list-contains - contains(name) { - // A header list list contains a header name name if list - // contains a header whose name is a byte-case-insensitive - // match for name. - name = name.toLowerCase(); - - return this[kHeadersMap].has(name); - } - - clear() { - this[kHeadersMap].clear(); - this[kHeadersSortedMap] = null; - this.cookies = null; - } - - // https://fetch.spec.whatwg.org/#concept-header-list-append - append(name, value) { - this[kHeadersSortedMap] = null; - - // 1. If list contains name, then set name to the first such - // header’s name. - const lowercaseName = name.toLowerCase(); - const exists = this[kHeadersMap].get(lowercaseName); - - // 2. Append (name, value) to list. - if (exists) { - const delimiter = lowercaseName === "cookie" ? "; " : ", "; - this[kHeadersMap].set(lowercaseName, { - name: exists.name, - value: `${exists.value}${delimiter}${value}`, - }); - } else { - this[kHeadersMap].set(lowercaseName, { name, value }); - } - - if (lowercaseName === "set-cookie") { - this.cookies ??= []; - this.cookies.push(value); - } - } - - // https://fetch.spec.whatwg.org/#concept-header-list-set - set(name, value) { - this[kHeadersSortedMap] = null; - const lowercaseName = name.toLowerCase(); - - if (lowercaseName === "set-cookie") { - this.cookies = [value]; - } - - // 1. If list contains name, then set the value of - // the first such header to value and remove the - // others. - // 2. Otherwise, append header (name, value) to list. - this[kHeadersMap].set(lowercaseName, { name, value }); - } - - // https://fetch.spec.whatwg.org/#concept-header-list-delete - delete(name) { - this[kHeadersSortedMap] = null; - - name = name.toLowerCase(); - - if (name === "set-cookie") { - this.cookies = null; - } - - this[kHeadersMap].delete(name); - } - - // https://fetch.spec.whatwg.org/#concept-header-list-get - get(name) { - const value = this[kHeadersMap].get(name.toLowerCase()); - - // 1. If list does not contain name, then return null. - // 2. Return the values of all headers in list whose name - // is a byte-case-insensitive match for name, - // separated from each other by 0x2C 0x20, in order. - return value === undefined ? null : value.value; - } - - *[Symbol.iterator]() { - // use the lowercased name - for (const [name, { value }] of this[kHeadersMap]) { - yield [name, value]; - } - } - - get entries() { - const headers = {}; - - if (this[kHeadersMap].size) { - for (const { name, value } of this[kHeadersMap].values()) { - headers[name] = value; - } - } - - return headers; - } - } - - // https://fetch.spec.whatwg.org/#headers-class - class Headers { - constructor(init = undefined) { - if (init === kConstruct) { - return; - } - this[kHeadersList] = new HeadersList(); - - // The new Headers(init) constructor steps are: - - // 1. Set this’s guard to "none". - this[kGuard] = "none"; - - // 2. If init is given, then fill this with init. - if (init !== undefined) { - init = webidl.converters.HeadersInit(init); - fill(this, init); - } - } - - // https://fetch.spec.whatwg.org/#dom-headers-append - append(name, value) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 2, { header: "Headers.append" }); - - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); - - return appendHeader(this, name, value); - } - - // https://fetch.spec.whatwg.org/#dom-headers-delete - delete(name) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.delete" }); - - name = webidl.converters.ByteString(name); - - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.delete", - value: name, - type: "header name", - }); - } - - // 2. If this’s guard is "immutable", then throw a TypeError. - // 3. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 4. Otherwise, if this’s guard is "request-no-cors", name - // is not a no-CORS-safelisted request-header name, and - // name is not a privileged no-CORS request-header name, - // return. - // 5. Otherwise, if this’s guard is "response" and name is - // a forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (this[kGuard] === "request-no-cors") { - // TODO - } - - // 6. If this’s header list does not contain name, then - // return. - if (!this[kHeadersList].contains(name)) { - return; - } - - // 7. Delete name from this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this. - this[kHeadersList].delete(name); - } - - // https://fetch.spec.whatwg.org/#dom-headers-get - get(name) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.get" }); - - name = webidl.converters.ByteString(name); - - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.get", - value: name, - type: "header name", - }); - } - - // 2. Return the result of getting name from this’s header - // list. - return this[kHeadersList].get(name); - } - - // https://fetch.spec.whatwg.org/#dom-headers-has - has(name) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.has" }); - - name = webidl.converters.ByteString(name); - - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.has", - value: name, - type: "header name", - }); - } - - // 2. Return true if this’s header list contains name; - // otherwise false. - return this[kHeadersList].contains(name); - } - - // https://fetch.spec.whatwg.org/#dom-headers-set - set(name, value) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 2, { header: "Headers.set" }); - - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); - - // 1. Normalize value. - value = headerValueNormalize(value); - - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.set", - value: name, - type: "header name", - }); - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.set", - value, - type: "header value", - }); - } - - // 3. If this’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 5. Otherwise, if this’s guard is "request-no-cors" and - // name/value is not a no-CORS-safelisted request-header, - // return. - // 6. Otherwise, if this’s guard is "response" and name is a - // forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (this[kGuard] === "request-no-cors") { - // TODO - } - - // 7. Set (name, value) in this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this - this[kHeadersList].set(name, value); - } - - // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie - getSetCookie() { - webidl.brandCheck(this, Headers); - - // 1. If this’s header list does not contain `Set-Cookie`, then return « ». - // 2. Return the values of all headers in this’s header list whose name is - // a byte-case-insensitive match for `Set-Cookie`, in order. - - const list = this[kHeadersList].cookies; - - if (list) { - return [...list]; - } - - return []; - } - - // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine - get [kHeadersSortedMap]() { - if (this[kHeadersList][kHeadersSortedMap]) { - return this[kHeadersList][kHeadersSortedMap]; - } - - // 1. Let headers be an empty list of headers with the key being the name - // and value the value. - const headers = []; - - // 2. Let names be the result of convert header names to a sorted-lowercase - // set with all the names of the headers in list. - const names = [...this[kHeadersList]].sort((a, b) => (a[0] < b[0] ? -1 : 1)); - const cookies = this[kHeadersList].cookies; - - // 3. For each name of names: - for (let i = 0; i < names.length; ++i) { - const [name, value] = names[i]; - // 1. If name is `set-cookie`, then: - if (name === "set-cookie") { - // 1. Let values be a list of all values of headers in list whose name - // is a byte-case-insensitive match for name, in order. - - // 2. For each value of values: - // 1. Append (name, value) to headers. - for (let j = 0; j < cookies.length; ++j) { - headers.push([name, cookies[j]]); - } - } else { - // 2. Otherwise: - - // 1. Let value be the result of getting name from list. - - // 2. Assert: value is non-null. - assert(value !== null); - - // 3. Append (name, value) to headers. - headers.push([name, value]); - } - } - - this[kHeadersList][kHeadersSortedMap] = headers; - - // 4. Return headers. - return headers; - } - - keys() { - webidl.brandCheck(this, Headers); - - if (this[kGuard] === "immutable") { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, "Headers", "key"); - } - - return makeIterator(() => [...this[kHeadersSortedMap].values()], "Headers", "key"); - } - - values() { - webidl.brandCheck(this, Headers); - - if (this[kGuard] === "immutable") { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, "Headers", "value"); - } - - return makeIterator(() => [...this[kHeadersSortedMap].values()], "Headers", "value"); - } - - entries() { - webidl.brandCheck(this, Headers); - - if (this[kGuard] === "immutable") { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, "Headers", "key+value"); - } - - return makeIterator(() => [...this[kHeadersSortedMap].values()], "Headers", "key+value"); - } - - /** - * @param {(value: string, key: string, self: Headers) => void} callbackFn - * @param {unknown} thisArg - */ - forEach(callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.forEach" }); - - if (typeof callbackFn !== "function") { - throw new TypeError( - "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.", - ); - } - - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); - } - } - - [Symbol.for("nodejs.util.inspect.custom")]() { - webidl.brandCheck(this, Headers); - - return this[kHeadersList]; - } - } - - Headers.prototype[Symbol.iterator] = Headers.prototype.entries; - - Object.defineProperties(Headers.prototype, { - append: kEnumerableProperty, - delete: kEnumerableProperty, - get: kEnumerableProperty, - has: kEnumerableProperty, - set: kEnumerableProperty, - getSetCookie: kEnumerableProperty, - keys: kEnumerableProperty, - values: kEnumerableProperty, - entries: kEnumerableProperty, - forEach: kEnumerableProperty, - [Symbol.iterator]: { enumerable: false }, - [Symbol.toStringTag]: { - value: "Headers", - configurable: true, - }, - }); - - webidl.converters.HeadersInit = function (V) { - if (webidl.util.Type(V) === "Object") { - if (V[Symbol.iterator]) { - return webidl.converters["sequence>"](V); - } - - return webidl.converters["record"](V); - } - - throw webidl.errors.conversionFailed({ - prefix: "Headers constructor", - argument: "Argument 1", - types: ["sequence>", "record"], - }); - }; - - module.exports = { - fill, - Headers, - HeadersList, - }; - - /***/ - }, - - /***/ 4881: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // https://github.com/Ethan-Arrowood/undici-fetch - - const { Response, makeNetworkError, makeAppropriateNetworkError, filterResponse, makeResponse } = - __nccwpck_require__(7823); - const { Headers } = __nccwpck_require__(554); - const { Request, makeRequest } = __nccwpck_require__(8359); - const zlib = __nccwpck_require__(9796); - const { - bytesMatch, - makePolicyContainer, - clonePolicyContainer, - requestBadPort, - TAOCheck, - appendRequestOriginHeader, - responseLocationURL, - requestCurrentURL, - setRequestReferrerPolicyOnRedirect, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - createOpaqueTimingInfo, - appendFetchMetadata, - corsCheck, - crossOriginResourcePolicyCheck, - determineRequestsReferrer, - coarsenedSharedCurrentTime, - createDeferredPromise, - isBlobLike, - sameOrigin, - isCancelled, - isAborted, - isErrorLike, - fullyReadBody, - readableStreamClose, - isomorphicEncode, - urlIsLocal, - urlIsHttpHttpsScheme, - urlHasHttpsScheme, - } = __nccwpck_require__(2538); - const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861); - const assert = __nccwpck_require__(9491); - const { safelyExtractBody } = __nccwpck_require__(1472); - const { - redirectStatusSet, - nullBodyStatus, - safeMethodsSet, - requestBodyHeader, - subresourceSet, - DOMException, - } = __nccwpck_require__(1037); - const { kHeadersList } = __nccwpck_require__(2785); - const EE = __nccwpck_require__(2361); - const { Readable, pipeline } = __nccwpck_require__(2781); - const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = - __nccwpck_require__(3983); - const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(685); - const { TransformStream } = __nccwpck_require__(5356); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - const { webidl } = __nccwpck_require__(1744); - const { STATUS_CODES } = __nccwpck_require__(3685); - const GET_OR_HEAD = ["GET", "HEAD"]; - - /** @type {import('buffer').resolveObjectURL} */ - let resolveObjectURL; - let ReadableStream = globalThis.ReadableStream; - - class Fetch extends EE { - constructor(dispatcher) { - super(); - - this.dispatcher = dispatcher; - this.connection = null; - this.dump = false; - this.state = "ongoing"; - // 2 terminated listeners get added per request, - // but only 1 gets removed. If there are 20 redirects, - // 21 listeners will be added. - // See https://github.com/nodejs/undici/issues/1711 - // TODO (fix): Find and fix root cause for leaked listener. - this.setMaxListeners(21); - } - - terminate(reason) { - if (this.state !== "ongoing") { - return; - } - - this.state = "terminated"; - this.connection?.destroy(reason); - this.emit("terminated", reason); - } - - // https://fetch.spec.whatwg.org/#fetch-controller-abort - abort(error) { - if (this.state !== "ongoing") { - return; - } - - // 1. Set controller’s state to "aborted". - this.state = "aborted"; - - // 2. Let fallbackError be an "AbortError" DOMException. - // 3. Set error to fallbackError if it is not given. - if (!error) { - error = new DOMException("The operation was aborted.", "AbortError"); - } - - // 4. Let serializedError be StructuredSerialize(error). - // If that threw an exception, catch it, and let - // serializedError be StructuredSerialize(fallbackError). - - // 5. Set controller’s serialized abort reason to serializedError. - this.serializedAbortReason = error; - - this.connection?.destroy(error); - this.emit("terminated", error); - } - } - - // https://fetch.spec.whatwg.org/#fetch-method - function fetch(input, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" }); - - // 1. Let p be a new promise. - const p = createDeferredPromise(); - - // 2. Let requestObject be the result of invoking the initial value of - // Request as constructor with input and init as arguments. If this throws - // an exception, reject p with it and return p. - let requestObject; - - try { - requestObject = new Request(input, init); - } catch (e) { - p.reject(e); - return p.promise; - } - - // 3. Let request be requestObject’s request. - const request = requestObject[kState]; - - // 4. If requestObject’s signal’s aborted flag is set, then: - if (requestObject.signal.aborted) { - // 1. Abort the fetch() call with p, request, null, and - // requestObject’s signal’s abort reason. - abortFetch(p, request, null, requestObject.signal.reason); - - // 2. Return p. - return p.promise; - } - - // 5. Let globalObject be request’s client’s global object. - const globalObject = request.client.globalObject; - - // 6. If globalObject is a ServiceWorkerGlobalScope object, then set - // request’s service-workers mode to "none". - if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") { - request.serviceWorkers = "none"; - } - - // 7. Let responseObject be null. - let responseObject = null; - - // 8. Let relevantRealm be this’s relevant Realm. - const relevantRealm = null; - - // 9. Let locallyAborted be false. - let locallyAborted = false; - - // 10. Let controller be null. - let controller = null; - - // 11. Add the following abort steps to requestObject’s signal: - addAbortListener(requestObject.signal, () => { - // 1. Set locallyAborted to true. - locallyAborted = true; - - // 2. Assert: controller is non-null. - assert(controller != null); - - // 3. Abort controller with requestObject’s signal’s abort reason. - controller.abort(requestObject.signal.reason); - - // 4. Abort the fetch() call with p, request, responseObject, - // and requestObject’s signal’s abort reason. - abortFetch(p, request, responseObject, requestObject.signal.reason); - }); - - // 12. Let handleFetchDone given response response be to finalize and - // report timing with response, globalObject, and "fetch". - const handleFetchDone = (response) => finalizeAndReportTiming(response, "fetch"); - - // 13. Set controller to the result of calling fetch given request, - // with processResponseEndOfBody set to handleFetchDone, and processResponse - // given response being these substeps: - - const processResponse = (response) => { - // 1. If locallyAborted is true, terminate these substeps. - if (locallyAborted) { - return Promise.resolve(); - } - - // 2. If response’s aborted flag is set, then: - if (response.aborted) { - // 1. Let deserializedError be the result of deserialize a serialized - // abort reason given controller’s serialized abort reason and - // relevantRealm. - - // 2. Abort the fetch() call with p, request, responseObject, and - // deserializedError. - - abortFetch(p, request, responseObject, controller.serializedAbortReason); - return Promise.resolve(); - } - - // 3. If response is a network error, then reject p with a TypeError - // and terminate these substeps. - if (response.type === "error") { - p.reject(Object.assign(new TypeError("fetch failed"), { cause: response.error })); - return Promise.resolve(); - } - - // 4. Set responseObject to the result of creating a Response object, - // given response, "immutable", and relevantRealm. - responseObject = new Response(); - responseObject[kState] = response; - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = response.headersList; - responseObject[kHeaders][kGuard] = "immutable"; - responseObject[kHeaders][kRealm] = relevantRealm; - - // 5. Resolve p with responseObject. - p.resolve(responseObject); - }; - - controller = fetching({ - request, - processResponseEndOfBody: handleFetchDone, - processResponse, - dispatcher: init.dispatcher ?? getGlobalDispatcher(), // undici - }); - - // 14. Return p. - return p.promise; - } - - // https://fetch.spec.whatwg.org/#finalize-and-report-timing - function finalizeAndReportTiming(response, initiatorType = "other") { - // 1. If response is an aborted network error, then return. - if (response.type === "error" && response.aborted) { - return; - } - - // 2. If response’s URL list is null or empty, then return. - if (!response.urlList?.length) { - return; - } - - // 3. Let originalURL be response’s URL list[0]. - const originalURL = response.urlList[0]; - - // 4. Let timingInfo be response’s timing info. - let timingInfo = response.timingInfo; - - // 5. Let cacheState be response’s cache state. - let cacheState = response.cacheState; - - // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. - if (!urlIsHttpHttpsScheme(originalURL)) { - return; - } - - // 7. If timingInfo is null, then return. - if (timingInfo === null) { - return; - } - - // 8. If response’s timing allow passed flag is not set, then: - if (!response.timingAllowPassed) { - // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. - timingInfo = createOpaqueTimingInfo({ - startTime: timingInfo.startTime, - }); - - // 2. Set cacheState to the empty string. - cacheState = ""; - } - - // 9. Set timingInfo’s end time to the coarsened shared current time - // given global’s relevant settings object’s cross-origin isolated - // capability. - // TODO: given global’s relevant settings object’s cross-origin isolated - // capability? - timingInfo.endTime = coarsenedSharedCurrentTime(); - - // 10. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo; - - // 11. Mark resource timing for timingInfo, originalURL, initiatorType, - // global, and cacheState. - markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState); - } - - // https://w3c.github.io/resource-timing/#dfn-mark-resource-timing - function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState) { - if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { - performance.markResourceTiming( - timingInfo, - originalURL.href, - initiatorType, - globalThis, - cacheState, - ); - } - } - - // https://fetch.spec.whatwg.org/#abort-fetch - function abortFetch(p, request, responseObject, error) { - // Note: AbortSignal.reason was added in node v17.2.0 - // which would give us an undefined error to reject with. - // Remove this once node v16 is no longer supported. - if (!error) { - error = new DOMException("The operation was aborted.", "AbortError"); - } - - // 1. Reject promise with error. - p.reject(error); - - // 2. If request’s body is not null and is readable, then cancel request’s - // body with error. - if (request.body != null && isReadable(request.body?.stream)) { - request.body.stream.cancel(error).catch((err) => { - if (err.code === "ERR_INVALID_STATE") { - // Node bug? - return; - } - throw err; - }); - } - - // 3. If responseObject is null, then return. - if (responseObject == null) { - return; - } - - // 4. Let response be responseObject’s response. - const response = responseObject[kState]; - - // 5. If response’s body is not null and is readable, then error response’s - // body with error. - if (response.body != null && isReadable(response.body?.stream)) { - response.body.stream.cancel(error).catch((err) => { - if (err.code === "ERR_INVALID_STATE") { - // Node bug? - return; - } - throw err; - }); - } - } - - // https://fetch.spec.whatwg.org/#fetching - function fetching({ - request, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseEndOfBody, - processResponseConsumeBody, - useParallelQueue = false, - dispatcher, // undici - }) { - // 1. Let taskDestination be null. - let taskDestination = null; - - // 2. Let crossOriginIsolatedCapability be false. - let crossOriginIsolatedCapability = false; - - // 3. If request’s client is non-null, then: - if (request.client != null) { - // 1. Set taskDestination to request’s client’s global object. - taskDestination = request.client.globalObject; - - // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin - // isolated capability. - crossOriginIsolatedCapability = request.client.crossOriginIsolatedCapability; - } - - // 4. If useParallelQueue is true, then set taskDestination to the result of - // starting a new parallel queue. - // TODO - - // 5. Let timingInfo be a new fetch timing info whose start time and - // post-redirect start time are the coarsened shared current time given - // crossOriginIsolatedCapability. - const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); - const timingInfo = createOpaqueTimingInfo({ - startTime: currenTime, - }); - - // 6. Let fetchParams be a new fetch params whose - // request is request, - // timing info is timingInfo, - // process request body chunk length is processRequestBodyChunkLength, - // process request end-of-body is processRequestEndOfBody, - // process response is processResponse, - // process response consume body is processResponseConsumeBody, - // process response end-of-body is processResponseEndOfBody, - // task destination is taskDestination, - // and cross-origin isolated capability is crossOriginIsolatedCapability. - const fetchParams = { - controller: new Fetch(dispatcher), - request, - timingInfo, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseConsumeBody, - processResponseEndOfBody, - taskDestination, - crossOriginIsolatedCapability, - }; - - // 7. If request’s body is a byte sequence, then set request’s body to - // request’s body as a body. - // NOTE: Since fetching is only called from fetch, body should already be - // extracted. - assert(!request.body || request.body.stream); - - // 8. If request’s window is "client", then set request’s window to request’s - // client, if request’s client’s global object is a Window object; otherwise - // "no-window". - if (request.window === "client") { - // TODO: What if request.client is null? - request.window = - request.client?.globalObject?.constructor?.name === "Window" - ? request.client - : "no-window"; - } - - // 9. If request’s origin is "client", then set request’s origin to request’s - // client’s origin. - if (request.origin === "client") { - // TODO: What if request.client is null? - request.origin = request.client?.origin; - } - - // 10. If all of the following conditions are true: - // TODO - - // 11. If request’s policy container is "client", then: - if (request.policyContainer === "client") { - // 1. If request’s client is non-null, then set request’s policy - // container to a clone of request’s client’s policy container. [HTML] - if (request.client != null) { - request.policyContainer = clonePolicyContainer(request.client.policyContainer); - } else { - // 2. Otherwise, set request’s policy container to a new policy - // container. - request.policyContainer = makePolicyContainer(); - } - } - - // 12. If request’s header list does not contain `Accept`, then: - if (!request.headersList.contains("accept")) { - // 1. Let value be `*/*`. - const value = "*/*"; - - // 2. A user agent should set value to the first matching statement, if - // any, switching on request’s destination: - // "document" - // "frame" - // "iframe" - // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` - // "image" - // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` - // "style" - // `text/css,*/*;q=0.1` - // TODO - - // 3. Append `Accept`/value to request’s header list. - request.headersList.append("accept", value); - } - - // 13. If request’s header list does not contain `Accept-Language`, then - // user agents should append `Accept-Language`/an appropriate value to - // request’s header list. - if (!request.headersList.contains("accept-language")) { - request.headersList.append("accept-language", "*"); - } - - // 14. If request’s priority is null, then use request’s initiator and - // destination appropriately in setting request’s priority to a - // user-agent-defined object. - if (request.priority === null) { - // TODO - } - - // 15. If request is a subresource request, then: - if (subresourceSet.has(request.destination)) { - // TODO - } - - // 16. Run main fetch given fetchParams. - mainFetch(fetchParams).catch((err) => { - fetchParams.controller.terminate(err); - }); - - // 17. Return fetchParam's controller - return fetchParams.controller; - } - - // https://fetch.spec.whatwg.org/#concept-main-fetch - async function mainFetch(fetchParams, recursive = false) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. If request’s local-URLs-only flag is set and request’s current URL is - // not local, then set response to a network error. - if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { - response = makeNetworkError("local URLs only"); - } - - // 4. Run report Content Security Policy violations for request. - // TODO - - // 5. Upgrade request to a potentially trustworthy URL, if appropriate. - tryUpgradeRequestToAPotentiallyTrustworthyURL(request); - - // 6. If should request be blocked due to a bad port, should fetching request - // be blocked as mixed content, or should request be blocked by Content - // Security Policy returns blocked, then set response to a network error. - if (requestBadPort(request) === "blocked") { - response = makeNetworkError("bad port"); - } - // TODO: should fetching request be blocked as mixed content? - // TODO: should request be blocked by Content Security Policy? - - // 7. If request’s referrer policy is the empty string, then set request’s - // referrer policy to request’s policy container’s referrer policy. - if (request.referrerPolicy === "") { - request.referrerPolicy = request.policyContainer.referrerPolicy; - } - - // 8. If request’s referrer is not "no-referrer", then set request’s - // referrer to the result of invoking determine request’s referrer. - if (request.referrer !== "no-referrer") { - request.referrer = determineRequestsReferrer(request); - } - - // 9. Set request’s current URL’s scheme to "https" if all of the following - // conditions are true: - // - request’s current URL’s scheme is "http" - // - request’s current URL’s host is a domain - // - Matching request’s current URL’s host per Known HSTS Host Domain Name - // Matching results in either a superdomain match with an asserted - // includeSubDomains directive or a congruent match (with or without an - // asserted includeSubDomains directive). [HSTS] - // TODO - - // 10. If recursive is false, then run the remaining steps in parallel. - // TODO - - // 11. If response is null, then set response to the result of running - // the steps corresponding to the first matching statement: - if (response === null) { - response = await (async () => { - const currentURL = requestCurrentURL(request); - - if ( - // - request’s current URL’s origin is same origin with request’s origin, - // and request’s response tainting is "basic" - (sameOrigin(currentURL, request.url) && request.responseTainting === "basic") || - // request’s current URL’s scheme is "data" - currentURL.protocol === "data:" || - // - request’s mode is "navigate" or "websocket" - request.mode === "navigate" || - request.mode === "websocket" - ) { - // 1. Set request’s response tainting to "basic". - request.responseTainting = "basic"; - - // 2. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams); - } - - // request’s mode is "same-origin" - if (request.mode === "same-origin") { - // 1. Return a network error. - return makeNetworkError('request mode cannot be "same-origin"'); - } - - // request’s mode is "no-cors" - if (request.mode === "no-cors") { - // 1. If request’s redirect mode is not "follow", then return a network - // error. - if (request.redirect !== "follow") { - return makeNetworkError( - 'redirect mode cannot be "follow" for "no-cors" request', - ); - } - - // 2. Set request’s response tainting to "opaque". - request.responseTainting = "opaque"; - - // 3. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams); - } - - // request’s current URL’s scheme is not an HTTP(S) scheme - if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { - // Return a network error. - return makeNetworkError("URL scheme must be a HTTP(S) scheme"); - } - - // - request’s use-CORS-preflight flag is set - // - request’s unsafe-request flag is set and either request’s method is - // not a CORS-safelisted method or CORS-unsafe request-header names with - // request’s header list is not empty - // 1. Set request’s response tainting to "cors". - // 2. Let corsWithPreflightResponse be the result of running HTTP fetch - // given fetchParams and true. - // 3. If corsWithPreflightResponse is a network error, then clear cache - // entries using request. - // 4. Return corsWithPreflightResponse. - // TODO - - // Otherwise - // 1. Set request’s response tainting to "cors". - request.responseTainting = "cors"; - - // 2. Return the result of running HTTP fetch given fetchParams. - return await httpFetch(fetchParams); - })(); - } - - // 12. If recursive is true, then return response. - if (recursive) { - return response; - } - - // 13. If response is not a network error and response is not a filtered - // response, then: - if (response.status !== 0 && !response.internalResponse) { - // If request’s response tainting is "cors", then: - if (request.responseTainting === "cors") { - // 1. Let headerNames be the result of extracting header list values - // given `Access-Control-Expose-Headers` and response’s header list. - // TODO - // 2. If request’s credentials mode is not "include" and headerNames - // contains `*`, then set response’s CORS-exposed header-name list to - // all unique header names in response’s header list. - // TODO - // 3. Otherwise, if headerNames is not null or failure, then set - // response’s CORS-exposed header-name list to headerNames. - // TODO - } - - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (request.responseTainting === "basic") { - response = filterResponse(response, "basic"); - } else if (request.responseTainting === "cors") { - response = filterResponse(response, "cors"); - } else if (request.responseTainting === "opaque") { - response = filterResponse(response, "opaque"); - } else { - assert(false); - } - } - - // 14. Let internalResponse be response, if response is a network error, - // and response’s internal response otherwise. - let internalResponse = response.status === 0 ? response : response.internalResponse; - - // 15. If internalResponse’s URL list is empty, then set it to a clone of - // request’s URL list. - if (internalResponse.urlList.length === 0) { - internalResponse.urlList.push(...request.urlList); - } - - // 16. If request’s timing allow failed flag is unset, then set - // internalResponse’s timing allow passed flag. - if (!request.timingAllowFailed) { - response.timingAllowPassed = true; - } - - // 17. If response is not a network error and any of the following returns - // blocked - // - should internalResponse to request be blocked as mixed content - // - should internalResponse to request be blocked by Content Security Policy - // - should internalResponse to request be blocked due to its MIME type - // - should internalResponse to request be blocked due to nosniff - // TODO - - // 18. If response’s type is "opaque", internalResponse’s status is 206, - // internalResponse’s range-requested flag is set, and request’s header - // list does not contain `Range`, then set response and internalResponse - // to a network error. - if ( - response.type === "opaque" && - internalResponse.status === 206 && - internalResponse.rangeRequested && - !request.headers.contains("range") - ) { - response = internalResponse = makeNetworkError(); - } - - // 19. If response is not a network error and either request’s method is - // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, - // set internalResponse’s body to null and disregard any enqueuing toward - // it (if any). - if ( - response.status !== 0 && - (request.method === "HEAD" || - request.method === "CONNECT" || - nullBodyStatus.includes(internalResponse.status)) - ) { - internalResponse.body = null; - fetchParams.controller.dump = true; - } - - // 20. If request’s integrity metadata is not the empty string, then: - if (request.integrity) { - // 1. Let processBodyError be this step: run fetch finale given fetchParams - // and a network error. - const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); - - // 2. If request’s response tainting is "opaque", or response’s body is null, - // then run processBodyError and abort these steps. - if (request.responseTainting === "opaque" || response.body == null) { - processBodyError(response.error); - return; - } - - // 3. Let processBody given bytes be these steps: - const processBody = (bytes) => { - // 1. If bytes do not match request’s integrity metadata, - // then run processBodyError and abort these steps. [SRI] - if (!bytesMatch(bytes, request.integrity)) { - processBodyError("integrity mismatch"); - return; - } - - // 2. Set response’s body to bytes as a body. - response.body = safelyExtractBody(bytes)[0]; - - // 3. Run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response); - }; - - // 4. Fully read response’s body given processBody and processBodyError. - await fullyReadBody(response.body, processBody, processBodyError); - } else { - // 21. Otherwise, run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response); - } - } - - // https://fetch.spec.whatwg.org/#concept-scheme-fetch - // given a fetch params fetchParams - function schemeFetch(fetchParams) { - // Note: since the connection is destroyed on redirect, which sets fetchParams to a - // cancelled state, we do not want this condition to trigger *unless* there have been - // no redirects. See https://github.com/nodejs/undici/issues/1776 - // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { - return Promise.resolve(makeAppropriateNetworkError(fetchParams)); - } - - // 2. Let request be fetchParams’s request. - const { request } = fetchParams; - - const { protocol: scheme } = requestCurrentURL(request); - - // 3. Switch on request’s current URL’s scheme and run the associated steps: - switch (scheme) { - case "about:": { - // If request’s current URL’s path is the string "blank", then return a new response - // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », - // and body is the empty byte sequence as a body. - - // Otherwise, return a network error. - return Promise.resolve(makeNetworkError("about scheme is not supported")); - } - case "blob:": { - if (!resolveObjectURL) { - resolveObjectURL = __nccwpck_require__(4300).resolveObjectURL; - } - - // 1. Let blobURLEntry be request’s current URL’s blob URL entry. - const blobURLEntry = requestCurrentURL(request); - - // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 - // Buffer.resolveObjectURL does not ignore URL queries. - if (blobURLEntry.search.length !== 0) { - return Promise.resolve( - makeNetworkError("NetworkError when attempting to fetch resource."), - ); - } - - const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); - - // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s - // object is not a Blob object, then return a network error. - if (request.method !== "GET" || !isBlobLike(blobURLEntryObject)) { - return Promise.resolve(makeNetworkError("invalid method")); - } - - // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. - const bodyWithType = safelyExtractBody(blobURLEntryObject); - - // 4. Let body be bodyWithType’s body. - const body = bodyWithType[0]; - - // 5. Let length be body’s length, serialized and isomorphic encoded. - const length = isomorphicEncode(`${body.length}`); - - // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. - const type = bodyWithType[1] ?? ""; - - // 7. Return a new response whose status message is `OK`, header list is - // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. - const response = makeResponse({ - statusText: "OK", - headersList: [ - ["content-length", { name: "Content-Length", value: length }], - ["content-type", { name: "Content-Type", value: type }], - ], - }); - - response.body = body; - - return Promise.resolve(response); - } - case "data:": { - // 1. Let dataURLStruct be the result of running the - // data: URL processor on request’s current URL. - const currentURL = requestCurrentURL(request); - const dataURLStruct = dataURLProcessor(currentURL); - - // 2. If dataURLStruct is failure, then return a - // network error. - if (dataURLStruct === "failure") { - return Promise.resolve(makeNetworkError("failed to fetch the data URL")); - } - - // 3. Let mimeType be dataURLStruct’s MIME type, serialized. - const mimeType = serializeAMimeType(dataURLStruct.mimeType); - - // 4. Return a response whose status message is `OK`, - // header list is « (`Content-Type`, mimeType) », - // and body is dataURLStruct’s body as a body. - return Promise.resolve( - makeResponse({ - statusText: "OK", - headersList: [["content-type", { name: "Content-Type", value: mimeType }]], - body: safelyExtractBody(dataURLStruct.body)[0], - }), - ); - } - case "file:": { - // For now, unfortunate as it is, file URLs are left as an exercise for the reader. - // When in doubt, return a network error. - return Promise.resolve(makeNetworkError("not implemented... yet...")); - } - case "http:": - case "https:": { - // Return the result of running HTTP fetch given fetchParams. - - return httpFetch(fetchParams).catch((err) => makeNetworkError(err)); - } - default: { - return Promise.resolve(makeNetworkError("unknown scheme")); - } - } - } - - // https://fetch.spec.whatwg.org/#finalize-response - function finalizeResponse(fetchParams, response) { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true; - - // 2, If fetchParams’s process response done is not null, then queue a fetch - // task to run fetchParams’s process response done given response, with - // fetchParams’s task destination. - if (fetchParams.processResponseDone != null) { - queueMicrotask(() => fetchParams.processResponseDone(response)); - } - } - - // https://fetch.spec.whatwg.org/#fetch-finale - function fetchFinale(fetchParams, response) { - // 1. If response is a network error, then: - if (response.type === "error") { - // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». - response.urlList = [fetchParams.request.urlList[0]]; - - // 2. Set response’s timing info to the result of creating an opaque timing - // info for fetchParams’s timing info. - response.timingInfo = createOpaqueTimingInfo({ - startTime: fetchParams.timingInfo.startTime, - }); - } - - // 2. Let processResponseEndOfBody be the following steps: - const processResponseEndOfBody = () => { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true; - - // If fetchParams’s process response end-of-body is not null, - // then queue a fetch task to run fetchParams’s process response - // end-of-body given response with fetchParams’s task destination. - if (fetchParams.processResponseEndOfBody != null) { - queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); - } - }; - - // 3. If fetchParams’s process response is non-null, then queue a fetch task - // to run fetchParams’s process response given response, with fetchParams’s - // task destination. - if (fetchParams.processResponse != null) { - queueMicrotask(() => fetchParams.processResponse(response)); - } - - // 4. If response’s body is null, then run processResponseEndOfBody. - if (response.body == null) { - processResponseEndOfBody(); - } else { - // 5. Otherwise: - - // 1. Let transformStream be a new a TransformStream. - - // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, - // enqueues chunk in transformStream. - const identityTransformAlgorithm = (chunk, controller) => { - controller.enqueue(chunk); - }; - - // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm - // and flushAlgorithm set to processResponseEndOfBody. - const transformStream = new TransformStream( - { - start() {}, - transform: identityTransformAlgorithm, - flush: processResponseEndOfBody, - }, - { - size() { - return 1; - }, - }, - { - size() { - return 1; - }, - }, - ); - - // 4. Set response’s body to the result of piping response’s body through transformStream. - response.body = { stream: response.body.stream.pipeThrough(transformStream) }; - } - - // 6. If fetchParams’s process response consume body is non-null, then: - if (fetchParams.processResponseConsumeBody != null) { - // 1. Let processBody given nullOrBytes be this step: run fetchParams’s - // process response consume body given response and nullOrBytes. - const processBody = (nullOrBytes) => - fetchParams.processResponseConsumeBody(response, nullOrBytes); - - // 2. Let processBodyError be this step: run fetchParams’s process - // response consume body given response and failure. - const processBodyError = (failure) => - fetchParams.processResponseConsumeBody(response, failure); - - // 3. If response’s body is null, then queue a fetch task to run processBody - // given null, with fetchParams’s task destination. - if (response.body == null) { - queueMicrotask(() => processBody(null)); - } else { - // 4. Otherwise, fully read response’s body given processBody, processBodyError, - // and fetchParams’s task destination. - return fullyReadBody(response.body, processBody, processBodyError); - } - return Promise.resolve(); - } - } - - // https://fetch.spec.whatwg.org/#http-fetch - async function httpFetch(fetchParams) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. Let actualResponse be null. - let actualResponse = null; - - // 4. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; - - // 5. If request’s service-workers mode is "all", then: - if (request.serviceWorkers === "all") { - // TODO - } - - // 6. If response is null, then: - if (response === null) { - // 1. If makeCORSPreflight is true and one of these conditions is true: - // TODO - - // 2. If request’s redirect mode is "follow", then set request’s - // service-workers mode to "none". - if (request.redirect === "follow") { - request.serviceWorkers = "none"; - } - - // 3. Set response and actualResponse to the result of running - // HTTP-network-or-cache fetch given fetchParams. - actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); - - // 4. If request’s response tainting is "cors" and a CORS check - // for request and response returns failure, then return a network error. - if (request.responseTainting === "cors" && corsCheck(request, response) === "failure") { - return makeNetworkError("cors failure"); - } - - // 5. If the TAO check for request and response returns failure, then set - // request’s timing allow failed flag. - if (TAOCheck(request, response) === "failure") { - request.timingAllowFailed = true; - } - } - - // 7. If either request’s response tainting or response’s type - // is "opaque", and the cross-origin resource policy check with - // request’s origin, request’s client, request’s destination, - // and actualResponse returns blocked, then return a network error. - if ( - (request.responseTainting === "opaque" || response.type === "opaque") && - crossOriginResourcePolicyCheck( - request.origin, - request.client, - request.destination, - actualResponse, - ) === "blocked" - ) { - return makeNetworkError("blocked"); - } - - // 8. If actualResponse’s status is a redirect status, then: - if (redirectStatusSet.has(actualResponse.status)) { - // 1. If actualResponse’s status is not 303, request’s body is not null, - // and the connection uses HTTP/2, then user agents may, and are even - // encouraged to, transmit an RST_STREAM frame. - // See, https://github.com/whatwg/fetch/issues/1288 - if (request.redirect !== "manual") { - fetchParams.controller.connection.destroy(); - } - - // 2. Switch on request’s redirect mode: - if (request.redirect === "error") { - // Set response to a network error. - response = makeNetworkError("unexpected redirect"); - } else if (request.redirect === "manual") { - // Set response to an opaque-redirect filtered response whose internal - // response is actualResponse. - // NOTE(spec): On the web this would return an `opaqueredirect` response, - // but that doesn't make sense server side. - // See https://github.com/nodejs/undici/issues/1193. - response = actualResponse; - } else if (request.redirect === "follow") { - // Set response to the result of running HTTP-redirect fetch given - // fetchParams and response. - response = await httpRedirectFetch(fetchParams, response); - } else { - assert(false); - } - } - - // 9. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo; - - // 10. Return response. - return response; - } - - // https://fetch.spec.whatwg.org/#http-redirect-fetch - function httpRedirectFetch(fetchParams, response) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let actualResponse be response, if response is not a filtered response, - // and response’s internal response otherwise. - const actualResponse = response.internalResponse ? response.internalResponse : response; - - // 3. Let locationURL be actualResponse’s location URL given request’s current - // URL’s fragment. - let locationURL; - - try { - locationURL = responseLocationURL(actualResponse, requestCurrentURL(request).hash); - - // 4. If locationURL is null, then return response. - if (locationURL == null) { - return response; - } - } catch (err) { - // 5. If locationURL is failure, then return a network error. - return Promise.resolve(makeNetworkError(err)); - } - - // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network - // error. - if (!urlIsHttpHttpsScheme(locationURL)) { - return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme")); - } - - // 7. If request’s redirect count is 20, then return a network error. - if (request.redirectCount === 20) { - return Promise.resolve(makeNetworkError("redirect count exceeded")); - } - - // 8. Increase request’s redirect count by 1. - request.redirectCount += 1; - - // 9. If request’s mode is "cors", locationURL includes credentials, and - // request’s origin is not same origin with locationURL’s origin, then return - // a network error. - if ( - request.mode === "cors" && - (locationURL.username || locationURL.password) && - !sameOrigin(request, locationURL) - ) { - return Promise.resolve( - makeNetworkError('cross origin not allowed for request mode "cors"'), - ); - } - - // 10. If request’s response tainting is "cors" and locationURL includes - // credentials, then return a network error. - if (request.responseTainting === "cors" && (locationURL.username || locationURL.password)) { - return Promise.resolve( - makeNetworkError('URL cannot contain credentials for request mode "cors"'), - ); - } - - // 11. If actualResponse’s status is not 303, request’s body is non-null, - // and request’s body’s source is null, then return a network error. - if (actualResponse.status !== 303 && request.body != null && request.body.source == null) { - return Promise.resolve(makeNetworkError()); - } - - // 12. If one of the following is true - // - actualResponse’s status is 301 or 302 and request’s method is `POST` - // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` - if ( - ([301, 302].includes(actualResponse.status) && request.method === "POST") || - (actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) - ) { - // then: - // 1. Set request’s method to `GET` and request’s body to null. - request.method = "GET"; - request.body = null; - - // 2. For each headerName of request-body-header name, delete headerName from - // request’s header list. - for (const headerName of requestBodyHeader) { - request.headersList.delete(headerName); - } - } - - // 13. If request’s current URL’s origin is not same origin with locationURL’s - // origin, then for each headerName of CORS non-wildcard request-header name, - // delete headerName from request’s header list. - if (!sameOrigin(requestCurrentURL(request), locationURL)) { - // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name - request.headersList.delete("authorization"); - - // https://fetch.spec.whatwg.org/#authentication-entries - request.headersList.delete("proxy-authorization", true); - - // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. - request.headersList.delete("cookie"); - request.headersList.delete("host"); - } - - // 14. If request’s body is non-null, then set request’s body to the first return - // value of safely extracting request’s body’s source. - if (request.body != null) { - assert(request.body.source != null); - request.body = safelyExtractBody(request.body.source)[0]; - } - - // 15. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; - - // 16. Set timingInfo’s redirect end time and post-redirect start time to the - // coarsened shared current time given fetchParams’s cross-origin isolated - // capability. - timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime( - fetchParams.crossOriginIsolatedCapability, - ); - - // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s - // redirect start time to timingInfo’s start time. - if (timingInfo.redirectStartTime === 0) { - timingInfo.redirectStartTime = timingInfo.startTime; - } - - // 18. Append locationURL to request’s URL list. - request.urlList.push(locationURL); - - // 19. Invoke set request’s referrer policy on redirect on request and - // actualResponse. - setRequestReferrerPolicyOnRedirect(request, actualResponse); - - // 20. Return the result of running main fetch given fetchParams and true. - return mainFetch(fetchParams, true); - } - - // https://fetch.spec.whatwg.org/#http-network-or-cache-fetch - async function httpNetworkOrCacheFetch( - fetchParams, - isAuthenticationFetch = false, - isNewConnectionFetch = false, - ) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let httpFetchParams be null. - let httpFetchParams = null; - - // 3. Let httpRequest be null. - let httpRequest = null; - - // 4. Let response be null. - let response = null; - - // 5. Let storedResponse be null. - // TODO: cache - - // 6. Let httpCache be null. - const httpCache = null; - - // 7. Let the revalidatingFlag be unset. - const revalidatingFlag = false; - - // 8. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. If request’s window is "no-window" and request’s redirect mode is - // "error", then set httpFetchParams to fetchParams and httpRequest to - // request. - if (request.window === "no-window" && request.redirect === "error") { - httpFetchParams = fetchParams; - httpRequest = request; - } else { - // Otherwise: - - // 1. Set httpRequest to a clone of request. - httpRequest = makeRequest(request); - - // 2. Set httpFetchParams to a copy of fetchParams. - httpFetchParams = { ...fetchParams }; - - // 3. Set httpFetchParams’s request to httpRequest. - httpFetchParams.request = httpRequest; - } - - // 3. Let includeCredentials be true if one of - const includeCredentials = - request.credentials === "include" || - (request.credentials === "same-origin" && request.responseTainting === "basic"); - - // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s - // body is non-null; otherwise null. - const contentLength = httpRequest.body ? httpRequest.body.length : null; - - // 5. Let contentLengthHeaderValue be null. - let contentLengthHeaderValue = null; - - // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or - // `PUT`, then set contentLengthHeaderValue to `0`. - if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) { - contentLengthHeaderValue = "0"; - } - - // 7. If contentLength is non-null, then set contentLengthHeaderValue to - // contentLength, serialized and isomorphic encoded. - if (contentLength != null) { - contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); - } - - // 8. If contentLengthHeaderValue is non-null, then append - // `Content-Length`/contentLengthHeaderValue to httpRequest’s header - // list. - if (contentLengthHeaderValue != null) { - httpRequest.headersList.append("content-length", contentLengthHeaderValue); - } - - // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, - // contentLengthHeaderValue) to httpRequest’s header list. - - // 10. If contentLength is non-null and httpRequest’s keepalive is true, - // then: - if (contentLength != null && httpRequest.keepalive) { - // NOTE: keepalive is a noop outside of browser context. - } - - // 11. If httpRequest’s referrer is a URL, then append - // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, - // to httpRequest’s header list. - if (httpRequest.referrer instanceof URL) { - httpRequest.headersList.append("referer", isomorphicEncode(httpRequest.referrer.href)); - } - - // 12. Append a request `Origin` header for httpRequest. - appendRequestOriginHeader(httpRequest); - - // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] - appendFetchMetadata(httpRequest); - - // 14. If httpRequest’s header list does not contain `User-Agent`, then - // user agents should append `User-Agent`/default `User-Agent` value to - // httpRequest’s header list. - if (!httpRequest.headersList.contains("user-agent")) { - httpRequest.headersList.append( - "user-agent", - typeof esbuildDetection === "undefined" ? "undici" : "node", - ); - } - - // 15. If httpRequest’s cache mode is "default" and httpRequest’s header - // list contains `If-Modified-Since`, `If-None-Match`, - // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set - // httpRequest’s cache mode to "no-store". - if ( - httpRequest.cache === "default" && - (httpRequest.headersList.contains("if-modified-since") || - httpRequest.headersList.contains("if-none-match") || - httpRequest.headersList.contains("if-unmodified-since") || - httpRequest.headersList.contains("if-match") || - httpRequest.headersList.contains("if-range")) - ) { - httpRequest.cache = "no-store"; - } - - // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent - // no-cache cache-control header modification flag is unset, and - // httpRequest’s header list does not contain `Cache-Control`, then append - // `Cache-Control`/`max-age=0` to httpRequest’s header list. - if ( - httpRequest.cache === "no-cache" && - !httpRequest.preventNoCacheCacheControlHeaderModification && - !httpRequest.headersList.contains("cache-control") - ) { - httpRequest.headersList.append("cache-control", "max-age=0"); - } - - // 17. If httpRequest’s cache mode is "no-store" or "reload", then: - if (httpRequest.cache === "no-store" || httpRequest.cache === "reload") { - // 1. If httpRequest’s header list does not contain `Pragma`, then append - // `Pragma`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.contains("pragma")) { - httpRequest.headersList.append("pragma", "no-cache"); - } - - // 2. If httpRequest’s header list does not contain `Cache-Control`, - // then append `Cache-Control`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.contains("cache-control")) { - httpRequest.headersList.append("cache-control", "no-cache"); - } - } - - // 18. If httpRequest’s header list contains `Range`, then append - // `Accept-Encoding`/`identity` to httpRequest’s header list. - if (httpRequest.headersList.contains("range")) { - httpRequest.headersList.append("accept-encoding", "identity"); - } - - // 19. Modify httpRequest’s header list per HTTP. Do not append a given - // header if httpRequest’s header list contains that header’s name. - // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 - if (!httpRequest.headersList.contains("accept-encoding")) { - if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { - httpRequest.headersList.append("accept-encoding", "br, gzip, deflate"); - } else { - httpRequest.headersList.append("accept-encoding", "gzip, deflate"); - } - } - - httpRequest.headersList.delete("host"); - - // 20. If includeCredentials is true, then: - if (includeCredentials) { - // 1. If the user agent is not configured to block cookies for httpRequest - // (see section 7 of [COOKIES]), then: - // TODO: credentials - // 2. If httpRequest’s header list does not contain `Authorization`, then: - // TODO: credentials - } - - // 21. If there’s a proxy-authentication entry, use it as appropriate. - // TODO: proxy-authentication - - // 22. Set httpCache to the result of determining the HTTP cache - // partition, given httpRequest. - // TODO: cache - - // 23. If httpCache is null, then set httpRequest’s cache mode to - // "no-store". - if (httpCache == null) { - httpRequest.cache = "no-store"; - } - - // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", - // then: - if (httpRequest.mode !== "no-store" && httpRequest.mode !== "reload") { - // TODO: cache - } - - // 9. If aborted, then return the appropriate network error for fetchParams. - // TODO - - // 10. If response is null, then: - if (response == null) { - // 1. If httpRequest’s cache mode is "only-if-cached", then return a - // network error. - if (httpRequest.mode === "only-if-cached") { - return makeNetworkError("only if cached"); - } - - // 2. Let forwardResponse be the result of running HTTP-network fetch - // given httpFetchParams, includeCredentials, and isNewConnectionFetch. - const forwardResponse = await httpNetworkFetch( - httpFetchParams, - includeCredentials, - isNewConnectionFetch, - ); - - // 3. If httpRequest’s method is unsafe and forwardResponse’s status is - // in the range 200 to 399, inclusive, invalidate appropriate stored - // responses in httpCache, as per the "Invalidation" chapter of HTTP - // Caching, and set storedResponse to null. [HTTP-CACHING] - if ( - !safeMethodsSet.has(httpRequest.method) && - forwardResponse.status >= 200 && - forwardResponse.status <= 399 - ) { - // TODO: cache - } - - // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, - // then: - if (revalidatingFlag && forwardResponse.status === 304) { - // TODO: cache - } - - // 5. If response is null, then: - if (response == null) { - // 1. Set response to forwardResponse. - response = forwardResponse; - - // 2. Store httpRequest and forwardResponse in httpCache, as per the - // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] - // TODO: cache - } - } - - // 11. Set response’s URL list to a clone of httpRequest’s URL list. - response.urlList = [...httpRequest.urlList]; - - // 12. If httpRequest’s header list contains `Range`, then set response’s - // range-requested flag. - if (httpRequest.headersList.contains("range")) { - response.rangeRequested = true; - } - - // 13. Set response’s request-includes-credentials to includeCredentials. - response.requestIncludesCredentials = includeCredentials; - - // 14. If response’s status is 401, httpRequest’s response tainting is not - // "cors", includeCredentials is true, and request’s window is an environment - // settings object, then: - // TODO - - // 15. If response’s status is 407, then: - if (response.status === 407) { - // 1. If request’s window is "no-window", then return a network error. - if (request.window === "no-window") { - return makeNetworkError(); - } - - // 2. ??? - - // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams); - } - - // 4. Prompt the end user as appropriate in request’s window and store - // the result as a proxy-authentication entry. [HTTP-AUTH] - // TODO: Invoke some kind of callback? - - // 5. Set response to the result of running HTTP-network-or-cache fetch given - // fetchParams. - // TODO - return makeNetworkError("proxy authentication required"); - } - - // 16. If all of the following are true - if ( - // response’s status is 421 - response.status === 421 && - // isNewConnectionFetch is false - !isNewConnectionFetch && - // request’s body is null, or request’s body is non-null and request’s body’s source is non-null - (request.body == null || request.body.source != null) - ) { - // then: - - // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams); - } - - // 2. Set response to the result of running HTTP-network-or-cache - // fetch given fetchParams, isAuthenticationFetch, and true. - - // TODO (spec): The spec doesn't specify this but we need to cancel - // the active response before we can start a new one. - // https://github.com/whatwg/fetch/issues/1293 - fetchParams.controller.connection.destroy(); - - response = await httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch, true); - } - - // 17. If isAuthenticationFetch is true, then create an authentication entry - if (isAuthenticationFetch) { - // TODO - } - - // 18. Return response. - return response; - } - - // https://fetch.spec.whatwg.org/#http-network-fetch - async function httpNetworkFetch( - fetchParams, - includeCredentials = false, - forceNewConnection = false, - ) { - assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); - - fetchParams.controller.connection = { - abort: null, - destroyed: false, - destroy(err) { - if (!this.destroyed) { - this.destroyed = true; - this.abort?.(err ?? new DOMException("The operation was aborted.", "AbortError")); - } - }, - }; - - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; - - // 4. Let httpCache be the result of determining the HTTP cache partition, - // given request. - // TODO: cache - const httpCache = null; - - // 5. If httpCache is null, then set request’s cache mode to "no-store". - if (httpCache == null) { - request.cache = "no-store"; - } - - // 6. Let networkPartitionKey be the result of determining the network - // partition key given request. - // TODO - - // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise - // "no". - const newConnection = forceNewConnection ? "yes" : "no"; // eslint-disable-line no-unused-vars - - // 8. Switch on request’s mode: - if (request.mode === "websocket") { - // Let connection be the result of obtaining a WebSocket connection, - // given request’s current URL. - // TODO - } else { - // Let connection be the result of obtaining a connection, given - // networkPartitionKey, request’s current URL’s origin, - // includeCredentials, and forceNewConnection. - // TODO - } - - // 9. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. If connection is failure, then return a network error. - - // 2. Set timingInfo’s final connection timing info to the result of - // calling clamp and coarsen connection timing info with connection’s - // timing info, timingInfo’s post-redirect start time, and fetchParams’s - // cross-origin isolated capability. - - // 3. If connection is not an HTTP/2 connection, request’s body is non-null, - // and request’s body’s source is null, then append (`Transfer-Encoding`, - // `chunked`) to request’s header list. - - // 4. Set timingInfo’s final network-request start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated - // capability. - - // 5. Set response to the result of making an HTTP request over connection - // using request with the following caveats: - - // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] - // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] - - // - If request’s body is non-null, and request’s body’s source is null, - // then the user agent may have a buffer of up to 64 kibibytes and store - // a part of request’s body in that buffer. If the user agent reads from - // request’s body beyond that buffer’s size and the user agent needs to - // resend request, then instead return a network error. - - // - Set timingInfo’s final network-response start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated capability, - // immediately after the user agent’s HTTP parser receives the first byte - // of the response (e.g., frame header bytes for HTTP/2 or response status - // line for HTTP/1.x). - - // - Wait until all the headers are transmitted. - - // - Any responses whose status is in the range 100 to 199, inclusive, - // and is not 101, are to be ignored, except for the purposes of setting - // timingInfo’s final network-response start time above. - - // - If request’s header list contains `Transfer-Encoding`/`chunked` and - // response is transferred via HTTP/1.0 or older, then return a network - // error. - - // - If the HTTP request results in a TLS client certificate dialog, then: - - // 1. If request’s window is an environment settings object, make the - // dialog available in request’s window. - - // 2. Otherwise, return a network error. - - // To transmit request’s body body, run these steps: - let requestBody = null; - // 1. If body is null and fetchParams’s process request end-of-body is - // non-null, then queue a fetch task given fetchParams’s process request - // end-of-body and fetchParams’s task destination. - if (request.body == null && fetchParams.processRequestEndOfBody) { - queueMicrotask(() => fetchParams.processRequestEndOfBody()); - } else if (request.body != null) { - // 2. Otherwise, if body is non-null: - - // 1. Let processBodyChunk given bytes be these steps: - const processBodyChunk = async function* (bytes) { - // 1. If the ongoing fetch is terminated, then abort these steps. - if (isCancelled(fetchParams)) { - return; - } - - // 2. Run this step in parallel: transmit bytes. - yield bytes; - - // 3. If fetchParams’s process request body is non-null, then run - // fetchParams’s process request body given bytes’s length. - fetchParams.processRequestBodyChunkLength?.(bytes.byteLength); - }; - - // 2. Let processEndOfBody be these steps: - const processEndOfBody = () => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return; - } - - // 2. If fetchParams’s process request end-of-body is non-null, - // then run fetchParams’s process request end-of-body. - if (fetchParams.processRequestEndOfBody) { - fetchParams.processRequestEndOfBody(); - } - }; - - // 3. Let processBodyError given e be these steps: - const processBodyError = (e) => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return; - } - - // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. - if (e.name === "AbortError") { - fetchParams.controller.abort(); - } else { - fetchParams.controller.terminate(e); - } - }; - - // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, - // processBodyError, and fetchParams’s task destination. - requestBody = (async function* () { - try { - for await (const bytes of request.body.stream) { - yield* processBodyChunk(bytes); - } - processEndOfBody(); - } catch (err) { - processBodyError(err); - } - })(); - } - - try { - // socket is only provided for websockets - const { body, status, statusText, headersList, socket } = await dispatch({ - body: requestBody, - }); - - if (socket) { - response = makeResponse({ status, statusText, headersList, socket }); - } else { - const iterator = body[Symbol.asyncIterator](); - fetchParams.controller.next = () => iterator.next(); - - response = makeResponse({ status, statusText, headersList }); - } - } catch (err) { - // 10. If aborted, then: - if (err.name === "AbortError") { - // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. - fetchParams.controller.connection.destroy(); - - // 2. Return the appropriate network error for fetchParams. - return makeAppropriateNetworkError(fetchParams, err); - } - - return makeNetworkError(err); - } - - // 11. Let pullAlgorithm be an action that resumes the ongoing fetch - // if it is suspended. - const pullAlgorithm = () => { - fetchParams.controller.resume(); - }; - - // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s - // controller with reason, given reason. - const cancelAlgorithm = (reason) => { - fetchParams.controller.abort(reason); - }; - - // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by - // the user agent. - // TODO - - // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object - // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. - // TODO - - // 15. Let stream be a new ReadableStream. - // 16. Set up stream with pullAlgorithm set to pullAlgorithm, - // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to - // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - const stream = new ReadableStream( - { - async start(controller) { - fetchParams.controller.controller = controller; - }, - async pull(controller) { - await pullAlgorithm(controller); - }, - async cancel(reason) { - await cancelAlgorithm(reason); - }, - }, - { - highWaterMark: 0, - size() { - return 1; - }, - }, - ); - - // 17. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. Set response’s body to a new body whose stream is stream. - response.body = { stream }; - - // 2. If response is not a network error and request’s cache mode is - // not "no-store", then update response in httpCache for request. - // TODO - - // 3. If includeCredentials is true and the user agent is not configured - // to block cookies for request (see section 7 of [COOKIES]), then run the - // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on - // the value of each header whose name is a byte-case-insensitive match for - // `Set-Cookie` in response’s header list, if any, and request’s current URL. - // TODO - - // 18. If aborted, then: - // TODO - - // 19. Run these steps in parallel: - - // 1. Run these steps, but abort when fetchParams is canceled: - fetchParams.controller.on("terminated", onAborted); - fetchParams.controller.resume = async () => { - // 1. While true - while (true) { - // 1-3. See onData... - - // 4. Set bytes to the result of handling content codings given - // codings and bytes. - let bytes; - let isFailure; - try { - const { done, value } = await fetchParams.controller.next(); - - if (isAborted(fetchParams)) { - break; - } - - bytes = done ? undefined : value; - } catch (err) { - if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { - // zlib doesn't like empty streams. - bytes = undefined; - } else { - bytes = err; - - // err may be propagated from the result of calling readablestream.cancel, - // which might not be an error. https://github.com/nodejs/undici/issues/2009 - isFailure = true; - } - } - - if (bytes === undefined) { - // 2. Otherwise, if the bytes transmission for response’s message - // body is done normally and stream is readable, then close - // stream, finalize response for fetchParams and response, and - // abort these in-parallel steps. - readableStreamClose(fetchParams.controller.controller); - - finalizeResponse(fetchParams, response); - - return; - } - - // 5. Increase timingInfo’s decoded body size by bytes’s length. - timingInfo.decodedBodySize += bytes?.byteLength ?? 0; - - // 6. If bytes is failure, then terminate fetchParams’s controller. - if (isFailure) { - fetchParams.controller.terminate(bytes); - return; - } - - // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes - // into stream. - fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); - - // 8. If stream is errored, then terminate the ongoing fetch. - if (isErrored(stream)) { - fetchParams.controller.terminate(); - return; - } - - // 9. If stream doesn’t need more data ask the user agent to suspend - // the ongoing fetch. - if (!fetchParams.controller.controller.desiredSize) { - return; - } - } - }; - - // 2. If aborted, then: - function onAborted(reason) { - // 2. If fetchParams is aborted, then: - if (isAborted(fetchParams)) { - // 1. Set response’s aborted flag. - response.aborted = true; - - // 2. If stream is readable, then error stream with the result of - // deserialize a serialized abort reason given fetchParams’s - // controller’s serialized abort reason and an - // implementation-defined realm. - if (isReadable(stream)) { - fetchParams.controller.controller.error( - fetchParams.controller.serializedAbortReason, - ); - } - } else { - // 3. Otherwise, if stream is readable, error stream with a TypeError. - if (isReadable(stream)) { - fetchParams.controller.controller.error( - new TypeError("terminated", { - cause: isErrorLike(reason) ? reason : undefined, - }), - ); - } - } - - // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. - // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. - fetchParams.controller.connection.destroy(); - } - - // 20. Return response. - return response; - - async function dispatch({ body }) { - const url = requestCurrentURL(request); - /** @type {import('../..').Agent} */ - const agent = fetchParams.controller.dispatcher; - - return new Promise((resolve, reject) => - agent.dispatch( - { - path: url.pathname + url.search, - origin: url.origin, - method: request.method, - body: fetchParams.controller.dispatcher.isMockActive - ? request.body && (request.body.source || request.body.stream) - : body, - headers: request.headersList.entries, - maxRedirections: 0, - upgrade: request.mode === "websocket" ? "websocket" : undefined, - }, - { - body: null, - abort: null, - - onConnect(abort) { - // TODO (fix): Do we need connection here? - const { connection } = fetchParams.controller; - - if (connection.destroyed) { - abort(new DOMException("The operation was aborted.", "AbortError")); - } else { - fetchParams.controller.on("terminated", abort); - this.abort = connection.abort = abort; - } - }, - - onHeaders(status, headersList, resume, statusText) { - if (status < 200) { - return; - } - - let codings = []; - let location = ""; - - const headers = new Headers(); - - // For H2, the headers are a plain JS object - // We distinguish between them and iterate accordingly - if (Array.isArray(headersList)) { - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString("latin1"); - const val = headersList[n + 1].toString("latin1"); - if (key.toLowerCase() === "content-encoding") { - // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 - // "All content-coding values are case-insensitive..." - codings = val - .toLowerCase() - .split(",") - .map((x) => x.trim()); - } else if (key.toLowerCase() === "location") { - location = val; - } - - headers[kHeadersList].append(key, val); - } - } else { - const keys = Object.keys(headersList); - for (const key of keys) { - const val = headersList[key]; - if (key.toLowerCase() === "content-encoding") { - // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 - // "All content-coding values are case-insensitive..." - codings = val - .toLowerCase() - .split(",") - .map((x) => x.trim()) - .reverse(); - } else if (key.toLowerCase() === "location") { - location = val; - } - - headers[kHeadersList].append(key, val); - } - } - - this.body = new Readable({ read: resume }); - - const decoders = []; - - const willFollow = - request.redirect === "follow" && - location && - redirectStatusSet.has(status); - - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding - if ( - request.method !== "HEAD" && - request.method !== "CONNECT" && - !nullBodyStatus.includes(status) && - !willFollow - ) { - for (const coding of codings) { - // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 - if (coding === "x-gzip" || coding === "gzip") { - decoders.push( - zlib.createGunzip({ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH, - }), - ); - } else if (coding === "deflate") { - decoders.push(zlib.createInflate()); - } else if (coding === "br") { - decoders.push(zlib.createBrotliDecompress()); - } else { - decoders.length = 0; - break; - } - } - } - - resolve({ - status, - statusText, - headersList: headers[kHeadersList], - body: decoders.length - ? pipeline(this.body, ...decoders, () => {}) - : this.body.on("error", () => {}), - }); - - return true; - }, - - onData(chunk) { - if (fetchParams.controller.dump) { - return; - } - - // 1. If one or more bytes have been transmitted from response’s - // message body, then: - - // 1. Let bytes be the transmitted bytes. - const bytes = chunk; - - // 2. Let codings be the result of extracting header list values - // given `Content-Encoding` and response’s header list. - // See pullAlgorithm. - - // 3. Increase timingInfo’s encoded body size by bytes’s length. - timingInfo.encodedBodySize += bytes.byteLength; - - // 4. See pullAlgorithm... - - return this.body.push(bytes); - }, - - onComplete() { - if (this.abort) { - fetchParams.controller.off("terminated", this.abort); - } - - fetchParams.controller.ended = true; - - this.body.push(null); - }, - - onError(error) { - if (this.abort) { - fetchParams.controller.off("terminated", this.abort); - } - - this.body?.destroy(error); - - fetchParams.controller.terminate(error); - - reject(error); - }, - - onUpgrade(status, headersList, socket) { - if (status !== 101) { - return; - } - - const headers = new Headers(); - - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString("latin1"); - const val = headersList[n + 1].toString("latin1"); - - headers[kHeadersList].append(key, val); - } - - resolve({ - status, - statusText: STATUS_CODES[status], - headersList: headers[kHeadersList], - socket, - }); - - return true; - }, - }, - ), - ); - } - } - - module.exports = { - fetch, - Fetch, - fetching, - finalizeAndReportTiming, - }; - - /***/ - }, - - /***/ 8359: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - /* globals AbortController */ - - const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(1472); - const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(554); - const { FinalizationRegistry } = __nccwpck_require__(6436)(); - const util = __nccwpck_require__(3983); - const { - isValidHTTPToken, - sameOrigin, - normalizeMethod, - makePolicyContainer, - normalizeMethodRecord, - } = __nccwpck_require__(2538); - const { - forbiddenMethodsSet, - corsSafeListedMethodsSet, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - requestDuplex, - } = __nccwpck_require__(1037); - const { kEnumerableProperty } = util; - const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(5861); - const { webidl } = __nccwpck_require__(1744); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { URLSerializer } = __nccwpck_require__(685); - const { kHeadersList, kConstruct } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = - __nccwpck_require__(2361); - - let TransformStream = globalThis.TransformStream; - - const kAbortController = Symbol("abortController"); - - const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { - signal.removeEventListener("abort", abort); - }); - - // https://fetch.spec.whatwg.org/#request-class - class Request { - // https://fetch.spec.whatwg.org/#dom-request - constructor(input, init = {}) { - if (input === kConstruct) { - return; - } - - webidl.argumentLengthCheck(arguments, 1, { header: "Request constructor" }); - - input = webidl.converters.RequestInfo(input); - init = webidl.converters.RequestInit(init); - - // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object - this[kRealm] = { - settingsObject: { - baseUrl: getGlobalOrigin(), - get origin() { - return this.baseUrl?.origin; - }, - policyContainer: makePolicyContainer(), - }, - }; - - // 1. Let request be null. - let request = null; - - // 2. Let fallbackMode be null. - let fallbackMode = null; - - // 3. Let baseURL be this’s relevant settings object’s API base URL. - const baseUrl = this[kRealm].settingsObject.baseUrl; - - // 4. Let signal be null. - let signal = null; - - // 5. If input is a string, then: - if (typeof input === "string") { - // 1. Let parsedURL be the result of parsing input with baseURL. - // 2. If parsedURL is failure, then throw a TypeError. - let parsedURL; - try { - parsedURL = new URL(input, baseUrl); - } catch (err) { - throw new TypeError("Failed to parse URL from " + input, { cause: err }); - } - - // 3. If parsedURL includes credentials, then throw a TypeError. - if (parsedURL.username || parsedURL.password) { - throw new TypeError( - "Request cannot be constructed from a URL that includes credentials: " + - input, - ); - } - - // 4. Set request to a new request whose URL is parsedURL. - request = makeRequest({ urlList: [parsedURL] }); - - // 5. Set fallbackMode to "cors". - fallbackMode = "cors"; - } else { - // 6. Otherwise: - - // 7. Assert: input is a Request object. - assert(input instanceof Request); - - // 8. Set request to input’s request. - request = input[kState]; - - // 9. Set signal to input’s signal. - signal = input[kSignal]; - } - - // 7. Let origin be this’s relevant settings object’s origin. - const origin = this[kRealm].settingsObject.origin; - - // 8. Let window be "client". - let window = "client"; - - // 9. If request’s window is an environment settings object and its origin - // is same origin with origin, then set window to request’s window. - if ( - request.window?.constructor?.name === "EnvironmentSettingsObject" && - sameOrigin(request.window, origin) - ) { - window = request.window; - } - - // 10. If init["window"] exists and is non-null, then throw a TypeError. - if (init.window != null) { - throw new TypeError(`'window' option '${window}' must be null`); - } - - // 11. If init["window"] exists, then set window to "no-window". - if ("window" in init) { - window = "no-window"; - } - - // 12. Set request to a new request with the following properties: - request = makeRequest({ - // URL request’s URL. - // undici implementation note: this is set as the first item in request's urlList in makeRequest - // method request’s method. - method: request.method, - // header list A copy of request’s header list. - // undici implementation note: headersList is cloned in makeRequest - headersList: request.headersList, - // unsafe-request flag Set. - unsafeRequest: request.unsafeRequest, - // client This’s relevant settings object. - client: this[kRealm].settingsObject, - // window window. - window, - // priority request’s priority. - priority: request.priority, - // origin request’s origin. The propagation of the origin is only significant for navigation requests - // being handled by a service worker. In this scenario a request can have an origin that is different - // from the current client. - origin: request.origin, - // referrer request’s referrer. - referrer: request.referrer, - // referrer policy request’s referrer policy. - referrerPolicy: request.referrerPolicy, - // mode request’s mode. - mode: request.mode, - // credentials mode request’s credentials mode. - credentials: request.credentials, - // cache mode request’s cache mode. - cache: request.cache, - // redirect mode request’s redirect mode. - redirect: request.redirect, - // integrity metadata request’s integrity metadata. - integrity: request.integrity, - // keepalive request’s keepalive. - keepalive: request.keepalive, - // reload-navigation flag request’s reload-navigation flag. - reloadNavigation: request.reloadNavigation, - // history-navigation flag request’s history-navigation flag. - historyNavigation: request.historyNavigation, - // URL list A clone of request’s URL list. - urlList: [...request.urlList], - }); - - const initHasKey = Object.keys(init).length !== 0; - - // 13. If init is not empty, then: - if (initHasKey) { - // 1. If request’s mode is "navigate", then set it to "same-origin". - if (request.mode === "navigate") { - request.mode = "same-origin"; - } - - // 2. Unset request’s reload-navigation flag. - request.reloadNavigation = false; - - // 3. Unset request’s history-navigation flag. - request.historyNavigation = false; - - // 4. Set request’s origin to "client". - request.origin = "client"; - - // 5. Set request’s referrer to "client" - request.referrer = "client"; - - // 6. Set request’s referrer policy to the empty string. - request.referrerPolicy = ""; - - // 7. Set request’s URL to request’s current URL. - request.url = request.urlList[request.urlList.length - 1]; - - // 8. Set request’s URL list to « request’s URL ». - request.urlList = [request.url]; - } - - // 14. If init["referrer"] exists, then: - if (init.referrer !== undefined) { - // 1. Let referrer be init["referrer"]. - const referrer = init.referrer; - - // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". - if (referrer === "") { - request.referrer = "no-referrer"; - } else { - // 1. Let parsedReferrer be the result of parsing referrer with - // baseURL. - // 2. If parsedReferrer is failure, then throw a TypeError. - let parsedReferrer; - try { - parsedReferrer = new URL(referrer, baseUrl); - } catch (err) { - throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { - cause: err, - }); - } - - // 3. If one of the following is true - // - parsedReferrer’s scheme is "about" and path is the string "client" - // - parsedReferrer’s origin is not same origin with origin - // then set request’s referrer to "client". - if ( - (parsedReferrer.protocol === "about:" && - parsedReferrer.hostname === "client") || - (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) - ) { - request.referrer = "client"; - } else { - // 4. Otherwise, set request’s referrer to parsedReferrer. - request.referrer = parsedReferrer; - } - } - } - - // 15. If init["referrerPolicy"] exists, then set request’s referrer policy - // to it. - if (init.referrerPolicy !== undefined) { - request.referrerPolicy = init.referrerPolicy; - } - - // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. - let mode; - if (init.mode !== undefined) { - mode = init.mode; - } else { - mode = fallbackMode; - } - - // 17. If mode is "navigate", then throw a TypeError. - if (mode === "navigate") { - throw webidl.errors.exception({ - header: "Request constructor", - message: "invalid request mode navigate.", - }); - } - - // 18. If mode is non-null, set request’s mode to mode. - if (mode != null) { - request.mode = mode; - } - - // 19. If init["credentials"] exists, then set request’s credentials mode - // to it. - if (init.credentials !== undefined) { - request.credentials = init.credentials; - } - - // 18. If init["cache"] exists, then set request’s cache mode to it. - if (init.cache !== undefined) { - request.cache = init.cache; - } - - // 21. If request’s cache mode is "only-if-cached" and request’s mode is - // not "same-origin", then throw a TypeError. - if (request.cache === "only-if-cached" && request.mode !== "same-origin") { - throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode"); - } - - // 22. If init["redirect"] exists, then set request’s redirect mode to it. - if (init.redirect !== undefined) { - request.redirect = init.redirect; - } - - // 23. If init["integrity"] exists, then set request’s integrity metadata to it. - if (init.integrity != null) { - request.integrity = String(init.integrity); - } - - // 24. If init["keepalive"] exists, then set request’s keepalive to it. - if (init.keepalive !== undefined) { - request.keepalive = Boolean(init.keepalive); - } - - // 25. If init["method"] exists, then: - if (init.method !== undefined) { - // 1. Let method be init["method"]. - let method = init.method; - - // 2. If method is not a method or method is a forbidden method, then - // throw a TypeError. - if (!isValidHTTPToken(method)) { - throw new TypeError(`'${method}' is not a valid HTTP method.`); - } - - if (forbiddenMethodsSet.has(method.toUpperCase())) { - throw new TypeError(`'${method}' HTTP method is unsupported.`); - } - - // 3. Normalize method. - method = normalizeMethodRecord[method] ?? normalizeMethod(method); - - // 4. Set request’s method to method. - request.method = method; - } - - // 26. If init["signal"] exists, then set signal to it. - if (init.signal !== undefined) { - signal = init.signal; - } - - // 27. Set this’s request to request. - this[kState] = request; - - // 28. Set this’s signal to a new AbortSignal object with this’s relevant - // Realm. - // TODO: could this be simplified with AbortSignal.any - // (https://dom.spec.whatwg.org/#dom-abortsignal-any) - const ac = new AbortController(); - this[kSignal] = ac.signal; - this[kSignal][kRealm] = this[kRealm]; - - // 29. If signal is not null, then make this’s signal follow signal. - if (signal != null) { - if ( - !signal || - typeof signal.aborted !== "boolean" || - typeof signal.addEventListener !== "function" - ) { - throw new TypeError( - "Failed to construct 'Request': member signal is not of type AbortSignal.", - ); - } - - if (signal.aborted) { - ac.abort(signal.reason); - } else { - // Keep a strong ref to ac while request object - // is alive. This is needed to prevent AbortController - // from being prematurely garbage collected. - // See, https://github.com/nodejs/undici/issues/1926. - this[kAbortController] = ac; - - const acRef = new WeakRef(ac); - const abort = function () { - const ac = acRef.deref(); - if (ac !== undefined) { - ac.abort(this.reason); - } - }; - - // Third-party AbortControllers may not work with these. - // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. - try { - // If the max amount of listeners is equal to the default, increase it - // This is only available in node >= v19.9.0 - if ( - typeof getMaxListeners === "function" && - getMaxListeners(signal) === defaultMaxListeners - ) { - setMaxListeners(100, signal); - } else if (getEventListeners(signal, "abort").length >= defaultMaxListeners) { - setMaxListeners(100, signal); - } - } catch {} - - util.addAbortListener(signal, abort); - requestFinalizer.register(ac, { signal, abort }); - } - } - - // 30. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is request’s header list and guard is - // "request". - this[kHeaders] = new Headers(kConstruct); - this[kHeaders][kHeadersList] = request.headersList; - this[kHeaders][kGuard] = "request"; - this[kHeaders][kRealm] = this[kRealm]; - - // 31. If this’s request’s mode is "no-cors", then: - if (mode === "no-cors") { - // 1. If this’s request’s method is not a CORS-safelisted method, - // then throw a TypeError. - if (!corsSafeListedMethodsSet.has(request.method)) { - throw new TypeError(`'${request.method} is unsupported in no-cors mode.`); - } - - // 2. Set this’s headers’s guard to "request-no-cors". - this[kHeaders][kGuard] = "request-no-cors"; - } - - // 32. If init is not empty, then: - if (initHasKey) { - /** @type {HeadersList} */ - const headersList = this[kHeaders][kHeadersList]; - // 1. Let headers be a copy of this’s headers and its associated header - // list. - // 2. If init["headers"] exists, then set headers to init["headers"]. - const headers = - init.headers !== undefined ? init.headers : new HeadersList(headersList); - - // 3. Empty this’s headers’s header list. - headersList.clear(); - - // 4. If headers is a Headers object, then for each header in its header - // list, append header’s name/header’s value to this’s headers. - if (headers instanceof HeadersList) { - for (const [key, val] of headers) { - headersList.append(key, val); - } - // Note: Copy the `set-cookie` meta-data. - headersList.cookies = headers.cookies; - } else { - // 5. Otherwise, fill this’s headers with headers. - fillHeaders(this[kHeaders], headers); - } - } - - // 33. Let inputBody be input’s request’s body if input is a Request - // object; otherwise null. - const inputBody = input instanceof Request ? input[kState].body : null; - - // 34. If either init["body"] exists and is non-null or inputBody is - // non-null, and request’s method is `GET` or `HEAD`, then throw a - // TypeError. - if ( - (init.body != null || inputBody != null) && - (request.method === "GET" || request.method === "HEAD") - ) { - throw new TypeError("Request with GET/HEAD method cannot have body."); - } - - // 35. Let initBody be null. - let initBody = null; - - // 36. If init["body"] exists and is non-null, then: - if (init.body != null) { - // 1. Let Content-Type be null. - // 2. Set initBody and Content-Type to the result of extracting - // init["body"], with keepalive set to request’s keepalive. - const [extractedBody, contentType] = extractBody(init.body, request.keepalive); - initBody = extractedBody; - - // 3, If Content-Type is non-null and this’s headers’s header list does - // not contain `Content-Type`, then append `Content-Type`/Content-Type to - // this’s headers. - if (contentType && !this[kHeaders][kHeadersList].contains("content-type")) { - this[kHeaders].append("content-type", contentType); - } - } - - // 37. Let inputOrInitBody be initBody if it is non-null; otherwise - // inputBody. - const inputOrInitBody = initBody ?? inputBody; - - // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is - // null, then: - if (inputOrInitBody != null && inputOrInitBody.source == null) { - // 1. If initBody is non-null and init["duplex"] does not exist, - // then throw a TypeError. - if (initBody != null && init.duplex == null) { - throw new TypeError( - "RequestInit: duplex option is required when sending a body.", - ); - } - - // 2. If this’s request’s mode is neither "same-origin" nor "cors", - // then throw a TypeError. - if (request.mode !== "same-origin" && request.mode !== "cors") { - throw new TypeError( - 'If request is made from ReadableStream, mode should be "same-origin" or "cors"', - ); - } - - // 3. Set this’s request’s use-CORS-preflight flag. - request.useCORSPreflightFlag = true; - } - - // 39. Let finalBody be inputOrInitBody. - let finalBody = inputOrInitBody; - - // 40. If initBody is null and inputBody is non-null, then: - if (initBody == null && inputBody != null) { - // 1. If input is unusable, then throw a TypeError. - if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { - throw new TypeError( - "Cannot construct a Request with a Request object that has already been used.", - ); - } - - // 2. Set finalBody to the result of creating a proxy for inputBody. - if (!TransformStream) { - TransformStream = __nccwpck_require__(5356).TransformStream; - } - - // https://streams.spec.whatwg.org/#readablestream-create-a-proxy - const identityTransform = new TransformStream(); - inputBody.stream.pipeThrough(identityTransform); - finalBody = { - source: inputBody.source, - length: inputBody.length, - stream: identityTransform.readable, - }; - } - - // 41. Set this’s request’s body to finalBody. - this[kState].body = finalBody; - } - - // Returns request’s HTTP method, which is "GET" by default. - get method() { - webidl.brandCheck(this, Request); - - // The method getter steps are to return this’s request’s method. - return this[kState].method; - } - - // Returns the URL of request as a string. - get url() { - webidl.brandCheck(this, Request); - - // The url getter steps are to return this’s request’s URL, serialized. - return URLSerializer(this[kState].url); - } - - // Returns a Headers object consisting of the headers associated with request. - // Note that headers added in the network layer by the user agent will not - // be accounted for in this object, e.g., the "Host" header. - get headers() { - webidl.brandCheck(this, Request); - - // The headers getter steps are to return this’s headers. - return this[kHeaders]; - } - - // Returns the kind of resource requested by request, e.g., "document" - // or "script". - get destination() { - webidl.brandCheck(this, Request); - - // The destination getter are to return this’s request’s destination. - return this[kState].destination; - } - - // Returns the referrer of request. Its value can be a same-origin URL if - // explicitly set in init, the empty string to indicate no referrer, and - // "about:client" when defaulting to the global’s default. This is used - // during fetching to determine the value of the `Referer` header of the - // request being made. - get referrer() { - webidl.brandCheck(this, Request); - - // 1. If this’s request’s referrer is "no-referrer", then return the - // empty string. - if (this[kState].referrer === "no-referrer") { - return ""; - } - - // 2. If this’s request’s referrer is "client", then return - // "about:client". - if (this[kState].referrer === "client") { - return "about:client"; - } - - // Return this’s request’s referrer, serialized. - return this[kState].referrer.toString(); - } - - // Returns the referrer policy associated with request. - // This is used during fetching to compute the value of the request’s - // referrer. - get referrerPolicy() { - webidl.brandCheck(this, Request); - - // The referrerPolicy getter steps are to return this’s request’s referrer policy. - return this[kState].referrerPolicy; - } - - // Returns the mode associated with request, which is a string indicating - // whether the request will use CORS, or will be restricted to same-origin - // URLs. - get mode() { - webidl.brandCheck(this, Request); - - // The mode getter steps are to return this’s request’s mode. - return this[kState].mode; - } - - // Returns the credentials mode associated with request, - // which is a string indicating whether credentials will be sent with the - // request always, never, or only when sent to a same-origin URL. - get credentials() { - // The credentials getter steps are to return this’s request’s credentials mode. - return this[kState].credentials; - } - - // Returns the cache mode associated with request, - // which is a string indicating how the request will - // interact with the browser’s cache when fetching. - get cache() { - webidl.brandCheck(this, Request); - - // The cache getter steps are to return this’s request’s cache mode. - return this[kState].cache; - } - - // Returns the redirect mode associated with request, - // which is a string indicating how redirects for the - // request will be handled during fetching. A request - // will follow redirects by default. - get redirect() { - webidl.brandCheck(this, Request); - - // The redirect getter steps are to return this’s request’s redirect mode. - return this[kState].redirect; - } - - // Returns request’s subresource integrity metadata, which is a - // cryptographic hash of the resource being fetched. Its value - // consists of multiple hashes separated by whitespace. [SRI] - get integrity() { - webidl.brandCheck(this, Request); - - // The integrity getter steps are to return this’s request’s integrity - // metadata. - return this[kState].integrity; - } - - // Returns a boolean indicating whether or not request can outlive the - // global in which it was created. - get keepalive() { - webidl.brandCheck(this, Request); - - // The keepalive getter steps are to return this’s request’s keepalive. - return this[kState].keepalive; - } - - // Returns a boolean indicating whether or not request is for a reload - // navigation. - get isReloadNavigation() { - webidl.brandCheck(this, Request); - - // The isReloadNavigation getter steps are to return true if this’s - // request’s reload-navigation flag is set; otherwise false. - return this[kState].reloadNavigation; - } - - // Returns a boolean indicating whether or not request is for a history - // navigation (a.k.a. back-foward navigation). - get isHistoryNavigation() { - webidl.brandCheck(this, Request); - - // The isHistoryNavigation getter steps are to return true if this’s request’s - // history-navigation flag is set; otherwise false. - return this[kState].historyNavigation; - } - - // Returns the signal associated with request, which is an AbortSignal - // object indicating whether or not request has been aborted, and its - // abort event handler. - get signal() { - webidl.brandCheck(this, Request); - - // The signal getter steps are to return this’s signal. - return this[kSignal]; - } - - get body() { - webidl.brandCheck(this, Request); - - return this[kState].body ? this[kState].body.stream : null; - } - - get bodyUsed() { - webidl.brandCheck(this, Request); - - return !!this[kState].body && util.isDisturbed(this[kState].body.stream); - } - - get duplex() { - webidl.brandCheck(this, Request); - - return "half"; - } - - // Returns a clone of request. - clone() { - webidl.brandCheck(this, Request); - - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || this.body?.locked) { - throw new TypeError("unusable"); - } - - // 2. Let clonedRequest be the result of cloning this’s request. - const clonedRequest = cloneRequest(this[kState]); - - // 3. Let clonedRequestObject be the result of creating a Request object, - // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. - const clonedRequestObject = new Request(kConstruct); - clonedRequestObject[kState] = clonedRequest; - clonedRequestObject[kRealm] = this[kRealm]; - clonedRequestObject[kHeaders] = new Headers(kConstruct); - clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; - clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; - - // 4. Make clonedRequestObject’s signal follow this’s signal. - const ac = new AbortController(); - if (this.signal.aborted) { - ac.abort(this.signal.reason); - } else { - util.addAbortListener(this.signal, () => { - ac.abort(this.signal.reason); - }); - } - clonedRequestObject[kSignal] = ac.signal; - - // 4. Return clonedRequestObject. - return clonedRequestObject; - } - } - - mixinBody(Request); - - function makeRequest(init) { - // https://fetch.spec.whatwg.org/#requests - const request = { - method: "GET", - localURLsOnly: false, - unsafeRequest: false, - body: null, - client: null, - reservedClient: null, - replacesClientId: "", - window: "client", - keepalive: false, - serviceWorkers: "all", - initiator: "", - destination: "", - priority: null, - origin: "client", - policyContainer: "client", - referrer: "client", - referrerPolicy: "", - mode: "no-cors", - useCORSPreflightFlag: false, - credentials: "same-origin", - useCredentials: false, - cache: "default", - redirect: "follow", - integrity: "", - cryptoGraphicsNonceMetadata: "", - parserMetadata: "", - reloadNavigation: false, - historyNavigation: false, - userActivation: false, - taintedOrigin: false, - redirectCount: 0, - responseTainting: "basic", - preventNoCacheCacheControlHeaderModification: false, - done: false, - timingAllowFailed: false, - ...init, - headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), - }; - request.url = request.urlList[0]; - return request; - } - - // https://fetch.spec.whatwg.org/#concept-request-clone - function cloneRequest(request) { - // To clone a request request, run these steps: - - // 1. Let newRequest be a copy of request, except for its body. - const newRequest = makeRequest({ ...request, body: null }); - - // 2. If request’s body is non-null, set newRequest’s body to the - // result of cloning request’s body. - if (request.body != null) { - newRequest.body = cloneBody(request.body); - } - - // 3. Return newRequest. - return newRequest; - } - - Object.defineProperties(Request.prototype, { - method: kEnumerableProperty, - url: kEnumerableProperty, - headers: kEnumerableProperty, - redirect: kEnumerableProperty, - clone: kEnumerableProperty, - signal: kEnumerableProperty, - duplex: kEnumerableProperty, - destination: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - isHistoryNavigation: kEnumerableProperty, - isReloadNavigation: kEnumerableProperty, - keepalive: kEnumerableProperty, - integrity: kEnumerableProperty, - cache: kEnumerableProperty, - credentials: kEnumerableProperty, - attribute: kEnumerableProperty, - referrerPolicy: kEnumerableProperty, - referrer: kEnumerableProperty, - mode: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "Request", - configurable: true, - }, - }); - - webidl.converters.Request = webidl.interfaceConverter(Request); - - // https://fetch.spec.whatwg.org/#requestinfo - webidl.converters.RequestInfo = function (V) { - if (typeof V === "string") { - return webidl.converters.USVString(V); - } - - if (V instanceof Request) { - return webidl.converters.Request(V); - } - - return webidl.converters.USVString(V); - }; - - webidl.converters.AbortSignal = webidl.interfaceConverter(AbortSignal); - - // https://fetch.spec.whatwg.org/#requestinit - webidl.converters.RequestInit = webidl.dictionaryConverter([ - { - key: "method", - converter: webidl.converters.ByteString, - }, - { - key: "headers", - converter: webidl.converters.HeadersInit, - }, - { - key: "body", - converter: webidl.nullableConverter(webidl.converters.BodyInit), - }, - { - key: "referrer", - converter: webidl.converters.USVString, - }, - { - key: "referrerPolicy", - converter: webidl.converters.DOMString, - // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy - allowedValues: referrerPolicy, - }, - { - key: "mode", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#concept-request-mode - allowedValues: requestMode, - }, - { - key: "credentials", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcredentials - allowedValues: requestCredentials, - }, - { - key: "cache", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcache - allowedValues: requestCache, - }, - { - key: "redirect", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestredirect - allowedValues: requestRedirect, - }, - { - key: "integrity", - converter: webidl.converters.DOMString, - }, - { - key: "keepalive", - converter: webidl.converters.boolean, - }, - { - key: "signal", - converter: webidl.nullableConverter((signal) => - webidl.converters.AbortSignal(signal, { strict: false }), - ), - }, - { - key: "window", - converter: webidl.converters.any, - }, - { - key: "duplex", - converter: webidl.converters.DOMString, - allowedValues: requestDuplex, - }, - ]); - - module.exports = { Request, makeRequest }; - - /***/ - }, - - /***/ 7823: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Headers, HeadersList, fill } = __nccwpck_require__(554); - const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(1472); - const util = __nccwpck_require__(3983); - const { kEnumerableProperty } = util; - const { - isValidReasonPhrase, - isCancelled, - isAborted, - isBlobLike, - serializeJavascriptValueToJSONString, - isErrorLike, - isomorphicEncode, - } = __nccwpck_require__(2538); - const { redirectStatusSet, nullBodyStatus, DOMException } = __nccwpck_require__(1037); - const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861); - const { webidl } = __nccwpck_require__(1744); - const { FormData } = __nccwpck_require__(2015); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { URLSerializer } = __nccwpck_require__(685); - const { kHeadersList, kConstruct } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { types } = __nccwpck_require__(3837); - - const ReadableStream = globalThis.ReadableStream || __nccwpck_require__(5356).ReadableStream; - const textEncoder = new TextEncoder("utf-8"); - - // https://fetch.spec.whatwg.org/#response-class - class Response { - // Creates network error Response. - static error() { - // TODO - const relevantRealm = { settingsObject: {} }; - - // The static error() method steps are to return the result of creating a - // Response object, given a new network error, "immutable", and this’s - // relevant Realm. - const responseObject = new Response(); - responseObject[kState] = makeNetworkError(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; - responseObject[kHeaders][kGuard] = "immutable"; - responseObject[kHeaders][kRealm] = relevantRealm; - return responseObject; - } - - // https://fetch.spec.whatwg.org/#dom-response-json - static json(data, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "Response.json" }); - - if (init !== null) { - init = webidl.converters.ResponseInit(init); - } - - // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. - const bytes = textEncoder.encode(serializeJavascriptValueToJSONString(data)); - - // 2. Let body be the result of extracting bytes. - const body = extractBody(bytes); - - // 3. Let responseObject be the result of creating a Response object, given a new response, - // "response", and this’s relevant Realm. - const relevantRealm = { settingsObject: {} }; - const responseObject = new Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = "response"; - responseObject[kHeaders][kRealm] = relevantRealm; - - // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). - initializeResponse(responseObject, init, { body: body[0], type: "application/json" }); - - // 5. Return responseObject. - return responseObject; - } - - // Creates a redirect Response that redirects to url with status status. - static redirect(url, status = 302) { - const relevantRealm = { settingsObject: {} }; - - webidl.argumentLengthCheck(arguments, 1, { header: "Response.redirect" }); - - url = webidl.converters.USVString(url); - status = webidl.converters["unsigned short"](status); - - // 1. Let parsedURL be the result of parsing url with current settings - // object’s API base URL. - // 2. If parsedURL is failure, then throw a TypeError. - // TODO: base-URL? - let parsedURL; - try { - parsedURL = new URL(url, getGlobalOrigin()); - } catch (err) { - throw Object.assign(new TypeError("Failed to parse URL from " + url), { - cause: err, - }); - } - - // 3. If status is not a redirect status, then throw a RangeError. - if (!redirectStatusSet.has(status)) { - throw new RangeError("Invalid status code " + status); - } - - // 4. Let responseObject be the result of creating a Response object, - // given a new response, "immutable", and this’s relevant Realm. - const responseObject = new Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = "immutable"; - responseObject[kHeaders][kRealm] = relevantRealm; - - // 5. Set responseObject’s response’s status to status. - responseObject[kState].status = status; - - // 6. Let value be parsedURL, serialized and isomorphic encoded. - const value = isomorphicEncode(URLSerializer(parsedURL)); - - // 7. Append `Location`/value to responseObject’s response’s header list. - responseObject[kState].headersList.append("location", value); - - // 8. Return responseObject. - return responseObject; - } - - // https://fetch.spec.whatwg.org/#dom-response - constructor(body = null, init = {}) { - if (body !== null) { - body = webidl.converters.BodyInit(body); - } - - init = webidl.converters.ResponseInit(init); - - // TODO - this[kRealm] = { settingsObject: {} }; - - // 1. Set this’s response to a new response. - this[kState] = makeResponse({}); - - // 2. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is this’s response’s header list and guard - // is "response". - this[kHeaders] = new Headers(kConstruct); - this[kHeaders][kGuard] = "response"; - this[kHeaders][kHeadersList] = this[kState].headersList; - this[kHeaders][kRealm] = this[kRealm]; - - // 3. Let bodyWithType be null. - let bodyWithType = null; - - // 4. If body is non-null, then set bodyWithType to the result of extracting body. - if (body != null) { - const [extractedBody, type] = extractBody(body); - bodyWithType = { body: extractedBody, type }; - } - - // 5. Perform initialize a response given this, init, and bodyWithType. - initializeResponse(this, init, bodyWithType); - } - - // Returns response’s type, e.g., "cors". - get type() { - webidl.brandCheck(this, Response); - - // The type getter steps are to return this’s response’s type. - return this[kState].type; - } - - // Returns response’s URL, if it has one; otherwise the empty string. - get url() { - webidl.brandCheck(this, Response); - - const urlList = this[kState].urlList; - - // The url getter steps are to return the empty string if this’s - // response’s URL is null; otherwise this’s response’s URL, - // serialized with exclude fragment set to true. - const url = urlList[urlList.length - 1] ?? null; - - if (url === null) { - return ""; - } - - return URLSerializer(url, true); - } - - // Returns whether response was obtained through a redirect. - get redirected() { - webidl.brandCheck(this, Response); - - // The redirected getter steps are to return true if this’s response’s URL - // list has more than one item; otherwise false. - return this[kState].urlList.length > 1; - } - - // Returns response’s status. - get status() { - webidl.brandCheck(this, Response); - - // The status getter steps are to return this’s response’s status. - return this[kState].status; - } - - // Returns whether response’s status is an ok status. - get ok() { - webidl.brandCheck(this, Response); - - // The ok getter steps are to return true if this’s response’s status is an - // ok status; otherwise false. - return this[kState].status >= 200 && this[kState].status <= 299; - } - - // Returns response’s status message. - get statusText() { - webidl.brandCheck(this, Response); - - // The statusText getter steps are to return this’s response’s status - // message. - return this[kState].statusText; - } - - // Returns response’s headers as Headers. - get headers() { - webidl.brandCheck(this, Response); - - // The headers getter steps are to return this’s headers. - return this[kHeaders]; - } - - get body() { - webidl.brandCheck(this, Response); - - return this[kState].body ? this[kState].body.stream : null; - } - - get bodyUsed() { - webidl.brandCheck(this, Response); - - return !!this[kState].body && util.isDisturbed(this[kState].body.stream); - } - - // Returns a clone of response. - clone() { - webidl.brandCheck(this, Response); - - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || (this.body && this.body.locked)) { - throw webidl.errors.exception({ - header: "Response.clone", - message: "Body has already been consumed.", - }); - } - - // 2. Let clonedResponse be the result of cloning this’s response. - const clonedResponse = cloneResponse(this[kState]); - - // 3. Return the result of creating a Response object, given - // clonedResponse, this’s headers’s guard, and this’s relevant Realm. - const clonedResponseObject = new Response(); - clonedResponseObject[kState] = clonedResponse; - clonedResponseObject[kRealm] = this[kRealm]; - clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; - clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; - - return clonedResponseObject; - } - } - - mixinBody(Response); - - Object.defineProperties(Response.prototype, { - type: kEnumerableProperty, - url: kEnumerableProperty, - status: kEnumerableProperty, - ok: kEnumerableProperty, - redirected: kEnumerableProperty, - statusText: kEnumerableProperty, - headers: kEnumerableProperty, - clone: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "Response", - configurable: true, - }, - }); - - Object.defineProperties(Response, { - json: kEnumerableProperty, - redirect: kEnumerableProperty, - error: kEnumerableProperty, - }); - - // https://fetch.spec.whatwg.org/#concept-response-clone - function cloneResponse(response) { - // To clone a response response, run these steps: - - // 1. If response is a filtered response, then return a new identical - // filtered response whose internal response is a clone of response’s - // internal response. - if (response.internalResponse) { - return filterResponse(cloneResponse(response.internalResponse), response.type); - } - - // 2. Let newResponse be a copy of response, except for its body. - const newResponse = makeResponse({ ...response, body: null }); - - // 3. If response’s body is non-null, then set newResponse’s body to the - // result of cloning response’s body. - if (response.body != null) { - newResponse.body = cloneBody(response.body); - } - - // 4. Return newResponse. - return newResponse; - } - - function makeResponse(init) { - return { - aborted: false, - rangeRequested: false, - timingAllowPassed: false, - requestIncludesCredentials: false, - type: "default", - status: 200, - timingInfo: null, - cacheState: "", - statusText: "", - ...init, - headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), - urlList: init.urlList ? [...init.urlList] : [], - }; - } - - function makeNetworkError(reason) { - const isError = isErrorLike(reason); - return makeResponse({ - type: "error", - status: 0, - error: isError ? reason : new Error(reason ? String(reason) : reason), - aborted: reason && reason.name === "AbortError", - }); - } - - function makeFilteredResponse(response, state) { - state = { - internalResponse: response, - ...state, - }; - - return new Proxy(response, { - get(target, p) { - return p in state ? state[p] : target[p]; - }, - set(target, p, value) { - assert(!(p in state)); - target[p] = value; - return true; - }, - }); - } - - // https://fetch.spec.whatwg.org/#concept-filtered-response - function filterResponse(response, type) { - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (type === "basic") { - // A basic filtered response is a filtered response whose type is "basic" - // and header list excludes any headers in internal response’s header list - // whose name is a forbidden response-header name. - - // Note: undici does not implement forbidden response-header names - return makeFilteredResponse(response, { - type: "basic", - headersList: response.headersList, - }); - } else if (type === "cors") { - // A CORS filtered response is a filtered response whose type is "cors" - // and header list excludes any headers in internal response’s header - // list whose name is not a CORS-safelisted response-header name, given - // internal response’s CORS-exposed header-name list. - - // Note: undici does not implement CORS-safelisted response-header names - return makeFilteredResponse(response, { - type: "cors", - headersList: response.headersList, - }); - } else if (type === "opaque") { - // An opaque filtered response is a filtered response whose type is - // "opaque", URL list is the empty list, status is 0, status message - // is the empty byte sequence, header list is empty, and body is null. - - return makeFilteredResponse(response, { - type: "opaque", - urlList: Object.freeze([]), - status: 0, - statusText: "", - body: null, - }); - } else if (type === "opaqueredirect") { - // An opaque-redirect filtered response is a filtered response whose type - // is "opaqueredirect", status is 0, status message is the empty byte - // sequence, header list is empty, and body is null. - - return makeFilteredResponse(response, { - type: "opaqueredirect", - status: 0, - statusText: "", - headersList: [], - body: null, - }); - } else { - assert(false); - } - } - - // https://fetch.spec.whatwg.org/#appropriate-network-error - function makeAppropriateNetworkError(fetchParams, err = null) { - // 1. Assert: fetchParams is canceled. - assert(isCancelled(fetchParams)); - - // 2. Return an aborted network error if fetchParams is aborted; - // otherwise return a network error. - return isAborted(fetchParams) - ? makeNetworkError( - Object.assign(new DOMException("The operation was aborted.", "AbortError"), { - cause: err, - }), - ) - : makeNetworkError( - Object.assign(new DOMException("Request was cancelled."), { cause: err }), - ); - } - - // https://whatpr.org/fetch/1392.html#initialize-a-response - function initializeResponse(response, init, body) { - // 1. If init["status"] is not in the range 200 to 599, inclusive, then - // throw a RangeError. - if (init.status !== null && (init.status < 200 || init.status > 599)) { - throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); - } - - // 2. If init["statusText"] does not match the reason-phrase token production, - // then throw a TypeError. - if ("statusText" in init && init.statusText != null) { - // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: - // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) - if (!isValidReasonPhrase(String(init.statusText))) { - throw new TypeError("Invalid statusText"); - } - } - - // 3. Set response’s response’s status to init["status"]. - if ("status" in init && init.status != null) { - response[kState].status = init.status; - } - - // 4. Set response’s response’s status message to init["statusText"]. - if ("statusText" in init && init.statusText != null) { - response[kState].statusText = init.statusText; - } - - // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. - if ("headers" in init && init.headers != null) { - fill(response[kHeaders], init.headers); - } - - // 6. If body was given, then: - if (body) { - // 1. If response's status is a null body status, then throw a TypeError. - if (nullBodyStatus.includes(response.status)) { - throw webidl.errors.exception({ - header: "Response constructor", - message: "Invalid response status code " + response.status, - }); - } - - // 2. Set response's body to body's body. - response[kState].body = body.body; - - // 3. If body's type is non-null and response's header list does not contain - // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. - if (body.type != null && !response[kState].headersList.contains("Content-Type")) { - response[kState].headersList.append("content-type", body.type); - } - } - } - - webidl.converters.ReadableStream = webidl.interfaceConverter(ReadableStream); - - webidl.converters.FormData = webidl.interfaceConverter(FormData); - - webidl.converters.URLSearchParams = webidl.interfaceConverter(URLSearchParams); - - // https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit - webidl.converters.XMLHttpRequestBodyInit = function (V) { - if (typeof V === "string") { - return webidl.converters.USVString(V); - } - - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); - } - - if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { - return webidl.converters.BufferSource(V); - } - - if (util.isFormDataLike(V)) { - return webidl.converters.FormData(V, { strict: false }); - } - - if (V instanceof URLSearchParams) { - return webidl.converters.URLSearchParams(V); - } - - return webidl.converters.DOMString(V); - }; - - // https://fetch.spec.whatwg.org/#bodyinit - webidl.converters.BodyInit = function (V) { - if (V instanceof ReadableStream) { - return webidl.converters.ReadableStream(V); - } - - // Note: the spec doesn't include async iterables, - // this is an undici extension. - if (V?.[Symbol.asyncIterator]) { - return V; - } - - return webidl.converters.XMLHttpRequestBodyInit(V); - }; - - webidl.converters.ResponseInit = webidl.dictionaryConverter([ - { - key: "status", - converter: webidl.converters["unsigned short"], - defaultValue: 200, - }, - { - key: "statusText", - converter: webidl.converters.ByteString, - defaultValue: "", - }, - { - key: "headers", - converter: webidl.converters.HeadersInit, - }, - ]); - - module.exports = { - makeNetworkError, - makeResponse, - makeAppropriateNetworkError, - filterResponse, - Response, - cloneResponse, - }; - - /***/ - }, - - /***/ 5861: /***/ (module) => { - "use strict"; - - module.exports = { - kUrl: Symbol("url"), - kHeaders: Symbol("headers"), - kSignal: Symbol("signal"), - kState: Symbol("state"), - kGuard: Symbol("guard"), - kRealm: Symbol("realm"), - }; - - /***/ - }, - - /***/ 2538: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { - redirectStatusSet, - referrerPolicySet: referrerPolicyTokens, - badPortsSet, - } = __nccwpck_require__(1037); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { performance } = __nccwpck_require__(4074); - const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3983); - const assert = __nccwpck_require__(9491); - const { isUint8Array } = __nccwpck_require__(9830); - - // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable - /** @type {import('crypto')|undefined} */ - let crypto; - - try { - crypto = __nccwpck_require__(6113); - } catch {} - - function responseURL(response) { - // https://fetch.spec.whatwg.org/#responses - // A response has an associated URL. It is a pointer to the last URL - // in response’s URL list and null if response’s URL list is empty. - const urlList = response.urlList; - const length = urlList.length; - return length === 0 ? null : urlList[length - 1].toString(); - } - - // https://fetch.spec.whatwg.org/#concept-response-location-url - function responseLocationURL(response, requestFragment) { - // 1. If response’s status is not a redirect status, then return null. - if (!redirectStatusSet.has(response.status)) { - return null; - } - - // 2. Let location be the result of extracting header list values given - // `Location` and response’s header list. - let location = response.headersList.get("location"); - - // 3. If location is a header value, then set location to the result of - // parsing location with response’s URL. - if (location !== null && isValidHeaderValue(location)) { - location = new URL(location, responseURL(response)); - } - - // 4. If location is a URL whose fragment is null, then set location’s - // fragment to requestFragment. - if (location && !location.hash) { - location.hash = requestFragment; - } - - // 5. Return location. - return location; - } - - /** @returns {URL} */ - function requestCurrentURL(request) { - return request.urlList[request.urlList.length - 1]; - } - - function requestBadPort(request) { - // 1. Let url be request’s current URL. - const url = requestCurrentURL(request); - - // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, - // then return blocked. - if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { - return "blocked"; - } - - // 3. Return allowed. - return "allowed"; - } - - function isErrorLike(object) { - return ( - object instanceof Error || - object?.constructor?.name === "Error" || - object?.constructor?.name === "DOMException" - ); - } - - // Check whether |statusText| is a ByteString and - // matches the Reason-Phrase token production. - // RFC 2616: https://tools.ietf.org/html/rfc2616 - // RFC 7230: https://tools.ietf.org/html/rfc7230 - // "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" - // https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 - function isValidReasonPhrase(statusText) { - for (let i = 0; i < statusText.length; ++i) { - const c = statusText.charCodeAt(i); - if ( - !( - ( - c === 0x09 || // HTAB - (c >= 0x20 && c <= 0x7e) || // SP / VCHAR - (c >= 0x80 && c <= 0xff) - ) // obs-text - ) - ) { - return false; - } - } - return true; - } - - /** - * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 - * @param {number} c - */ - function isTokenCharCode(c) { - switch (c) { - case 0x22: - case 0x28: - case 0x29: - case 0x2c: - case 0x2f: - case 0x3a: - case 0x3b: - case 0x3c: - case 0x3d: - case 0x3e: - case 0x3f: - case 0x40: - case 0x5b: - case 0x5c: - case 0x5d: - case 0x7b: - case 0x7d: - // DQUOTE and "(),/:;<=>?@[\]{}" - return false; - default: - // VCHAR %x21-7E - return c >= 0x21 && c <= 0x7e; - } - } - - /** - * @param {string} characters - */ - function isValidHTTPToken(characters) { - if (characters.length === 0) { - return false; - } - for (let i = 0; i < characters.length; ++i) { - if (!isTokenCharCode(characters.charCodeAt(i))) { - return false; - } - } - return true; - } - - /** - * @see https://fetch.spec.whatwg.org/#header-name - * @param {string} potentialValue - */ - function isValidHeaderName(potentialValue) { - return isValidHTTPToken(potentialValue); - } - - /** - * @see https://fetch.spec.whatwg.org/#header-value - * @param {string} potentialValue - */ - function isValidHeaderValue(potentialValue) { - // - Has no leading or trailing HTTP tab or space bytes. - // - Contains no 0x00 (NUL) or HTTP newline bytes. - if ( - potentialValue.startsWith("\t") || - potentialValue.startsWith(" ") || - potentialValue.endsWith("\t") || - potentialValue.endsWith(" ") - ) { - return false; - } - - if ( - potentialValue.includes("\0") || - potentialValue.includes("\r") || - potentialValue.includes("\n") - ) { - return false; - } - - return true; - } - - // https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect - function setRequestReferrerPolicyOnRedirect(request, actualResponse) { - // Given a request request and a response actualResponse, this algorithm - // updates request’s referrer policy according to the Referrer-Policy - // header (if any) in actualResponse. - - // 1. Let policy be the result of executing § 8.1 Parse a referrer policy - // from a Referrer-Policy header on actualResponse. - - // 8.1 Parse a referrer policy from a Referrer-Policy header - // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. - const { headersList } = actualResponse; - // 2. Let policy be the empty string. - // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. - // 4. Return policy. - const policyHeader = (headersList.get("referrer-policy") ?? "").split(","); - - // Note: As the referrer-policy can contain multiple policies - // separated by comma, we need to loop through all of them - // and pick the first valid one. - // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy - let policy = ""; - if (policyHeader.length > 0) { - // The right-most policy takes precedence. - // The left-most policy is the fallback. - for (let i = policyHeader.length; i !== 0; i--) { - const token = policyHeader[i - 1].trim(); - if (referrerPolicyTokens.has(token)) { - policy = token; - break; - } - } - } - - // 2. If policy is not the empty string, then set request’s referrer policy to policy. - if (policy !== "") { - request.referrerPolicy = policy; - } - } - - // https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check - function crossOriginResourcePolicyCheck() { - // TODO - return "allowed"; - } - - // https://fetch.spec.whatwg.org/#concept-cors-check - function corsCheck() { - // TODO - return "success"; - } - - // https://fetch.spec.whatwg.org/#concept-tao-check - function TAOCheck() { - // TODO - return "success"; - } - - function appendFetchMetadata(httpRequest) { - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header - // TODO - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header - - // 1. Assert: r’s url is a potentially trustworthy URL. - // TODO - - // 2. Let header be a Structured Header whose value is a token. - let header = null; - - // 3. Set header’s value to r’s mode. - header = httpRequest.mode; - - // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. - httpRequest.headersList.set("sec-fetch-mode", header); - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header - // TODO - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header - // TODO - } - - // https://fetch.spec.whatwg.org/#append-a-request-origin-header - function appendRequestOriginHeader(request) { - // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. - let serializedOrigin = request.origin; - - // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. - if (request.responseTainting === "cors" || request.mode === "websocket") { - if (serializedOrigin) { - request.headersList.append("origin", serializedOrigin); - } - - // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: - } else if (request.method !== "GET" && request.method !== "HEAD") { - // 1. Switch on request’s referrer policy: - switch (request.referrerPolicy) { - case "no-referrer": - // Set serializedOrigin to `null`. - serializedOrigin = null; - break; - case "no-referrer-when-downgrade": - case "strict-origin": - case "strict-origin-when-cross-origin": - // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. - if ( - request.origin && - urlHasHttpsScheme(request.origin) && - !urlHasHttpsScheme(requestCurrentURL(request)) - ) { - serializedOrigin = null; - } - break; - case "same-origin": - // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. - if (!sameOrigin(request, requestCurrentURL(request))) { - serializedOrigin = null; - } - break; - default: - // Do nothing. - } - - if (serializedOrigin) { - // 2. Append (`Origin`, serializedOrigin) to request’s header list. - request.headersList.append("origin", serializedOrigin); - } - } - } - - function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { - // TODO - return performance.now(); - } - - // https://fetch.spec.whatwg.org/#create-an-opaque-timing-info - function createOpaqueTimingInfo(timingInfo) { - return { - startTime: timingInfo.startTime ?? 0, - redirectStartTime: 0, - redirectEndTime: 0, - postRedirectStartTime: timingInfo.startTime ?? 0, - finalServiceWorkerStartTime: 0, - finalNetworkResponseStartTime: 0, - finalNetworkRequestStartTime: 0, - endTime: 0, - encodedBodySize: 0, - decodedBodySize: 0, - finalConnectionTimingInfo: null, - }; - } - - // https://html.spec.whatwg.org/multipage/origin.html#policy-container - function makePolicyContainer() { - // Note: the fetch spec doesn't make use of embedder policy or CSP list - return { - referrerPolicy: "strict-origin-when-cross-origin", - }; - } - - // https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container - function clonePolicyContainer(policyContainer) { - return { - referrerPolicy: policyContainer.referrerPolicy, - }; - } - - // https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer - function determineRequestsReferrer(request) { - // 1. Let policy be request's referrer policy. - const policy = request.referrerPolicy; - - // Note: policy cannot (shouldn't) be null or an empty string. - assert(policy); - - // 2. Let environment be request’s client. - - let referrerSource = null; - - // 3. Switch on request’s referrer: - if (request.referrer === "client") { - // Note: node isn't a browser and doesn't implement document/iframes, - // so we bypass this step and replace it with our own. - - const globalOrigin = getGlobalOrigin(); - - if (!globalOrigin || globalOrigin.origin === "null") { - return "no-referrer"; - } - - // note: we need to clone it as it's mutated - referrerSource = new URL(globalOrigin); - } else if (request.referrer instanceof URL) { - // Let referrerSource be request’s referrer. - referrerSource = request.referrer; - } - - // 4. Let request’s referrerURL be the result of stripping referrerSource for - // use as a referrer. - let referrerURL = stripURLForReferrer(referrerSource); - - // 5. Let referrerOrigin be the result of stripping referrerSource for use as - // a referrer, with the origin-only flag set to true. - const referrerOrigin = stripURLForReferrer(referrerSource, true); - - // 6. If the result of serializing referrerURL is a string whose length is - // greater than 4096, set referrerURL to referrerOrigin. - if (referrerURL.toString().length > 4096) { - referrerURL = referrerOrigin; - } - - const areSameOrigin = sameOrigin(request, referrerURL); - const isNonPotentiallyTrustWorthy = - isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request.url); - - // 8. Execute the switch statements corresponding to the value of policy: - switch (policy) { - case "origin": - return referrerOrigin != null - ? referrerOrigin - : stripURLForReferrer(referrerSource, true); - case "unsafe-url": - return referrerURL; - case "same-origin": - return areSameOrigin ? referrerOrigin : "no-referrer"; - case "origin-when-cross-origin": - return areSameOrigin ? referrerURL : referrerOrigin; - case "strict-origin-when-cross-origin": { - const currentURL = requestCurrentURL(request); - - // 1. If the origin of referrerURL and the origin of request’s current - // URL are the same, then return referrerURL. - if (sameOrigin(referrerURL, currentURL)) { - return referrerURL; - } - - // 2. If referrerURL is a potentially trustworthy URL and request’s - // current URL is not a potentially trustworthy URL, then return no - // referrer. - if ( - isURLPotentiallyTrustworthy(referrerURL) && - !isURLPotentiallyTrustworthy(currentURL) - ) { - return "no-referrer"; - } - - // 3. Return referrerOrigin. - return referrerOrigin; - } - case "strict-origin": // eslint-disable-line - /** - * 1. If referrerURL is a potentially trustworthy URL and - * request’s current URL is not a potentially trustworthy URL, - * then return no referrer. - * 2. Return referrerOrigin - */ - case "no-referrer-when-downgrade": // eslint-disable-line - /** - * 1. If referrerURL is a potentially trustworthy URL and - * request’s current URL is not a potentially trustworthy URL, - * then return no referrer. - * 2. Return referrerOrigin - */ - - default: - // eslint-disable-line - return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin; - } - } - - /** - * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url - * @param {URL} url - * @param {boolean|undefined} originOnly - */ - function stripURLForReferrer(url, originOnly) { - // 1. Assert: url is a URL. - assert(url instanceof URL); - - // 2. If url’s scheme is a local scheme, then return no referrer. - if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") { - return "no-referrer"; - } - - // 3. Set url’s username to the empty string. - url.username = ""; - - // 4. Set url’s password to the empty string. - url.password = ""; - - // 5. Set url’s fragment to null. - url.hash = ""; - - // 6. If the origin-only flag is true, then: - if (originOnly) { - // 1. Set url’s path to « the empty string ». - url.pathname = ""; - - // 2. Set url’s query to null. - url.search = ""; - } - - // 7. Return url. - return url; - } - - function isURLPotentiallyTrustworthy(url) { - if (!(url instanceof URL)) { - return false; - } - - // If child of about, return true - if (url.href === "about:blank" || url.href === "about:srcdoc") { - return true; - } - - // If scheme is data, return true - if (url.protocol === "data:") return true; - - // If file, return true - if (url.protocol === "file:") return true; - - return isOriginPotentiallyTrustworthy(url.origin); - - function isOriginPotentiallyTrustworthy(origin) { - // If origin is explicitly null, return false - if (origin == null || origin === "null") return false; - - const originAsURL = new URL(origin); - - // If secure, return true - if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") { - return true; - } - - // If localhost or variants, return true - if ( - /^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || - originAsURL.hostname === "localhost" || - originAsURL.hostname.includes("localhost.") || - originAsURL.hostname.endsWith(".localhost") - ) { - return true; - } - - // If any other, return false - return false; - } - } - - /** - * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist - * @param {Uint8Array} bytes - * @param {string} metadataList - */ - function bytesMatch(bytes, metadataList) { - // If node is not built with OpenSSL support, we cannot check - // a request's integrity, so allow it by default (the spec will - // allow requests if an invalid hash is given, as precedence). - /* istanbul ignore if: only if node is built with --without-ssl */ - if (crypto === undefined) { - return true; - } - - // 1. Let parsedMetadata be the result of parsing metadataList. - const parsedMetadata = parseMetadata(metadataList); - - // 2. If parsedMetadata is no metadata, return true. - if (parsedMetadata === "no metadata") { - return true; - } - - // 3. If parsedMetadata is the empty set, return true. - if (parsedMetadata.length === 0) { - return true; - } - - // 4. Let metadata be the result of getting the strongest - // metadata from parsedMetadata. - const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)); - // get the strongest algorithm - const strongest = list[0].algo; - // get all entries that use the strongest algorithm; ignore weaker - const metadata = list.filter((item) => item.algo === strongest); - - // 5. For each item in metadata: - for (const item of metadata) { - // 1. Let algorithm be the alg component of item. - const algorithm = item.algo; - - // 2. Let expectedValue be the val component of item. - let expectedValue = item.hash; - - // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e - // "be liberal with padding". This is annoying, and it's not even in the spec. - - if (expectedValue.endsWith("==")) { - expectedValue = expectedValue.slice(0, -2); - } - - // 3. Let actualValue be the result of applying algorithm to bytes. - let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64"); - - if (actualValue.endsWith("==")) { - actualValue = actualValue.slice(0, -2); - } - - // 4. If actualValue is a case-sensitive match for expectedValue, - // return true. - if (actualValue === expectedValue) { - return true; - } - - let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest("base64url"); - - if (actualBase64URL.endsWith("==")) { - actualBase64URL = actualBase64URL.slice(0, -2); - } - - if (actualBase64URL === expectedValue) { - return true; - } - } - - // 6. Return false. - return false; - } - - // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options - // https://www.w3.org/TR/CSP2/#source-list-syntax - // https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 - const parseHashWithOptions = - /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i; - - /** - * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata - * @param {string} metadata - */ - function parseMetadata(metadata) { - // 1. Let result be the empty set. - /** @type {{ algo: string, hash: string }[]} */ - const result = []; - - // 2. Let empty be equal to true. - let empty = true; - - const supportedHashes = crypto.getHashes(); - - // 3. For each token returned by splitting metadata on spaces: - for (const token of metadata.split(" ")) { - // 1. Set empty to false. - empty = false; - - // 2. Parse token as a hash-with-options. - const parsedToken = parseHashWithOptions.exec(token); - - // 3. If token does not parse, continue to the next token. - if (parsedToken === null || parsedToken.groups === undefined) { - // Note: Chromium blocks the request at this point, but Firefox - // gives a warning that an invalid integrity was given. The - // correct behavior is to ignore these, and subsequently not - // check the integrity of the resource. - continue; - } - - // 4. Let algorithm be the hash-algo component of token. - const algorithm = parsedToken.groups.algo; - - // 5. If algorithm is a hash function recognized by the user - // agent, add the parsed token to result. - if (supportedHashes.includes(algorithm.toLowerCase())) { - result.push(parsedToken.groups); - } - } - - // 4. Return no metadata if empty is true, otherwise return result. - if (empty === true) { - return "no metadata"; - } - - return result; - } - - // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request - function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) { - // TODO - } - - /** - * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} - * @param {URL} A - * @param {URL} B - */ - function sameOrigin(A, B) { - // 1. If A and B are the same opaque origin, then return true. - if (A.origin === B.origin && A.origin === "null") { - return true; - } - - // 2. If A and B are both tuple origins and their schemes, - // hosts, and port are identical, then return true. - if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { - return true; - } - - // 3. Return false. - return false; - } - - function createDeferredPromise() { - let res; - let rej; - const promise = new Promise((resolve, reject) => { - res = resolve; - rej = reject; - }); - - return { promise, resolve: res, reject: rej }; - } - - function isAborted(fetchParams) { - return fetchParams.controller.state === "aborted"; - } - - function isCancelled(fetchParams) { - return ( - fetchParams.controller.state === "aborted" || - fetchParams.controller.state === "terminated" - ); - } - - const normalizeMethodRecord = { - delete: "DELETE", - DELETE: "DELETE", - get: "GET", - GET: "GET", - head: "HEAD", - HEAD: "HEAD", - options: "OPTIONS", - OPTIONS: "OPTIONS", - post: "POST", - POST: "POST", - put: "PUT", - PUT: "PUT", - }; - - // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. - Object.setPrototypeOf(normalizeMethodRecord, null); - - /** - * @see https://fetch.spec.whatwg.org/#concept-method-normalize - * @param {string} method - */ - function normalizeMethod(method) { - return normalizeMethodRecord[method.toLowerCase()] ?? method; - } - - // https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string - function serializeJavascriptValueToJSONString(value) { - // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). - const result = JSON.stringify(value); - - // 2. If result is undefined, then throw a TypeError. - if (result === undefined) { - throw new TypeError("Value is not JSON serializable"); - } - - // 3. Assert: result is a string. - assert(typeof result === "string"); - - // 4. Return result. - return result; - } - - // https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object - const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); - - /** - * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object - * @param {() => unknown[]} iterator - * @param {string} name name of the instance - * @param {'key'|'value'|'key+value'} kind - */ - function makeIterator(iterator, name, kind) { - const object = { - index: 0, - kind, - target: iterator, - }; - - const i = { - next() { - // 1. Let interface be the interface for which the iterator prototype object exists. - - // 2. Let thisValue be the this value. - - // 3. Let object be ? ToObject(thisValue). - - // 4. If object is a platform object, then perform a security - // check, passing: - - // 5. If object is not a default iterator object for interface, - // then throw a TypeError. - if (Object.getPrototypeOf(this) !== i) { - throw new TypeError( - `'next' called on an object that does not implement interface ${name} Iterator.`, - ); - } - - // 6. Let index be object’s index. - // 7. Let kind be object’s kind. - // 8. Let values be object’s target's value pairs to iterate over. - const { index, kind, target } = object; - const values = target(); - - // 9. Let len be the length of values. - const len = values.length; - - // 10. If index is greater than or equal to len, then return - // CreateIterResultObject(undefined, true). - if (index >= len) { - return { value: undefined, done: true }; - } - - // 11. Let pair be the entry in values at index index. - const pair = values[index]; - - // 12. Set object’s index to index + 1. - object.index = index + 1; - - // 13. Return the iterator result for pair and kind. - return iteratorResult(pair, kind); - }, - // The class string of an iterator prototype object for a given interface is the - // result of concatenating the identifier of the interface and the string " Iterator". - [Symbol.toStringTag]: `${name} Iterator`, - }; - - // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. - Object.setPrototypeOf(i, esIteratorPrototype); - // esIteratorPrototype needs to be the prototype of i - // which is the prototype of an empty object. Yes, it's confusing. - return Object.setPrototypeOf({}, i); - } - - // https://webidl.spec.whatwg.org/#iterator-result - function iteratorResult(pair, kind) { - let result; - - // 1. Let result be a value determined by the value of kind: - switch (kind) { - case "key": { - // 1. Let idlKey be pair’s key. - // 2. Let key be the result of converting idlKey to an - // ECMAScript value. - // 3. result is key. - result = pair[0]; - break; - } - case "value": { - // 1. Let idlValue be pair’s value. - // 2. Let value be the result of converting idlValue to - // an ECMAScript value. - // 3. result is value. - result = pair[1]; - break; - } - case "key+value": { - // 1. Let idlKey be pair’s key. - // 2. Let idlValue be pair’s value. - // 3. Let key be the result of converting idlKey to an - // ECMAScript value. - // 4. Let value be the result of converting idlValue to - // an ECMAScript value. - // 5. Let array be ! ArrayCreate(2). - // 6. Call ! CreateDataProperty(array, "0", key). - // 7. Call ! CreateDataProperty(array, "1", value). - // 8. result is array. - result = pair; - break; - } - } - - // 2. Return CreateIterResultObject(result, false). - return { value: result, done: false }; - } - - /** - * @see https://fetch.spec.whatwg.org/#body-fully-read - */ - async function fullyReadBody(body, processBody, processBodyError) { - // 1. If taskDestination is null, then set taskDestination to - // the result of starting a new parallel queue. - - // 2. Let successSteps given a byte sequence bytes be to queue a - // fetch task to run processBody given bytes, with taskDestination. - const successSteps = processBody; - - // 3. Let errorSteps be to queue a fetch task to run processBodyError, - // with taskDestination. - const errorSteps = processBodyError; - - // 4. Let reader be the result of getting a reader for body’s stream. - // If that threw an exception, then run errorSteps with that - // exception and return. - let reader; - - try { - reader = body.stream.getReader(); - } catch (e) { - errorSteps(e); - return; - } - - // 5. Read all bytes from reader, given successSteps and errorSteps. - try { - const result = await readAllBytes(reader); - successSteps(result); - } catch (e) { - errorSteps(e); - } - } - - /** @type {ReadableStream} */ - let ReadableStream = globalThis.ReadableStream; - - function isReadableStreamLike(stream) { - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - return ( - stream instanceof ReadableStream || - (stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function") - ); - } - - const MAXIMUM_ARGUMENT_LENGTH = 65535; - - /** - * @see https://infra.spec.whatwg.org/#isomorphic-decode - * @param {number[]|Uint8Array} input - */ - function isomorphicDecode(input) { - // 1. To isomorphic decode a byte sequence input, return a string whose code point - // length is equal to input’s length and whose code points have the same values - // as the values of input’s bytes, in the same order. - - if (input.length < MAXIMUM_ARGUMENT_LENGTH) { - return String.fromCharCode(...input); - } - - return input.reduce((previous, current) => previous + String.fromCharCode(current), ""); - } - - /** - * @param {ReadableStreamController} controller - */ - function readableStreamClose(controller) { - try { - controller.close(); - } catch (err) { - // TODO: add comment explaining why this error occurs. - if (!err.message.includes("Controller is already closed")) { - throw err; - } - } - } - - /** - * @see https://infra.spec.whatwg.org/#isomorphic-encode - * @param {string} input - */ - function isomorphicEncode(input) { - // 1. Assert: input contains no code points greater than U+00FF. - for (let i = 0; i < input.length; i++) { - assert(input.charCodeAt(i) <= 0xff); - } - - // 2. Return a byte sequence whose length is equal to input’s code - // point length and whose bytes have the same values as the - // values of input’s code points, in the same order - return input; - } - - /** - * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes - * @see https://streams.spec.whatwg.org/#read-loop - * @param {ReadableStreamDefaultReader} reader - */ - async function readAllBytes(reader) { - const bytes = []; - let byteLength = 0; - - while (true) { - const { done, value: chunk } = await reader.read(); - - if (done) { - // 1. Call successSteps with bytes. - return Buffer.concat(bytes, byteLength); - } - - // 1. If chunk is not a Uint8Array object, call failureSteps - // with a TypeError and abort these steps. - if (!isUint8Array(chunk)) { - throw new TypeError("Received non-Uint8Array chunk"); - } - - // 2. Append the bytes represented by chunk to bytes. - bytes.push(chunk); - byteLength += chunk.length; - - // 3. Read-loop given reader, bytes, successSteps, and failureSteps. - } - } - - /** - * @see https://fetch.spec.whatwg.org/#is-local - * @param {URL} url - */ - function urlIsLocal(url) { - assert("protocol" in url); // ensure it's a url object - - const protocol = url.protocol; - - return protocol === "about:" || protocol === "blob:" || protocol === "data:"; - } - - /** - * @param {string|URL} url - */ - function urlHasHttpsScheme(url) { - if (typeof url === "string") { - return url.startsWith("https:"); - } - - return url.protocol === "https:"; - } - - /** - * @see https://fetch.spec.whatwg.org/#http-scheme - * @param {URL} url - */ - function urlIsHttpHttpsScheme(url) { - assert("protocol" in url); // ensure it's a url object - - const protocol = url.protocol; - - return protocol === "http:" || protocol === "https:"; - } - - /** - * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. - */ - const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); - - module.exports = { - isAborted, - isCancelled, - createDeferredPromise, - ReadableStreamFrom, - toUSVString, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - coarsenedSharedCurrentTime, - determineRequestsReferrer, - makePolicyContainer, - clonePolicyContainer, - appendFetchMetadata, - appendRequestOriginHeader, - TAOCheck, - corsCheck, - crossOriginResourcePolicyCheck, - createOpaqueTimingInfo, - setRequestReferrerPolicyOnRedirect, - isValidHTTPToken, - requestBadPort, - requestCurrentURL, - responseURL, - responseLocationURL, - isBlobLike, - isURLPotentiallyTrustworthy, - isValidReasonPhrase, - sameOrigin, - normalizeMethod, - serializeJavascriptValueToJSONString, - makeIterator, - isValidHeaderName, - isValidHeaderValue, - hasOwn, - isErrorLike, - fullyReadBody, - bytesMatch, - isReadableStreamLike, - readableStreamClose, - isomorphicEncode, - isomorphicDecode, - urlIsLocal, - urlHasHttpsScheme, - urlIsHttpHttpsScheme, - readAllBytes, - normalizeMethodRecord, - }; - - /***/ - }, - - /***/ 1744: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { types } = __nccwpck_require__(3837); - const { hasOwn, toUSVString } = __nccwpck_require__(2538); - - /** @type {import('../../types/webidl').Webidl} */ - const webidl = {}; - webidl.converters = {}; - webidl.util = {}; - webidl.errors = {}; - - webidl.errors.exception = function (message) { - return new TypeError(`${message.header}: ${message.message}`); - }; - - webidl.errors.conversionFailed = function (context) { - const plural = context.types.length === 1 ? "" : " one of"; - const message = - `${context.argument} could not be converted to` + - `${plural}: ${context.types.join(", ")}.`; - - return webidl.errors.exception({ - header: context.prefix, - message, - }); - }; - - webidl.errors.invalidArgument = function (context) { - return webidl.errors.exception({ - header: context.prefix, - message: `"${context.value}" is an invalid ${context.type}.`, - }); - }; - - // https://webidl.spec.whatwg.org/#implements - webidl.brandCheck = function (V, I, opts = undefined) { - if (opts?.strict !== false && !(V instanceof I)) { - throw new TypeError("Illegal invocation"); - } else { - return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]; - } - }; - - webidl.argumentLengthCheck = function ({ length }, min, ctx) { - if (length < min) { - throw webidl.errors.exception({ - message: - `${min} argument${min !== 1 ? "s" : ""} required, ` + - `but${length ? " only" : ""} ${length} found.`, - ...ctx, - }); - } - }; - - webidl.illegalConstructor = function () { - throw webidl.errors.exception({ - header: "TypeError", - message: "Illegal constructor", - }); - }; - - // https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values - webidl.util.Type = function (V) { - switch (typeof V) { - case "undefined": - return "Undefined"; - case "boolean": - return "Boolean"; - case "string": - return "String"; - case "symbol": - return "Symbol"; - case "number": - return "Number"; - case "bigint": - return "BigInt"; - case "function": - case "object": { - if (V === null) { - return "Null"; - } - - return "Object"; - } - } - }; - - // https://webidl.spec.whatwg.org/#abstract-opdef-converttoint - webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { - let upperBound; - let lowerBound; - - // 1. If bitLength is 64, then: - if (bitLength === 64) { - // 1. Let upperBound be 2^53 − 1. - upperBound = Math.pow(2, 53) - 1; - - // 2. If signedness is "unsigned", then let lowerBound be 0. - if (signedness === "unsigned") { - lowerBound = 0; - } else { - // 3. Otherwise let lowerBound be −2^53 + 1. - lowerBound = Math.pow(-2, 53) + 1; - } - } else if (signedness === "unsigned") { - // 2. Otherwise, if signedness is "unsigned", then: - - // 1. Let lowerBound be 0. - lowerBound = 0; - - // 2. Let upperBound be 2^bitLength − 1. - upperBound = Math.pow(2, bitLength) - 1; - } else { - // 3. Otherwise: - - // 1. Let lowerBound be -2^bitLength − 1. - lowerBound = Math.pow(-2, bitLength) - 1; - - // 2. Let upperBound be 2^bitLength − 1 − 1. - upperBound = Math.pow(2, bitLength - 1) - 1; - } - - // 4. Let x be ? ToNumber(V). - let x = Number(V); - - // 5. If x is −0, then set x to +0. - if (x === 0) { - x = 0; - } - - // 6. If the conversion is to an IDL type associated - // with the [EnforceRange] extended attribute, then: - if (opts.enforceRange === true) { - // 1. If x is NaN, +∞, or −∞, then throw a TypeError. - if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { - throw webidl.errors.exception({ - header: "Integer conversion", - message: `Could not convert ${V} to an integer.`, - }); - } - - // 2. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x); - - // 3. If x < lowerBound or x > upperBound, then - // throw a TypeError. - if (x < lowerBound || x > upperBound) { - throw webidl.errors.exception({ - header: "Integer conversion", - message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`, - }); - } - - // 4. Return x. - return x; - } - - // 7. If x is not NaN and the conversion is to an IDL - // type associated with the [Clamp] extended - // attribute, then: - if (!Number.isNaN(x) && opts.clamp === true) { - // 1. Set x to min(max(x, lowerBound), upperBound). - x = Math.min(Math.max(x, lowerBound), upperBound); - - // 2. Round x to the nearest integer, choosing the - // even integer if it lies halfway between two, - // and choosing +0 rather than −0. - if (Math.floor(x) % 2 === 0) { - x = Math.floor(x); - } else { - x = Math.ceil(x); - } - - // 3. Return x. - return x; - } - - // 8. If x is NaN, +0, +∞, or −∞, then return +0. - if ( - Number.isNaN(x) || - (x === 0 && Object.is(0, x)) || - x === Number.POSITIVE_INFINITY || - x === Number.NEGATIVE_INFINITY - ) { - return 0; - } - - // 9. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x); - - // 10. Set x to x modulo 2^bitLength. - x = x % Math.pow(2, bitLength); - - // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, - // then return x − 2^bitLength. - if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { - return x - Math.pow(2, bitLength); - } - - // 12. Otherwise, return x. - return x; - }; - - // https://webidl.spec.whatwg.org/#abstract-opdef-integerpart - webidl.util.IntegerPart = function (n) { - // 1. Let r be floor(abs(n)). - const r = Math.floor(Math.abs(n)); - - // 2. If n < 0, then return -1 × r. - if (n < 0) { - return -1 * r; - } - - // 3. Otherwise, return r. - return r; - }; - - // https://webidl.spec.whatwg.org/#es-sequence - webidl.sequenceConverter = function (converter) { - return (V) => { - // 1. If Type(V) is not Object, throw a TypeError. - if (webidl.util.Type(V) !== "Object") { - throw webidl.errors.exception({ - header: "Sequence", - message: `Value of type ${webidl.util.Type(V)} is not an Object.`, - }); - } - - // 2. Let method be ? GetMethod(V, @@iterator). - /** @type {Generator} */ - const method = V?.[Symbol.iterator]?.(); - const seq = []; - - // 3. If method is undefined, throw a TypeError. - if (method === undefined || typeof method.next !== "function") { - throw webidl.errors.exception({ - header: "Sequence", - message: "Object is not an iterator.", - }); - } - - // https://webidl.spec.whatwg.org/#create-sequence-from-iterable - while (true) { - const { done, value } = method.next(); - - if (done) { - break; - } - - seq.push(converter(value)); - } - - return seq; - }; - }; - - // https://webidl.spec.whatwg.org/#es-to-record - webidl.recordConverter = function (keyConverter, valueConverter) { - return (O) => { - // 1. If Type(O) is not Object, throw a TypeError. - if (webidl.util.Type(O) !== "Object") { - throw webidl.errors.exception({ - header: "Record", - message: `Value of type ${webidl.util.Type(O)} is not an Object.`, - }); - } - - // 2. Let result be a new empty instance of record. - const result = {}; - - if (!types.isProxy(O)) { - // Object.keys only returns enumerable properties - const keys = Object.keys(O); - - for (const key of keys) { - // 1. Let typedKey be key converted to an IDL value of type K. - const typedKey = keyConverter(key); - - // 2. Let value be ? Get(O, key). - // 3. Let typedValue be value converted to an IDL value of type V. - const typedValue = valueConverter(O[key]); - - // 4. Set result[typedKey] to typedValue. - result[typedKey] = typedValue; - } - - // 5. Return result. - return result; - } - - // 3. Let keys be ? O.[[OwnPropertyKeys]](). - const keys = Reflect.ownKeys(O); - - // 4. For each key of keys. - for (const key of keys) { - // 1. Let desc be ? O.[[GetOwnProperty]](key). - const desc = Reflect.getOwnPropertyDescriptor(O, key); - - // 2. If desc is not undefined and desc.[[Enumerable]] is true: - if (desc?.enumerable) { - // 1. Let typedKey be key converted to an IDL value of type K. - const typedKey = keyConverter(key); - - // 2. Let value be ? Get(O, key). - // 3. Let typedValue be value converted to an IDL value of type V. - const typedValue = valueConverter(O[key]); - - // 4. Set result[typedKey] to typedValue. - result[typedKey] = typedValue; - } - } - - // 5. Return result. - return result; - }; - }; - - webidl.interfaceConverter = function (i) { - return (V, opts = {}) => { - if (opts.strict !== false && !(V instanceof i)) { - throw webidl.errors.exception({ - header: i.name, - message: `Expected ${V} to be an instance of ${i.name}.`, - }); - } - - return V; - }; - }; - - webidl.dictionaryConverter = function (converters) { - return (dictionary) => { - const type = webidl.util.Type(dictionary); - const dict = {}; - - if (type === "Null" || type === "Undefined") { - return dict; - } else if (type !== "Object") { - throw webidl.errors.exception({ - header: "Dictionary", - message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`, - }); - } - - for (const options of converters) { - const { key, defaultValue, required, converter } = options; - - if (required === true) { - if (!hasOwn(dictionary, key)) { - throw webidl.errors.exception({ - header: "Dictionary", - message: `Missing required key "${key}".`, - }); - } - } - - let value = dictionary[key]; - const hasDefault = hasOwn(options, "defaultValue"); - - // Only use defaultValue if value is undefined and - // a defaultValue options was provided. - if (hasDefault && value !== null) { - value = value ?? defaultValue; - } - - // A key can be optional and have no default value. - // When this happens, do not perform a conversion, - // and do not assign the key a value. - if (required || hasDefault || value !== undefined) { - value = converter(value); - - if (options.allowedValues && !options.allowedValues.includes(value)) { - throw webidl.errors.exception({ - header: "Dictionary", - message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join( - ", ", - )}.`, - }); - } - - dict[key] = value; - } - } - - return dict; - }; - }; - - webidl.nullableConverter = function (converter) { - return (V) => { - if (V === null) { - return V; - } - - return converter(V); - }; - }; - - // https://webidl.spec.whatwg.org/#es-DOMString - webidl.converters.DOMString = function (V, opts = {}) { - // 1. If V is null and the conversion is to an IDL type - // associated with the [LegacyNullToEmptyString] - // extended attribute, then return the DOMString value - // that represents the empty string. - if (V === null && opts.legacyNullToEmptyString) { - return ""; - } - - // 2. Let x be ? ToString(V). - if (typeof V === "symbol") { - throw new TypeError("Could not convert argument of type symbol to string."); - } - - // 3. Return the IDL DOMString value that represents the - // same sequence of code units as the one the - // ECMAScript String value x represents. - return String(V); - }; - - // https://webidl.spec.whatwg.org/#es-ByteString - webidl.converters.ByteString = function (V) { - // 1. Let x be ? ToString(V). - // Note: DOMString converter perform ? ToString(V) - const x = webidl.converters.DOMString(V); - - // 2. If the value of any element of x is greater than - // 255, then throw a TypeError. - for (let index = 0; index < x.length; index++) { - if (x.charCodeAt(index) > 255) { - throw new TypeError( - "Cannot convert argument to a ByteString because the character at " + - `index ${index} has a value of ${x.charCodeAt( - index, - )} which is greater than 255.`, - ); - } - } - - // 3. Return an IDL ByteString value whose length is the - // length of x, and where the value of each element is - // the value of the corresponding element of x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-USVString - webidl.converters.USVString = toUSVString; - - // https://webidl.spec.whatwg.org/#es-boolean - webidl.converters.boolean = function (V) { - // 1. Let x be the result of computing ToBoolean(V). - const x = Boolean(V); - - // 2. Return the IDL boolean value that is the one that represents - // the same truth value as the ECMAScript Boolean value x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-any - webidl.converters.any = function (V) { - return V; - }; - - // https://webidl.spec.whatwg.org/#es-long-long - webidl.converters["long long"] = function (V) { - // 1. Let x be ? ConvertToInt(V, 64, "signed"). - const x = webidl.util.ConvertToInt(V, 64, "signed"); - - // 2. Return the IDL long long value that represents - // the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-unsigned-long-long - webidl.converters["unsigned long long"] = function (V) { - // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). - const x = webidl.util.ConvertToInt(V, 64, "unsigned"); - - // 2. Return the IDL unsigned long long value that - // represents the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-unsigned-long - webidl.converters["unsigned long"] = function (V) { - // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). - const x = webidl.util.ConvertToInt(V, 32, "unsigned"); - - // 2. Return the IDL unsigned long value that - // represents the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-unsigned-short - webidl.converters["unsigned short"] = function (V, opts) { - // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). - const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts); - - // 2. Return the IDL unsigned short value that represents - // the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#idl-ArrayBuffer - webidl.converters.ArrayBuffer = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have an - // [[ArrayBufferData]] internal slot, then throw a - // TypeError. - // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances - // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances - if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) { - throw webidl.errors.conversionFailed({ - prefix: `${V}`, - argument: `${V}`, - types: ["ArrayBuffer"], - }); - } - - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V) is true, then throw a - // TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { - throw webidl.errors.exception({ - header: "ArrayBuffer", - message: "SharedArrayBuffer is not allowed.", - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V) is true, then throw a - // TypeError. - // Note: resizable ArrayBuffers are currently a proposal. - - // 4. Return the IDL ArrayBuffer value that is a - // reference to the same object as V. - return V; - }; - - webidl.converters.TypedArray = function (V, T, opts = {}) { - // 1. Let T be the IDL type V is being converted to. - - // 2. If Type(V) is not Object, or V does not have a - // [[TypedArrayName]] internal slot with a value - // equal to T’s name, then throw a TypeError. - if ( - webidl.util.Type(V) !== "Object" || - !types.isTypedArray(V) || - V.constructor.name !== T.name - ) { - throw webidl.errors.conversionFailed({ - prefix: `${T.name}`, - argument: `${V}`, - types: [T.name], - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: "ArrayBuffer", - message: "SharedArrayBuffer is not allowed.", - }); - } - - // 4. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable array buffers are currently a proposal - - // 5. Return the IDL value of type T that is a reference - // to the same object as V. - return V; - }; - - webidl.converters.DataView = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have a - // [[DataView]] internal slot, then throw a TypeError. - if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) { - throw webidl.errors.exception({ - header: "DataView", - message: "Object is not a DataView.", - }); - } - - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, - // then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: "ArrayBuffer", - message: "SharedArrayBuffer is not allowed.", - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable ArrayBuffers are currently a proposal - - // 4. Return the IDL DataView value that is a reference - // to the same object as V. - return V; - }; - - // https://webidl.spec.whatwg.org/#BufferSource - webidl.converters.BufferSource = function (V, opts = {}) { - if (types.isAnyArrayBuffer(V)) { - return webidl.converters.ArrayBuffer(V, opts); - } - - if (types.isTypedArray(V)) { - return webidl.converters.TypedArray(V, V.constructor); - } - - if (types.isDataView(V)) { - return webidl.converters.DataView(V, opts); - } - - throw new TypeError(`Could not convert ${V} to a BufferSource.`); - }; - - webidl.converters["sequence"] = webidl.sequenceConverter( - webidl.converters.ByteString, - ); - - webidl.converters["sequence>"] = webidl.sequenceConverter( - webidl.converters["sequence"], - ); - - webidl.converters["record"] = webidl.recordConverter( - webidl.converters.ByteString, - webidl.converters.ByteString, - ); - - module.exports = { - webidl, - }; - - /***/ - }, - - /***/ 4854: /***/ (module) => { - "use strict"; - - /** - * @see https://encoding.spec.whatwg.org/#concept-encoding-get - * @param {string|undefined} label - */ - function getEncoding(label) { - if (!label) { - return "failure"; - } - - // 1. Remove any leading and trailing ASCII whitespace from label. - // 2. If label is an ASCII case-insensitive match for any of the - // labels listed in the table below, then return the - // corresponding encoding; otherwise return failure. - switch (label.trim().toLowerCase()) { - case "unicode-1-1-utf-8": - case "unicode11utf8": - case "unicode20utf8": - case "utf-8": - case "utf8": - case "x-unicode20utf8": - return "UTF-8"; - case "866": - case "cp866": - case "csibm866": - case "ibm866": - return "IBM866"; - case "csisolatin2": - case "iso-8859-2": - case "iso-ir-101": - case "iso8859-2": - case "iso88592": - case "iso_8859-2": - case "iso_8859-2:1987": - case "l2": - case "latin2": - return "ISO-8859-2"; - case "csisolatin3": - case "iso-8859-3": - case "iso-ir-109": - case "iso8859-3": - case "iso88593": - case "iso_8859-3": - case "iso_8859-3:1988": - case "l3": - case "latin3": - return "ISO-8859-3"; - case "csisolatin4": - case "iso-8859-4": - case "iso-ir-110": - case "iso8859-4": - case "iso88594": - case "iso_8859-4": - case "iso_8859-4:1988": - case "l4": - case "latin4": - return "ISO-8859-4"; - case "csisolatincyrillic": - case "cyrillic": - case "iso-8859-5": - case "iso-ir-144": - case "iso8859-5": - case "iso88595": - case "iso_8859-5": - case "iso_8859-5:1988": - return "ISO-8859-5"; - case "arabic": - case "asmo-708": - case "csiso88596e": - case "csiso88596i": - case "csisolatinarabic": - case "ecma-114": - case "iso-8859-6": - case "iso-8859-6-e": - case "iso-8859-6-i": - case "iso-ir-127": - case "iso8859-6": - case "iso88596": - case "iso_8859-6": - case "iso_8859-6:1987": - return "ISO-8859-6"; - case "csisolatingreek": - case "ecma-118": - case "elot_928": - case "greek": - case "greek8": - case "iso-8859-7": - case "iso-ir-126": - case "iso8859-7": - case "iso88597": - case "iso_8859-7": - case "iso_8859-7:1987": - case "sun_eu_greek": - return "ISO-8859-7"; - case "csiso88598e": - case "csisolatinhebrew": - case "hebrew": - case "iso-8859-8": - case "iso-8859-8-e": - case "iso-ir-138": - case "iso8859-8": - case "iso88598": - case "iso_8859-8": - case "iso_8859-8:1988": - case "visual": - return "ISO-8859-8"; - case "csiso88598i": - case "iso-8859-8-i": - case "logical": - return "ISO-8859-8-I"; - case "csisolatin6": - case "iso-8859-10": - case "iso-ir-157": - case "iso8859-10": - case "iso885910": - case "l6": - case "latin6": - return "ISO-8859-10"; - case "iso-8859-13": - case "iso8859-13": - case "iso885913": - return "ISO-8859-13"; - case "iso-8859-14": - case "iso8859-14": - case "iso885914": - return "ISO-8859-14"; - case "csisolatin9": - case "iso-8859-15": - case "iso8859-15": - case "iso885915": - case "iso_8859-15": - case "l9": - return "ISO-8859-15"; - case "iso-8859-16": - return "ISO-8859-16"; - case "cskoi8r": - case "koi": - case "koi8": - case "koi8-r": - case "koi8_r": - return "KOI8-R"; - case "koi8-ru": - case "koi8-u": - return "KOI8-U"; - case "csmacintosh": - case "mac": - case "macintosh": - case "x-mac-roman": - return "macintosh"; - case "iso-8859-11": - case "iso8859-11": - case "iso885911": - case "tis-620": - case "windows-874": - return "windows-874"; - case "cp1250": - case "windows-1250": - case "x-cp1250": - return "windows-1250"; - case "cp1251": - case "windows-1251": - case "x-cp1251": - return "windows-1251"; - case "ansi_x3.4-1968": - case "ascii": - case "cp1252": - case "cp819": - case "csisolatin1": - case "ibm819": - case "iso-8859-1": - case "iso-ir-100": - case "iso8859-1": - case "iso88591": - case "iso_8859-1": - case "iso_8859-1:1987": - case "l1": - case "latin1": - case "us-ascii": - case "windows-1252": - case "x-cp1252": - return "windows-1252"; - case "cp1253": - case "windows-1253": - case "x-cp1253": - return "windows-1253"; - case "cp1254": - case "csisolatin5": - case "iso-8859-9": - case "iso-ir-148": - case "iso8859-9": - case "iso88599": - case "iso_8859-9": - case "iso_8859-9:1989": - case "l5": - case "latin5": - case "windows-1254": - case "x-cp1254": - return "windows-1254"; - case "cp1255": - case "windows-1255": - case "x-cp1255": - return "windows-1255"; - case "cp1256": - case "windows-1256": - case "x-cp1256": - return "windows-1256"; - case "cp1257": - case "windows-1257": - case "x-cp1257": - return "windows-1257"; - case "cp1258": - case "windows-1258": - case "x-cp1258": - return "windows-1258"; - case "x-mac-cyrillic": - case "x-mac-ukrainian": - return "x-mac-cyrillic"; - case "chinese": - case "csgb2312": - case "csiso58gb231280": - case "gb2312": - case "gb_2312": - case "gb_2312-80": - case "gbk": - case "iso-ir-58": - case "x-gbk": - return "GBK"; - case "gb18030": - return "gb18030"; - case "big5": - case "big5-hkscs": - case "cn-big5": - case "csbig5": - case "x-x-big5": - return "Big5"; - case "cseucpkdfmtjapanese": - case "euc-jp": - case "x-euc-jp": - return "EUC-JP"; - case "csiso2022jp": - case "iso-2022-jp": - return "ISO-2022-JP"; - case "csshiftjis": - case "ms932": - case "ms_kanji": - case "shift-jis": - case "shift_jis": - case "sjis": - case "windows-31j": - case "x-sjis": - return "Shift_JIS"; - case "cseuckr": - case "csksc56011987": - case "euc-kr": - case "iso-ir-149": - case "korean": - case "ks_c_5601-1987": - case "ks_c_5601-1989": - case "ksc5601": - case "ksc_5601": - case "windows-949": - return "EUC-KR"; - case "csiso2022kr": - case "hz-gb-2312": - case "iso-2022-cn": - case "iso-2022-cn-ext": - case "iso-2022-kr": - case "replacement": - return "replacement"; - case "unicodefffe": - case "utf-16be": - return "UTF-16BE"; - case "csunicode": - case "iso-10646-ucs-2": - case "ucs-2": - case "unicode": - case "unicodefeff": - case "utf-16": - case "utf-16le": - return "UTF-16LE"; - case "x-user-defined": - return "x-user-defined"; - default: - return "failure"; - } - } - - module.exports = { - getEncoding, - }; - - /***/ - }, - - /***/ 1446: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { staticPropertyDescriptors, readOperation, fireAProgressEvent } = - __nccwpck_require__(7530); - const { kState, kError, kResult, kEvents, kAborted } = __nccwpck_require__(9054); - const { webidl } = __nccwpck_require__(1744); - const { kEnumerableProperty } = __nccwpck_require__(3983); - - class FileReader extends EventTarget { - constructor() { - super(); - - this[kState] = "empty"; - this[kResult] = null; - this[kError] = null; - this[kEvents] = { - loadend: null, - error: null, - abort: null, - load: null, - progress: null, - loadstart: null, - }; - } - - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer - * @param {import('buffer').Blob} blob - */ - readAsArrayBuffer(blob) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsArrayBuffer" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - // The readAsArrayBuffer(blob) method, when invoked, - // must initiate a read operation for blob with ArrayBuffer. - readOperation(this, blob, "ArrayBuffer"); - } - - /** - * @see https://w3c.github.io/FileAPI/#readAsBinaryString - * @param {import('buffer').Blob} blob - */ - readAsBinaryString(blob) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsBinaryString" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - // The readAsBinaryString(blob) method, when invoked, - // must initiate a read operation for blob with BinaryString. - readOperation(this, blob, "BinaryString"); - } - - /** - * @see https://w3c.github.io/FileAPI/#readAsDataText - * @param {import('buffer').Blob} blob - * @param {string?} encoding - */ - readAsText(blob, encoding = undefined) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsText" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - if (encoding !== undefined) { - encoding = webidl.converters.DOMString(encoding); - } - - // The readAsText(blob, encoding) method, when invoked, - // must initiate a read operation for blob with Text and encoding. - readOperation(this, blob, "Text", encoding); - } - - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL - * @param {import('buffer').Blob} blob - */ - readAsDataURL(blob) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsDataURL" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - // The readAsDataURL(blob) method, when invoked, must - // initiate a read operation for blob with DataURL. - readOperation(this, blob, "DataURL"); - } - - /** - * @see https://w3c.github.io/FileAPI/#dfn-abort - */ - abort() { - // 1. If this's state is "empty" or if this's state is - // "done" set this's result to null and terminate - // this algorithm. - if (this[kState] === "empty" || this[kState] === "done") { - this[kResult] = null; - return; - } - - // 2. If this's state is "loading" set this's state to - // "done" and set this's result to null. - if (this[kState] === "loading") { - this[kState] = "done"; - this[kResult] = null; - } - - // 3. If there are any tasks from this on the file reading - // task source in an affiliated task queue, then remove - // those tasks from that task queue. - this[kAborted] = true; - - // 4. Terminate the algorithm for the read method being processed. - // TODO - - // 5. Fire a progress event called abort at this. - fireAProgressEvent("abort", this); - - // 6. If this's state is not "loading", fire a progress - // event called loadend at this. - if (this[kState] !== "loading") { - fireAProgressEvent("loadend", this); - } - } - - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate - */ - get readyState() { - webidl.brandCheck(this, FileReader); - - switch (this[kState]) { - case "empty": - return this.EMPTY; - case "loading": - return this.LOADING; - case "done": - return this.DONE; - } - } - - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-result - */ - get result() { - webidl.brandCheck(this, FileReader); - - // The result attribute’s getter, when invoked, must return - // this's result. - return this[kResult]; - } - - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-error - */ - get error() { - webidl.brandCheck(this, FileReader); - - // The error attribute’s getter, when invoked, must return - // this's error. - return this[kError]; - } - - get onloadend() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].loadend; - } - - set onloadend(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].loadend) { - this.removeEventListener("loadend", this[kEvents].loadend); - } - - if (typeof fn === "function") { - this[kEvents].loadend = fn; - this.addEventListener("loadend", fn); - } else { - this[kEvents].loadend = null; - } - } - - get onerror() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].error; - } - - set onerror(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].error) { - this.removeEventListener("error", this[kEvents].error); - } - - if (typeof fn === "function") { - this[kEvents].error = fn; - this.addEventListener("error", fn); - } else { - this[kEvents].error = null; - } - } - - get onloadstart() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].loadstart; - } - - set onloadstart(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].loadstart) { - this.removeEventListener("loadstart", this[kEvents].loadstart); - } - - if (typeof fn === "function") { - this[kEvents].loadstart = fn; - this.addEventListener("loadstart", fn); - } else { - this[kEvents].loadstart = null; - } - } - - get onprogress() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].progress; - } - - set onprogress(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].progress) { - this.removeEventListener("progress", this[kEvents].progress); - } - - if (typeof fn === "function") { - this[kEvents].progress = fn; - this.addEventListener("progress", fn); - } else { - this[kEvents].progress = null; - } - } - - get onload() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].load; - } - - set onload(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].load) { - this.removeEventListener("load", this[kEvents].load); - } - - if (typeof fn === "function") { - this[kEvents].load = fn; - this.addEventListener("load", fn); - } else { - this[kEvents].load = null; - } - } - - get onabort() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].abort; - } - - set onabort(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].abort) { - this.removeEventListener("abort", this[kEvents].abort); - } - - if (typeof fn === "function") { - this[kEvents].abort = fn; - this.addEventListener("abort", fn); - } else { - this[kEvents].abort = null; - } - } - } - - // https://w3c.github.io/FileAPI/#dom-filereader-empty - FileReader.EMPTY = FileReader.prototype.EMPTY = 0; - // https://w3c.github.io/FileAPI/#dom-filereader-loading - FileReader.LOADING = FileReader.prototype.LOADING = 1; - // https://w3c.github.io/FileAPI/#dom-filereader-done - FileReader.DONE = FileReader.prototype.DONE = 2; - - Object.defineProperties(FileReader.prototype, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors, - readAsArrayBuffer: kEnumerableProperty, - readAsBinaryString: kEnumerableProperty, - readAsText: kEnumerableProperty, - readAsDataURL: kEnumerableProperty, - abort: kEnumerableProperty, - readyState: kEnumerableProperty, - result: kEnumerableProperty, - error: kEnumerableProperty, - onloadstart: kEnumerableProperty, - onprogress: kEnumerableProperty, - onload: kEnumerableProperty, - onabort: kEnumerableProperty, - onerror: kEnumerableProperty, - onloadend: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "FileReader", - writable: false, - enumerable: false, - configurable: true, - }, - }); - - Object.defineProperties(FileReader, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors, - }); - - module.exports = { - FileReader, - }; - - /***/ - }, - - /***/ 5504: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { webidl } = __nccwpck_require__(1744); - - const kState = Symbol("ProgressEvent state"); - - /** - * @see https://xhr.spec.whatwg.org/#progressevent - */ - class ProgressEvent extends Event { - constructor(type, eventInitDict = {}) { - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); - - super(type, eventInitDict); - - this[kState] = { - lengthComputable: eventInitDict.lengthComputable, - loaded: eventInitDict.loaded, - total: eventInitDict.total, - }; - } - - get lengthComputable() { - webidl.brandCheck(this, ProgressEvent); - - return this[kState].lengthComputable; - } - - get loaded() { - webidl.brandCheck(this, ProgressEvent); - - return this[kState].loaded; - } - - get total() { - webidl.brandCheck(this, ProgressEvent); - - return this[kState].total; - } - } - - webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ - { - key: "lengthComputable", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "loaded", - converter: webidl.converters["unsigned long long"], - defaultValue: 0, - }, - { - key: "total", - converter: webidl.converters["unsigned long long"], - defaultValue: 0, - }, - { - key: "bubbles", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "cancelable", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "composed", - converter: webidl.converters.boolean, - defaultValue: false, - }, - ]); - - module.exports = { - ProgressEvent, - }; - - /***/ - }, - - /***/ 9054: /***/ (module) => { - "use strict"; - - module.exports = { - kState: Symbol("FileReader state"), - kResult: Symbol("FileReader result"), - kError: Symbol("FileReader error"), - kLastProgressEventFired: Symbol("FileReader last progress event fired timestamp"), - kEvents: Symbol("FileReader events"), - kAborted: Symbol("FileReader aborted"), - }; - - /***/ - }, - - /***/ 7530: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kState, kError, kResult, kAborted, kLastProgressEventFired } = __nccwpck_require__(9054); - const { ProgressEvent } = __nccwpck_require__(5504); - const { getEncoding } = __nccwpck_require__(4854); - const { DOMException } = __nccwpck_require__(1037); - const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(685); - const { types } = __nccwpck_require__(3837); - const { StringDecoder } = __nccwpck_require__(1576); - const { btoa } = __nccwpck_require__(4300); - - /** @type {PropertyDescriptor} */ - const staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false, - }; - - /** - * @see https://w3c.github.io/FileAPI/#readOperation - * @param {import('./filereader').FileReader} fr - * @param {import('buffer').Blob} blob - * @param {string} type - * @param {string?} encodingName - */ - function readOperation(fr, blob, type, encodingName) { - // 1. If fr’s state is "loading", throw an InvalidStateError - // DOMException. - if (fr[kState] === "loading") { - throw new DOMException("Invalid state", "InvalidStateError"); - } - - // 2. Set fr’s state to "loading". - fr[kState] = "loading"; - - // 3. Set fr’s result to null. - fr[kResult] = null; - - // 4. Set fr’s error to null. - fr[kError] = null; - - // 5. Let stream be the result of calling get stream on blob. - /** @type {import('stream/web').ReadableStream} */ - const stream = blob.stream(); - - // 6. Let reader be the result of getting a reader from stream. - const reader = stream.getReader(); - - // 7. Let bytes be an empty byte sequence. - /** @type {Uint8Array[]} */ - const bytes = []; - - // 8. Let chunkPromise be the result of reading a chunk from - // stream with reader. - let chunkPromise = reader.read(); - - // 9. Let isFirstChunk be true. - let isFirstChunk = true; - - // 10. In parallel, while true: - // Note: "In parallel" just means non-blocking - // Note 2: readOperation itself cannot be async as double - // reading the body would then reject the promise, instead - // of throwing an error. - (async () => { - while (!fr[kAborted]) { - // 1. Wait for chunkPromise to be fulfilled or rejected. - try { - const { done, value } = await chunkPromise; - - // 2. If chunkPromise is fulfilled, and isFirstChunk is - // true, queue a task to fire a progress event called - // loadstart at fr. - if (isFirstChunk && !fr[kAborted]) { - queueMicrotask(() => { - fireAProgressEvent("loadstart", fr); - }); - } - - // 3. Set isFirstChunk to false. - isFirstChunk = false; - - // 4. If chunkPromise is fulfilled with an object whose - // done property is false and whose value property is - // a Uint8Array object, run these steps: - if (!done && types.isUint8Array(value)) { - // 1. Let bs be the byte sequence represented by the - // Uint8Array object. - - // 2. Append bs to bytes. - bytes.push(value); - - // 3. If roughly 50ms have passed since these steps - // were last invoked, queue a task to fire a - // progress event called progress at fr. - if ( - (fr[kLastProgressEventFired] === undefined || - Date.now() - fr[kLastProgressEventFired] >= 50) && - !fr[kAborted] - ) { - fr[kLastProgressEventFired] = Date.now(); - queueMicrotask(() => { - fireAProgressEvent("progress", fr); - }); - } - - // 4. Set chunkPromise to the result of reading a - // chunk from stream with reader. - chunkPromise = reader.read(); - } else if (done) { - // 5. Otherwise, if chunkPromise is fulfilled with an - // object whose done property is true, queue a task - // to run the following steps and abort this algorithm: - queueMicrotask(() => { - // 1. Set fr’s state to "done". - fr[kState] = "done"; - - // 2. Let result be the result of package data given - // bytes, type, blob’s type, and encodingName. - try { - const result = packageData(bytes, type, blob.type, encodingName); - - // 4. Else: - - if (fr[kAborted]) { - return; - } - - // 1. Set fr’s result to result. - fr[kResult] = result; - - // 2. Fire a progress event called load at the fr. - fireAProgressEvent("load", fr); - } catch (error) { - // 3. If package data threw an exception error: - - // 1. Set fr’s error to error. - fr[kError] = error; - - // 2. Fire a progress event called error at fr. - fireAProgressEvent("error", fr); - } - - // 5. If fr’s state is not "loading", fire a progress - // event called loadend at the fr. - if (fr[kState] !== "loading") { - fireAProgressEvent("loadend", fr); - } - }); - - break; - } - } catch (error) { - if (fr[kAborted]) { - return; - } - - // 6. Otherwise, if chunkPromise is rejected with an - // error error, queue a task to run the following - // steps and abort this algorithm: - queueMicrotask(() => { - // 1. Set fr’s state to "done". - fr[kState] = "done"; - - // 2. Set fr’s error to error. - fr[kError] = error; - - // 3. Fire a progress event called error at fr. - fireAProgressEvent("error", fr); - - // 4. If fr’s state is not "loading", fire a progress - // event called loadend at fr. - if (fr[kState] !== "loading") { - fireAProgressEvent("loadend", fr); - } - }); - - break; - } - } - })(); - } - - /** - * @see https://w3c.github.io/FileAPI/#fire-a-progress-event - * @see https://dom.spec.whatwg.org/#concept-event-fire - * @param {string} e The name of the event - * @param {import('./filereader').FileReader} reader - */ - function fireAProgressEvent(e, reader) { - // The progress event e does not bubble. e.bubbles must be false - // The progress event e is NOT cancelable. e.cancelable must be false - const event = new ProgressEvent(e, { - bubbles: false, - cancelable: false, - }); - - reader.dispatchEvent(event); - } - - /** - * @see https://w3c.github.io/FileAPI/#blob-package-data - * @param {Uint8Array[]} bytes - * @param {string} type - * @param {string?} mimeType - * @param {string?} encodingName - */ - function packageData(bytes, type, mimeType, encodingName) { - // 1. A Blob has an associated package data algorithm, given - // bytes, a type, a optional mimeType, and a optional - // encodingName, which switches on type and runs the - // associated steps: - - switch (type) { - case "DataURL": { - // 1. Return bytes as a DataURL [RFC2397] subject to - // the considerations below: - // * Use mimeType as part of the Data URL if it is - // available in keeping with the Data URL - // specification [RFC2397]. - // * If mimeType is not available return a Data URL - // without a media-type. [RFC2397]. - - // https://datatracker.ietf.org/doc/html/rfc2397#section-3 - // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data - // mediatype := [ type "/" subtype ] *( ";" parameter ) - // data := *urlchar - // parameter := attribute "=" value - let dataURL = "data:"; - - const parsed = parseMIMEType(mimeType || "application/octet-stream"); - - if (parsed !== "failure") { - dataURL += serializeAMimeType(parsed); - } - - dataURL += ";base64,"; - - const decoder = new StringDecoder("latin1"); - - for (const chunk of bytes) { - dataURL += btoa(decoder.write(chunk)); - } - - dataURL += btoa(decoder.end()); - - return dataURL; - } - case "Text": { - // 1. Let encoding be failure - let encoding = "failure"; - - // 2. If the encodingName is present, set encoding to the - // result of getting an encoding from encodingName. - if (encodingName) { - encoding = getEncoding(encodingName); - } - - // 3. If encoding is failure, and mimeType is present: - if (encoding === "failure" && mimeType) { - // 1. Let type be the result of parse a MIME type - // given mimeType. - const type = parseMIMEType(mimeType); - - // 2. If type is not failure, set encoding to the result - // of getting an encoding from type’s parameters["charset"]. - if (type !== "failure") { - encoding = getEncoding(type.parameters.get("charset")); - } - } - - // 4. If encoding is failure, then set encoding to UTF-8. - if (encoding === "failure") { - encoding = "UTF-8"; - } - - // 5. Decode bytes using fallback encoding encoding, and - // return the result. - return decode(bytes, encoding); - } - case "ArrayBuffer": { - // Return a new ArrayBuffer whose contents are bytes. - const sequence = combineByteSequences(bytes); - - return sequence.buffer; - } - case "BinaryString": { - // Return bytes as a binary string, in which every byte - // is represented by a code unit of equal value [0..255]. - let binaryString = ""; - - const decoder = new StringDecoder("latin1"); - - for (const chunk of bytes) { - binaryString += decoder.write(chunk); - } - - binaryString += decoder.end(); - - return binaryString; - } - } - } - - /** - * @see https://encoding.spec.whatwg.org/#decode - * @param {Uint8Array[]} ioQueue - * @param {string} encoding - */ - function decode(ioQueue, encoding) { - const bytes = combineByteSequences(ioQueue); - - // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. - const BOMEncoding = BOMSniffing(bytes); - - let slice = 0; - - // 2. If BOMEncoding is non-null: - if (BOMEncoding !== null) { - // 1. Set encoding to BOMEncoding. - encoding = BOMEncoding; - - // 2. Read three bytes from ioQueue, if BOMEncoding is - // UTF-8; otherwise read two bytes. - // (Do nothing with those bytes.) - slice = BOMEncoding === "UTF-8" ? 3 : 2; - } - - // 3. Process a queue with an instance of encoding’s - // decoder, ioQueue, output, and "replacement". - - // 4. Return output. - - const sliced = bytes.slice(slice); - return new TextDecoder(encoding).decode(sliced); - } - - /** - * @see https://encoding.spec.whatwg.org/#bom-sniff - * @param {Uint8Array} ioQueue - */ - function BOMSniffing(ioQueue) { - // 1. Let BOM be the result of peeking 3 bytes from ioQueue, - // converted to a byte sequence. - const [a, b, c] = ioQueue; - - // 2. For each of the rows in the table below, starting with - // the first one and going down, if BOM starts with the - // bytes given in the first column, then return the - // encoding given in the cell in the second column of that - // row. Otherwise, return null. - if (a === 0xef && b === 0xbb && c === 0xbf) { - return "UTF-8"; - } else if (a === 0xfe && b === 0xff) { - return "UTF-16BE"; - } else if (a === 0xff && b === 0xfe) { - return "UTF-16LE"; - } - - return null; - } - - /** - * @param {Uint8Array[]} sequences - */ - function combineByteSequences(sequences) { - const size = sequences.reduce((a, b) => { - return a + b.byteLength; - }, 0); - - let offset = 0; - - return sequences.reduce((a, b) => { - a.set(b, offset); - offset += b.byteLength; - return a; - }, new Uint8Array(size)); - } - - module.exports = { - staticPropertyDescriptors, - readOperation, - fireAProgressEvent, - }; - - /***/ - }, - - /***/ 1892: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - // We include a version number for the Dispatcher API. In case of breaking changes, - // this version number must be increased to avoid conflicts. - const globalDispatcher = Symbol.for("undici.globalDispatcher.1"); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const Agent = __nccwpck_require__(7890); - - if (getGlobalDispatcher() === undefined) { - setGlobalDispatcher(new Agent()); - } - - function setGlobalDispatcher(agent) { - if (!agent || typeof agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument agent must implement Agent"); - } - Object.defineProperty(globalThis, globalDispatcher, { - value: agent, - writable: true, - enumerable: false, - configurable: false, - }); - } - - function getGlobalDispatcher() { - return globalThis[globalDispatcher]; - } - - module.exports = { - setGlobalDispatcher, - getGlobalDispatcher, - }; - - /***/ - }, - - /***/ 6930: /***/ (module) => { - "use strict"; - - module.exports = class DecoratorHandler { - constructor(handler) { - this.handler = handler; - } - - onConnect(...args) { - return this.handler.onConnect(...args); - } - - onError(...args) { - return this.handler.onError(...args); - } - - onUpgrade(...args) { - return this.handler.onUpgrade(...args); - } - - onHeaders(...args) { - return this.handler.onHeaders(...args); - } - - onData(...args) { - return this.handler.onData(...args); - } - - onComplete(...args) { - return this.handler.onComplete(...args); - } - - onBodySent(...args) { - return this.handler.onBodySent(...args); - } - }; - - /***/ - }, - - /***/ 2860: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const util = __nccwpck_require__(3983); - const { kBodyUsed } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const EE = __nccwpck_require__(2361); - - const redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; - - const kBody = Symbol("body"); - - class BodyAsyncIterable { - constructor(body) { - this[kBody] = body; - this[kBodyUsed] = false; - } - - async *[Symbol.asyncIterator]() { - assert(!this[kBodyUsed], "disturbed"); - this[kBodyUsed] = true; - yield* this[kBody]; - } - } - - class RedirectHandler { - constructor(dispatch, maxRedirections, opts, handler) { - if ( - maxRedirections != null && - (!Number.isInteger(maxRedirections) || maxRedirections < 0) - ) { - throw new InvalidArgumentError("maxRedirections must be a positive number"); - } - - util.validateHandler(handler, opts.method, opts.upgrade); - - this.dispatch = dispatch; - this.location = null; - this.abort = null; - this.opts = { ...opts, maxRedirections: 0 }; // opts must be a copy - this.maxRedirections = maxRedirections; - this.handler = handler; - this.history = []; - - if (util.isStream(this.opts.body)) { - // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp - // so that it can be dispatched again? - // TODO (fix): Do we need 100-expect support to provide a way to do this properly? - if (util.bodyLength(this.opts.body) === 0) { - this.opts.body.on("data", function () { - assert(false); - }); - } - - if (typeof this.opts.body.readableDidRead !== "boolean") { - this.opts.body[kBodyUsed] = false; - EE.prototype.on.call(this.opts.body, "data", function () { - this[kBodyUsed] = true; - }); - } - } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { - // TODO (fix): We can't access ReadableStream internal state - // to determine whether or not it has been disturbed. This is just - // a workaround. - this.opts.body = new BodyAsyncIterable(this.opts.body); - } else if ( - this.opts.body && - typeof this.opts.body !== "string" && - !ArrayBuffer.isView(this.opts.body) && - util.isIterable(this.opts.body) - ) { - // TODO: Should we allow re-using iterable if !this.opts.idempotent - // or through some other flag? - this.opts.body = new BodyAsyncIterable(this.opts.body); - } - } - - onConnect(abort) { - this.abort = abort; - this.handler.onConnect(abort, { history: this.history }); - } - - onUpgrade(statusCode, headers, socket) { - this.handler.onUpgrade(statusCode, headers, socket); - } - - onError(error) { - this.handler.onError(error); - } - - onHeaders(statusCode, headers, resume, statusText) { - this.location = - this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) - ? null - : parseLocation(statusCode, headers); - - if (this.opts.origin) { - this.history.push(new URL(this.opts.path, this.opts.origin)); - } - - if (!this.location) { - return this.handler.onHeaders(statusCode, headers, resume, statusText); - } - - const { origin, pathname, search } = util.parseURL( - new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)), - ); - const path = search ? `${pathname}${search}` : pathname; - - // Remove headers referring to the original URL. - // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. - // https://tools.ietf.org/html/rfc7231#section-6.4 - this.opts.headers = cleanRequestHeaders( - this.opts.headers, - statusCode === 303, - this.opts.origin !== origin, - ); - this.opts.path = path; - this.opts.origin = origin; - this.opts.maxRedirections = 0; - this.opts.query = null; - - // https://tools.ietf.org/html/rfc7231#section-6.4.4 - // In case of HTTP 303, always replace method to be either HEAD or GET - if (statusCode === 303 && this.opts.method !== "HEAD") { - this.opts.method = "GET"; - this.opts.body = null; - } - } - - onData(chunk) { - if (this.location) { - /* - https://tools.ietf.org/html/rfc7231#section-6.4 - - TLDR: undici always ignores 3xx response bodies. - - Redirection is used to serve the requested resource from another URL, so it is assumes that - no body is generated (and thus can be ignored). Even though generating a body is not prohibited. - - For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually - (which means it's optional and not mandated) contain just an hyperlink to the value of - the Location response header, so the body can be ignored safely. - - For status 300, which is "Multiple Choices", the spec mentions both generating a Location - response header AND a response body with the other possible location to follow. - Since the spec explicitily chooses not to specify a format for such body and leave it to - servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. - */ - } else { - return this.handler.onData(chunk); - } - } - - onComplete(trailers) { - if (this.location) { - /* - https://tools.ietf.org/html/rfc7231#section-6.4 - - TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections - and neither are useful if present. - - See comment on onData method above for more detailed informations. - */ - - this.location = null; - this.abort = null; - - this.dispatch(this.opts, this); - } else { - this.handler.onComplete(trailers); - } - } - - onBodySent(chunk) { - if (this.handler.onBodySent) { - this.handler.onBodySent(chunk); - } - } - } - - function parseLocation(statusCode, headers) { - if (redirectableStatusCodes.indexOf(statusCode) === -1) { - return null; - } - - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toString().toLowerCase() === "location") { - return headers[i + 1]; - } - } - } - - // https://tools.ietf.org/html/rfc7231#section-6.4.4 - function shouldRemoveHeader(header, removeContent, unknownOrigin) { - return ( - (header.length === 4 && header.toString().toLowerCase() === "host") || - (removeContent && header.toString().toLowerCase().indexOf("content-") === 0) || - (unknownOrigin && - header.length === 13 && - header.toString().toLowerCase() === "authorization") || - (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === "cookie") - ); - } - - // https://tools.ietf.org/html/rfc7231#section-6.4 - function cleanRequestHeaders(headers, removeContent, unknownOrigin) { - const ret = []; - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { - ret.push(headers[i], headers[i + 1]); - } - } - } else if (headers && typeof headers === "object") { - for (const key of Object.keys(headers)) { - if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { - ret.push(key, headers[key]); - } - } - } else { - assert(headers == null, "headers must be an object or an array"); - } - return ret; - } - - module.exports = RedirectHandler; - - /***/ - }, - - /***/ 2286: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const assert = __nccwpck_require__(9491); - - const { kRetryHandlerDefaultRetry } = __nccwpck_require__(2785); - const { RequestRetryError } = __nccwpck_require__(8045); - const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3983); - - function calculateRetryAfterHeader(retryAfter) { - const current = Date.now(); - const diff = new Date(retryAfter).getTime() - current; - - return diff; - } - - class RetryHandler { - constructor(opts, handlers) { - const { retryOptions, ...dispatchOpts } = opts; - const { - // Retry scoped - retry: retryFn, - maxRetries, - maxTimeout, - minTimeout, - timeoutFactor, - // Response scoped - methods, - errorCodes, - retryAfter, - statusCodes, - } = retryOptions ?? {}; - - this.dispatch = handlers.dispatch; - this.handler = handlers.handler; - this.opts = dispatchOpts; - this.abort = null; - this.aborted = false; - this.retryOpts = { - retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], - retryAfter: retryAfter ?? true, - maxTimeout: maxTimeout ?? 30 * 1000, // 30s, - timeout: minTimeout ?? 500, // .5s - timeoutFactor: timeoutFactor ?? 2, - maxRetries: maxRetries ?? 5, - // What errors we should retry - methods: methods ?? ["GET", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE"], - // Indicates which errors to retry - statusCodes: statusCodes ?? [500, 502, 503, 504, 429], - // List of errors to retry - errorCodes: errorCodes ?? [ - "ECONNRESET", - "ECONNREFUSED", - "ENOTFOUND", - "ENETDOWN", - "ENETUNREACH", - "EHOSTDOWN", - "EHOSTUNREACH", - "EPIPE", - ], - }; - - this.retryCount = 0; - this.start = 0; - this.end = null; - this.etag = null; - this.resume = null; - - // Handle possible onConnect duplication - this.handler.onConnect((reason) => { - this.aborted = true; - if (this.abort) { - this.abort(reason); - } else { - this.reason = reason; - } - }); - } - - onRequestSent() { - if (this.handler.onRequestSent) { - this.handler.onRequestSent(); - } - } - - onUpgrade(statusCode, headers, socket) { - if (this.handler.onUpgrade) { - this.handler.onUpgrade(statusCode, headers, socket); - } - } - - onConnect(abort) { - if (this.aborted) { - abort(this.reason); - } else { - this.abort = abort; - } - } - - onBodySent(chunk) { - if (this.handler.onBodySent) return this.handler.onBodySent(chunk); - } - - static [kRetryHandlerDefaultRetry](err, { state, opts }, cb) { - const { statusCode, code, headers } = err; - const { method, retryOptions } = opts; - const { - maxRetries, - timeout, - maxTimeout, - timeoutFactor, - statusCodes, - errorCodes, - methods, - } = retryOptions; - let { counter, currentTimeout } = state; - - currentTimeout = currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout; - - // Any code that is not a Undici's originated and allowed to retry - if ( - code && - code !== "UND_ERR_REQ_RETRY" && - code !== "UND_ERR_SOCKET" && - !errorCodes.includes(code) - ) { - cb(err); - return; - } - - // If a set of method are provided and the current method is not in the list - if (Array.isArray(methods) && !methods.includes(method)) { - cb(err); - return; - } - - // If a set of status code are provided and the current status code is not in the list - if ( - statusCode != null && - Array.isArray(statusCodes) && - !statusCodes.includes(statusCode) - ) { - cb(err); - return; - } - - // If we reached the max number of retries - if (counter > maxRetries) { - cb(err); - return; - } - - let retryAfterHeader = headers != null && headers["retry-after"]; - if (retryAfterHeader) { - retryAfterHeader = Number(retryAfterHeader); - retryAfterHeader = isNaN(retryAfterHeader) - ? calculateRetryAfterHeader(retryAfterHeader) - : retryAfterHeader * 1e3; // Retry-After is in seconds - } - - const retryTimeout = - retryAfterHeader > 0 - ? Math.min(retryAfterHeader, maxTimeout) - : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout); - - state.currentTimeout = retryTimeout; - - setTimeout(() => cb(null), retryTimeout); - } - - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const headers = parseHeaders(rawHeaders); - - this.retryCount += 1; - - if (statusCode >= 300) { - this.abort( - new RequestRetryError("Request failed", statusCode, { - headers, - count: this.retryCount, - }), - ); - return false; - } - - // Checkpoint for resume from where we left it - if (this.resume != null) { - this.resume = null; - - if (statusCode !== 206) { - return true; - } - - const contentRange = parseRangeHeader(headers["content-range"]); - // If no content range - if (!contentRange) { - this.abort( - new RequestRetryError("Content-Range mismatch", statusCode, { - headers, - count: this.retryCount, - }), - ); - return false; - } - - // Let's start with a weak etag check - if (this.etag != null && this.etag !== headers.etag) { - this.abort( - new RequestRetryError("ETag mismatch", statusCode, { - headers, - count: this.retryCount, - }), - ); - return false; - } - - const { start, size, end = size } = contentRange; - - assert(this.start === start, "content-range mismatch"); - assert(this.end == null || this.end === end, "content-range mismatch"); - - this.resume = resume; - return true; - } - - if (this.end == null) { - if (statusCode === 206) { - // First time we receive 206 - const range = parseRangeHeader(headers["content-range"]); - - if (range == null) { - return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); - } - - const { start, size, end = size } = range; - - assert( - start != null && Number.isFinite(start) && this.start !== start, - "content-range mismatch", - ); - assert(Number.isFinite(start)); - assert( - end != null && Number.isFinite(end) && this.end !== end, - "invalid content-length", - ); - - this.start = start; - this.end = end; - } - - // We make our best to checkpoint the body for further range headers - if (this.end == null) { - const contentLength = headers["content-length"]; - this.end = contentLength != null ? Number(contentLength) : null; - } - - assert(Number.isFinite(this.start)); - assert(this.end == null || Number.isFinite(this.end), "invalid content-length"); - - this.resume = resume; - this.etag = headers.etag != null ? headers.etag : null; - - return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); - } - - const err = new RequestRetryError("Request failed", statusCode, { - headers, - count: this.retryCount, - }); - - this.abort(err); - - return false; - } - - onData(chunk) { - this.start += chunk.length; - - return this.handler.onData(chunk); - } - - onComplete(rawTrailers) { - this.retryCount = 0; - return this.handler.onComplete(rawTrailers); - } - - onError(err) { - if (this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err); - } - - this.retryOpts.retry( - err, - { - state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, - opts: { retryOptions: this.retryOpts, ...this.opts }, - }, - onRetry.bind(this), - ); - - function onRetry(err) { - if (err != null || this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err); - } - - if (this.start !== 0) { - this.opts = { - ...this.opts, - headers: { - ...this.opts.headers, - range: `bytes=${this.start}-${this.end ?? ""}`, - }, - }; - } - - try { - this.dispatch(this.opts, this); - } catch (err) { - this.handler.onError(err); - } - } - } - } - - module.exports = RetryHandler; - - /***/ - }, - - /***/ 8861: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const RedirectHandler = __nccwpck_require__(2860); - - function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { - return (dispatch) => { - return function Intercept(opts, handler) { - const { maxRedirections = defaultMaxRedirections } = opts; - - if (!maxRedirections) { - return dispatch(opts, handler); - } - - const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); - opts = { ...opts, maxRedirections: 0 }; // Stop sub dispatcher from also redirecting. - return dispatch(opts, redirectHandler); - }; - }; - } - - module.exports = createRedirectInterceptor; - - /***/ - }, - - /***/ 953: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.SPECIAL_HEADERS = - exports.HEADER_STATE = - exports.MINOR = - exports.MAJOR = - exports.CONNECTION_TOKEN_CHARS = - exports.HEADER_CHARS = - exports.TOKEN = - exports.STRICT_TOKEN = - exports.HEX = - exports.URL_CHAR = - exports.STRICT_URL_CHAR = - exports.USERINFO_CHARS = - exports.MARK = - exports.ALPHANUM = - exports.NUM = - exports.HEX_MAP = - exports.NUM_MAP = - exports.ALPHA = - exports.FINISH = - exports.H_METHOD_MAP = - exports.METHOD_MAP = - exports.METHODS_RTSP = - exports.METHODS_ICE = - exports.METHODS_HTTP = - exports.METHODS = - exports.LENIENT_FLAGS = - exports.FLAGS = - exports.TYPE = - exports.ERROR = - void 0; - const utils_1 = __nccwpck_require__(1891); - // C headers - var ERROR; - (function (ERROR) { - ERROR[(ERROR["OK"] = 0)] = "OK"; - ERROR[(ERROR["INTERNAL"] = 1)] = "INTERNAL"; - ERROR[(ERROR["STRICT"] = 2)] = "STRICT"; - ERROR[(ERROR["LF_EXPECTED"] = 3)] = "LF_EXPECTED"; - ERROR[(ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4)] = "UNEXPECTED_CONTENT_LENGTH"; - ERROR[(ERROR["CLOSED_CONNECTION"] = 5)] = "CLOSED_CONNECTION"; - ERROR[(ERROR["INVALID_METHOD"] = 6)] = "INVALID_METHOD"; - ERROR[(ERROR["INVALID_URL"] = 7)] = "INVALID_URL"; - ERROR[(ERROR["INVALID_CONSTANT"] = 8)] = "INVALID_CONSTANT"; - ERROR[(ERROR["INVALID_VERSION"] = 9)] = "INVALID_VERSION"; - ERROR[(ERROR["INVALID_HEADER_TOKEN"] = 10)] = "INVALID_HEADER_TOKEN"; - ERROR[(ERROR["INVALID_CONTENT_LENGTH"] = 11)] = "INVALID_CONTENT_LENGTH"; - ERROR[(ERROR["INVALID_CHUNK_SIZE"] = 12)] = "INVALID_CHUNK_SIZE"; - ERROR[(ERROR["INVALID_STATUS"] = 13)] = "INVALID_STATUS"; - ERROR[(ERROR["INVALID_EOF_STATE"] = 14)] = "INVALID_EOF_STATE"; - ERROR[(ERROR["INVALID_TRANSFER_ENCODING"] = 15)] = "INVALID_TRANSFER_ENCODING"; - ERROR[(ERROR["CB_MESSAGE_BEGIN"] = 16)] = "CB_MESSAGE_BEGIN"; - ERROR[(ERROR["CB_HEADERS_COMPLETE"] = 17)] = "CB_HEADERS_COMPLETE"; - ERROR[(ERROR["CB_MESSAGE_COMPLETE"] = 18)] = "CB_MESSAGE_COMPLETE"; - ERROR[(ERROR["CB_CHUNK_HEADER"] = 19)] = "CB_CHUNK_HEADER"; - ERROR[(ERROR["CB_CHUNK_COMPLETE"] = 20)] = "CB_CHUNK_COMPLETE"; - ERROR[(ERROR["PAUSED"] = 21)] = "PAUSED"; - ERROR[(ERROR["PAUSED_UPGRADE"] = 22)] = "PAUSED_UPGRADE"; - ERROR[(ERROR["PAUSED_H2_UPGRADE"] = 23)] = "PAUSED_H2_UPGRADE"; - ERROR[(ERROR["USER"] = 24)] = "USER"; - })((ERROR = exports.ERROR || (exports.ERROR = {}))); - var TYPE; - (function (TYPE) { - TYPE[(TYPE["BOTH"] = 0)] = "BOTH"; - TYPE[(TYPE["REQUEST"] = 1)] = "REQUEST"; - TYPE[(TYPE["RESPONSE"] = 2)] = "RESPONSE"; - })((TYPE = exports.TYPE || (exports.TYPE = {}))); - var FLAGS; - (function (FLAGS) { - FLAGS[(FLAGS["CONNECTION_KEEP_ALIVE"] = 1)] = "CONNECTION_KEEP_ALIVE"; - FLAGS[(FLAGS["CONNECTION_CLOSE"] = 2)] = "CONNECTION_CLOSE"; - FLAGS[(FLAGS["CONNECTION_UPGRADE"] = 4)] = "CONNECTION_UPGRADE"; - FLAGS[(FLAGS["CHUNKED"] = 8)] = "CHUNKED"; - FLAGS[(FLAGS["UPGRADE"] = 16)] = "UPGRADE"; - FLAGS[(FLAGS["CONTENT_LENGTH"] = 32)] = "CONTENT_LENGTH"; - FLAGS[(FLAGS["SKIPBODY"] = 64)] = "SKIPBODY"; - FLAGS[(FLAGS["TRAILING"] = 128)] = "TRAILING"; - // 1 << 8 is unused - FLAGS[(FLAGS["TRANSFER_ENCODING"] = 512)] = "TRANSFER_ENCODING"; - })((FLAGS = exports.FLAGS || (exports.FLAGS = {}))); - var LENIENT_FLAGS; - (function (LENIENT_FLAGS) { - LENIENT_FLAGS[(LENIENT_FLAGS["HEADERS"] = 1)] = "HEADERS"; - LENIENT_FLAGS[(LENIENT_FLAGS["CHUNKED_LENGTH"] = 2)] = "CHUNKED_LENGTH"; - LENIENT_FLAGS[(LENIENT_FLAGS["KEEP_ALIVE"] = 4)] = "KEEP_ALIVE"; - })((LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}))); - var METHODS; - (function (METHODS) { - METHODS[(METHODS["DELETE"] = 0)] = "DELETE"; - METHODS[(METHODS["GET"] = 1)] = "GET"; - METHODS[(METHODS["HEAD"] = 2)] = "HEAD"; - METHODS[(METHODS["POST"] = 3)] = "POST"; - METHODS[(METHODS["PUT"] = 4)] = "PUT"; - /* pathological */ - METHODS[(METHODS["CONNECT"] = 5)] = "CONNECT"; - METHODS[(METHODS["OPTIONS"] = 6)] = "OPTIONS"; - METHODS[(METHODS["TRACE"] = 7)] = "TRACE"; - /* WebDAV */ - METHODS[(METHODS["COPY"] = 8)] = "COPY"; - METHODS[(METHODS["LOCK"] = 9)] = "LOCK"; - METHODS[(METHODS["MKCOL"] = 10)] = "MKCOL"; - METHODS[(METHODS["MOVE"] = 11)] = "MOVE"; - METHODS[(METHODS["PROPFIND"] = 12)] = "PROPFIND"; - METHODS[(METHODS["PROPPATCH"] = 13)] = "PROPPATCH"; - METHODS[(METHODS["SEARCH"] = 14)] = "SEARCH"; - METHODS[(METHODS["UNLOCK"] = 15)] = "UNLOCK"; - METHODS[(METHODS["BIND"] = 16)] = "BIND"; - METHODS[(METHODS["REBIND"] = 17)] = "REBIND"; - METHODS[(METHODS["UNBIND"] = 18)] = "UNBIND"; - METHODS[(METHODS["ACL"] = 19)] = "ACL"; - /* subversion */ - METHODS[(METHODS["REPORT"] = 20)] = "REPORT"; - METHODS[(METHODS["MKACTIVITY"] = 21)] = "MKACTIVITY"; - METHODS[(METHODS["CHECKOUT"] = 22)] = "CHECKOUT"; - METHODS[(METHODS["MERGE"] = 23)] = "MERGE"; - /* upnp */ - METHODS[(METHODS["M-SEARCH"] = 24)] = "M-SEARCH"; - METHODS[(METHODS["NOTIFY"] = 25)] = "NOTIFY"; - METHODS[(METHODS["SUBSCRIBE"] = 26)] = "SUBSCRIBE"; - METHODS[(METHODS["UNSUBSCRIBE"] = 27)] = "UNSUBSCRIBE"; - /* RFC-5789 */ - METHODS[(METHODS["PATCH"] = 28)] = "PATCH"; - METHODS[(METHODS["PURGE"] = 29)] = "PURGE"; - /* CalDAV */ - METHODS[(METHODS["MKCALENDAR"] = 30)] = "MKCALENDAR"; - /* RFC-2068, section 19.6.1.2 */ - METHODS[(METHODS["LINK"] = 31)] = "LINK"; - METHODS[(METHODS["UNLINK"] = 32)] = "UNLINK"; - /* icecast */ - METHODS[(METHODS["SOURCE"] = 33)] = "SOURCE"; - /* RFC-7540, section 11.6 */ - METHODS[(METHODS["PRI"] = 34)] = "PRI"; - /* RFC-2326 RTSP */ - METHODS[(METHODS["DESCRIBE"] = 35)] = "DESCRIBE"; - METHODS[(METHODS["ANNOUNCE"] = 36)] = "ANNOUNCE"; - METHODS[(METHODS["SETUP"] = 37)] = "SETUP"; - METHODS[(METHODS["PLAY"] = 38)] = "PLAY"; - METHODS[(METHODS["PAUSE"] = 39)] = "PAUSE"; - METHODS[(METHODS["TEARDOWN"] = 40)] = "TEARDOWN"; - METHODS[(METHODS["GET_PARAMETER"] = 41)] = "GET_PARAMETER"; - METHODS[(METHODS["SET_PARAMETER"] = 42)] = "SET_PARAMETER"; - METHODS[(METHODS["REDIRECT"] = 43)] = "REDIRECT"; - METHODS[(METHODS["RECORD"] = 44)] = "RECORD"; - /* RAOP */ - METHODS[(METHODS["FLUSH"] = 45)] = "FLUSH"; - })((METHODS = exports.METHODS || (exports.METHODS = {}))); - exports.METHODS_HTTP = [ - METHODS.DELETE, - METHODS.GET, - METHODS.HEAD, - METHODS.POST, - METHODS.PUT, - METHODS.CONNECT, - METHODS.OPTIONS, - METHODS.TRACE, - METHODS.COPY, - METHODS.LOCK, - METHODS.MKCOL, - METHODS.MOVE, - METHODS.PROPFIND, - METHODS.PROPPATCH, - METHODS.SEARCH, - METHODS.UNLOCK, - METHODS.BIND, - METHODS.REBIND, - METHODS.UNBIND, - METHODS.ACL, - METHODS.REPORT, - METHODS.MKACTIVITY, - METHODS.CHECKOUT, - METHODS.MERGE, - METHODS["M-SEARCH"], - METHODS.NOTIFY, - METHODS.SUBSCRIBE, - METHODS.UNSUBSCRIBE, - METHODS.PATCH, - METHODS.PURGE, - METHODS.MKCALENDAR, - METHODS.LINK, - METHODS.UNLINK, - METHODS.PRI, - // TODO(indutny): should we allow it with HTTP? - METHODS.SOURCE, - ]; - exports.METHODS_ICE = [METHODS.SOURCE]; - exports.METHODS_RTSP = [ - METHODS.OPTIONS, - METHODS.DESCRIBE, - METHODS.ANNOUNCE, - METHODS.SETUP, - METHODS.PLAY, - METHODS.PAUSE, - METHODS.TEARDOWN, - METHODS.GET_PARAMETER, - METHODS.SET_PARAMETER, - METHODS.REDIRECT, - METHODS.RECORD, - METHODS.FLUSH, - // For AirPlay - METHODS.GET, - METHODS.POST, - ]; - exports.METHOD_MAP = utils_1.enumToMap(METHODS); - exports.H_METHOD_MAP = {}; - Object.keys(exports.METHOD_MAP).forEach((key) => { - if (/^H/.test(key)) { - exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; - } - }); - var FINISH; - (function (FINISH) { - FINISH[(FINISH["SAFE"] = 0)] = "SAFE"; - FINISH[(FINISH["SAFE_WITH_CB"] = 1)] = "SAFE_WITH_CB"; - FINISH[(FINISH["UNSAFE"] = 2)] = "UNSAFE"; - })((FINISH = exports.FINISH || (exports.FINISH = {}))); - exports.ALPHA = []; - for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { - // Upper case - exports.ALPHA.push(String.fromCharCode(i)); - // Lower case - exports.ALPHA.push(String.fromCharCode(i + 0x20)); - } - exports.NUM_MAP = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9, - }; - exports.HEX_MAP = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9, - A: 0xa, - B: 0xb, - C: 0xc, - D: 0xd, - E: 0xe, - F: 0xf, - a: 0xa, - b: 0xb, - c: 0xc, - d: 0xd, - e: 0xe, - f: 0xf, - }; - exports.NUM = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; - exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); - exports.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; - exports.USERINFO_CHARS = exports.ALPHANUM.concat(exports.MARK).concat([ - "%", - ";", - ":", - "&", - "=", - "+", - "$", - ",", - ]); - // TODO(indutny): use RFC - exports.STRICT_URL_CHAR = [ - "!", - '"', - "$", - "%", - "&", - "'", - "(", - ")", - "*", - "+", - ",", - "-", - ".", - "/", - ":", - ";", - "<", - "=", - ">", - "@", - "[", - "\\", - "]", - "^", - "_", - "`", - "{", - "|", - "}", - "~", - ].concat(exports.ALPHANUM); - exports.URL_CHAR = exports.STRICT_URL_CHAR.concat(["\t", "\f"]); - // All characters with 0x80 bit set to 1 - for (let i = 0x80; i <= 0xff; i++) { - exports.URL_CHAR.push(i); - } - exports.HEX = exports.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); - /* Tokens as defined by rfc 2616. Also lowercases them. - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - */ - exports.STRICT_TOKEN = [ - "!", - "#", - "$", - "%", - "&", - "'", - "*", - "+", - "-", - ".", - "^", - "_", - "`", - "|", - "~", - ].concat(exports.ALPHANUM); - exports.TOKEN = exports.STRICT_TOKEN.concat([" "]); - /* - * Verify that a char is a valid visible (printable) US-ASCII - * character or %x80-FF - */ - exports.HEADER_CHARS = ["\t"]; - for (let i = 32; i <= 255; i++) { - if (i !== 127) { - exports.HEADER_CHARS.push(i); - } - } - // ',' = \x44 - exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); - exports.MAJOR = exports.NUM_MAP; - exports.MINOR = exports.MAJOR; - var HEADER_STATE; - (function (HEADER_STATE) { - HEADER_STATE[(HEADER_STATE["GENERAL"] = 0)] = "GENERAL"; - HEADER_STATE[(HEADER_STATE["CONNECTION"] = 1)] = "CONNECTION"; - HEADER_STATE[(HEADER_STATE["CONTENT_LENGTH"] = 2)] = "CONTENT_LENGTH"; - HEADER_STATE[(HEADER_STATE["TRANSFER_ENCODING"] = 3)] = "TRANSFER_ENCODING"; - HEADER_STATE[(HEADER_STATE["UPGRADE"] = 4)] = "UPGRADE"; - HEADER_STATE[(HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5)] = "CONNECTION_KEEP_ALIVE"; - HEADER_STATE[(HEADER_STATE["CONNECTION_CLOSE"] = 6)] = "CONNECTION_CLOSE"; - HEADER_STATE[(HEADER_STATE["CONNECTION_UPGRADE"] = 7)] = "CONNECTION_UPGRADE"; - HEADER_STATE[(HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8)] = "TRANSFER_ENCODING_CHUNKED"; - })((HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}))); - exports.SPECIAL_HEADERS = { - connection: HEADER_STATE.CONNECTION, - "content-length": HEADER_STATE.CONTENT_LENGTH, - "proxy-connection": HEADER_STATE.CONNECTION, - "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, - upgrade: HEADER_STATE.UPGRADE, - }; - //# sourceMappingURL=constants.js.map - - /***/ - }, - - /***/ 1145: /***/ (module) => { - module.exports = - "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="; - - /***/ - }, - - /***/ 5627: /***/ (module) => { - module.exports = - "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="; - - /***/ - }, - - /***/ 1891: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.enumToMap = void 0; - function enumToMap(obj) { - const res = {}; - Object.keys(obj).forEach((key) => { - const value = obj[key]; - if (typeof value === "number") { - res[key] = value; - } - }); - return res; - } - exports.enumToMap = enumToMap; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 6771: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kClients } = __nccwpck_require__(2785); - const Agent = __nccwpck_require__(7890); - const { - kAgent, - kMockAgentSet, - kMockAgentGet, - kDispatches, - kIsMockActive, - kNetConnect, - kGetNetConnect, - kOptions, - kFactory, - } = __nccwpck_require__(4347); - const MockClient = __nccwpck_require__(8687); - const MockPool = __nccwpck_require__(6193); - const { matchValue, buildMockOptions } = __nccwpck_require__(9323); - const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8045); - const Dispatcher = __nccwpck_require__(412); - const Pluralizer = __nccwpck_require__(8891); - const PendingInterceptorsFormatter = __nccwpck_require__(6823); - - class FakeWeakRef { - constructor(value) { - this.value = value; - } - - deref() { - return this.value; - } - } - - class MockAgent extends Dispatcher { - constructor(opts) { - super(opts); - - this[kNetConnect] = true; - this[kIsMockActive] = true; - - // Instantiate Agent and encapsulate - if (opts && opts.agent && typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument opts.agent must implement Agent"); - } - const agent = opts && opts.agent ? opts.agent : new Agent(opts); - this[kAgent] = agent; - - this[kClients] = agent[kClients]; - this[kOptions] = buildMockOptions(opts); - } - - get(origin) { - let dispatcher = this[kMockAgentGet](origin); - - if (!dispatcher) { - dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - } - return dispatcher; - } - - dispatch(opts, handler) { - // Call MockAgent.get to perform additional setup before dispatching as normal - this.get(opts.origin); - return this[kAgent].dispatch(opts, handler); - } - - async close() { - await this[kAgent].close(); - this[kClients].clear(); - } - - deactivate() { - this[kIsMockActive] = false; - } - - activate() { - this[kIsMockActive] = true; - } - - enableNetConnect(matcher) { - if ( - typeof matcher === "string" || - typeof matcher === "function" || - matcher instanceof RegExp - ) { - if (Array.isArray(this[kNetConnect])) { - this[kNetConnect].push(matcher); - } else { - this[kNetConnect] = [matcher]; - } - } else if (typeof matcher === "undefined") { - this[kNetConnect] = true; - } else { - throw new InvalidArgumentError( - "Unsupported matcher. Must be one of String|Function|RegExp.", - ); - } - } - - disableNetConnect() { - this[kNetConnect] = false; - } - - // This is required to bypass issues caused by using global symbols - see: - // https://github.com/nodejs/undici/issues/1447 - get isMockActive() { - return this[kIsMockActive]; - } - - [kMockAgentSet](origin, dispatcher) { - this[kClients].set(origin, new FakeWeakRef(dispatcher)); - } - - [kFactory](origin) { - const mockOptions = Object.assign({ agent: this }, this[kOptions]); - return this[kOptions] && this[kOptions].connections === 1 - ? new MockClient(origin, mockOptions) - : new MockPool(origin, mockOptions); - } - - [kMockAgentGet](origin) { - // First check if we can immediately find it - const ref = this[kClients].get(origin); - if (ref) { - return ref.deref(); - } - - // If the origin is not a string create a dummy parent pool and return to user - if (typeof origin !== "string") { - const dispatcher = this[kFactory]("http://localhost:9999"); - this[kMockAgentSet](origin, dispatcher); - return dispatcher; - } - - // If we match, create a pool and assign the same dispatches - for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { - const nonExplicitDispatcher = nonExplicitRef.deref(); - if ( - nonExplicitDispatcher && - typeof keyMatcher !== "string" && - matchValue(keyMatcher, origin) - ) { - const dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; - return dispatcher; - } - } - } - - [kGetNetConnect]() { - return this[kNetConnect]; - } - - pendingInterceptors() { - const mockAgentClients = this[kClients]; - - return Array.from(mockAgentClients.entries()) - .flatMap(([origin, scope]) => - scope.deref()[kDispatches].map((dispatch) => ({ ...dispatch, origin })), - ) - .filter(({ pending }) => pending); - } - - assertNoPendingInterceptors({ - pendingInterceptorsFormatter = new PendingInterceptorsFormatter(), - } = {}) { - const pending = this.pendingInterceptors(); - - if (pending.length === 0) { - return; - } - - const pluralizer = new Pluralizer("interceptor", "interceptors").pluralize( - pending.length, - ); - - throw new UndiciError( - ` -${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: - -${pendingInterceptorsFormatter.format(pending)} -`.trim(), - ); - } - } - - module.exports = MockAgent; - - /***/ - }, - - /***/ 8687: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { promisify } = __nccwpck_require__(3837); - const Client = __nccwpck_require__(3598); - const { buildMockDispatch } = __nccwpck_require__(9323); - const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected, - } = __nccwpck_require__(4347); - const { MockInterceptor } = __nccwpck_require__(410); - const Symbols = __nccwpck_require__(2785); - const { InvalidArgumentError } = __nccwpck_require__(8045); - - /** - * MockClient provides an API that extends the Client to influence the mockDispatches. - */ - class MockClient extends Client { - constructor(origin, opts) { - super(origin, opts); - - if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument opts.agent must implement Agent"); - } - - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } - - get [Symbols.kConnected]() { - return this[kConnected]; - } - - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); - } - - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - } - - module.exports = MockClient; - - /***/ - }, - - /***/ 888: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { UndiciError } = __nccwpck_require__(8045); - - class MockNotMatchedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, MockNotMatchedError); - this.name = "MockNotMatchedError"; - this.message = message || "The request does not match any registered mock dispatches"; - this.code = "UND_MOCK_ERR_MOCK_NOT_MATCHED"; - } - } - - module.exports = { - MockNotMatchedError, - }; - - /***/ - }, - - /***/ 410: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(9323); - const { - kDispatches, - kDispatchKey, - kDefaultHeaders, - kDefaultTrailers, - kContentLength, - kMockDispatch, - } = __nccwpck_require__(4347); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const { buildURL } = __nccwpck_require__(3983); - - /** - * Defines the scope API for an interceptor reply - */ - class MockScope { - constructor(mockDispatch) { - this[kMockDispatch] = mockDispatch; - } - - /** - * Delay a reply by a set amount in ms. - */ - delay(waitInMs) { - if (typeof waitInMs !== "number" || !Number.isInteger(waitInMs) || waitInMs <= 0) { - throw new InvalidArgumentError("waitInMs must be a valid integer > 0"); - } - - this[kMockDispatch].delay = waitInMs; - return this; - } - - /** - * For a defined reply, never mark as consumed. - */ - persist() { - this[kMockDispatch].persist = true; - return this; - } - - /** - * Allow one to define a reply for a set amount of matching requests. - */ - times(repeatTimes) { - if ( - typeof repeatTimes !== "number" || - !Number.isInteger(repeatTimes) || - repeatTimes <= 0 - ) { - throw new InvalidArgumentError("repeatTimes must be a valid integer > 0"); - } - - this[kMockDispatch].times = repeatTimes; - return this; - } - } - - /** - * Defines an interceptor for a Mock - */ - class MockInterceptor { - constructor(opts, mockDispatches) { - if (typeof opts !== "object") { - throw new InvalidArgumentError("opts must be an object"); - } - if (typeof opts.path === "undefined") { - throw new InvalidArgumentError("opts.path must be defined"); - } - if (typeof opts.method === "undefined") { - opts.method = "GET"; - } - // See https://github.com/nodejs/undici/issues/1245 - // As per RFC 3986, clients are not supposed to send URI - // fragments to servers when they retrieve a document, - if (typeof opts.path === "string") { - if (opts.query) { - opts.path = buildURL(opts.path, opts.query); - } else { - // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 - const parsedURL = new URL(opts.path, "data://"); - opts.path = parsedURL.pathname + parsedURL.search; - } - } - if (typeof opts.method === "string") { - opts.method = opts.method.toUpperCase(); - } - - this[kDispatchKey] = buildKey(opts); - this[kDispatches] = mockDispatches; - this[kDefaultHeaders] = {}; - this[kDefaultTrailers] = {}; - this[kContentLength] = false; - } - - createMockScopeDispatchData(statusCode, data, responseOptions = {}) { - const responseData = getResponseData(data); - const contentLength = this[kContentLength] - ? { "content-length": responseData.length } - : {}; - const headers = { - ...this[kDefaultHeaders], - ...contentLength, - ...responseOptions.headers, - }; - const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; - - return { statusCode, data, headers, trailers }; - } - - validateReplyParameters(statusCode, data, responseOptions) { - if (typeof statusCode === "undefined") { - throw new InvalidArgumentError("statusCode must be defined"); - } - if (typeof data === "undefined") { - throw new InvalidArgumentError("data must be defined"); - } - if (typeof responseOptions !== "object") { - throw new InvalidArgumentError("responseOptions must be an object"); - } - } - - /** - * Mock an undici request with a defined reply. - */ - reply(replyData) { - // Values of reply aren't available right now as they - // can only be available when the reply callback is invoked. - if (typeof replyData === "function") { - // We'll first wrap the provided callback in another function, - // this function will properly resolve the data from the callback - // when invoked. - const wrappedDefaultsCallback = (opts) => { - // Our reply options callback contains the parameter for statusCode, data and options. - const resolvedData = replyData(opts); - - // Check if it is in the right format - if (typeof resolvedData !== "object") { - throw new InvalidArgumentError( - "reply options callback must return an object", - ); - } - - const { statusCode, data = "", responseOptions = {} } = resolvedData; - this.validateReplyParameters(statusCode, data, responseOptions); - // Since the values can be obtained immediately we return them - // from this higher order function that will be resolved later. - return { - ...this.createMockScopeDispatchData(statusCode, data, responseOptions), - }; - }; - - // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. - const newMockDispatch = addMockDispatch( - this[kDispatches], - this[kDispatchKey], - wrappedDefaultsCallback, - ); - return new MockScope(newMockDispatch); - } - - // We can have either one or three parameters, if we get here, - // we should have 1-3 parameters. So we spread the arguments of - // this function to obtain the parameters, since replyData will always - // just be the statusCode. - const [statusCode, data = "", responseOptions = {}] = [...arguments]; - this.validateReplyParameters(statusCode, data, responseOptions); - - // Send in-already provided data like usual - const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); - const newMockDispatch = addMockDispatch( - this[kDispatches], - this[kDispatchKey], - dispatchData, - ); - return new MockScope(newMockDispatch); - } - - /** - * Mock an undici request with a defined error. - */ - replyWithError(error) { - if (typeof error === "undefined") { - throw new InvalidArgumentError("error must be defined"); - } - - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); - return new MockScope(newMockDispatch); - } - - /** - * Set default reply headers on the interceptor for subsequent replies - */ - defaultReplyHeaders(headers) { - if (typeof headers === "undefined") { - throw new InvalidArgumentError("headers must be defined"); - } - - this[kDefaultHeaders] = headers; - return this; - } - - /** - * Set default reply trailers on the interceptor for subsequent replies - */ - defaultReplyTrailers(trailers) { - if (typeof trailers === "undefined") { - throw new InvalidArgumentError("trailers must be defined"); - } - - this[kDefaultTrailers] = trailers; - return this; - } - - /** - * Set reply content length header for replies on the interceptor - */ - replyContentLength() { - this[kContentLength] = true; - return this; - } - } - - module.exports.MockInterceptor = MockInterceptor; - module.exports.MockScope = MockScope; - - /***/ - }, - - /***/ 6193: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { promisify } = __nccwpck_require__(3837); - const Pool = __nccwpck_require__(4634); - const { buildMockDispatch } = __nccwpck_require__(9323); - const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected, - } = __nccwpck_require__(4347); - const { MockInterceptor } = __nccwpck_require__(410); - const Symbols = __nccwpck_require__(2785); - const { InvalidArgumentError } = __nccwpck_require__(8045); - - /** - * MockPool provides an API that extends the Pool to influence the mockDispatches. - */ - class MockPool extends Pool { - constructor(origin, opts) { - super(origin, opts); - - if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument opts.agent must implement Agent"); - } - - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } - - get [Symbols.kConnected]() { - return this[kConnected]; - } - - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); - } - - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - } - - module.exports = MockPool; - - /***/ - }, - - /***/ 4347: /***/ (module) => { - "use strict"; - - module.exports = { - kAgent: Symbol("agent"), - kOptions: Symbol("options"), - kFactory: Symbol("factory"), - kDispatches: Symbol("dispatches"), - kDispatchKey: Symbol("dispatch key"), - kDefaultHeaders: Symbol("default headers"), - kDefaultTrailers: Symbol("default trailers"), - kContentLength: Symbol("content length"), - kMockAgent: Symbol("mock agent"), - kMockAgentSet: Symbol("mock agent set"), - kMockAgentGet: Symbol("mock agent get"), - kMockDispatch: Symbol("mock dispatch"), - kClose: Symbol("close"), - kOriginalClose: Symbol("original agent close"), - kOrigin: Symbol("origin"), - kIsMockActive: Symbol("is mock active"), - kNetConnect: Symbol("net connect"), - kGetNetConnect: Symbol("get net connect"), - kConnected: Symbol("connected"), - }; - - /***/ - }, - - /***/ 9323: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { MockNotMatchedError } = __nccwpck_require__(888); - const { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect } = - __nccwpck_require__(4347); - const { buildURL, nop } = __nccwpck_require__(3983); - const { STATUS_CODES } = __nccwpck_require__(3685); - const { - types: { isPromise }, - } = __nccwpck_require__(3837); - - function matchValue(match, value) { - if (typeof match === "string") { - return match === value; - } - if (match instanceof RegExp) { - return match.test(value); - } - if (typeof match === "function") { - return match(value) === true; - } - return false; - } - - function lowerCaseEntries(headers) { - return Object.fromEntries( - Object.entries(headers).map(([headerName, headerValue]) => { - return [headerName.toLocaleLowerCase(), headerValue]; - }), - ); - } - - /** - * @param {import('../../index').Headers|string[]|Record} headers - * @param {string} key - */ - function getHeaderByName(headers, key) { - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { - return headers[i + 1]; - } - } - - return undefined; - } else if (typeof headers.get === "function") { - return headers.get(key); - } else { - return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; - } - } - - /** @param {string[]} headers */ - function buildHeadersFromArray(headers) { - // fetch HeadersList - const clone = headers.slice(); - const entries = []; - for (let index = 0; index < clone.length; index += 2) { - entries.push([clone[index], clone[index + 1]]); - } - return Object.fromEntries(entries); - } - - function matchHeaders(mockDispatch, headers) { - if (typeof mockDispatch.headers === "function") { - if (Array.isArray(headers)) { - // fetch HeadersList - headers = buildHeadersFromArray(headers); - } - return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}); - } - if (typeof mockDispatch.headers === "undefined") { - return true; - } - if (typeof headers !== "object" || typeof mockDispatch.headers !== "object") { - return false; - } - - for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { - const headerValue = getHeaderByName(headers, matchHeaderName); - - if (!matchValue(matchHeaderValue, headerValue)) { - return false; - } - } - return true; - } - - function safeUrl(path) { - if (typeof path !== "string") { - return path; - } - - const pathSegments = path.split("?"); - - if (pathSegments.length !== 2) { - return path; - } - - const qp = new URLSearchParams(pathSegments.pop()); - qp.sort(); - return [...pathSegments, qp.toString()].join("?"); - } - - function matchKey(mockDispatch, { path, method, body, headers }) { - const pathMatch = matchValue(mockDispatch.path, path); - const methodMatch = matchValue(mockDispatch.method, method); - const bodyMatch = - typeof mockDispatch.body !== "undefined" ? matchValue(mockDispatch.body, body) : true; - const headersMatch = matchHeaders(mockDispatch, headers); - return pathMatch && methodMatch && bodyMatch && headersMatch; - } - - function getResponseData(data) { - if (Buffer.isBuffer(data)) { - return data; - } else if (typeof data === "object") { - return JSON.stringify(data); - } else { - return data.toString(); - } - } - - function getMockDispatch(mockDispatches, key) { - const basePath = key.query ? buildURL(key.path, key.query) : key.path; - const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath; - - // Match path - let matchedMockDispatches = mockDispatches - .filter(({ consumed }) => !consumed) - .filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); - } - - // Match method - matchedMockDispatches = matchedMockDispatches.filter(({ method }) => - matchValue(method, key.method), - ); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); - } - - // Match body - matchedMockDispatches = matchedMockDispatches.filter(({ body }) => - typeof body !== "undefined" ? matchValue(body, key.body) : true, - ); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); - } - - // Match headers - matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => - matchHeaders(mockDispatch, key.headers), - ); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError( - `Mock dispatch not matched for headers '${ - typeof key.headers === "object" ? JSON.stringify(key.headers) : key.headers - }'`, - ); - } - - return matchedMockDispatches[0]; - } - - function addMockDispatch(mockDispatches, key, data) { - const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; - const replyData = typeof data === "function" ? { callback: data } : { ...data }; - const newMockDispatch = { - ...baseData, - ...key, - pending: true, - data: { error: null, ...replyData }, - }; - mockDispatches.push(newMockDispatch); - return newMockDispatch; - } - - function deleteMockDispatch(mockDispatches, key) { - const index = mockDispatches.findIndex((dispatch) => { - if (!dispatch.consumed) { - return false; - } - return matchKey(dispatch, key); - }); - if (index !== -1) { - mockDispatches.splice(index, 1); - } - } - - function buildKey(opts) { - const { path, method, body, headers, query } = opts; - return { - path, - method, - body, - headers, - query, - }; - } - - function generateKeyValues(data) { - return Object.entries(data).reduce( - (keyValuePairs, [key, value]) => [ - ...keyValuePairs, - Buffer.from(`${key}`), - Array.isArray(value) - ? value.map((x) => Buffer.from(`${x}`)) - : Buffer.from(`${value}`), - ], - [], - ); - } - - /** - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status - * @param {number} statusCode - */ - function getStatusText(statusCode) { - return STATUS_CODES[statusCode] || "unknown"; - } - - async function getResponse(body) { - const buffers = []; - for await (const data of body) { - buffers.push(data); - } - return Buffer.concat(buffers).toString("utf8"); - } - - /** - * Mock dispatch function used to simulate undici dispatches - */ - function mockDispatch(opts, handler) { - // Get mock dispatch from built key - const key = buildKey(opts); - const mockDispatch = getMockDispatch(this[kDispatches], key); - - mockDispatch.timesInvoked++; - - // Here's where we resolve a callback if a callback is present for the dispatch data. - if (mockDispatch.data.callback) { - mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }; - } - - // Parse mockDispatch data - const { - data: { statusCode, data, headers, trailers, error }, - delay, - persist, - } = mockDispatch; - const { timesInvoked, times } = mockDispatch; - - // If it's used up and not persistent, mark as consumed - mockDispatch.consumed = !persist && timesInvoked >= times; - mockDispatch.pending = timesInvoked < times; - - // If specified, trigger dispatch error - if (error !== null) { - deleteMockDispatch(this[kDispatches], key); - handler.onError(error); - return true; - } - - // Handle the request with a delay if necessary - if (typeof delay === "number" && delay > 0) { - setTimeout(() => { - handleReply(this[kDispatches]); - }, delay); - } else { - handleReply(this[kDispatches]); - } - - function handleReply(mockDispatches, _data = data) { - // fetch's HeadersList is a 1D string array - const optsHeaders = Array.isArray(opts.headers) - ? buildHeadersFromArray(opts.headers) - : opts.headers; - const body = - typeof _data === "function" ? _data({ ...opts, headers: optsHeaders }) : _data; - - // util.types.isPromise is likely needed for jest. - if (isPromise(body)) { - // If handleReply is asynchronous, throwing an error - // in the callback will reject the promise, rather than - // synchronously throw the error, which breaks some tests. - // Rather, we wait for the callback to resolve if it is a - // promise, and then re-run handleReply with the new body. - body.then((newData) => handleReply(mockDispatches, newData)); - return; - } - - const responseData = getResponseData(body); - const responseHeaders = generateKeyValues(headers); - const responseTrailers = generateKeyValues(trailers); - - handler.abort = nop; - handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); - handler.onData(Buffer.from(responseData)); - handler.onComplete(responseTrailers); - deleteMockDispatch(mockDispatches, key); - } - - function resume() {} - - return true; - } - - function buildMockDispatch() { - const agent = this[kMockAgent]; - const origin = this[kOrigin]; - const originalDispatch = this[kOriginalDispatch]; - - return function dispatch(opts, handler) { - if (agent.isMockActive) { - try { - mockDispatch.call(this, opts, handler); - } catch (error) { - if (error instanceof MockNotMatchedError) { - const netConnect = agent[kGetNetConnect](); - if (netConnect === false) { - throw new MockNotMatchedError( - `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`, - ); - } - if (checkNetConnect(netConnect, origin)) { - originalDispatch.call(this, opts, handler); - } else { - throw new MockNotMatchedError( - `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`, - ); - } - } else { - throw error; - } - } - } else { - originalDispatch.call(this, opts, handler); - } - }; - } - - function checkNetConnect(netConnect, origin) { - const url = new URL(origin); - if (netConnect === true) { - return true; - } else if ( - Array.isArray(netConnect) && - netConnect.some((matcher) => matchValue(matcher, url.host)) - ) { - return true; - } - return false; - } - - function buildMockOptions(opts) { - if (opts) { - const { agent, ...mockOptions } = opts; - return mockOptions; - } - } - - module.exports = { - getResponseData, - getMockDispatch, - addMockDispatch, - deleteMockDispatch, - buildKey, - generateKeyValues, - matchValue, - getResponse, - getStatusText, - mockDispatch, - buildMockDispatch, - checkNetConnect, - buildMockOptions, - getHeaderByName, - }; - - /***/ - }, - - /***/ 6823: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Transform } = __nccwpck_require__(2781); - const { Console } = __nccwpck_require__(6206); - - /** - * Gets the output of `console.table(…)` as a string. - */ - module.exports = class PendingInterceptorsFormatter { - constructor({ disableColors } = {}) { - this.transform = new Transform({ - transform(chunk, _enc, cb) { - cb(null, chunk); - }, - }); - - this.logger = new Console({ - stdout: this.transform, - inspectOptions: { - colors: !disableColors && !process.env.CI, - }, - }); - } - - format(pendingInterceptors) { - const withPrettyHeaders = pendingInterceptors.map( - ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ - Method: method, - Origin: origin, - Path: path, - "Status code": statusCode, - Persistent: persist ? "✅" : "❌", - Invocations: timesInvoked, - Remaining: persist ? Infinity : times - timesInvoked, - }), - ); - - this.logger.table(withPrettyHeaders); - return this.transform.read().toString(); - } - }; - - /***/ - }, - - /***/ 8891: /***/ (module) => { - "use strict"; - - const singulars = { - pronoun: "it", - is: "is", - was: "was", - this: "this", - }; - - const plurals = { - pronoun: "they", - is: "are", - was: "were", - this: "these", - }; - - module.exports = class Pluralizer { - constructor(singular, plural) { - this.singular = singular; - this.plural = plural; - } - - pluralize(count) { - const one = count === 1; - const keys = one ? singulars : plurals; - const noun = one ? this.singular : this.plural; - return { ...keys, count, noun }; - } - }; - - /***/ - }, - - /***/ 8266: /***/ (module) => { - "use strict"; - /* eslint-disable */ - - // Extracted from node/lib/internal/fixed_queue.js - - // Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. - const kSize = 2048; - const kMask = kSize - 1; - - // The FixedQueue is implemented as a singly-linked list of fixed-size - // circular buffers. It looks something like this: - // - // head tail - // | | - // v v - // +-----------+ <-----\ +-----------+ <------\ +-----------+ - // | [null] | \----- | next | \------- | next | - // +-----------+ +-----------+ +-----------+ - // | item | <-- bottom | item | <-- bottom | [empty] | - // | item | | item | | [empty] | - // | item | | item | | [empty] | - // | item | | item | | [empty] | - // | item | | item | bottom --> | item | - // | item | | item | | item | - // | ... | | ... | | ... | - // | item | | item | | item | - // | item | | item | | item | - // | [empty] | <-- top | item | | item | - // | [empty] | | item | | item | - // | [empty] | | [empty] | <-- top top --> | [empty] | - // +-----------+ +-----------+ +-----------+ - // - // Or, if there is only one circular buffer, it looks something - // like either of these: - // - // head tail head tail - // | | | | - // v v v v - // +-----------+ +-----------+ - // | [null] | | [null] | - // +-----------+ +-----------+ - // | [empty] | | item | - // | [empty] | | item | - // | item | <-- bottom top --> | [empty] | - // | item | | [empty] | - // | [empty] | <-- top bottom --> | item | - // | [empty] | | item | - // +-----------+ +-----------+ - // - // Adding a value means moving `top` forward by one, removing means - // moving `bottom` forward by one. After reaching the end, the queue - // wraps around. - // - // When `top === bottom` the current queue is empty and when - // `top + 1 === bottom` it's full. This wastes a single space of storage - // but allows much quicker checks. - - class FixedCircularBuffer { - constructor() { - this.bottom = 0; - this.top = 0; - this.list = new Array(kSize); - this.next = null; - } - - isEmpty() { - return this.top === this.bottom; - } - - isFull() { - return ((this.top + 1) & kMask) === this.bottom; - } - - push(data) { - this.list[this.top] = data; - this.top = (this.top + 1) & kMask; - } - - shift() { - const nextItem = this.list[this.bottom]; - if (nextItem === undefined) return null; - this.list[this.bottom] = undefined; - this.bottom = (this.bottom + 1) & kMask; - return nextItem; - } - } - - module.exports = class FixedQueue { - constructor() { - this.head = this.tail = new FixedCircularBuffer(); - } - - isEmpty() { - return this.head.isEmpty(); - } - - push(data) { - if (this.head.isFull()) { - // Head is full: Creates a new queue, sets the old queue's `.next` to it, - // and sets it as the new main queue. - this.head = this.head.next = new FixedCircularBuffer(); - } - this.head.push(data); - } - - shift() { - const tail = this.tail; - const next = tail.shift(); - if (tail.isEmpty() && tail.next !== null) { - // If there is another queue, it forms the new tail. - this.tail = tail.next; - } - return next; - } - }; - - /***/ - }, - - /***/ 3198: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const DispatcherBase = __nccwpck_require__(4839); - const FixedQueue = __nccwpck_require__(8266); - const { - kConnected, - kSize, - kRunning, - kPending, - kQueued, - kBusy, - kFree, - kUrl, - kClose, - kDestroy, - kDispatch, - } = __nccwpck_require__(2785); - const PoolStats = __nccwpck_require__(9689); - - const kClients = Symbol("clients"); - const kNeedDrain = Symbol("needDrain"); - const kQueue = Symbol("queue"); - const kClosedResolve = Symbol("closed resolve"); - const kOnDrain = Symbol("onDrain"); - const kOnConnect = Symbol("onConnect"); - const kOnDisconnect = Symbol("onDisconnect"); - const kOnConnectionError = Symbol("onConnectionError"); - const kGetDispatcher = Symbol("get dispatcher"); - const kAddClient = Symbol("add client"); - const kRemoveClient = Symbol("remove client"); - const kStats = Symbol("stats"); - - class PoolBase extends DispatcherBase { - constructor() { - super(); - - this[kQueue] = new FixedQueue(); - this[kClients] = []; - this[kQueued] = 0; - - const pool = this; - - this[kOnDrain] = function onDrain(origin, targets) { - const queue = pool[kQueue]; - - let needDrain = false; - - while (!needDrain) { - const item = queue.shift(); - if (!item) { - break; - } - pool[kQueued]--; - needDrain = !this.dispatch(item.opts, item.handler); - } - - this[kNeedDrain] = needDrain; - - if (!this[kNeedDrain] && pool[kNeedDrain]) { - pool[kNeedDrain] = false; - pool.emit("drain", origin, [pool, ...targets]); - } - - if (pool[kClosedResolve] && queue.isEmpty()) { - Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); - } - }; - - this[kOnConnect] = (origin, targets) => { - pool.emit("connect", origin, [pool, ...targets]); - }; - - this[kOnDisconnect] = (origin, targets, err) => { - pool.emit("disconnect", origin, [pool, ...targets], err); - }; - - this[kOnConnectionError] = (origin, targets, err) => { - pool.emit("connectionError", origin, [pool, ...targets], err); - }; - - this[kStats] = new PoolStats(this); - } - - get [kBusy]() { - return this[kNeedDrain]; - } - - get [kConnected]() { - return this[kClients].filter((client) => client[kConnected]).length; - } - - get [kFree]() { - return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]) - .length; - } - - get [kPending]() { - let ret = this[kQueued]; - for (const { [kPending]: pending } of this[kClients]) { - ret += pending; - } - return ret; - } - - get [kRunning]() { - let ret = 0; - for (const { [kRunning]: running } of this[kClients]) { - ret += running; - } - return ret; - } - - get [kSize]() { - let ret = this[kQueued]; - for (const { [kSize]: size } of this[kClients]) { - ret += size; - } - return ret; - } - - get stats() { - return this[kStats]; - } - - async [kClose]() { - if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); - } else { - return new Promise((resolve) => { - this[kClosedResolve] = resolve; - }); - } - } - - async [kDestroy](err) { - while (true) { - const item = this[kQueue].shift(); - if (!item) { - break; - } - item.handler.onError(err); - } - - return Promise.all(this[kClients].map((c) => c.destroy(err))); - } - - [kDispatch](opts, handler) { - const dispatcher = this[kGetDispatcher](); - - if (!dispatcher) { - this[kNeedDrain] = true; - this[kQueue].push({ opts, handler }); - this[kQueued]++; - } else if (!dispatcher.dispatch(opts, handler)) { - dispatcher[kNeedDrain] = true; - this[kNeedDrain] = !this[kGetDispatcher](); - } - - return !this[kNeedDrain]; - } - - [kAddClient](client) { - client - .on("drain", this[kOnDrain]) - .on("connect", this[kOnConnect]) - .on("disconnect", this[kOnDisconnect]) - .on("connectionError", this[kOnConnectionError]); - - this[kClients].push(client); - - if (this[kNeedDrain]) { - process.nextTick(() => { - if (this[kNeedDrain]) { - this[kOnDrain](client[kUrl], [this, client]); - } - }); - } - - return this; - } - - [kRemoveClient](client) { - client.close(() => { - const idx = this[kClients].indexOf(client); - if (idx !== -1) { - this[kClients].splice(idx, 1); - } - }); - - this[kNeedDrain] = this[kClients].some( - (dispatcher) => - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true, - ); - } - } - - module.exports = { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher, - }; - - /***/ - }, - - /***/ 9689: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(2785); - const kPool = Symbol("pool"); - - class PoolStats { - constructor(pool) { - this[kPool] = pool; - } - - get connected() { - return this[kPool][kConnected]; - } - - get free() { - return this[kPool][kFree]; - } - - get pending() { - return this[kPool][kPending]; - } - - get queued() { - return this[kPool][kQueued]; - } - - get running() { - return this[kPool][kRunning]; - } - - get size() { - return this[kPool][kSize]; - } - } - - module.exports = PoolStats; - - /***/ - }, - - /***/ 4634: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher } = __nccwpck_require__(3198); - const Client = __nccwpck_require__(3598); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { kUrl, kInterceptors } = __nccwpck_require__(2785); - const buildConnector = __nccwpck_require__(2067); - - const kOptions = Symbol("options"); - const kConnections = Symbol("connections"); - const kFactory = Symbol("factory"); - - function defaultFactory(origin, opts) { - return new Client(origin, opts); - } - - class Pool extends PoolBase { - constructor( - origin, - { - connections, - factory = defaultFactory, - connect, - connectTimeout, - tls, - maxCachedSessions, - socketPath, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - allowH2, - ...options - } = {}, - ) { - super(); - - if (connections != null && (!Number.isFinite(connections) || connections < 0)) { - throw new InvalidArgumentError("invalid connections"); - } - - if (typeof factory !== "function") { - throw new InvalidArgumentError("factory must be a function."); - } - - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError("connect must be a function or an object"); - } - - if (typeof connect !== "function") { - connect = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily - ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } - : undefined), - ...connect, - }); - } - - this[kInterceptors] = - options.interceptors && - options.interceptors.Pool && - Array.isArray(options.interceptors.Pool) - ? options.interceptors.Pool - : []; - this[kConnections] = connections || null; - this[kUrl] = util.parseOrigin(origin); - this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; - this[kOptions].interceptors = options.interceptors - ? { ...options.interceptors } - : undefined; - this[kFactory] = factory; - } - - [kGetDispatcher]() { - let dispatcher = this[kClients].find((dispatcher) => !dispatcher[kNeedDrain]); - - if (dispatcher) { - return dispatcher; - } - - if (!this[kConnections] || this[kClients].length < this[kConnections]) { - dispatcher = this[kFactory](this[kUrl], this[kOptions]); - this[kAddClient](dispatcher); - } - - return dispatcher; - } - } - - module.exports = Pool; - - /***/ - }, - - /***/ 7858: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(2785); - const { URL } = __nccwpck_require__(7310); - const Agent = __nccwpck_require__(7890); - const Pool = __nccwpck_require__(4634); - const DispatcherBase = __nccwpck_require__(4839); - const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8045); - const buildConnector = __nccwpck_require__(2067); - - const kAgent = Symbol("proxy agent"); - const kClient = Symbol("proxy client"); - const kProxyHeaders = Symbol("proxy headers"); - const kRequestTls = Symbol("request tls settings"); - const kProxyTls = Symbol("proxy tls settings"); - const kConnectEndpoint = Symbol("connect endpoint function"); - - function defaultProtocolPort(protocol) { - return protocol === "https:" ? 443 : 80; - } - - function buildProxyOptions(opts) { - if (typeof opts === "string") { - opts = { uri: opts }; - } - - if (!opts || !opts.uri) { - throw new InvalidArgumentError("Proxy opts.uri is mandatory"); - } - - return { - uri: opts.uri, - protocol: opts.protocol || "https", - }; - } - - function defaultFactory(origin, opts) { - return new Pool(origin, opts); - } - - class ProxyAgent extends DispatcherBase { - constructor(opts) { - super(opts); - this[kProxy] = buildProxyOptions(opts); - this[kAgent] = new Agent(opts); - this[kInterceptors] = - opts.interceptors && - opts.interceptors.ProxyAgent && - Array.isArray(opts.interceptors.ProxyAgent) - ? opts.interceptors.ProxyAgent - : []; - - if (typeof opts === "string") { - opts = { uri: opts }; - } - - if (!opts || !opts.uri) { - throw new InvalidArgumentError("Proxy opts.uri is mandatory"); - } - - const { clientFactory = defaultFactory } = opts; - - if (typeof clientFactory !== "function") { - throw new InvalidArgumentError("Proxy opts.clientFactory must be a function."); - } - - this[kRequestTls] = opts.requestTls; - this[kProxyTls] = opts.proxyTls; - this[kProxyHeaders] = opts.headers || {}; - - const resolvedUrl = new URL(opts.uri); - const { origin, port, host, username, password } = resolvedUrl; - - if (opts.auth && opts.token) { - throw new InvalidArgumentError( - "opts.auth cannot be used in combination with opts.token", - ); - } else if (opts.auth) { - /* @deprecated in favour of opts.token */ - this[kProxyHeaders]["proxy-authorization"] = `Basic ${opts.auth}`; - } else if (opts.token) { - this[kProxyHeaders]["proxy-authorization"] = opts.token; - } else if (username && password) { - this[kProxyHeaders]["proxy-authorization"] = `Basic ${Buffer.from( - `${decodeURIComponent(username)}:${decodeURIComponent(password)}`, - ).toString("base64")}`; - } - - const connect = buildConnector({ ...opts.proxyTls }); - this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); - this[kClient] = clientFactory(resolvedUrl, { connect }); - this[kAgent] = new Agent({ - ...opts, - connect: async (opts, callback) => { - let requestedHost = opts.host; - if (!opts.port) { - requestedHost += `:${defaultProtocolPort(opts.protocol)}`; - } - try { - const { socket, statusCode } = await this[kClient].connect({ - origin, - port, - path: requestedHost, - signal: opts.signal, - headers: { - ...this[kProxyHeaders], - host, - }, - }); - if (statusCode !== 200) { - socket.on("error", () => {}).destroy(); - callback( - new RequestAbortedError( - `Proxy response (${statusCode}) !== 200 when HTTP Tunneling`, - ), - ); - } - if (opts.protocol !== "https:") { - callback(null, socket); - return; - } - let servername; - if (this[kRequestTls]) { - servername = this[kRequestTls].servername; - } else { - servername = opts.servername; - } - this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback); - } catch (err) { - callback(err); - } - }, - }); - } - - dispatch(opts, handler) { - const { host } = new URL(opts.origin); - const headers = buildHeaders(opts.headers); - throwIfProxyAuthIsSent(headers); - return this[kAgent].dispatch( - { - ...opts, - headers: { - ...headers, - host, - }, - }, - handler, - ); - } - - async [kClose]() { - await this[kAgent].close(); - await this[kClient].close(); - } - - async [kDestroy]() { - await this[kAgent].destroy(); - await this[kClient].destroy(); - } - } - - /** - * @param {string[] | Record} headers - * @returns {Record} - */ - function buildHeaders(headers) { - // When using undici.fetch, the headers list is stored - // as an array. - if (Array.isArray(headers)) { - /** @type {Record} */ - const headersPair = {}; - - for (let i = 0; i < headers.length; i += 2) { - headersPair[headers[i]] = headers[i + 1]; - } - - return headersPair; - } - - return headers; - } - - /** - * @param {Record} headers - * - * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers - * Nevertheless, it was changed and to avoid a security vulnerability by end users - * this check was created. - * It should be removed in the next major version for performance reasons - */ - function throwIfProxyAuthIsSent(headers) { - const existProxyAuth = - headers && - Object.keys(headers).find((key) => key.toLowerCase() === "proxy-authorization"); - if (existProxyAuth) { - throw new InvalidArgumentError( - "Proxy-Authorization should be sent in ProxyAgent constructor", - ); - } - } - - module.exports = ProxyAgent; - - /***/ - }, - - /***/ 9459: /***/ (module) => { - "use strict"; - - let fastNow = Date.now(); - let fastNowTimeout; - - const fastTimers = []; - - function onTimeout() { - fastNow = Date.now(); - - let len = fastTimers.length; - let idx = 0; - while (idx < len) { - const timer = fastTimers[idx]; - - if (timer.state === 0) { - timer.state = fastNow + timer.delay; - } else if (timer.state > 0 && fastNow >= timer.state) { - timer.state = -1; - timer.callback(timer.opaque); - } - - if (timer.state === -1) { - timer.state = -2; - if (idx !== len - 1) { - fastTimers[idx] = fastTimers.pop(); - } else { - fastTimers.pop(); - } - len -= 1; - } else { - idx += 1; - } - } - - if (fastTimers.length > 0) { - refreshTimeout(); - } - } - - function refreshTimeout() { - if (fastNowTimeout && fastNowTimeout.refresh) { - fastNowTimeout.refresh(); - } else { - clearTimeout(fastNowTimeout); - fastNowTimeout = setTimeout(onTimeout, 1e3); - if (fastNowTimeout.unref) { - fastNowTimeout.unref(); - } - } - } - - class Timeout { - constructor(callback, delay, opaque) { - this.callback = callback; - this.delay = delay; - this.opaque = opaque; - - // -2 not in timer list - // -1 in timer list but inactive - // 0 in timer list waiting for time - // > 0 in timer list waiting for time to expire - this.state = -2; - - this.refresh(); - } - - refresh() { - if (this.state === -2) { - fastTimers.push(this); - if (!fastNowTimeout || fastTimers.length === 1) { - refreshTimeout(); - } - } - - this.state = 0; - } - - clear() { - this.state = -1; - } - } - - module.exports = { - setTimeout(callback, delay, opaque) { - return delay < 1e3 - ? setTimeout(callback, delay, opaque) - : new Timeout(callback, delay, opaque); - }, - clearTimeout(timeout) { - if (timeout instanceof Timeout) { - timeout.clear(); - } else { - clearTimeout(timeout); - } - }, - }; - - /***/ - }, - - /***/ 5354: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const diagnosticsChannel = __nccwpck_require__(7643); - const { uid, states } = __nccwpck_require__(9188); - const { kReadyState, kSentClose, kByteParser, kReceivedClose } = __nccwpck_require__(7578); - const { fireEvent, failWebsocketConnection } = __nccwpck_require__(5515); - const { CloseEvent } = __nccwpck_require__(2611); - const { makeRequest } = __nccwpck_require__(8359); - const { fetching } = __nccwpck_require__(4881); - const { Headers } = __nccwpck_require__(554); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - const { kHeadersList } = __nccwpck_require__(2785); - - const channels = {}; - channels.open = diagnosticsChannel.channel("undici:websocket:open"); - channels.close = diagnosticsChannel.channel("undici:websocket:close"); - channels.socketError = diagnosticsChannel.channel("undici:websocket:socket_error"); - - /** @type {import('crypto')} */ - let crypto; - try { - crypto = __nccwpck_require__(6113); - } catch {} - - /** - * @see https://websockets.spec.whatwg.org/#concept-websocket-establish - * @param {URL} url - * @param {string|string[]} protocols - * @param {import('./websocket').WebSocket} ws - * @param {(response: any) => void} onEstablish - * @param {Partial} options - */ - function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { - // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s - // scheme is "ws", and to "https" otherwise. - const requestURL = url; - - requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:"; - - // 2. Let request be a new request, whose URL is requestURL, client is client, - // service-workers mode is "none", referrer is "no-referrer", mode is - // "websocket", credentials mode is "include", cache mode is "no-store" , - // and redirect mode is "error". - const request = makeRequest({ - urlList: [requestURL], - serviceWorkers: "none", - referrer: "no-referrer", - mode: "websocket", - credentials: "include", - cache: "no-store", - redirect: "error", - }); - - // Note: undici extension, allow setting custom headers. - if (options.headers) { - const headersList = new Headers(options.headers)[kHeadersList]; - - request.headersList = headersList; - } - - // 3. Append (`Upgrade`, `websocket`) to request’s header list. - // 4. Append (`Connection`, `Upgrade`) to request’s header list. - // Note: both of these are handled by undici currently. - // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 - - // 5. Let keyValue be a nonce consisting of a randomly selected - // 16-byte value that has been forgiving-base64-encoded and - // isomorphic encoded. - const keyValue = crypto.randomBytes(16).toString("base64"); - - // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s - // header list. - request.headersList.append("sec-websocket-key", keyValue); - - // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s - // header list. - request.headersList.append("sec-websocket-version", "13"); - - // 8. For each protocol in protocols, combine - // (`Sec-WebSocket-Protocol`, protocol) in request’s header - // list. - for (const protocol of protocols) { - request.headersList.append("sec-websocket-protocol", protocol); - } - - // 9. Let permessageDeflate be a user-agent defined - // "permessage-deflate" extension header value. - // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 - // TODO: enable once permessage-deflate is supported - const permessageDeflate = ""; // 'permessage-deflate; 15' - - // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to - // request’s header list. - // request.headersList.append('sec-websocket-extensions', permessageDeflate) - - // 11. Fetch request with useParallelQueue set to true, and - // processResponse given response being these steps: - const controller = fetching({ - request, - useParallelQueue: true, - dispatcher: options.dispatcher ?? getGlobalDispatcher(), - processResponse(response) { - // 1. If response is a network error or its status is not 101, - // fail the WebSocket connection. - if (response.type === "error" || response.status !== 101) { - failWebsocketConnection(ws, "Received network error or non-101 status code."); - return; - } - - // 2. If protocols is not the empty list and extracting header - // list values given `Sec-WebSocket-Protocol` and response’s - // header list results in null, failure, or the empty byte - // sequence, then fail the WebSocket connection. - if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) { - failWebsocketConnection(ws, "Server did not respond with sent protocols."); - return; - } - - // 3. Follow the requirements stated step 2 to step 6, inclusive, - // of the last set of steps in section 4.1 of The WebSocket - // Protocol to validate response. This either results in fail - // the WebSocket connection or the WebSocket connection is - // established. - - // 2. If the response lacks an |Upgrade| header field or the |Upgrade| - // header field contains a value that is not an ASCII case- - // insensitive match for the value "websocket", the client MUST - // _Fail the WebSocket Connection_. - if (response.headersList.get("Upgrade")?.toLowerCase() !== "websocket") { - failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); - return; - } - - // 3. If the response lacks a |Connection| header field or the - // |Connection| header field doesn't contain a token that is an - // ASCII case-insensitive match for the value "Upgrade", the client - // MUST _Fail the WebSocket Connection_. - if (response.headersList.get("Connection")?.toLowerCase() !== "upgrade") { - failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); - return; - } - - // 4. If the response lacks a |Sec-WebSocket-Accept| header field or - // the |Sec-WebSocket-Accept| contains a value other than the - // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- - // Key| (as a string, not base64-decoded) with the string "258EAFA5- - // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and - // trailing whitespace, the client MUST _Fail the WebSocket - // Connection_. - const secWSAccept = response.headersList.get("Sec-WebSocket-Accept"); - const digest = crypto - .createHash("sha1") - .update(keyValue + uid) - .digest("base64"); - if (secWSAccept !== digest) { - failWebsocketConnection( - ws, - "Incorrect hash received in Sec-WebSocket-Accept header.", - ); - return; - } - - // 5. If the response includes a |Sec-WebSocket-Extensions| header - // field and this header field indicates the use of an extension - // that was not present in the client's handshake (the server has - // indicated an extension not requested by the client), the client - // MUST _Fail the WebSocket Connection_. (The parsing of this - // header field to determine which extensions are requested is - // discussed in Section 9.1.) - const secExtension = response.headersList.get("Sec-WebSocket-Extensions"); - - if (secExtension !== null && secExtension !== permessageDeflate) { - failWebsocketConnection( - ws, - "Received different permessage-deflate than the one set.", - ); - return; - } - - // 6. If the response includes a |Sec-WebSocket-Protocol| header field - // and this header field indicates the use of a subprotocol that was - // not present in the client's handshake (the server has indicated a - // subprotocol not requested by the client), the client MUST _Fail - // the WebSocket Connection_. - const secProtocol = response.headersList.get("Sec-WebSocket-Protocol"); - - if ( - secProtocol !== null && - secProtocol !== request.headersList.get("Sec-WebSocket-Protocol") - ) { - failWebsocketConnection(ws, "Protocol was not set in the opening handshake."); - return; - } - - response.socket.on("data", onSocketData); - response.socket.on("close", onSocketClose); - response.socket.on("error", onSocketError); - - if (channels.open.hasSubscribers) { - channels.open.publish({ - address: response.socket.address(), - protocol: secProtocol, - extensions: secExtension, - }); - } - - onEstablish(response); - }, - }); - - return controller; - } - - /** - * @param {Buffer} chunk - */ - function onSocketData(chunk) { - if (!this.ws[kByteParser].write(chunk)) { - this.pause(); - } - } - - /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 - */ - function onSocketClose() { - const { ws } = this; - - // If the TCP connection was closed after the - // WebSocket closing handshake was completed, the WebSocket connection - // is said to have been closed _cleanly_. - const wasClean = ws[kSentClose] && ws[kReceivedClose]; - - let code = 1005; - let reason = ""; - - const result = ws[kByteParser].closingInfo; - - if (result) { - code = result.code ?? 1005; - reason = result.reason; - } else if (!ws[kSentClose]) { - // If _The WebSocket - // Connection is Closed_ and no Close control frame was received by the - // endpoint (such as could occur if the underlying transport connection - // is lost), _The WebSocket Connection Close Code_ is considered to be - // 1006. - code = 1006; - } - - // 1. Change the ready state to CLOSED (3). - ws[kReadyState] = states.CLOSED; - - // 2. If the user agent was required to fail the WebSocket - // connection, or if the WebSocket connection was closed - // after being flagged as full, fire an event named error - // at the WebSocket object. - // TODO - - // 3. Fire an event named close at the WebSocket object, - // using CloseEvent, with the wasClean attribute - // initialized to true if the connection closed cleanly - // and false otherwise, the code attribute initialized to - // the WebSocket connection close code, and the reason - // attribute initialized to the result of applying UTF-8 - // decode without BOM to the WebSocket connection close - // reason. - fireEvent("close", ws, CloseEvent, { - wasClean, - code, - reason, - }); - - if (channels.close.hasSubscribers) { - channels.close.publish({ - websocket: ws, - code, - reason, - }); - } - } - - function onSocketError(error) { - const { ws } = this; - - ws[kReadyState] = states.CLOSING; - - if (channels.socketError.hasSubscribers) { - channels.socketError.publish(error); - } - - this.destroy(); - } - - module.exports = { - establishWebSocketConnection, - }; - - /***/ - }, - - /***/ 9188: /***/ (module) => { - "use strict"; - - // This is a Globally Unique Identifier unique used - // to validate that the endpoint accepts websocket - // connections. - // See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 - const uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; - - /** @type {PropertyDescriptor} */ - const staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false, - }; - - const states = { - CONNECTING: 0, - OPEN: 1, - CLOSING: 2, - CLOSED: 3, - }; - - const opcodes = { - CONTINUATION: 0x0, - TEXT: 0x1, - BINARY: 0x2, - CLOSE: 0x8, - PING: 0x9, - PONG: 0xa, - }; - - const maxUnsigned16Bit = 2 ** 16 - 1; // 65535 - - const parserStates = { - INFO: 0, - PAYLOADLENGTH_16: 2, - PAYLOADLENGTH_64: 3, - READ_DATA: 4, - }; - - const emptyBuffer = Buffer.allocUnsafe(0); - - module.exports = { - uid, - staticPropertyDescriptors, - states, - opcodes, - maxUnsigned16Bit, - parserStates, - emptyBuffer, - }; - - /***/ - }, - - /***/ 2611: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { webidl } = __nccwpck_require__(1744); - const { kEnumerableProperty } = __nccwpck_require__(3983); - const { MessagePort } = __nccwpck_require__(1267); - - /** - * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent - */ - class MessageEvent extends Event { - #eventInit; - - constructor(type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent constructor" }); - - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.MessageEventInit(eventInitDict); - - super(type, eventInitDict); - - this.#eventInit = eventInitDict; - } - - get data() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.data; - } - - get origin() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.origin; - } - - get lastEventId() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.lastEventId; - } - - get source() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.source; - } - - get ports() { - webidl.brandCheck(this, MessageEvent); - - if (!Object.isFrozen(this.#eventInit.ports)) { - Object.freeze(this.#eventInit.ports); - } - - return this.#eventInit.ports; - } - - initMessageEvent( - type, - bubbles = false, - cancelable = false, - data = null, - origin = "", - lastEventId = "", - source = null, - ports = [], - ) { - webidl.brandCheck(this, MessageEvent); - - webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent.initMessageEvent" }); - - return new MessageEvent(type, { - bubbles, - cancelable, - data, - origin, - lastEventId, - source, - ports, - }); - } - } - - /** - * @see https://websockets.spec.whatwg.org/#the-closeevent-interface - */ - class CloseEvent extends Event { - #eventInit; - - constructor(type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "CloseEvent constructor" }); - - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.CloseEventInit(eventInitDict); - - super(type, eventInitDict); - - this.#eventInit = eventInitDict; - } - - get wasClean() { - webidl.brandCheck(this, CloseEvent); - - return this.#eventInit.wasClean; - } - - get code() { - webidl.brandCheck(this, CloseEvent); - - return this.#eventInit.code; - } - - get reason() { - webidl.brandCheck(this, CloseEvent); - - return this.#eventInit.reason; - } - } - - // https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface - class ErrorEvent extends Event { - #eventInit; - - constructor(type, eventInitDict) { - webidl.argumentLengthCheck(arguments, 1, { header: "ErrorEvent constructor" }); - - super(type, eventInitDict); - - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); - - this.#eventInit = eventInitDict; - } - - get message() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.message; - } - - get filename() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.filename; - } - - get lineno() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.lineno; - } - - get colno() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.colno; - } - - get error() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.error; - } - } - - Object.defineProperties(MessageEvent.prototype, { - [Symbol.toStringTag]: { - value: "MessageEvent", - configurable: true, - }, - data: kEnumerableProperty, - origin: kEnumerableProperty, - lastEventId: kEnumerableProperty, - source: kEnumerableProperty, - ports: kEnumerableProperty, - initMessageEvent: kEnumerableProperty, - }); - - Object.defineProperties(CloseEvent.prototype, { - [Symbol.toStringTag]: { - value: "CloseEvent", - configurable: true, - }, - reason: kEnumerableProperty, - code: kEnumerableProperty, - wasClean: kEnumerableProperty, - }); - - Object.defineProperties(ErrorEvent.prototype, { - [Symbol.toStringTag]: { - value: "ErrorEvent", - configurable: true, - }, - message: kEnumerableProperty, - filename: kEnumerableProperty, - lineno: kEnumerableProperty, - colno: kEnumerableProperty, - error: kEnumerableProperty, - }); - - webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); - - webidl.converters["sequence"] = webidl.sequenceConverter( - webidl.converters.MessagePort, - ); - - const eventInit = [ - { - key: "bubbles", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "cancelable", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "composed", - converter: webidl.converters.boolean, - defaultValue: false, - }, - ]; - - webidl.converters.MessageEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: "data", - converter: webidl.converters.any, - defaultValue: null, - }, - { - key: "origin", - converter: webidl.converters.USVString, - defaultValue: "", - }, - { - key: "lastEventId", - converter: webidl.converters.DOMString, - defaultValue: "", - }, - { - key: "source", - // Node doesn't implement WindowProxy or ServiceWorker, so the only - // valid value for source is a MessagePort. - converter: webidl.nullableConverter(webidl.converters.MessagePort), - defaultValue: null, - }, - { - key: "ports", - converter: webidl.converters["sequence"], - get defaultValue() { - return []; - }, - }, - ]); - - webidl.converters.CloseEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: "wasClean", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "code", - converter: webidl.converters["unsigned short"], - defaultValue: 0, - }, - { - key: "reason", - converter: webidl.converters.USVString, - defaultValue: "", - }, - ]); - - webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: "message", - converter: webidl.converters.DOMString, - defaultValue: "", - }, - { - key: "filename", - converter: webidl.converters.USVString, - defaultValue: "", - }, - { - key: "lineno", - converter: webidl.converters["unsigned long"], - defaultValue: 0, - }, - { - key: "colno", - converter: webidl.converters["unsigned long"], - defaultValue: 0, - }, - { - key: "error", - converter: webidl.converters.any, - }, - ]); - - module.exports = { - MessageEvent, - CloseEvent, - ErrorEvent, - }; - - /***/ - }, - - /***/ 5444: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { maxUnsigned16Bit } = __nccwpck_require__(9188); - - /** @type {import('crypto')} */ - let crypto; - try { - crypto = __nccwpck_require__(6113); - } catch {} - - class WebsocketFrameSend { - /** - * @param {Buffer|undefined} data - */ - constructor(data) { - this.frameData = data; - this.maskKey = crypto.randomBytes(4); - } - - createFrame(opcode) { - const bodyLength = this.frameData?.byteLength ?? 0; - - /** @type {number} */ - let payloadLength = bodyLength; // 0-125 - let offset = 6; - - if (bodyLength > maxUnsigned16Bit) { - offset += 8; // payload length is next 8 bytes - payloadLength = 127; - } else if (bodyLength > 125) { - offset += 2; // payload length is next 2 bytes - payloadLength = 126; - } - - const buffer = Buffer.allocUnsafe(bodyLength + offset); - - // Clear first 2 bytes, everything else is overwritten - buffer[0] = buffer[1] = 0; - buffer[0] |= 0x80; // FIN - buffer[0] = (buffer[0] & 0xf0) + opcode; // opcode - - /*! ws. MIT License. Einar Otto Stangvik */ - buffer[offset - 4] = this.maskKey[0]; - buffer[offset - 3] = this.maskKey[1]; - buffer[offset - 2] = this.maskKey[2]; - buffer[offset - 1] = this.maskKey[3]; - - buffer[1] = payloadLength; - - if (payloadLength === 126) { - buffer.writeUInt16BE(bodyLength, 2); - } else if (payloadLength === 127) { - // Clear extended payload length - buffer[2] = buffer[3] = 0; - buffer.writeUIntBE(bodyLength, 4, 6); - } - - buffer[1] |= 0x80; // MASK - - // mask body - for (let i = 0; i < bodyLength; i++) { - buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; - } - - return buffer; - } - } - - module.exports = { - WebsocketFrameSend, - }; - - /***/ - }, - - /***/ 1688: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Writable } = __nccwpck_require__(2781); - const diagnosticsChannel = __nccwpck_require__(7643); - const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(9188); - const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(7578); - const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = - __nccwpck_require__(5515); - const { WebsocketFrameSend } = __nccwpck_require__(5444); - - // This code was influenced by ws released under the MIT license. - // Copyright (c) 2011 Einar Otto Stangvik - // Copyright (c) 2013 Arnout Kazemier and contributors - // Copyright (c) 2016 Luigi Pinca and contributors - - const channels = {}; - channels.ping = diagnosticsChannel.channel("undici:websocket:ping"); - channels.pong = diagnosticsChannel.channel("undici:websocket:pong"); - - class ByteParser extends Writable { - #buffers = []; - #byteOffset = 0; - - #state = parserStates.INFO; - - #info = {}; - #fragments = []; - - constructor(ws) { - super(); - - this.ws = ws; - } - - /** - * @param {Buffer} chunk - * @param {() => void} callback - */ - _write(chunk, _, callback) { - this.#buffers.push(chunk); - this.#byteOffset += chunk.length; - - this.run(callback); - } - - /** - * Runs whenever a new chunk is received. - * Callback is called whenever there are no more chunks buffering, - * or not enough bytes are buffered to parse. - */ - run(callback) { - while (true) { - if (this.#state === parserStates.INFO) { - // If there aren't enough bytes to parse the payload length, etc. - if (this.#byteOffset < 2) { - return callback(); - } - - const buffer = this.consume(2); - - this.#info.fin = (buffer[0] & 0x80) !== 0; - this.#info.opcode = buffer[0] & 0x0f; - - // If we receive a fragmented message, we use the type of the first - // frame to parse the full message as binary/text, when it's terminated - this.#info.originalOpcode ??= this.#info.opcode; - - this.#info.fragmented = - !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION; - - if ( - this.#info.fragmented && - this.#info.opcode !== opcodes.BINARY && - this.#info.opcode !== opcodes.TEXT - ) { - // Only text and binary frames can be fragmented - failWebsocketConnection(this.ws, "Invalid frame type was fragmented."); - return; - } - - const payloadLength = buffer[1] & 0x7f; - - if (payloadLength <= 125) { - this.#info.payloadLength = payloadLength; - this.#state = parserStates.READ_DATA; - } else if (payloadLength === 126) { - this.#state = parserStates.PAYLOADLENGTH_16; - } else if (payloadLength === 127) { - this.#state = parserStates.PAYLOADLENGTH_64; - } - - if (this.#info.fragmented && payloadLength > 125) { - // A fragmented frame can't be fragmented itself - failWebsocketConnection(this.ws, "Fragmented frame exceeded 125 bytes."); - return; - } else if ( - (this.#info.opcode === opcodes.PING || - this.#info.opcode === opcodes.PONG || - this.#info.opcode === opcodes.CLOSE) && - payloadLength > 125 - ) { - // Control frames can have a payload length of 125 bytes MAX - failWebsocketConnection( - this.ws, - "Payload length for control frame exceeded 125 bytes.", - ); - return; - } else if (this.#info.opcode === opcodes.CLOSE) { - if (payloadLength === 1) { - failWebsocketConnection( - this.ws, - "Received close frame with a 1-byte body.", - ); - return; - } - - const body = this.consume(payloadLength); - - this.#info.closeInfo = this.parseCloseBody(false, body); - - if (!this.ws[kSentClose]) { - // If an endpoint receives a Close frame and did not previously send a - // Close frame, the endpoint MUST send a Close frame in response. (When - // sending a Close frame in response, the endpoint typically echos the - // status code it received.) - const body = Buffer.allocUnsafe(2); - body.writeUInt16BE(this.#info.closeInfo.code, 0); - const closeFrame = new WebsocketFrameSend(body); - - this.ws[kResponse].socket.write( - closeFrame.createFrame(opcodes.CLOSE), - (err) => { - if (!err) { - this.ws[kSentClose] = true; - } - }, - ); - } - - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - this.ws[kReadyState] = states.CLOSING; - this.ws[kReceivedClose] = true; - - this.end(); - - return; - } else if (this.#info.opcode === opcodes.PING) { - // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in - // response, unless it already received a Close frame. - // A Pong frame sent in response to a Ping frame must have identical - // "Application data" - - const body = this.consume(payloadLength); - - if (!this.ws[kReceivedClose]) { - const frame = new WebsocketFrameSend(body); - - this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); - - if (channels.ping.hasSubscribers) { - channels.ping.publish({ - payload: body, - }); - } - } - - this.#state = parserStates.INFO; - - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - return; - } - } else if (this.#info.opcode === opcodes.PONG) { - // A Pong frame MAY be sent unsolicited. This serves as a - // unidirectional heartbeat. A response to an unsolicited Pong frame is - // not expected. - - const body = this.consume(payloadLength); - - if (channels.pong.hasSubscribers) { - channels.pong.publish({ - payload: body, - }); - } - - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - return; - } - } - } else if (this.#state === parserStates.PAYLOADLENGTH_16) { - if (this.#byteOffset < 2) { - return callback(); - } - - const buffer = this.consume(2); - - this.#info.payloadLength = buffer.readUInt16BE(0); - this.#state = parserStates.READ_DATA; - } else if (this.#state === parserStates.PAYLOADLENGTH_64) { - if (this.#byteOffset < 8) { - return callback(); - } - - const buffer = this.consume(8); - const upper = buffer.readUInt32BE(0); - - // 2^31 is the maxinimum bytes an arraybuffer can contain - // on 32-bit systems. Although, on 64-bit systems, this is - // 2^53-1 bytes. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length - // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 - // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e - if (upper > 2 ** 31 - 1) { - failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); - return; - } - - const lower = buffer.readUInt32BE(4); - - this.#info.payloadLength = (upper << 8) + lower; - this.#state = parserStates.READ_DATA; - } else if (this.#state === parserStates.READ_DATA) { - if (this.#byteOffset < this.#info.payloadLength) { - // If there is still more data in this chunk that needs to be read - return callback(); - } else if (this.#byteOffset >= this.#info.payloadLength) { - // If the server sent multiple frames in a single chunk - - const body = this.consume(this.#info.payloadLength); - - this.#fragments.push(body); - - // If the frame is unfragmented, or a fragmented frame was terminated, - // a message was received - if ( - !this.#info.fragmented || - (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION) - ) { - const fullMessage = Buffer.concat(this.#fragments); - - websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage); - - this.#info = {}; - this.#fragments.length = 0; - } - - this.#state = parserStates.INFO; - } - } - - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - break; - } - } - } - - /** - * Take n bytes from the buffered Buffers - * @param {number} n - * @returns {Buffer|null} - */ - consume(n) { - if (n > this.#byteOffset) { - return null; - } else if (n === 0) { - return emptyBuffer; - } - - if (this.#buffers[0].length === n) { - this.#byteOffset -= this.#buffers[0].length; - return this.#buffers.shift(); - } - - const buffer = Buffer.allocUnsafe(n); - let offset = 0; - - while (offset !== n) { - const next = this.#buffers[0]; - const { length } = next; - - if (length + offset === n) { - buffer.set(this.#buffers.shift(), offset); - break; - } else if (length + offset > n) { - buffer.set(next.subarray(0, n - offset), offset); - this.#buffers[0] = next.subarray(n - offset); - break; - } else { - buffer.set(this.#buffers.shift(), offset); - offset += next.length; - } - } - - this.#byteOffset -= n; - - return buffer; - } - - parseCloseBody(onlyCode, data) { - // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 - /** @type {number|undefined} */ - let code; - - if (data.length >= 2) { - // _The WebSocket Connection Close Code_ is - // defined as the status code (Section 7.4) contained in the first Close - // control frame received by the application - code = data.readUInt16BE(0); - } - - if (onlyCode) { - if (!isValidStatusCode(code)) { - return null; - } - - return { code }; - } - - // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 - /** @type {Buffer} */ - let reason = data.subarray(2); - - // Remove BOM - if (reason[0] === 0xef && reason[1] === 0xbb && reason[2] === 0xbf) { - reason = reason.subarray(3); - } - - if (code !== undefined && !isValidStatusCode(code)) { - return null; - } - - try { - // TODO: optimize this - reason = new TextDecoder("utf-8", { fatal: true }).decode(reason); - } catch { - return null; - } - - return { code, reason }; - } - - get closingInfo() { - return this.#info.closeInfo; - } - } - - module.exports = { - ByteParser, - }; - - /***/ - }, - - /***/ 7578: /***/ (module) => { - "use strict"; - - module.exports = { - kWebSocketURL: Symbol("url"), - kReadyState: Symbol("ready state"), - kController: Symbol("controller"), - kResponse: Symbol("response"), - kBinaryType: Symbol("binary type"), - kSentClose: Symbol("sent close"), - kReceivedClose: Symbol("received close"), - kByteParser: Symbol("byte parser"), - }; - - /***/ - }, - - /***/ 5515: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = - __nccwpck_require__(7578); - const { states, opcodes } = __nccwpck_require__(9188); - const { MessageEvent, ErrorEvent } = __nccwpck_require__(2611); - - /* globals Blob */ - - /** - * @param {import('./websocket').WebSocket} ws - */ - function isEstablished(ws) { - // If the server's response is validated as provided for above, it is - // said that _The WebSocket Connection is Established_ and that the - // WebSocket Connection is in the OPEN state. - return ws[kReadyState] === states.OPEN; - } - - /** - * @param {import('./websocket').WebSocket} ws - */ - function isClosing(ws) { - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - return ws[kReadyState] === states.CLOSING; - } - - /** - * @param {import('./websocket').WebSocket} ws - */ - function isClosed(ws) { - return ws[kReadyState] === states.CLOSED; - } - - /** - * @see https://dom.spec.whatwg.org/#concept-event-fire - * @param {string} e - * @param {EventTarget} target - * @param {EventInit | undefined} eventInitDict - */ - function fireEvent(e, target, eventConstructor = Event, eventInitDict) { - // 1. If eventConstructor is not given, then let eventConstructor be Event. - - // 2. Let event be the result of creating an event given eventConstructor, - // in the relevant realm of target. - // 3. Initialize event’s type attribute to e. - const event = new eventConstructor(e, eventInitDict); // eslint-disable-line new-cap - - // 4. Initialize any other IDL attributes of event as described in the - // invocation of this algorithm. - - // 5. Return the result of dispatching event at target, with legacy target - // override flag set if set. - target.dispatchEvent(event); - } - - /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - * @param {import('./websocket').WebSocket} ws - * @param {number} type Opcode - * @param {Buffer} data application data - */ - function websocketMessageReceived(ws, type, data) { - // 1. If ready state is not OPEN (1), then return. - if (ws[kReadyState] !== states.OPEN) { - return; - } - - // 2. Let dataForEvent be determined by switching on type and binary type: - let dataForEvent; - - if (type === opcodes.TEXT) { - // -> type indicates that the data is Text - // a new DOMString containing data - try { - dataForEvent = new TextDecoder("utf-8", { fatal: true }).decode(data); - } catch { - failWebsocketConnection(ws, "Received invalid UTF-8 in text frame."); - return; - } - } else if (type === opcodes.BINARY) { - if (ws[kBinaryType] === "blob") { - // -> type indicates that the data is Binary and binary type is "blob" - // a new Blob object, created in the relevant Realm of the WebSocket - // object, that represents data as its raw data - dataForEvent = new Blob([data]); - } else { - // -> type indicates that the data is Binary and binary type is "arraybuffer" - // a new ArrayBuffer object, created in the relevant Realm of the - // WebSocket object, whose contents are data - dataForEvent = new Uint8Array(data).buffer; - } - } - - // 3. Fire an event named message at the WebSocket object, using MessageEvent, - // with the origin attribute initialized to the serialization of the WebSocket - // object’s url's origin, and the data attribute initialized to dataForEvent. - fireEvent("message", ws, MessageEvent, { - origin: ws[kWebSocketURL].origin, - data: dataForEvent, - }); - } - - /** - * @see https://datatracker.ietf.org/doc/html/rfc6455 - * @see https://datatracker.ietf.org/doc/html/rfc2616 - * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 - * @param {string} protocol - */ - function isValidSubprotocol(protocol) { - // If present, this value indicates one - // or more comma-separated subprotocol the client wishes to speak, - // ordered by preference. The elements that comprise this value - // MUST be non-empty strings with characters in the range U+0021 to - // U+007E not including separator characters as defined in - // [RFC2616] and MUST all be unique strings. - if (protocol.length === 0) { - return false; - } - - for (const char of protocol) { - const code = char.charCodeAt(0); - - if ( - code < 0x21 || - code > 0x7e || - char === "(" || - char === ")" || - char === "<" || - char === ">" || - char === "@" || - char === "," || - char === ";" || - char === ":" || - char === "\\" || - char === '"' || - char === "/" || - char === "[" || - char === "]" || - char === "?" || - char === "=" || - char === "{" || - char === "}" || - code === 32 || // SP - code === 9 // HT - ) { - return false; - } - } - - return true; - } - - /** - * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 - * @param {number} code - */ - function isValidStatusCode(code) { - if (code >= 1000 && code < 1015) { - return ( - code !== 1004 && // reserved - code !== 1005 && // "MUST NOT be set as a status code" - code !== 1006 // "MUST NOT be set as a status code" - ); - } - - return code >= 3000 && code <= 4999; - } - - /** - * @param {import('./websocket').WebSocket} ws - * @param {string|undefined} reason - */ - function failWebsocketConnection(ws, reason) { - const { [kController]: controller, [kResponse]: response } = ws; - - controller.abort(); - - if (response?.socket && !response.socket.destroyed) { - response.socket.destroy(); - } - - if (reason) { - fireEvent("error", ws, ErrorEvent, { - error: new Error(reason), - }); - } - } - - module.exports = { - isEstablished, - isClosing, - isClosed, - fireEvent, - isValidSubprotocol, - isValidStatusCode, - failWebsocketConnection, - websocketMessageReceived, - }; - - /***/ - }, - - /***/ 4284: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { webidl } = __nccwpck_require__(1744); - const { DOMException } = __nccwpck_require__(1037); - const { URLSerializer } = __nccwpck_require__(685); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(9188); - const { - kWebSocketURL, - kReadyState, - kController, - kBinaryType, - kResponse, - kSentClose, - kByteParser, - } = __nccwpck_require__(7578); - const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = - __nccwpck_require__(5515); - const { establishWebSocketConnection } = __nccwpck_require__(5354); - const { WebsocketFrameSend } = __nccwpck_require__(5444); - const { ByteParser } = __nccwpck_require__(1688); - const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(3983); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - const { types } = __nccwpck_require__(3837); - - let experimentalWarned = false; - - // https://websockets.spec.whatwg.org/#interface-definition - class WebSocket extends EventTarget { - #events = { - open: null, - error: null, - close: null, - message: null, - }; - - #bufferedAmount = 0; - #protocol = ""; - #extensions = ""; - - /** - * @param {string} url - * @param {string|string[]} protocols - */ - constructor(url, protocols = []) { - super(); - - webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket constructor" }); - - if (!experimentalWarned) { - experimentalWarned = true; - process.emitWarning( - "WebSockets are experimental, expect them to change at any time.", - { - code: "UNDICI-WS", - }, - ); - } - - const options = - webidl.converters["DOMString or sequence or WebSocketInit"](protocols); - - url = webidl.converters.USVString(url); - protocols = options.protocols; - - // 1. Let baseURL be this's relevant settings object's API base URL. - const baseURL = getGlobalOrigin(); - - // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. - let urlRecord; - - try { - urlRecord = new URL(url, baseURL); - } catch (e) { - // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. - throw new DOMException(e, "SyntaxError"); - } - - // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". - if (urlRecord.protocol === "http:") { - urlRecord.protocol = "ws:"; - } else if (urlRecord.protocol === "https:") { - // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". - urlRecord.protocol = "wss:"; - } - - // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. - if (urlRecord.protocol !== "ws:" && urlRecord.protocol !== "wss:") { - throw new DOMException( - `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, - "SyntaxError", - ); - } - - // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" - // DOMException. - if (urlRecord.hash || urlRecord.href.endsWith("#")) { - throw new DOMException("Got fragment", "SyntaxError"); - } - - // 8. If protocols is a string, set protocols to a sequence consisting - // of just that string. - if (typeof protocols === "string") { - protocols = [protocols]; - } - - // 9. If any of the values in protocols occur more than once or otherwise - // fail to match the requirements for elements that comprise the value - // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket - // protocol, then throw a "SyntaxError" DOMException. - if (protocols.length !== new Set(protocols.map((p) => p.toLowerCase())).size) { - throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); - } - - if (protocols.length > 0 && !protocols.every((p) => isValidSubprotocol(p))) { - throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); - } - - // 10. Set this's url to urlRecord. - this[kWebSocketURL] = new URL(urlRecord.href); - - // 11. Let client be this's relevant settings object. - - // 12. Run this step in parallel: - - // 1. Establish a WebSocket connection given urlRecord, protocols, - // and client. - this[kController] = establishWebSocketConnection( - urlRecord, - protocols, - this, - (response) => this.#onConnectionEstablished(response), - options, - ); - - // Each WebSocket object has an associated ready state, which is a - // number representing the state of the connection. Initially it must - // be CONNECTING (0). - this[kReadyState] = WebSocket.CONNECTING; - - // The extensions attribute must initially return the empty string. - - // The protocol attribute must initially return the empty string. - - // Each WebSocket object has an associated binary type, which is a - // BinaryType. Initially it must be "blob". - this[kBinaryType] = "blob"; - } - - /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-close - * @param {number|undefined} code - * @param {string|undefined} reason - */ - close(code = undefined, reason = undefined) { - webidl.brandCheck(this, WebSocket); - - if (code !== undefined) { - code = webidl.converters["unsigned short"](code, { clamp: true }); - } - - if (reason !== undefined) { - reason = webidl.converters.USVString(reason); - } - - // 1. If code is present, but is neither an integer equal to 1000 nor an - // integer in the range 3000 to 4999, inclusive, throw an - // "InvalidAccessError" DOMException. - if (code !== undefined) { - if (code !== 1000 && (code < 3000 || code > 4999)) { - throw new DOMException("invalid code", "InvalidAccessError"); - } - } - - let reasonByteLength = 0; - - // 2. If reason is present, then run these substeps: - if (reason !== undefined) { - // 1. Let reasonBytes be the result of encoding reason. - // 2. If reasonBytes is longer than 123 bytes, then throw a - // "SyntaxError" DOMException. - reasonByteLength = Buffer.byteLength(reason); - - if (reasonByteLength > 123) { - throw new DOMException( - `Reason must be less than 123 bytes; received ${reasonByteLength}`, - "SyntaxError", - ); - } - } - - // 3. Run the first matching steps from the following list: - if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { - // If this's ready state is CLOSING (2) or CLOSED (3) - // Do nothing. - } else if (!isEstablished(this)) { - // If the WebSocket connection is not yet established - // Fail the WebSocket connection and set this's ready state - // to CLOSING (2). - failWebsocketConnection(this, "Connection was closed before it was established."); - this[kReadyState] = WebSocket.CLOSING; - } else if (!isClosing(this)) { - // If the WebSocket closing handshake has not yet been started - // Start the WebSocket closing handshake and set this's ready - // state to CLOSING (2). - // - If neither code nor reason is present, the WebSocket Close - // message must not have a body. - // - If code is present, then the status code to use in the - // WebSocket Close message must be the integer given by code. - // - If reason is also present, then reasonBytes must be - // provided in the Close message after the status code. - - const frame = new WebsocketFrameSend(); - - // If neither code nor reason is present, the WebSocket Close - // message must not have a body. - - // If code is present, then the status code to use in the - // WebSocket Close message must be the integer given by code. - if (code !== undefined && reason === undefined) { - frame.frameData = Buffer.allocUnsafe(2); - frame.frameData.writeUInt16BE(code, 0); - } else if (code !== undefined && reason !== undefined) { - // If reason is also present, then reasonBytes must be - // provided in the Close message after the status code. - frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); - frame.frameData.writeUInt16BE(code, 0); - // the body MAY contain UTF-8-encoded data with value /reason/ - frame.frameData.write(reason, 2, "utf-8"); - } else { - frame.frameData = emptyBuffer; - } - - /** @type {import('stream').Duplex} */ - const socket = this[kResponse].socket; - - socket.write(frame.createFrame(opcodes.CLOSE), (err) => { - if (!err) { - this[kSentClose] = true; - } - }); - - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - this[kReadyState] = states.CLOSING; - } else { - // Otherwise - // Set this's ready state to CLOSING (2). - this[kReadyState] = WebSocket.CLOSING; - } - } - - /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-send - * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data - */ - send(data) { - webidl.brandCheck(this, WebSocket); - - webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket.send" }); - - data = webidl.converters.WebSocketSendData(data); - - // 1. If this's ready state is CONNECTING, then throw an - // "InvalidStateError" DOMException. - if (this[kReadyState] === WebSocket.CONNECTING) { - throw new DOMException("Sent before connected.", "InvalidStateError"); - } - - // 2. Run the appropriate set of steps from the following list: - // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 - // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 - - if (!isEstablished(this) || isClosing(this)) { - return; - } - - /** @type {import('stream').Duplex} */ - const socket = this[kResponse].socket; - - // If data is a string - if (typeof data === "string") { - // If the WebSocket connection is established and the WebSocket - // closing handshake has not yet started, then the user agent - // must send a WebSocket Message comprised of the data argument - // using a text frame opcode; if the data cannot be sent, e.g. - // because it would need to be buffered but the buffer is full, - // the user agent must flag the WebSocket as full and then close - // the WebSocket connection. Any invocation of this method with a - // string argument that does not throw an exception must increase - // the bufferedAmount attribute by the number of bytes needed to - // express the argument as UTF-8. - - const value = Buffer.from(data); - const frame = new WebsocketFrameSend(value); - const buffer = frame.createFrame(opcodes.TEXT); - - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - } else if (types.isArrayBuffer(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need - // to be buffered but the buffer is full, the user agent must flag - // the WebSocket as full and then close the WebSocket connection. - // The data to be sent is the data stored in the buffer described - // by the ArrayBuffer object. Any invocation of this method with an - // ArrayBuffer argument that does not throw an exception must - // increase the bufferedAmount attribute by the length of the - // ArrayBuffer in bytes. - - const value = Buffer.from(data); - const frame = new WebsocketFrameSend(value); - const buffer = frame.createFrame(opcodes.BINARY); - - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - } else if (ArrayBuffer.isView(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need to - // be buffered but the buffer is full, the user agent must flag the - // WebSocket as full and then close the WebSocket connection. The - // data to be sent is the data stored in the section of the buffer - // described by the ArrayBuffer object that data references. Any - // invocation of this method with this kind of argument that does - // not throw an exception must increase the bufferedAmount attribute - // by the length of data’s buffer in bytes. - - const ab = Buffer.from(data, data.byteOffset, data.byteLength); - - const frame = new WebsocketFrameSend(ab); - const buffer = frame.createFrame(opcodes.BINARY); - - this.#bufferedAmount += ab.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= ab.byteLength; - }); - } else if (isBlobLike(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need to - // be buffered but the buffer is full, the user agent must flag the - // WebSocket as full and then close the WebSocket connection. The data - // to be sent is the raw data represented by the Blob object. Any - // invocation of this method with a Blob argument that does not throw - // an exception must increase the bufferedAmount attribute by the size - // of the Blob object’s raw data, in bytes. - - const frame = new WebsocketFrameSend(); - - data.arrayBuffer().then((ab) => { - const value = Buffer.from(ab); - frame.frameData = value; - const buffer = frame.createFrame(opcodes.BINARY); - - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - }); - } - } - - get readyState() { - webidl.brandCheck(this, WebSocket); - - // The readyState getter steps are to return this's ready state. - return this[kReadyState]; - } - - get bufferedAmount() { - webidl.brandCheck(this, WebSocket); - - return this.#bufferedAmount; - } - - get url() { - webidl.brandCheck(this, WebSocket); - - // The url getter steps are to return this's url, serialized. - return URLSerializer(this[kWebSocketURL]); - } - - get extensions() { - webidl.brandCheck(this, WebSocket); - - return this.#extensions; - } - - get protocol() { - webidl.brandCheck(this, WebSocket); - - return this.#protocol; - } - - get onopen() { - webidl.brandCheck(this, WebSocket); - - return this.#events.open; - } - - set onopen(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.open) { - this.removeEventListener("open", this.#events.open); - } - - if (typeof fn === "function") { - this.#events.open = fn; - this.addEventListener("open", fn); - } else { - this.#events.open = null; - } - } - - get onerror() { - webidl.brandCheck(this, WebSocket); - - return this.#events.error; - } - - set onerror(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.error) { - this.removeEventListener("error", this.#events.error); - } - - if (typeof fn === "function") { - this.#events.error = fn; - this.addEventListener("error", fn); - } else { - this.#events.error = null; - } - } - - get onclose() { - webidl.brandCheck(this, WebSocket); - - return this.#events.close; - } - - set onclose(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.close) { - this.removeEventListener("close", this.#events.close); - } - - if (typeof fn === "function") { - this.#events.close = fn; - this.addEventListener("close", fn); - } else { - this.#events.close = null; - } - } - - get onmessage() { - webidl.brandCheck(this, WebSocket); - - return this.#events.message; - } - - set onmessage(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.message) { - this.removeEventListener("message", this.#events.message); - } - - if (typeof fn === "function") { - this.#events.message = fn; - this.addEventListener("message", fn); - } else { - this.#events.message = null; - } - } - - get binaryType() { - webidl.brandCheck(this, WebSocket); - - return this[kBinaryType]; - } - - set binaryType(type) { - webidl.brandCheck(this, WebSocket); - - if (type !== "blob" && type !== "arraybuffer") { - this[kBinaryType] = "blob"; - } else { - this[kBinaryType] = type; - } - } - - /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - */ - #onConnectionEstablished(response) { - // processResponse is called when the "response’s header list has been received and initialized." - // once this happens, the connection is open - this[kResponse] = response; - - const parser = new ByteParser(this); - parser.on("drain", function onParserDrain() { - this.ws[kResponse].socket.resume(); - }); - - response.socket.ws = this; - this[kByteParser] = parser; - - // 1. Change the ready state to OPEN (1). - this[kReadyState] = states.OPEN; - - // 2. Change the extensions attribute’s value to the extensions in use, if - // it is not the null value. - // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 - const extensions = response.headersList.get("sec-websocket-extensions"); - - if (extensions !== null) { - this.#extensions = extensions; - } - - // 3. Change the protocol attribute’s value to the subprotocol in use, if - // it is not the null value. - // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 - const protocol = response.headersList.get("sec-websocket-protocol"); - - if (protocol !== null) { - this.#protocol = protocol; - } - - // 4. Fire an event named open at the WebSocket object. - fireEvent("open", this); - } - } - - // https://websockets.spec.whatwg.org/#dom-websocket-connecting - WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; - // https://websockets.spec.whatwg.org/#dom-websocket-open - WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; - // https://websockets.spec.whatwg.org/#dom-websocket-closing - WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; - // https://websockets.spec.whatwg.org/#dom-websocket-closed - WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; - - Object.defineProperties(WebSocket.prototype, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors, - url: kEnumerableProperty, - readyState: kEnumerableProperty, - bufferedAmount: kEnumerableProperty, - onopen: kEnumerableProperty, - onerror: kEnumerableProperty, - onclose: kEnumerableProperty, - close: kEnumerableProperty, - onmessage: kEnumerableProperty, - binaryType: kEnumerableProperty, - send: kEnumerableProperty, - extensions: kEnumerableProperty, - protocol: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "WebSocket", - writable: false, - enumerable: false, - configurable: true, - }, - }); - - Object.defineProperties(WebSocket, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors, - }); - - webidl.converters["sequence"] = webidl.sequenceConverter(webidl.converters.DOMString); - - webidl.converters["DOMString or sequence"] = function (V) { - if (webidl.util.Type(V) === "Object" && Symbol.iterator in V) { - return webidl.converters["sequence"](V); - } - - return webidl.converters.DOMString(V); - }; - - // This implements the propsal made in https://github.com/whatwg/websockets/issues/42 - webidl.converters.WebSocketInit = webidl.dictionaryConverter([ - { - key: "protocols", - converter: webidl.converters["DOMString or sequence"], - get defaultValue() { - return []; - }, - }, - { - key: "dispatcher", - converter: (V) => V, - get defaultValue() { - return getGlobalDispatcher(); - }, - }, - { - key: "headers", - converter: webidl.nullableConverter(webidl.converters.HeadersInit), - }, - ]); - - webidl.converters["DOMString or sequence or WebSocketInit"] = function (V) { - if (webidl.util.Type(V) === "Object" && !(Symbol.iterator in V)) { - return webidl.converters.WebSocketInit(V); - } - - return { protocols: webidl.converters["DOMString or sequence"](V) }; - }; - - webidl.converters.WebSocketSendData = function (V) { - if (webidl.util.Type(V) === "Object") { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); - } - - if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { - return webidl.converters.BufferSource(V); - } - } - - return webidl.converters.USVString(V); - }; - - module.exports = { - WebSocket, - }; - - /***/ - }, - - /***/ 5030: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - - function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } - - if (typeof process === "object" && process.version !== undefined) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } - - return ""; - } - - exports.getUserAgent = getUserAgent; - //# sourceMappingURL=index.js.map - - /***/ - }, - - /***/ 5840: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - Object.defineProperty(exports, "v1", { - enumerable: true, - get: function () { - return _v.default; - }, - }); - Object.defineProperty(exports, "v3", { - enumerable: true, - get: function () { - return _v2.default; - }, - }); - Object.defineProperty(exports, "v4", { - enumerable: true, - get: function () { - return _v3.default; - }, - }); - Object.defineProperty(exports, "v5", { - enumerable: true, - get: function () { - return _v4.default; - }, - }); - Object.defineProperty(exports, "NIL", { - enumerable: true, - get: function () { - return _nil.default; - }, - }); - Object.defineProperty(exports, "version", { - enumerable: true, - get: function () { - return _version.default; - }, - }); - Object.defineProperty(exports, "validate", { - enumerable: true, - get: function () { - return _validate.default; - }, - }); - Object.defineProperty(exports, "stringify", { - enumerable: true, - get: function () { - return _stringify.default; - }, - }); - Object.defineProperty(exports, "parse", { - enumerable: true, - get: function () { - return _parse.default; - }, - }); - - var _v = _interopRequireDefault(__nccwpck_require__(8628)); - - var _v2 = _interopRequireDefault(__nccwpck_require__(6409)); - - var _v3 = _interopRequireDefault(__nccwpck_require__(5122)); - - var _v4 = _interopRequireDefault(__nccwpck_require__(9120)); - - var _nil = _interopRequireDefault(__nccwpck_require__(5332)); - - var _version = _interopRequireDefault(__nccwpck_require__(1595)); - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - var _parse = _interopRequireDefault(__nccwpck_require__(2746)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - /***/ - }, - - /***/ 4569: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === "string") { - bytes = Buffer.from(bytes, "utf8"); - } - - return _crypto.default.createHash("md5").update(bytes).digest(); - } - - var _default = md5; - exports["default"] = _default; - - /***/ - }, - - /***/ 5332: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - var _default = "00000000-0000-0000-0000-000000000000"; - exports["default"] = _default; - - /***/ - }, - - /***/ 2746: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError("Invalid UUID"); - } - - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = (v >>> 16) & 0xff; - arr[2] = (v >>> 8) & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - - arr[10] = ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff; - arr[11] = (v / 0x100000000) & 0xff; - arr[12] = (v >>> 24) & 0xff; - arr[13] = (v >>> 16) & 0xff; - arr[14] = (v >>> 8) & 0xff; - arr[15] = v & 0xff; - return arr; - } - - var _default = parse; - exports["default"] = _default; - - /***/ - }, - - /***/ 814: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - var _default = - /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - exports["default"] = _default; - - /***/ - }, - - /***/ 807: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = rng; - - var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate - - let poolPtr = rnds8Pool.length; - - function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - - poolPtr = 0; - } - - return rnds8Pool.slice(poolPtr, (poolPtr += 16)); - } - - /***/ - }, - - /***/ 5274: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === "string") { - bytes = Buffer.from(bytes, "utf8"); - } - - return _crypto.default.createHash("sha1").update(bytes).digest(); - } - - var _default = sha1; - exports["default"] = _default; - - /***/ - }, - - /***/ 8950: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - /** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ - const byteToHex = []; - - for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); - } - - function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = ( - byteToHex[arr[offset + 0]] + - byteToHex[arr[offset + 1]] + - byteToHex[arr[offset + 2]] + - byteToHex[arr[offset + 3]] + - "-" + - byteToHex[arr[offset + 4]] + - byteToHex[arr[offset + 5]] + - "-" + - byteToHex[arr[offset + 6]] + - byteToHex[arr[offset + 7]] + - "-" + - byteToHex[arr[offset + 8]] + - byteToHex[arr[offset + 9]] + - "-" + - byteToHex[arr[offset + 10]] + - byteToHex[arr[offset + 11]] + - byteToHex[arr[offset + 12]] + - byteToHex[arr[offset + 13]] + - byteToHex[arr[offset + 14]] + - byteToHex[arr[offset + 15]] - ).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!(0, _validate.default)(uuid)) { - throw TypeError("Stringified UUID is invalid"); - } - - return uuid; - } - - var _default = stringify; - exports["default"] = _default; - - /***/ - }, - - /***/ 8628: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _rng = _interopRequireDefault(__nccwpck_require__(807)); - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - let _nodeId; - - let _clockseq; // Previous uuid creation time - - let _lastMSecs = 0; - let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - - function v1(options, buf, offset) { - let i = (buf && offset) || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [ - seedBytes[0] | 0x01, - seedBytes[1], - seedBytes[2], - seedBytes[3], - seedBytes[4], - seedBytes[5], - ]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = (clockseq + 1) & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = (tl >>> 24) & 0xff; - b[i++] = (tl >>> 16) & 0xff; - b[i++] = (tl >>> 8) & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff; - b[i++] = (tmh >>> 8) & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = ((tmh >>> 24) & 0xf) | 0x10; // include version - - b[i++] = (tmh >>> 16) & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = (clockseq >>> 8) | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf || (0, _stringify.default)(b); - } - - var _default = v1; - exports["default"] = _default; - - /***/ - }, - - /***/ 6409: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _v = _interopRequireDefault(__nccwpck_require__(5998)); - - var _md = _interopRequireDefault(__nccwpck_require__(4569)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - const v3 = (0, _v.default)("v3", 0x30, _md.default); - var _default = v3; - exports["default"] = _default; - - /***/ - }, - - /***/ 5998: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = _default; - exports.URL = exports.DNS = void 0; - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - var _parse = _interopRequireDefault(__nccwpck_require__(2746)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - const bytes = []; - - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - - return bytes; - } - - const DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; - exports.DNS = DNS; - const URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; - exports.URL = URL; - - function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === "string") { - value = stringToBytes(value); - } - - if (typeof namespace === "string") { - namespace = (0, _parse.default)(namespace); - } - - if (namespace.length !== 16) { - throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = (bytes[6] & 0x0f) | version; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return (0, _stringify.default)(bytes); - } // Function#name is not settable on some platforms (#270) - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; - } - - /***/ - }, - - /***/ 5122: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _rng = _interopRequireDefault(__nccwpck_require__(807)); - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function v4(options, buf, offset) { - options = options || {}; - - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; - } - - return (0, _stringify.default)(rnds); - } - - var _default = v4; - exports["default"] = _default; - - /***/ - }, - - /***/ 9120: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _v = _interopRequireDefault(__nccwpck_require__(5998)); - - var _sha = _interopRequireDefault(__nccwpck_require__(5274)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - const v5 = (0, _v.default)("v5", 0x50, _sha.default); - var _default = v5; - exports["default"] = _default; - - /***/ - }, - - /***/ 6900: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _regex = _interopRequireDefault(__nccwpck_require__(814)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function validate(uuid) { - return typeof uuid === "string" && _regex.default.test(uuid); - } - - var _default = validate; - exports["default"] = _default; - - /***/ - }, - - /***/ 1595: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError("Invalid UUID"); - } - - return parseInt(uuid.substr(14, 1), 16); - } - - var _default = version; - exports["default"] = _default; - - /***/ - }, - - /***/ 2940: /***/ (module) => { - // Returns a wrapper function that returns a wrapped callback - // The wrapper function should do some stuff, and return a - // presumably different callback function. - // This makes sure that own properties are retained, so that - // decorations and such are not lost along the way. - module.exports = wrappy; - function wrappy(fn, cb) { - if (fn && cb) return wrappy(fn)(cb); - - if (typeof fn !== "function") throw new TypeError("need wrapper function"); - - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k]; - }); - - return wrapper; - - function wrapper() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - var ret = fn.apply(this, args); - var cb = args[args.length - 1]; - if (typeof ret === "function" && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k]; - }); - } - return ret; - } - } - - /***/ - }, - - /***/ 4091: /***/ (module) => { - "use strict"; - - module.exports = function (Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value; - } - }; - }; - - /***/ - }, - - /***/ 665: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - module.exports = Yallist; - - Yallist.Node = Node; - Yallist.create = Yallist; - - function Yallist(list) { - var self = this; - if (!(self instanceof Yallist)) { - self = new Yallist(); - } - - self.tail = null; - self.head = null; - self.length = 0; - - if (list && typeof list.forEach === "function") { - list.forEach(function (item) { - self.push(item); - }); - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]); - } - } - - return self; - } - - Yallist.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error("removing node which does not belong to this list"); - } - - var next = node.next; - var prev = node.prev; - - if (next) { - next.prev = prev; - } - - if (prev) { - prev.next = next; - } - - if (node === this.head) { - this.head = next; - } - if (node === this.tail) { - this.tail = prev; - } - - node.list.length--; - node.next = null; - node.prev = null; - node.list = null; - - return next; - }; - - Yallist.prototype.unshiftNode = function (node) { - if (node === this.head) { - return; - } - - if (node.list) { - node.list.removeNode(node); - } - - var head = this.head; - node.list = this; - node.next = head; - if (head) { - head.prev = node; - } - - this.head = node; - if (!this.tail) { - this.tail = node; - } - this.length++; - }; - - Yallist.prototype.pushNode = function (node) { - if (node === this.tail) { - return; - } - - if (node.list) { - node.list.removeNode(node); - } - - var tail = this.tail; - node.list = this; - node.prev = tail; - if (tail) { - tail.next = node; - } - - this.tail = node; - if (!this.head) { - this.head = node; - } - this.length++; - }; - - Yallist.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push(this, arguments[i]); - } - return this.length; - }; - - Yallist.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]); - } - return this.length; - }; - - Yallist.prototype.pop = function () { - if (!this.tail) { - return undefined; - } - - var res = this.tail.value; - this.tail = this.tail.prev; - if (this.tail) { - this.tail.next = null; - } else { - this.head = null; - } - this.length--; - return res; - }; - - Yallist.prototype.shift = function () { - if (!this.head) { - return undefined; - } - - var res = this.head.value; - this.head = this.head.next; - if (this.head) { - this.head.prev = null; - } else { - this.tail = null; - } - this.length--; - return res; - }; - - Yallist.prototype.forEach = function (fn, thisp) { - thisp = thisp || this; - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this); - walker = walker.next; - } - }; - - Yallist.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this; - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this); - walker = walker.prev; - } - }; - - Yallist.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.next; - } - if (i === n && walker !== null) { - return walker.value; - } - }; - - Yallist.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.prev; - } - if (i === n && walker !== null) { - return walker.value; - } - }; - - Yallist.prototype.map = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); - for (var walker = this.head; walker !== null; ) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.next; - } - return res; - }; - - Yallist.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); - for (var walker = this.tail; walker !== null; ) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.prev; - } - return res; - }; - - Yallist.prototype.reduce = function (fn, initial) { - var acc; - var walker = this.head; - if (arguments.length > 1) { - acc = initial; - } else if (this.head) { - walker = this.head.next; - acc = this.head.value; - } else { - throw new TypeError("Reduce of empty list with no initial value"); - } - - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i); - walker = walker.next; - } - - return acc; - }; - - Yallist.prototype.reduceReverse = function (fn, initial) { - var acc; - var walker = this.tail; - if (arguments.length > 1) { - acc = initial; - } else if (this.tail) { - walker = this.tail.prev; - acc = this.tail.value; - } else { - throw new TypeError("Reduce of empty list with no initial value"); - } - - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i); - walker = walker.prev; - } - - return acc; - }; - - Yallist.prototype.toArray = function () { - var arr = new Array(this.length); - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.next; - } - return arr; - }; - - Yallist.prototype.toArrayReverse = function () { - var arr = new Array(this.length); - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.prev; - } - return arr; - }; - - Yallist.prototype.slice = function (from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist(); - if (to < from || to < 0) { - return ret; - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next; - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value); - } - return ret; - }; - - Yallist.prototype.sliceReverse = function (from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist(); - if (to < from || to < 0) { - return ret; - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev; - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value); - } - return ret; - }; - - Yallist.prototype.splice = function (start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1; - } - if (start < 0) { - start = this.length + start; - } - - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next; - } - - var ret = []; - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value); - walker = this.removeNode(walker); - } - if (walker === null) { - walker = this.tail; - } - - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev; - } - - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]); - } - return ret; - }; - - Yallist.prototype.reverse = function () { - var head = this.head; - var tail = this.tail; - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev; - walker.prev = walker.next; - walker.next = p; - } - this.head = tail; - this.tail = head; - return this; - }; - - function insert(self, node, value) { - var inserted = - node === self.head - ? new Node(value, null, node, self) - : new Node(value, node, node.next, self); - - if (inserted.next === null) { - self.tail = inserted; - } - if (inserted.prev === null) { - self.head = inserted; - } - - self.length++; - - return inserted; - } - - function push(self, item) { - self.tail = new Node(item, self.tail, null, self); - if (!self.head) { - self.head = self.tail; - } - self.length++; - } - - function unshift(self, item) { - self.head = new Node(item, null, self.head, self); - if (!self.tail) { - self.tail = self.head; - } - self.length++; - } - - function Node(value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list); - } - - this.list = list; - this.value = value; - - if (prev) { - prev.next = this; - this.prev = prev; - } else { - this.prev = null; - } - - if (next) { - next.prev = this; - this.next = next; - } else { - this.next = null; - } - } - - try { - // add if support for Symbol.iterator is present - __nccwpck_require__(4091)(Yallist); - } catch (er) {} - - /***/ - }, - - /***/ 9491: /***/ (module) => { - "use strict"; - module.exports = require("assert"); - - /***/ - }, - - /***/ 852: /***/ (module) => { - "use strict"; - module.exports = require("async_hooks"); - - /***/ - }, - - /***/ 4300: /***/ (module) => { - "use strict"; - module.exports = require("buffer"); - - /***/ - }, - - /***/ 6206: /***/ (module) => { - "use strict"; - module.exports = require("console"); - - /***/ - }, - - /***/ 6113: /***/ (module) => { - "use strict"; - module.exports = require("crypto"); - - /***/ - }, - - /***/ 7643: /***/ (module) => { - "use strict"; - module.exports = require("diagnostics_channel"); - - /***/ - }, - - /***/ 2361: /***/ (module) => { - "use strict"; - module.exports = require("events"); - - /***/ - }, - - /***/ 7147: /***/ (module) => { - "use strict"; - module.exports = require("fs"); - - /***/ - }, - - /***/ 3685: /***/ (module) => { - "use strict"; - module.exports = require("http"); - - /***/ - }, - - /***/ 5158: /***/ (module) => { - "use strict"; - module.exports = require("http2"); - - /***/ - }, - - /***/ 5687: /***/ (module) => { - "use strict"; - module.exports = require("https"); - - /***/ - }, - - /***/ 1808: /***/ (module) => { - "use strict"; - module.exports = require("net"); - - /***/ - }, - - /***/ 5673: /***/ (module) => { - "use strict"; - module.exports = require("node:events"); - - /***/ - }, - - /***/ 4492: /***/ (module) => { - "use strict"; - module.exports = require("node:stream"); - - /***/ - }, - - /***/ 7261: /***/ (module) => { - "use strict"; - module.exports = require("node:util"); - - /***/ - }, - - /***/ 2037: /***/ (module) => { - "use strict"; - module.exports = require("os"); - - /***/ - }, - - /***/ 1017: /***/ (module) => { - "use strict"; - module.exports = require("path"); - - /***/ - }, - - /***/ 4074: /***/ (module) => { - "use strict"; - module.exports = require("perf_hooks"); - - /***/ - }, - - /***/ 3477: /***/ (module) => { - "use strict"; - module.exports = require("querystring"); - - /***/ - }, - - /***/ 2781: /***/ (module) => { - "use strict"; - module.exports = require("stream"); - - /***/ - }, - - /***/ 5356: /***/ (module) => { - "use strict"; - module.exports = require("stream/web"); - - /***/ - }, - - /***/ 1576: /***/ (module) => { - "use strict"; - module.exports = require("string_decoder"); - - /***/ - }, - - /***/ 4404: /***/ (module) => { - "use strict"; - module.exports = require("tls"); - - /***/ - }, - - /***/ 7310: /***/ (module) => { - "use strict"; - module.exports = require("url"); - - /***/ - }, - - /***/ 3837: /***/ (module) => { - "use strict"; - module.exports = require("util"); - - /***/ - }, - - /***/ 9830: /***/ (module) => { - "use strict"; - module.exports = require("util/types"); - - /***/ - }, - - /***/ 1267: /***/ (module) => { - "use strict"; - module.exports = require("worker_threads"); - - /***/ - }, - - /***/ 9796: /***/ (module) => { - "use strict"; - module.exports = require("zlib"); - - /***/ - }, - - /***/ 2960: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const WritableStream = __nccwpck_require__(4492).Writable; - const inherits = __nccwpck_require__(7261).inherits; - - const StreamSearch = __nccwpck_require__(1142); - - const PartStream = __nccwpck_require__(1620); - const HeaderParser = __nccwpck_require__(2032); - - const DASH = 45; - const B_ONEDASH = Buffer.from("-"); - const B_CRLF = Buffer.from("\r\n"); - const EMPTY_FN = function () {}; - - function Dicer(cfg) { - if (!(this instanceof Dicer)) { - return new Dicer(cfg); - } - WritableStream.call(this, cfg); - - if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== "string")) { - throw new TypeError("Boundary required"); - } - - if (typeof cfg.boundary === "string") { - this.setBoundary(cfg.boundary); - } else { - this._bparser = undefined; - } - - this._headerFirst = cfg.headerFirst; - - this._dashes = 0; - this._parts = 0; - this._finished = false; - this._realFinish = false; - this._isPreamble = true; - this._justMatched = false; - this._firstWrite = true; - this._inHeader = true; - this._part = undefined; - this._cb = undefined; - this._ignoreData = false; - this._partOpts = { highWaterMark: cfg.partHwm }; - this._pause = false; - - const self = this; - this._hparser = new HeaderParser(cfg); - this._hparser.on("header", function (header) { - self._inHeader = false; - self._part.emit("header", header); - }); - } - inherits(Dicer, WritableStream); - - Dicer.prototype.emit = function (ev) { - if (ev === "finish" && !this._realFinish) { - if (!this._finished) { - const self = this; - process.nextTick(function () { - self.emit("error", new Error("Unexpected end of multipart data")); - if (self._part && !self._ignoreData) { - const type = self._isPreamble ? "Preamble" : "Part"; - self._part.emit( - "error", - new Error( - type + " terminated early due to unexpected end of multipart data", - ), - ); - self._part.push(null); - process.nextTick(function () { - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - }); - return; - } - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - }); - } - } else { - WritableStream.prototype.emit.apply(this, arguments); - } - }; - - Dicer.prototype._write = function (data, encoding, cb) { - // ignore unexpected data (e.g. extra trailer data after finished) - if (!this._hparser && !this._bparser) { - return cb(); - } - - if (this._headerFirst && this._isPreamble) { - if (!this._part) { - this._part = new PartStream(this._partOpts); - if (this._events.preamble) { - this.emit("preamble", this._part); - } else { - this._ignore(); - } - } - const r = this._hparser.push(data); - if (!this._inHeader && r !== undefined && r < data.length) { - data = data.slice(r); - } else { - return cb(); - } - } - - // allows for "easier" testing - if (this._firstWrite) { - this._bparser.push(B_CRLF); - this._firstWrite = false; - } - - this._bparser.push(data); - - if (this._pause) { - this._cb = cb; - } else { - cb(); - } - }; - - Dicer.prototype.reset = function () { - this._part = undefined; - this._bparser = undefined; - this._hparser = undefined; - }; - - Dicer.prototype.setBoundary = function (boundary) { - const self = this; - this._bparser = new StreamSearch("\r\n--" + boundary); - this._bparser.on("info", function (isMatch, data, start, end) { - self._oninfo(isMatch, data, start, end); - }); - }; - - Dicer.prototype._ignore = function () { - if (this._part && !this._ignoreData) { - this._ignoreData = true; - this._part.on("error", EMPTY_FN); - // we must perform some kind of read on the stream even though we are - // ignoring the data, otherwise node's Readable stream will not emit 'end' - // after pushing null to the stream - this._part.resume(); - } - }; - - Dicer.prototype._oninfo = function (isMatch, data, start, end) { - let buf; - const self = this; - let i = 0; - let r; - let shouldWriteMore = true; - - if (!this._part && this._justMatched && data) { - while (this._dashes < 2 && start + i < end) { - if (data[start + i] === DASH) { - ++i; - ++this._dashes; - } else { - if (this._dashes) { - buf = B_ONEDASH; - } - this._dashes = 0; - break; - } - } - if (this._dashes === 2) { - if (start + i < end && this._events.trailer) { - this.emit("trailer", data.slice(start + i, end)); - } - this.reset(); - this._finished = true; - // no more parts will be added - if (self._parts === 0) { - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - } - } - if (this._dashes) { - return; - } - } - if (this._justMatched) { - this._justMatched = false; - } - if (!this._part) { - this._part = new PartStream(this._partOpts); - this._part._read = function (n) { - self._unpause(); - }; - if (this._isPreamble && this._events.preamble) { - this.emit("preamble", this._part); - } else if (this._isPreamble !== true && this._events.part) { - this.emit("part", this._part); - } else { - this._ignore(); - } - if (!this._isPreamble) { - this._inHeader = true; - } - } - if (data && start < end && !this._ignoreData) { - if (this._isPreamble || !this._inHeader) { - if (buf) { - shouldWriteMore = this._part.push(buf); - } - shouldWriteMore = this._part.push(data.slice(start, end)); - if (!shouldWriteMore) { - this._pause = true; - } - } else if (!this._isPreamble && this._inHeader) { - if (buf) { - this._hparser.push(buf); - } - r = this._hparser.push(data.slice(start, end)); - if (!this._inHeader && r !== undefined && r < end) { - this._oninfo(false, data, start + r, end); - } - } - } - if (isMatch) { - this._hparser.reset(); - if (this._isPreamble) { - this._isPreamble = false; - } else { - if (start !== end) { - ++this._parts; - this._part.on("end", function () { - if (--self._parts === 0) { - if (self._finished) { - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - } else { - self._unpause(); - } - } - }); - } - } - this._part.push(null); - this._part = undefined; - this._ignoreData = false; - this._justMatched = true; - this._dashes = 0; - } - }; - - Dicer.prototype._unpause = function () { - if (!this._pause) { - return; - } - - this._pause = false; - if (this._cb) { - const cb = this._cb; - this._cb = undefined; - cb(); - } - }; - - module.exports = Dicer; - - /***/ - }, - - /***/ 2032: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const EventEmitter = __nccwpck_require__(5673).EventEmitter; - const inherits = __nccwpck_require__(7261).inherits; - const getLimit = __nccwpck_require__(1467); - - const StreamSearch = __nccwpck_require__(1142); - - const B_DCRLF = Buffer.from("\r\n\r\n"); - const RE_CRLF = /\r\n/g; - const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; // eslint-disable-line no-control-regex - - function HeaderParser(cfg) { - EventEmitter.call(this); - - cfg = cfg || {}; - const self = this; - this.nread = 0; - this.maxed = false; - this.npairs = 0; - this.maxHeaderPairs = getLimit(cfg, "maxHeaderPairs", 2000); - this.maxHeaderSize = getLimit(cfg, "maxHeaderSize", 80 * 1024); - this.buffer = ""; - this.header = {}; - this.finished = false; - this.ss = new StreamSearch(B_DCRLF); - this.ss.on("info", function (isMatch, data, start, end) { - if (data && !self.maxed) { - if (self.nread + end - start >= self.maxHeaderSize) { - end = self.maxHeaderSize - self.nread + start; - self.nread = self.maxHeaderSize; - self.maxed = true; - } else { - self.nread += end - start; - } - - self.buffer += data.toString("binary", start, end); - } - if (isMatch) { - self._finish(); - } - }); - } - inherits(HeaderParser, EventEmitter); - - HeaderParser.prototype.push = function (data) { - const r = this.ss.push(data); - if (this.finished) { - return r; - } - }; - - HeaderParser.prototype.reset = function () { - this.finished = false; - this.buffer = ""; - this.header = {}; - this.ss.reset(); - }; - - HeaderParser.prototype._finish = function () { - if (this.buffer) { - this._parseHeader(); - } - this.ss.matches = this.ss.maxMatches; - const header = this.header; - this.header = {}; - this.buffer = ""; - this.finished = true; - this.nread = this.npairs = 0; - this.maxed = false; - this.emit("header", header); - }; - - HeaderParser.prototype._parseHeader = function () { - if (this.npairs === this.maxHeaderPairs) { - return; - } - - const lines = this.buffer.split(RE_CRLF); - const len = lines.length; - let m, h; - - for (var i = 0; i < len; ++i) { - // eslint-disable-line no-var - if (lines[i].length === 0) { - continue; - } - if (lines[i][0] === "\t" || lines[i][0] === " ") { - // folded header content - // RFC2822 says to just remove the CRLF and not the whitespace following - // it, so we follow the RFC and include the leading whitespace ... - if (h) { - this.header[h][this.header[h].length - 1] += lines[i]; - continue; - } - } - - const posColon = lines[i].indexOf(":"); - if (posColon === -1 || posColon === 0) { - return; - } - m = RE_HDR.exec(lines[i]); - h = m[1].toLowerCase(); - this.header[h] = this.header[h] || []; - this.header[h].push(m[2] || ""); - if (++this.npairs === this.maxHeaderPairs) { - break; - } - } - }; - - module.exports = HeaderParser; - - /***/ - }, - - /***/ 1620: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const inherits = __nccwpck_require__(7261).inherits; - const ReadableStream = __nccwpck_require__(4492).Readable; - - function PartStream(opts) { - ReadableStream.call(this, opts); - } - inherits(PartStream, ReadableStream); - - PartStream.prototype._read = function (n) {}; - - module.exports = PartStream; - - /***/ - }, - - /***/ 1142: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - /** - * Copyright Brian White. All rights reserved. - * - * @see https://github.com/mscdex/streamsearch - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation - * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool - */ - const EventEmitter = __nccwpck_require__(5673).EventEmitter; - const inherits = __nccwpck_require__(7261).inherits; - - function SBMH(needle) { - if (typeof needle === "string") { - needle = Buffer.from(needle); - } - - if (!Buffer.isBuffer(needle)) { - throw new TypeError("The needle has to be a String or a Buffer."); - } - - const needleLength = needle.length; - - if (needleLength === 0) { - throw new Error("The needle cannot be an empty String/Buffer."); - } - - if (needleLength > 256) { - throw new Error("The needle cannot have a length bigger than 256."); - } - - this.maxMatches = Infinity; - this.matches = 0; - - this._occ = new Array(256).fill(needleLength); // Initialize occurrence table. - this._lookbehind_size = 0; - this._needle = needle; - this._bufpos = 0; - - this._lookbehind = Buffer.alloc(needleLength); - - // Populate occurrence table with analysis of the needle, - // ignoring last letter. - for (var i = 0; i < needleLength - 1; ++i) { - // eslint-disable-line no-var - this._occ[needle[i]] = needleLength - 1 - i; - } - } - inherits(SBMH, EventEmitter); - - SBMH.prototype.reset = function () { - this._lookbehind_size = 0; - this.matches = 0; - this._bufpos = 0; - }; - - SBMH.prototype.push = function (chunk, pos) { - if (!Buffer.isBuffer(chunk)) { - chunk = Buffer.from(chunk, "binary"); - } - const chlen = chunk.length; - this._bufpos = pos || 0; - let r; - while (r !== chlen && this.matches < this.maxMatches) { - r = this._sbmh_feed(chunk); - } - return r; - }; - - SBMH.prototype._sbmh_feed = function (data) { - const len = data.length; - const needle = this._needle; - const needleLength = needle.length; - const lastNeedleChar = needle[needleLength - 1]; - - // Positive: points to a position in `data` - // pos == 3 points to data[3] - // Negative: points to a position in the lookbehind buffer - // pos == -2 points to lookbehind[lookbehind_size - 2] - let pos = -this._lookbehind_size; - let ch; - - if (pos < 0) { - // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool - // search with character lookup code that considers both the - // lookbehind buffer and the current round's haystack data. - // - // Loop until - // there is a match. - // or until - // we've moved past the position that requires the - // lookbehind buffer. In this case we switch to the - // optimized loop. - // or until - // the character to look at lies outside the haystack. - while (pos < 0 && pos <= len - needleLength) { - ch = this._sbmh_lookup_char(data, pos + needleLength - 1); - - if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { - this._lookbehind_size = 0; - ++this.matches; - this.emit("info", true); - - return (this._bufpos = pos + needleLength); - } - pos += this._occ[ch]; - } - - // No match. - - if (pos < 0) { - // There's too few data for Boyer-Moore-Horspool to run, - // so let's use a different algorithm to skip as much as - // we can. - // Forward pos until - // the trailing part of lookbehind + data - // looks like the beginning of the needle - // or until - // pos == 0 - while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { - ++pos; - } - } - - if (pos >= 0) { - // Discard lookbehind buffer. - this.emit("info", false, this._lookbehind, 0, this._lookbehind_size); - this._lookbehind_size = 0; - } else { - // Cut off part of the lookbehind buffer that has - // been processed and append the entire haystack - // into it. - const bytesToCutOff = this._lookbehind_size + pos; - if (bytesToCutOff > 0) { - // The cut off data is guaranteed not to contain the needle. - this.emit("info", false, this._lookbehind, 0, bytesToCutOff); - } - - this._lookbehind.copy( - this._lookbehind, - 0, - bytesToCutOff, - this._lookbehind_size - bytesToCutOff, - ); - this._lookbehind_size -= bytesToCutOff; - - data.copy(this._lookbehind, this._lookbehind_size); - this._lookbehind_size += len; - - this._bufpos = len; - return len; - } - } - - pos += (pos >= 0) * this._bufpos; - - // Lookbehind buffer is now empty. We only need to check if the - // needle is in the haystack. - if (data.indexOf(needle, pos) !== -1) { - pos = data.indexOf(needle, pos); - ++this.matches; - if (pos > 0) { - this.emit("info", true, data, this._bufpos, pos); - } else { - this.emit("info", true); - } - - return (this._bufpos = pos + needleLength); - } else { - pos = len - needleLength; - } - - // There was no match. If there's trailing haystack data that we cannot - // match yet using the Boyer-Moore-Horspool algorithm (because the trailing - // data is less than the needle size) then match using a modified - // algorithm that starts matching from the beginning instead of the end. - // Whatever trailing data is left after running this algorithm is added to - // the lookbehind buffer. - while ( - pos < len && - (data[pos] !== needle[0] || - Buffer.compare(data.subarray(pos, pos + len - pos), needle.subarray(0, len - pos)) !== - 0) - ) { - ++pos; - } - if (pos < len) { - data.copy(this._lookbehind, 0, pos, pos + (len - pos)); - this._lookbehind_size = len - pos; - } - - // Everything until pos is guaranteed not to contain needle data. - if (pos > 0) { - this.emit("info", false, data, this._bufpos, pos < len ? pos : len); - } - - this._bufpos = len; - return len; - }; - - SBMH.prototype._sbmh_lookup_char = function (data, pos) { - return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; - }; - - SBMH.prototype._sbmh_memcmp = function (data, pos, len) { - for (var i = 0; i < len; ++i) { - // eslint-disable-line no-var - if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { - return false; - } - } - return true; - }; - - module.exports = SBMH; - - /***/ - }, - - /***/ 727: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const WritableStream = __nccwpck_require__(4492).Writable; - const { inherits } = __nccwpck_require__(7261); - const Dicer = __nccwpck_require__(2960); - - const MultipartParser = __nccwpck_require__(2183); - const UrlencodedParser = __nccwpck_require__(8306); - const parseParams = __nccwpck_require__(1854); - - function Busboy(opts) { - if (!(this instanceof Busboy)) { - return new Busboy(opts); - } - - if (typeof opts !== "object") { - throw new TypeError("Busboy expected an options-Object."); - } - if (typeof opts.headers !== "object") { - throw new TypeError("Busboy expected an options-Object with headers-attribute."); - } - if (typeof opts.headers["content-type"] !== "string") { - throw new TypeError("Missing Content-Type-header."); - } - - const { headers, ...streamOptions } = opts; - - this.opts = { - autoDestroy: false, - ...streamOptions, - }; - WritableStream.call(this, this.opts); - - this._done = false; - this._parser = this.getParserByHeaders(headers); - this._finished = false; - } - inherits(Busboy, WritableStream); - - Busboy.prototype.emit = function (ev) { - if (ev === "finish") { - if (!this._done) { - this._parser?.end(); - return; - } else if (this._finished) { - return; - } - this._finished = true; - } - WritableStream.prototype.emit.apply(this, arguments); - }; - - Busboy.prototype.getParserByHeaders = function (headers) { - const parsed = parseParams(headers["content-type"]); - - const cfg = { - defCharset: this.opts.defCharset, - fileHwm: this.opts.fileHwm, - headers, - highWaterMark: this.opts.highWaterMark, - isPartAFile: this.opts.isPartAFile, - limits: this.opts.limits, - parsedConType: parsed, - preservePath: this.opts.preservePath, - }; - - if (MultipartParser.detect.test(parsed[0])) { - return new MultipartParser(this, cfg); - } - if (UrlencodedParser.detect.test(parsed[0])) { - return new UrlencodedParser(this, cfg); - } - throw new Error("Unsupported Content-Type."); - }; - - Busboy.prototype._write = function (chunk, encoding, cb) { - this._parser.write(chunk, cb); - }; - - module.exports = Busboy; - module.exports["default"] = Busboy; - module.exports.Busboy = Busboy; - - module.exports.Dicer = Dicer; - - /***/ - }, - - /***/ 2183: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - // TODO: - // * support 1 nested multipart level - // (see second multipart example here: - // http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) - // * support limits.fieldNameSize - // -- this will require modifications to utils.parseParams - - const { Readable } = __nccwpck_require__(4492); - const { inherits } = __nccwpck_require__(7261); - - const Dicer = __nccwpck_require__(2960); - - const parseParams = __nccwpck_require__(1854); - const decodeText = __nccwpck_require__(4619); - const basename = __nccwpck_require__(8647); - const getLimit = __nccwpck_require__(1467); - - const RE_BOUNDARY = /^boundary$/i; - const RE_FIELD = /^form-data$/i; - const RE_CHARSET = /^charset$/i; - const RE_FILENAME = /^filename$/i; - const RE_NAME = /^name$/i; - - Multipart.detect = /^multipart\/form-data/i; - function Multipart(boy, cfg) { - let i; - let len; - const self = this; - let boundary; - const limits = cfg.limits; - const isPartAFile = - cfg.isPartAFile || - ((fieldName, contentType, fileName) => - contentType === "application/octet-stream" || fileName !== undefined); - const parsedConType = cfg.parsedConType || []; - const defCharset = cfg.defCharset || "utf8"; - const preservePath = cfg.preservePath; - const fileOpts = { highWaterMark: cfg.fileHwm }; - - for (i = 0, len = parsedConType.length; i < len; ++i) { - if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { - boundary = parsedConType[i][1]; - break; - } - } - - function checkFinished() { - if (nends === 0 && finished && !boy._done) { - finished = false; - self.end(); - } - } - - if (typeof boundary !== "string") { - throw new Error("Multipart: Boundary not found"); - } - - const fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); - const fileSizeLimit = getLimit(limits, "fileSize", Infinity); - const filesLimit = getLimit(limits, "files", Infinity); - const fieldsLimit = getLimit(limits, "fields", Infinity); - const partsLimit = getLimit(limits, "parts", Infinity); - const headerPairsLimit = getLimit(limits, "headerPairs", 2000); - const headerSizeLimit = getLimit(limits, "headerSize", 80 * 1024); - - let nfiles = 0; - let nfields = 0; - let nends = 0; - let curFile; - let curField; - let finished = false; - - this._needDrain = false; - this._pause = false; - this._cb = undefined; - this._nparts = 0; - this._boy = boy; - - const parserCfg = { - boundary, - maxHeaderPairs: headerPairsLimit, - maxHeaderSize: headerSizeLimit, - partHwm: fileOpts.highWaterMark, - highWaterMark: cfg.highWaterMark, - }; - - this.parser = new Dicer(parserCfg); - this.parser - .on("drain", function () { - self._needDrain = false; - if (self._cb && !self._pause) { - const cb = self._cb; - self._cb = undefined; - cb(); - } - }) - .on("part", function onPart(part) { - if (++self._nparts > partsLimit) { - self.parser.removeListener("part", onPart); - self.parser.on("part", skipPart); - boy.hitPartsLimit = true; - boy.emit("partsLimit"); - return skipPart(part); - } - - // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let - // us emit 'end' early since we know the part has ended if we are already - // seeing the next part - if (curField) { - const field = curField; - field.emit("end"); - field.removeAllListeners("end"); - } - - part.on("header", function (header) { - let contype; - let fieldname; - let parsed; - let charset; - let encoding; - let filename; - let nsize = 0; - - if (header["content-type"]) { - parsed = parseParams(header["content-type"][0]); - if (parsed[0]) { - contype = parsed[0].toLowerCase(); - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_CHARSET.test(parsed[i][0])) { - charset = parsed[i][1].toLowerCase(); - break; - } - } - } - } - - if (contype === undefined) { - contype = "text/plain"; - } - if (charset === undefined) { - charset = defCharset; - } - - if (header["content-disposition"]) { - parsed = parseParams(header["content-disposition"][0]); - if (!RE_FIELD.test(parsed[0])) { - return skipPart(part); - } - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_NAME.test(parsed[i][0])) { - fieldname = parsed[i][1]; - } else if (RE_FILENAME.test(parsed[i][0])) { - filename = parsed[i][1]; - if (!preservePath) { - filename = basename(filename); - } - } - } - } else { - return skipPart(part); - } - - if (header["content-transfer-encoding"]) { - encoding = header["content-transfer-encoding"][0].toLowerCase(); - } else { - encoding = "7bit"; - } - - let onData, onEnd; - - if (isPartAFile(fieldname, contype, filename)) { - // file/binary field - if (nfiles === filesLimit) { - if (!boy.hitFilesLimit) { - boy.hitFilesLimit = true; - boy.emit("filesLimit"); - } - return skipPart(part); - } - - ++nfiles; - - if (!boy._events.file) { - self.parser._ignore(); - return; - } - - ++nends; - const file = new FileStream(fileOpts); - curFile = file; - file.on("end", function () { - --nends; - self._pause = false; - checkFinished(); - if (self._cb && !self._needDrain) { - const cb = self._cb; - self._cb = undefined; - cb(); - } - }); - file._read = function (n) { - if (!self._pause) { - return; - } - self._pause = false; - if (self._cb && !self._needDrain) { - const cb = self._cb; - self._cb = undefined; - cb(); - } - }; - boy.emit("file", fieldname, file, filename, encoding, contype); - - onData = function (data) { - if ((nsize += data.length) > fileSizeLimit) { - const extralen = fileSizeLimit - nsize + data.length; - if (extralen > 0) { - file.push(data.slice(0, extralen)); - } - file.truncated = true; - file.bytesRead = fileSizeLimit; - part.removeAllListeners("data"); - file.emit("limit"); - return; - } else if (!file.push(data)) { - self._pause = true; - } - - file.bytesRead = nsize; - }; - - onEnd = function () { - curFile = undefined; - file.push(null); - }; - } else { - // non-file field - if (nfields === fieldsLimit) { - if (!boy.hitFieldsLimit) { - boy.hitFieldsLimit = true; - boy.emit("fieldsLimit"); - } - return skipPart(part); - } - - ++nfields; - ++nends; - let buffer = ""; - let truncated = false; - curField = part; - - onData = function (data) { - if ((nsize += data.length) > fieldSizeLimit) { - const extralen = fieldSizeLimit - (nsize - data.length); - buffer += data.toString("binary", 0, extralen); - truncated = true; - part.removeAllListeners("data"); - } else { - buffer += data.toString("binary"); - } - }; - - onEnd = function () { - curField = undefined; - if (buffer.length) { - buffer = decodeText(buffer, "binary", charset); - } - boy.emit("field", fieldname, buffer, false, truncated, encoding, contype); - --nends; - checkFinished(); - }; - } - - /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become - broken. Streams2/streams3 is a huge black box of confusion, but - somehow overriding the sync state seems to fix things again (and still - seems to work for previous node versions). - */ - part._readableState.sync = false; - - part.on("data", onData); - part.on("end", onEnd); - }).on("error", function (err) { - if (curFile) { - curFile.emit("error", err); - } - }); - }) - .on("error", function (err) { - boy.emit("error", err); - }) - .on("finish", function () { - finished = true; - checkFinished(); - }); - } - - Multipart.prototype.write = function (chunk, cb) { - const r = this.parser.write(chunk); - if (r && !this._pause) { - cb(); - } else { - this._needDrain = !r; - this._cb = cb; - } - }; - - Multipart.prototype.end = function () { - const self = this; - - if (self.parser.writable) { - self.parser.end(); - } else if (!self._boy._done) { - process.nextTick(function () { - self._boy._done = true; - self._boy.emit("finish"); - }); - } - }; - - function skipPart(part) { - part.resume(); - } - - function FileStream(opts) { - Readable.call(this, opts); - - this.bytesRead = 0; - - this.truncated = false; - } - - inherits(FileStream, Readable); - - FileStream.prototype._read = function (n) {}; - - module.exports = Multipart; - - /***/ - }, - - /***/ 8306: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Decoder = __nccwpck_require__(7100); - const decodeText = __nccwpck_require__(4619); - const getLimit = __nccwpck_require__(1467); - - const RE_CHARSET = /^charset$/i; - - UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; - function UrlEncoded(boy, cfg) { - const limits = cfg.limits; - const parsedConType = cfg.parsedConType; - this.boy = boy; - - this.fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); - this.fieldNameSizeLimit = getLimit(limits, "fieldNameSize", 100); - this.fieldsLimit = getLimit(limits, "fields", Infinity); - - let charset; - for (var i = 0, len = parsedConType.length; i < len; ++i) { - // eslint-disable-line no-var - if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { - charset = parsedConType[i][1].toLowerCase(); - break; - } - } - - if (charset === undefined) { - charset = cfg.defCharset || "utf8"; - } - - this.decoder = new Decoder(); - this.charset = charset; - this._fields = 0; - this._state = "key"; - this._checkingBytes = true; - this._bytesKey = 0; - this._bytesVal = 0; - this._key = ""; - this._val = ""; - this._keyTrunc = false; - this._valTrunc = false; - this._hitLimit = false; - } - - UrlEncoded.prototype.write = function (data, cb) { - if (this._fields === this.fieldsLimit) { - if (!this.boy.hitFieldsLimit) { - this.boy.hitFieldsLimit = true; - this.boy.emit("fieldsLimit"); - } - return cb(); - } - - let idxeq; - let idxamp; - let i; - let p = 0; - const len = data.length; - - while (p < len) { - if (this._state === "key") { - idxeq = idxamp = undefined; - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { - ++p; - } - if (data[i] === 0x3d /* = */) { - idxeq = i; - break; - } else if (data[i] === 0x26 /* & */) { - idxamp = i; - break; - } - if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { - this._hitLimit = true; - break; - } else if (this._checkingBytes) { - ++this._bytesKey; - } - } - - if (idxeq !== undefined) { - // key with assignment - if (idxeq > p) { - this._key += this.decoder.write(data.toString("binary", p, idxeq)); - } - this._state = "val"; - - this._hitLimit = false; - this._checkingBytes = true; - this._val = ""; - this._bytesVal = 0; - this._valTrunc = false; - this.decoder.reset(); - - p = idxeq + 1; - } else if (idxamp !== undefined) { - // key with no assignment - ++this._fields; - let key; - const keyTrunc = this._keyTrunc; - if (idxamp > p) { - key = this._key += this.decoder.write(data.toString("binary", p, idxamp)); - } else { - key = this._key; - } - - this._hitLimit = false; - this._checkingBytes = true; - this._key = ""; - this._bytesKey = 0; - this._keyTrunc = false; - this.decoder.reset(); - - if (key.length) { - this.boy.emit( - "field", - decodeText(key, "binary", this.charset), - "", - keyTrunc, - false, - ); - } - - p = idxamp + 1; - if (this._fields === this.fieldsLimit) { - return cb(); - } - } else if (this._hitLimit) { - // we may not have hit the actual limit if there are encoded bytes... - if (i > p) { - this._key += this.decoder.write(data.toString("binary", p, i)); - } - p = i; - if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { - // yep, we actually did hit the limit - this._checkingBytes = false; - this._keyTrunc = true; - } - } else { - if (p < len) { - this._key += this.decoder.write(data.toString("binary", p)); - } - p = len; - } - } else { - idxamp = undefined; - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { - ++p; - } - if (data[i] === 0x26 /* & */) { - idxamp = i; - break; - } - if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { - this._hitLimit = true; - break; - } else if (this._checkingBytes) { - ++this._bytesVal; - } - } - - if (idxamp !== undefined) { - ++this._fields; - if (idxamp > p) { - this._val += this.decoder.write(data.toString("binary", p, idxamp)); - } - this.boy.emit( - "field", - decodeText(this._key, "binary", this.charset), - decodeText(this._val, "binary", this.charset), - this._keyTrunc, - this._valTrunc, - ); - this._state = "key"; - - this._hitLimit = false; - this._checkingBytes = true; - this._key = ""; - this._bytesKey = 0; - this._keyTrunc = false; - this.decoder.reset(); - - p = idxamp + 1; - if (this._fields === this.fieldsLimit) { - return cb(); - } - } else if (this._hitLimit) { - // we may not have hit the actual limit if there are encoded bytes... - if (i > p) { - this._val += this.decoder.write(data.toString("binary", p, i)); - } - p = i; - if ( - (this._val === "" && this.fieldSizeLimit === 0) || - (this._bytesVal = this._val.length) === this.fieldSizeLimit - ) { - // yep, we actually did hit the limit - this._checkingBytes = false; - this._valTrunc = true; - } - } else { - if (p < len) { - this._val += this.decoder.write(data.toString("binary", p)); - } - p = len; - } - } - } - cb(); - }; - - UrlEncoded.prototype.end = function () { - if (this.boy._done) { - return; - } - - if (this._state === "key" && this._key.length > 0) { - this.boy.emit( - "field", - decodeText(this._key, "binary", this.charset), - "", - this._keyTrunc, - false, - ); - } else if (this._state === "val") { - this.boy.emit( - "field", - decodeText(this._key, "binary", this.charset), - decodeText(this._val, "binary", this.charset), - this._keyTrunc, - this._valTrunc, - ); - } - this.boy._done = true; - this.boy.emit("finish"); - }; - - module.exports = UrlEncoded; - - /***/ - }, - - /***/ 7100: /***/ (module) => { - "use strict"; - - const RE_PLUS = /\+/g; - - const HEX = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - ]; - - function Decoder() { - this.buffer = undefined; - } - Decoder.prototype.write = function (str) { - // Replace '+' with ' ' before decoding - str = str.replace(RE_PLUS, " "); - let res = ""; - let i = 0; - let p = 0; - const len = str.length; - for (; i < len; ++i) { - if (this.buffer !== undefined) { - if (!HEX[str.charCodeAt(i)]) { - res += "%" + this.buffer; - this.buffer = undefined; - --i; // retry character - } else { - this.buffer += str[i]; - ++p; - if (this.buffer.length === 2) { - res += String.fromCharCode(parseInt(this.buffer, 16)); - this.buffer = undefined; - } - } - } else if (str[i] === "%") { - if (i > p) { - res += str.substring(p, i); - p = i; - } - this.buffer = ""; - ++p; - } - } - if (p < len && this.buffer === undefined) { - res += str.substring(p); - } - return res; - }; - Decoder.prototype.reset = function () { - this.buffer = undefined; - }; - - module.exports = Decoder; - - /***/ - }, - - /***/ 8647: /***/ (module) => { - "use strict"; - - module.exports = function basename(path) { - if (typeof path !== "string") { - return ""; - } - for (var i = path.length - 1; i >= 0; --i) { - // eslint-disable-line no-var - switch (path.charCodeAt(i)) { - case 0x2f: // '/' - case 0x5c: // '\' - path = path.slice(i + 1); - return path === ".." || path === "." ? "" : path; - } - } - return path === ".." || path === "." ? "" : path; - }; - - /***/ - }, - - /***/ 4619: /***/ function (module) { - "use strict"; - - // Node has always utf-8 - const utf8Decoder = new TextDecoder("utf-8"); - const textDecoders = new Map([ - ["utf-8", utf8Decoder], - ["utf8", utf8Decoder], - ]); - - function getDecoder(charset) { - let lc; - while (true) { - switch (charset) { - case "utf-8": - case "utf8": - return decoders.utf8; - case "latin1": - case "ascii": // TODO: Make these a separate, strict decoder? - case "us-ascii": - case "iso-8859-1": - case "iso8859-1": - case "iso88591": - case "iso_8859-1": - case "windows-1252": - case "iso_8859-1:1987": - case "cp1252": - case "x-cp1252": - return decoders.latin1; - case "utf16le": - case "utf-16le": - case "ucs2": - case "ucs-2": - return decoders.utf16le; - case "base64": - return decoders.base64; - default: - if (lc === undefined) { - lc = true; - charset = charset.toLowerCase(); - continue; - } - return decoders.other.bind(charset); - } - } - } - - const decoders = { - utf8: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - return data.utf8Slice(0, data.length); - }, - - latin1: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - return data; - } - return data.latin1Slice(0, data.length); - }, - - utf16le: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - return data.ucs2Slice(0, data.length); - }, - - base64: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - return data.base64Slice(0, data.length); - }, - - other: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - - if (textDecoders.has(this.toString())) { - try { - return textDecoders.get(this).decode(data); - } catch (e) {} - } - return typeof data === "string" ? data : data.toString(); - }, - }; - - function decodeText(text, sourceEncoding, destEncoding) { - if (text) { - return getDecoder(destEncoding)(text, sourceEncoding); - } - return text; - } - - module.exports = decodeText; - - /***/ - }, - - /***/ 1467: /***/ (module) => { - "use strict"; - - module.exports = function getLimit(limits, name, defaultLimit) { - if (!limits || limits[name] === undefined || limits[name] === null) { - return defaultLimit; - } - - if (typeof limits[name] !== "number" || isNaN(limits[name])) { - throw new TypeError("Limit " + name + " is not a valid number"); - } - - return limits[name]; - }; - - /***/ - }, - - /***/ 1854: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - /* eslint-disable object-property-newline */ - - const decodeText = __nccwpck_require__(4619); - - const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g; - - const EncodedLookup = { - "%00": "\x00", - "%01": "\x01", - "%02": "\x02", - "%03": "\x03", - "%04": "\x04", - "%05": "\x05", - "%06": "\x06", - "%07": "\x07", - "%08": "\x08", - "%09": "\x09", - "%0a": "\x0a", - "%0A": "\x0a", - "%0b": "\x0b", - "%0B": "\x0b", - "%0c": "\x0c", - "%0C": "\x0c", - "%0d": "\x0d", - "%0D": "\x0d", - "%0e": "\x0e", - "%0E": "\x0e", - "%0f": "\x0f", - "%0F": "\x0f", - "%10": "\x10", - "%11": "\x11", - "%12": "\x12", - "%13": "\x13", - "%14": "\x14", - "%15": "\x15", - "%16": "\x16", - "%17": "\x17", - "%18": "\x18", - "%19": "\x19", - "%1a": "\x1a", - "%1A": "\x1a", - "%1b": "\x1b", - "%1B": "\x1b", - "%1c": "\x1c", - "%1C": "\x1c", - "%1d": "\x1d", - "%1D": "\x1d", - "%1e": "\x1e", - "%1E": "\x1e", - "%1f": "\x1f", - "%1F": "\x1f", - "%20": "\x20", - "%21": "\x21", - "%22": "\x22", - "%23": "\x23", - "%24": "\x24", - "%25": "\x25", - "%26": "\x26", - "%27": "\x27", - "%28": "\x28", - "%29": "\x29", - "%2a": "\x2a", - "%2A": "\x2a", - "%2b": "\x2b", - "%2B": "\x2b", - "%2c": "\x2c", - "%2C": "\x2c", - "%2d": "\x2d", - "%2D": "\x2d", - "%2e": "\x2e", - "%2E": "\x2e", - "%2f": "\x2f", - "%2F": "\x2f", - "%30": "\x30", - "%31": "\x31", - "%32": "\x32", - "%33": "\x33", - "%34": "\x34", - "%35": "\x35", - "%36": "\x36", - "%37": "\x37", - "%38": "\x38", - "%39": "\x39", - "%3a": "\x3a", - "%3A": "\x3a", - "%3b": "\x3b", - "%3B": "\x3b", - "%3c": "\x3c", - "%3C": "\x3c", - "%3d": "\x3d", - "%3D": "\x3d", - "%3e": "\x3e", - "%3E": "\x3e", - "%3f": "\x3f", - "%3F": "\x3f", - "%40": "\x40", - "%41": "\x41", - "%42": "\x42", - "%43": "\x43", - "%44": "\x44", - "%45": "\x45", - "%46": "\x46", - "%47": "\x47", - "%48": "\x48", - "%49": "\x49", - "%4a": "\x4a", - "%4A": "\x4a", - "%4b": "\x4b", - "%4B": "\x4b", - "%4c": "\x4c", - "%4C": "\x4c", - "%4d": "\x4d", - "%4D": "\x4d", - "%4e": "\x4e", - "%4E": "\x4e", - "%4f": "\x4f", - "%4F": "\x4f", - "%50": "\x50", - "%51": "\x51", - "%52": "\x52", - "%53": "\x53", - "%54": "\x54", - "%55": "\x55", - "%56": "\x56", - "%57": "\x57", - "%58": "\x58", - "%59": "\x59", - "%5a": "\x5a", - "%5A": "\x5a", - "%5b": "\x5b", - "%5B": "\x5b", - "%5c": "\x5c", - "%5C": "\x5c", - "%5d": "\x5d", - "%5D": "\x5d", - "%5e": "\x5e", - "%5E": "\x5e", - "%5f": "\x5f", - "%5F": "\x5f", - "%60": "\x60", - "%61": "\x61", - "%62": "\x62", - "%63": "\x63", - "%64": "\x64", - "%65": "\x65", - "%66": "\x66", - "%67": "\x67", - "%68": "\x68", - "%69": "\x69", - "%6a": "\x6a", - "%6A": "\x6a", - "%6b": "\x6b", - "%6B": "\x6b", - "%6c": "\x6c", - "%6C": "\x6c", - "%6d": "\x6d", - "%6D": "\x6d", - "%6e": "\x6e", - "%6E": "\x6e", - "%6f": "\x6f", - "%6F": "\x6f", - "%70": "\x70", - "%71": "\x71", - "%72": "\x72", - "%73": "\x73", - "%74": "\x74", - "%75": "\x75", - "%76": "\x76", - "%77": "\x77", - "%78": "\x78", - "%79": "\x79", - "%7a": "\x7a", - "%7A": "\x7a", - "%7b": "\x7b", - "%7B": "\x7b", - "%7c": "\x7c", - "%7C": "\x7c", - "%7d": "\x7d", - "%7D": "\x7d", - "%7e": "\x7e", - "%7E": "\x7e", - "%7f": "\x7f", - "%7F": "\x7f", - "%80": "\x80", - "%81": "\x81", - "%82": "\x82", - "%83": "\x83", - "%84": "\x84", - "%85": "\x85", - "%86": "\x86", - "%87": "\x87", - "%88": "\x88", - "%89": "\x89", - "%8a": "\x8a", - "%8A": "\x8a", - "%8b": "\x8b", - "%8B": "\x8b", - "%8c": "\x8c", - "%8C": "\x8c", - "%8d": "\x8d", - "%8D": "\x8d", - "%8e": "\x8e", - "%8E": "\x8e", - "%8f": "\x8f", - "%8F": "\x8f", - "%90": "\x90", - "%91": "\x91", - "%92": "\x92", - "%93": "\x93", - "%94": "\x94", - "%95": "\x95", - "%96": "\x96", - "%97": "\x97", - "%98": "\x98", - "%99": "\x99", - "%9a": "\x9a", - "%9A": "\x9a", - "%9b": "\x9b", - "%9B": "\x9b", - "%9c": "\x9c", - "%9C": "\x9c", - "%9d": "\x9d", - "%9D": "\x9d", - "%9e": "\x9e", - "%9E": "\x9e", - "%9f": "\x9f", - "%9F": "\x9f", - "%a0": "\xa0", - "%A0": "\xa0", - "%a1": "\xa1", - "%A1": "\xa1", - "%a2": "\xa2", - "%A2": "\xa2", - "%a3": "\xa3", - "%A3": "\xa3", - "%a4": "\xa4", - "%A4": "\xa4", - "%a5": "\xa5", - "%A5": "\xa5", - "%a6": "\xa6", - "%A6": "\xa6", - "%a7": "\xa7", - "%A7": "\xa7", - "%a8": "\xa8", - "%A8": "\xa8", - "%a9": "\xa9", - "%A9": "\xa9", - "%aa": "\xaa", - "%Aa": "\xaa", - "%aA": "\xaa", - "%AA": "\xaa", - "%ab": "\xab", - "%Ab": "\xab", - "%aB": "\xab", - "%AB": "\xab", - "%ac": "\xac", - "%Ac": "\xac", - "%aC": "\xac", - "%AC": "\xac", - "%ad": "\xad", - "%Ad": "\xad", - "%aD": "\xad", - "%AD": "\xad", - "%ae": "\xae", - "%Ae": "\xae", - "%aE": "\xae", - "%AE": "\xae", - "%af": "\xaf", - "%Af": "\xaf", - "%aF": "\xaf", - "%AF": "\xaf", - "%b0": "\xb0", - "%B0": "\xb0", - "%b1": "\xb1", - "%B1": "\xb1", - "%b2": "\xb2", - "%B2": "\xb2", - "%b3": "\xb3", - "%B3": "\xb3", - "%b4": "\xb4", - "%B4": "\xb4", - "%b5": "\xb5", - "%B5": "\xb5", - "%b6": "\xb6", - "%B6": "\xb6", - "%b7": "\xb7", - "%B7": "\xb7", - "%b8": "\xb8", - "%B8": "\xb8", - "%b9": "\xb9", - "%B9": "\xb9", - "%ba": "\xba", - "%Ba": "\xba", - "%bA": "\xba", - "%BA": "\xba", - "%bb": "\xbb", - "%Bb": "\xbb", - "%bB": "\xbb", - "%BB": "\xbb", - "%bc": "\xbc", - "%Bc": "\xbc", - "%bC": "\xbc", - "%BC": "\xbc", - "%bd": "\xbd", - "%Bd": "\xbd", - "%bD": "\xbd", - "%BD": "\xbd", - "%be": "\xbe", - "%Be": "\xbe", - "%bE": "\xbe", - "%BE": "\xbe", - "%bf": "\xbf", - "%Bf": "\xbf", - "%bF": "\xbf", - "%BF": "\xbf", - "%c0": "\xc0", - "%C0": "\xc0", - "%c1": "\xc1", - "%C1": "\xc1", - "%c2": "\xc2", - "%C2": "\xc2", - "%c3": "\xc3", - "%C3": "\xc3", - "%c4": "\xc4", - "%C4": "\xc4", - "%c5": "\xc5", - "%C5": "\xc5", - "%c6": "\xc6", - "%C6": "\xc6", - "%c7": "\xc7", - "%C7": "\xc7", - "%c8": "\xc8", - "%C8": "\xc8", - "%c9": "\xc9", - "%C9": "\xc9", - "%ca": "\xca", - "%Ca": "\xca", - "%cA": "\xca", - "%CA": "\xca", - "%cb": "\xcb", - "%Cb": "\xcb", - "%cB": "\xcb", - "%CB": "\xcb", - "%cc": "\xcc", - "%Cc": "\xcc", - "%cC": "\xcc", - "%CC": "\xcc", - "%cd": "\xcd", - "%Cd": "\xcd", - "%cD": "\xcd", - "%CD": "\xcd", - "%ce": "\xce", - "%Ce": "\xce", - "%cE": "\xce", - "%CE": "\xce", - "%cf": "\xcf", - "%Cf": "\xcf", - "%cF": "\xcf", - "%CF": "\xcf", - "%d0": "\xd0", - "%D0": "\xd0", - "%d1": "\xd1", - "%D1": "\xd1", - "%d2": "\xd2", - "%D2": "\xd2", - "%d3": "\xd3", - "%D3": "\xd3", - "%d4": "\xd4", - "%D4": "\xd4", - "%d5": "\xd5", - "%D5": "\xd5", - "%d6": "\xd6", - "%D6": "\xd6", - "%d7": "\xd7", - "%D7": "\xd7", - "%d8": "\xd8", - "%D8": "\xd8", - "%d9": "\xd9", - "%D9": "\xd9", - "%da": "\xda", - "%Da": "\xda", - "%dA": "\xda", - "%DA": "\xda", - "%db": "\xdb", - "%Db": "\xdb", - "%dB": "\xdb", - "%DB": "\xdb", - "%dc": "\xdc", - "%Dc": "\xdc", - "%dC": "\xdc", - "%DC": "\xdc", - "%dd": "\xdd", - "%Dd": "\xdd", - "%dD": "\xdd", - "%DD": "\xdd", - "%de": "\xde", - "%De": "\xde", - "%dE": "\xde", - "%DE": "\xde", - "%df": "\xdf", - "%Df": "\xdf", - "%dF": "\xdf", - "%DF": "\xdf", - "%e0": "\xe0", - "%E0": "\xe0", - "%e1": "\xe1", - "%E1": "\xe1", - "%e2": "\xe2", - "%E2": "\xe2", - "%e3": "\xe3", - "%E3": "\xe3", - "%e4": "\xe4", - "%E4": "\xe4", - "%e5": "\xe5", - "%E5": "\xe5", - "%e6": "\xe6", - "%E6": "\xe6", - "%e7": "\xe7", - "%E7": "\xe7", - "%e8": "\xe8", - "%E8": "\xe8", - "%e9": "\xe9", - "%E9": "\xe9", - "%ea": "\xea", - "%Ea": "\xea", - "%eA": "\xea", - "%EA": "\xea", - "%eb": "\xeb", - "%Eb": "\xeb", - "%eB": "\xeb", - "%EB": "\xeb", - "%ec": "\xec", - "%Ec": "\xec", - "%eC": "\xec", - "%EC": "\xec", - "%ed": "\xed", - "%Ed": "\xed", - "%eD": "\xed", - "%ED": "\xed", - "%ee": "\xee", - "%Ee": "\xee", - "%eE": "\xee", - "%EE": "\xee", - "%ef": "\xef", - "%Ef": "\xef", - "%eF": "\xef", - "%EF": "\xef", - "%f0": "\xf0", - "%F0": "\xf0", - "%f1": "\xf1", - "%F1": "\xf1", - "%f2": "\xf2", - "%F2": "\xf2", - "%f3": "\xf3", - "%F3": "\xf3", - "%f4": "\xf4", - "%F4": "\xf4", - "%f5": "\xf5", - "%F5": "\xf5", - "%f6": "\xf6", - "%F6": "\xf6", - "%f7": "\xf7", - "%F7": "\xf7", - "%f8": "\xf8", - "%F8": "\xf8", - "%f9": "\xf9", - "%F9": "\xf9", - "%fa": "\xfa", - "%Fa": "\xfa", - "%fA": "\xfa", - "%FA": "\xfa", - "%fb": "\xfb", - "%Fb": "\xfb", - "%fB": "\xfb", - "%FB": "\xfb", - "%fc": "\xfc", - "%Fc": "\xfc", - "%fC": "\xfc", - "%FC": "\xfc", - "%fd": "\xfd", - "%Fd": "\xfd", - "%fD": "\xfd", - "%FD": "\xfd", - "%fe": "\xfe", - "%Fe": "\xfe", - "%fE": "\xfe", - "%FE": "\xfe", - "%ff": "\xff", - "%Ff": "\xff", - "%fF": "\xff", - "%FF": "\xff", - }; - - function encodedReplacer(match) { - return EncodedLookup[match]; - } - - const STATE_KEY = 0; - const STATE_VALUE = 1; - const STATE_CHARSET = 2; - const STATE_LANG = 3; - - function parseParams(str) { - const res = []; - let state = STATE_KEY; - let charset = ""; - let inquote = false; - let escaping = false; - let p = 0; - let tmp = ""; - const len = str.length; - - for (var i = 0; i < len; ++i) { - // eslint-disable-line no-var - const char = str[i]; - if (char === "\\" && inquote) { - if (escaping) { - escaping = false; - } else { - escaping = true; - continue; - } - } else if (char === '"') { - if (!escaping) { - if (inquote) { - inquote = false; - state = STATE_KEY; - } else { - inquote = true; - } - continue; - } else { - escaping = false; - } - } else { - if (escaping && inquote) { - tmp += "\\"; - } - escaping = false; - if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { - if (state === STATE_CHARSET) { - state = STATE_LANG; - charset = tmp.substring(1); - } else { - state = STATE_VALUE; - } - tmp = ""; - continue; - } else if (state === STATE_KEY && (char === "*" || char === "=") && res.length) { - state = char === "*" ? STATE_CHARSET : STATE_VALUE; - res[p] = [tmp, undefined]; - tmp = ""; - continue; - } else if (!inquote && char === ";") { - state = STATE_KEY; - if (charset) { - if (tmp.length) { - tmp = decodeText( - tmp.replace(RE_ENCODED, encodedReplacer), - "binary", - charset, - ); - } - charset = ""; - } else if (tmp.length) { - tmp = decodeText(tmp, "binary", "utf8"); - } - if (res[p] === undefined) { - res[p] = tmp; - } else { - res[p][1] = tmp; - } - tmp = ""; - ++p; - continue; - } else if (!inquote && (char === " " || char === "\t")) { - continue; - } - } - tmp += char; - } - if (charset && tmp.length) { - tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), "binary", charset); - } else if (tmp) { - tmp = decodeText(tmp, "binary", "utf8"); - } - - if (res[p] === undefined) { - if (tmp) { - res[p] = tmp; - } - } else { - res[p][1] = tmp; - } - - return res; - } - - module.exports = parseParams; - - /***/ - }, - - /******/ - }; - /************************************************************************/ - /******/ // The module cache - /******/ var __webpack_module_cache__ = {}; - /******/ - /******/ // The require function - /******/ function __nccwpck_require__(moduleId) { - /******/ // Check if module is in cache - /******/ var cachedModule = __webpack_module_cache__[moduleId]; - /******/ if (cachedModule !== undefined) { - /******/ return cachedModule.exports; - /******/ - } - /******/ // Create a new module (and put it into the cache) - /******/ var module = (__webpack_module_cache__[moduleId] = { - /******/ // no module.id needed - /******/ // no module.loaded needed - /******/ exports: {}, - /******/ - }); - /******/ - /******/ // Execute the module function - /******/ var threw = true; - /******/ try { - /******/ __webpack_modules__[moduleId].call( - module.exports, - module, - module.exports, - __nccwpck_require__, - ); - /******/ threw = false; - /******/ - } finally { - /******/ if (threw) delete __webpack_module_cache__[moduleId]; - /******/ - } - /******/ - /******/ // Return the exports of the module - /******/ return module.exports; - /******/ - } - /******/ - /************************************************************************/ - /******/ /* webpack/runtime/compat */ - /******/ - /******/ if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = __dirname + "/"; - /******/ - /************************************************************************/ - var __webpack_exports__ = {}; - // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. - (() => { - // (C) 2024-2026 GoodData Corporation - -const core = __nccwpck_require__(2186); - const github = __nccwpck_require__(5438); - const semver = __nccwpck_require__(1383); - - async function run() { - try { - const newVersion = core.getInput("version", { required: true }); - // Access the GitHub token from the environment variables - const token = process.env.GITHUB_TOKEN; - const octokit = github.getOctokit(token); - const { owner, repo } = github.context.repo; - - // Fetch the latest release from the GitHub repository - const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({ - owner, - repo, - }); - - // Extract version from the latest release tag - const latestVersion = latestRelease.tag_name.startsWith("v") - ? latestRelease.tag_name.substring(1) - : latestRelease.tag_name; - - console.log(`latest release: ${latestVersion}`); - - // Determine if the new version is greater than the latest version - const isLatest = semver.gt(newVersion, latestVersion); - - console.log(`New version: ${newVersion}`); - console.log(`is-latest: ${isLatest}`); - // Set output - core.setOutput("is-latest", isLatest.toString()); - } catch (error) { - core.setFailed(error.message); - } - } - - run(); - })(); - - module.exports = __webpack_exports__; - /******/ -})(); diff --git a/.github/actions/git-check-release/action.yml b/.github/actions/git-check-release/action.yml index 5c433bc456a..758ed8434cd 100644 --- a/.github/actions/git-check-release/action.yml +++ b/.github/actions/git-check-release/action.yml @@ -1,18 +1,41 @@ -# (C) 2022 GoodData Corporation +# (C) 2022-2026 GoodData Corporation -name: "Action to update hugo version param in parmas.toml" -description: "Action add new version to hugo version config set it latest and remove old one" +name: "Check release version is latest" +description: "Checks whether the given version is greater than the current latest GitHub release" inputs: - version: - description: "New version to be set" - required: true + version: + description: "New version to compare against the latest release" + required: true outputs: is-latest: - description: true if version could be set as latest - + description: "true if version is greater than the latest release (or no latest release exists)" + value: ${{ steps.check.outputs.is-latest }} runs: - using: "node20" - main: "action-build/index.js" + using: composite + steps: + - id: check + shell: bash + env: + VERSION: ${{ inputs.version }} + run: | + set -euo pipefail + latest_tag=$(gh release view --json tagName -q .tagName 2>/dev/null || true) + if [[ -z "$latest_tag" ]]; then + echo "No latest release found, setting is-latest to true" + echo "is-latest=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + latest=${latest_tag#v} + echo "latest release: $latest" + echo "New version: $VERSION" + sorted_top=$(npx -y semver@7.7.4 "$VERSION" "$latest" | tail -1) + if [[ "$sorted_top" == "$VERSION" && "$VERSION" != "$latest" ]]; then + is_latest=true + else + is_latest=false + fi + echo "is-latest: $is_latest" + echo "is-latest=$is_latest" >> "$GITHUB_OUTPUT" diff --git a/.github/actions/git-check-release/package-lock.json b/.github/actions/git-check-release/package-lock.json deleted file mode 100644 index f94eba5312e..00000000000 --- a/.github/actions/git-check-release/package-lock.json +++ /dev/null @@ -1,270 +0,0 @@ -{ - "name": "update-hugo-param-action", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "update-hugo-param-action", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^6.0.0", - "semver": "^7.3.5" - }, - "devDependencies": { - "@vercel/ncc": "^0.38.1" - } - }, - "node_modules/@actions/core": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", - "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", - "dependencies": { - "@actions/http-client": "^2.0.1", - "uuid": "^11.1.0" - } - }, - "node_modules/@actions/github": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", - "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", - "dependencies": { - "@actions/http-client": "^2.2.0", - "@octokit/core": "^5.0.1", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-rest-endpoint-methods": "^10.0.0" - } - }, - "node_modules/@actions/http-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz", - "integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^5.25.4" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz", - "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==", - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/endpoint": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", - "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", - "dependencies": { - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/graphql": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", - "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", - "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", - "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", - "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", - "dependencies": { - "@octokit/types": "^12.4.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=5" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.3.0.tgz", - "integrity": "sha512-c/fjpoHispRvBZuRoTVt/uALg7pXa9RQbXWJiDMk6NDkGNomuAZG7YuYYpZoxeoXv+kVRjIDTsO0e1z0pei+PQ==", - "dependencies": { - "@octokit/types": "^12.4.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=5" - } - }, - "node_modules/@octokit/request": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.2.0.tgz", - "integrity": "sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==", - "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request-error": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", - "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", - "dependencies": { - "@octokit/types": "^12.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/types": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.5.0.tgz", - "integrity": "sha512-YJEKcb0KkJlIUNU/zjnZwHEP8AoVh/OoIcP/1IyR4UHxExz7fzpe/a8IG4wBtQi7QDEqiomVLX88S6FpxxAJtg==", - "dependencies": { - "@octokit/openapi-types": "^19.1.0" - } - }, - "node_modules/@vercel/ncc": { - "version": "0.38.1", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz", - "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==", - "dev": true, - "bin": { - "ncc": "dist/ncc/cli.js" - } - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/undici": { - "version": "5.28.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", - "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/.github/actions/git-check-release/package.json b/.github/actions/git-check-release/package.json deleted file mode 100644 index 8c36eb77fb8..00000000000 --- a/.github/actions/git-check-release/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "update-hugo-param-action", - "version": "1.0.0", - "description": "Github action to update Hugo parameter in toml file", - "main": "action-build/index.js", - "author": "GoodData", - "license": "MIT", - "scripts": { - "build": "ncc build src/index.js -o action-build" - }, - "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^6.0.0", - "semver": "^7.3.5" - }, - "devDependencies": { - "@vercel/ncc": "^0.38.1" - } -} diff --git a/.github/actions/git-check-release/src/index.js b/.github/actions/git-check-release/src/index.js deleted file mode 100644 index 02c33a9e727..00000000000 --- a/.github/actions/git-check-release/src/index.js +++ /dev/null @@ -1,40 +0,0 @@ -// (C) 2024 GoodData Corporation - -const core = require("@actions/core"); -const github = require("@actions/github"); -const semver = require("semver"); - -async function run() { - try { - const newVersion = core.getInput("version", { required: true }); - // Access the GitHub token from the environment variables - const token = process.env.GITHUB_TOKEN; - const octokit = github.getOctokit(token); - const { owner, repo } = github.context.repo; - - // Fetch the latest release from the GitHub repository - const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({ - owner, - repo, - }); - - // Extract version from the latest release tag - const latestVersion = latestRelease.tag_name.startsWith("v") - ? latestRelease.tag_name.substring(1) - : latestRelease.tag_name; - - console.log(`latest release: ${latestVersion}`); - - // Determine if the new version is greater than the latest version - const isLatest = semver.gt(newVersion, latestVersion); - - console.log(`New version: ${newVersion}`); - console.log(`is-latest: ${isLatest}`); - // Set output - core.setOutput("is-latest", isLatest.toString()); - } catch (error) { - core.setFailed(error.message); - } -} - -run(); diff --git a/.github/actions/rush/set-up-rush/action.yml b/.github/actions/rush/set-up-rush/action.yml index 1cedfca917f..85c18994477 100644 --- a/.github/actions/rush/set-up-rush/action.yml +++ b/.github/actions/rush/set-up-rush/action.yml @@ -13,11 +13,16 @@ runs: uses: ./.github/actions/node/set-up-node id: node-init - # This is temporary solution to disable zstd before cached operation on runners see readme in zstd action directory + # This is temporary solution to disable zstd before cached operation on runners - name: detect zstd + id: detect-zstd uses: ./.github/actions/zstd/detect-zstd - - name: disbale zstd + + - name: disable zstd + if: ${{ steps.detect-zstd.outputs.exists == 'true' }} uses: ./.github/actions/zstd/disable-zstd + with: + zstd-dir: ${{ steps.detect-zstd.outputs.zstd-dir }} # The runner is set up to assume a role using a web identity token, which is only possible for runners in the infra1-runners-arc group. # Region and role ARN and token file are passed as environment variables from the runner. @@ -79,11 +84,12 @@ runs: common/temp/pnpm-store key: pnpm-cache-${{ hashFiles('common/config/rush/pnpm-lock.yaml') }}-${{ hashFiles('rush.json') }} - - # All cached operation done enable zstd back - # This is temporary solution to disable zstd before cached operation on runners see readme in zstd action directory + # This is temporary solution to disable zstd before cached operation on runners - name: enable zstd + if: ${{ steps.detect-zstd.outputs.exists == 'true' }} uses: ./.github/actions/zstd/enable-zstd + with: + zstd-dir: ${{ steps.detect-zstd.outputs.zstd-dir }} # Install rush - name: Install rush diff --git a/.github/actions/zstd/detect-zstd/action.yml b/.github/actions/zstd/detect-zstd/action.yml index fd49ba8789a..78532ddcb33 100644 --- a/.github/actions/zstd/detect-zstd/action.yml +++ b/.github/actions/zstd/detect-zstd/action.yml @@ -1,5 +1,14 @@ name: "Detect zstd" description: "Checks if zstd is installed and saves its directory to env" + +outputs: + exists: + description: "Indicates whether zstd is installed (true/false)" + value: ${{ steps.check-zstd.outputs.exists }} + zstd-dir: + description: "The directory where zstd is installed" + value: ${{ steps.check-zstd.outputs.zstd_dir }} + runs: using: "composite" steps: @@ -12,5 +21,6 @@ runs: echo "exists=false" >> $GITHUB_OUTPUT else echo "Found zstd at: $ZSTD_PATH" - echo "ZSTD_DIR=$ZSTD_PATH" >> $GITHUB_ENV + echo "exists=true" >> $GITHUB_OUTPUT + echo "zstd-dir=$ZSTD_PATH" >> $GITHUB_OUTPUT fi diff --git a/.github/actions/zstd/disable-zstd/action.yml b/.github/actions/zstd/disable-zstd/action.yml index 80e39969b1b..3912184ef1a 100644 --- a/.github/actions/zstd/disable-zstd/action.yml +++ b/.github/actions/zstd/disable-zstd/action.yml @@ -1,15 +1,19 @@ name: "Disable zstd" description: "Disables zstd by renaming its installation directory" + +inputs: + zstd-dir: + description: "Path to zstd installation" + required: true + runs: using: "composite" steps: - name: Rename zstd directory to disable it shell: bash + env: + ZSTD_DIR: ${{ inputs.zstd-dir }} run: | - if [ -z "$ZSTD_DIR" ]; then - echo "Environment variable ZSTD_DIR is not set." - exit 0 - fi BACKUP_DIR="${ZSTD_DIR}_backup" echo "Renaming directory $ZSTD_DIR to $BACKUP_DIR" mv "$ZSTD_DIR" "$BACKUP_DIR" diff --git a/.github/actions/zstd/enable-zstd/action.yml b/.github/actions/zstd/enable-zstd/action.yml index e4250ec96fc..38c7f28f4a5 100644 --- a/.github/actions/zstd/enable-zstd/action.yml +++ b/.github/actions/zstd/enable-zstd/action.yml @@ -1,15 +1,19 @@ name: "Enable zstd" description: "Enables zstd by renaming its directory back to the original name" + +inputs: + zstd-dir: + description: "Path to zstd installation" + required: true + runs: using: "composite" steps: - name: Restore zstd directory shell: bash + env: + ZSTD_DIR: ${{ inputs.zstd-dir }} run: | - if [ -z "$ZSTD_DIR" ]; then - echo "Environment variable ZSTD_DIR is not set." - exit 0 - fi BACKUP_DIR="${ZSTD_DIR}_backup" echo "Restoring directory: renaming $BACKUP_DIR back to $ZSTD_DIR" mv "$BACKUP_DIR" "$ZSTD_DIR" diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 656b0ebaf19..5280439242c 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -14,7 +14,8 @@ "external", "gooddata-group", "internal", - ["parent", "sibling", "index"], + "parent", + ["sibling", "index"], "unknown" ], "customGroups": [ diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 55920088973..df32d16e3bb 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -12,14 +12,14 @@ { "definitionName": "lockStepVersion", "policyName": "sdk", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" }, { "definitionName": "lockStepVersion", "policyName": "sdk-examples", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" } diff --git a/examples/sdk-interactive-examples/examples-template/package.json b/examples/sdk-interactive-examples/examples-template/package.json index aa6d2263fdc..01200b09f11 100644 --- a/examples/sdk-interactive-examples/examples-template/package.json +++ b/examples/sdk-interactive-examples/examples-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples-template", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "GoodData interactive example template", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json index bc4f2b1bbad..cdad2adfaee 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-attributefilter", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates how to use the AttributeFilter component to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json index 07c483feaa9..e74d6f017eb 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-chartconfig", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This interactive example demonstrates how to manipulate the chart config.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/package.json b/examples/sdk-interactive-examples/examples/example-columnchart/package.json index 8951eb44726..c27064e330b 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/package.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-columnchart", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates the usage of the ColumnChart component with the viewBy and stackBy properties.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-combochart/package.json b/examples/sdk-interactive-examples/examples/example-combochart/package.json index a9b63fafcea..7df93ff4259 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/package.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-combochart", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Example demonstrates ComboChart secondaryMeasures definition. ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/package.json b/examples/sdk-interactive-examples/examples/example-dashboard/package.json index b74f9eea5ee..fdd83f44329 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/package.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dashboard", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example shows how to use the Dashboard component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/package.json b/examples/sdk-interactive-examples/examples/example-datefilter/package.json index f95e23bb86e..cb8735efe49 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-datefilter", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Example demonstrates usage of Date Filter component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx b/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx index cd69326ea9a..79acbaceeea 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx +++ b/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx @@ -11,6 +11,7 @@ import { import { DateDatasets, GrossProfit, NrOfOrders } from "../catalog.js"; import { Hint } from "../Hint.js"; + import { Filter } from "./DateFilter.js"; export interface IDateFilterComponentExampleState { diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json index 8de5c24b7f4..5fb6cf8332a 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dependentfilters", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates how to use multiple attribute filters linked together to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-execute/package.json b/examples/sdk-interactive-examples/examples/example-execute/package.json index ffd7b5ca2cf..ab522976a68 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/package.json +++ b/examples/sdk-interactive-examples/examples/example-execute/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-execute", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates using Execute component and build custom visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx b/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx index 25d09105715..0923af8e4a3 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx +++ b/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx @@ -4,6 +4,7 @@ import { Execute } from "@gooddata/sdk-ui"; import { CustomerCountry, GrossProfit, ProductCategory } from "../catalog.js"; import { Hint } from "../Hint.js"; + import { CustomVisualization } from "./CustomVisualization.js"; export function Example() { diff --git a/examples/sdk-interactive-examples/examples/example-granularity/package.json b/examples/sdk-interactive-examples/examples/example-granularity/package.json index 155b61f2dcc..31730f796a1 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/package.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-granularity", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example exmplains DateFilter granularity ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx b/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx index 6cf27f292d5..27c1b62d879 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx +++ b/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx @@ -7,6 +7,7 @@ import { ComboChart } from "@gooddata/sdk-ui-charts"; import { DateDatasets, GrossProfit, NrOfOrders } from "../catalog.js"; import { Hint } from "../Hint.js"; + import { GranularitySelector } from "./GranularitySelector.js"; // Try changing default granularity to DateDatasets.CustomerCreatedDate.CustomerCreatedDateMonthYear.Default 👇 diff --git a/examples/sdk-interactive-examples/examples/example-headline/package.json b/examples/sdk-interactive-examples/examples/example-headline/package.json index ab8b16b8129..9d0916d0bad 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/package.json +++ b/examples/sdk-interactive-examples/examples/example-headline/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-headline", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example shows how to use the Headline component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/package.json b/examples/sdk-interactive-examples/examples/example-pivottable/package.json index 3b2c58af932..6915938a2a2 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/package.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-pivottable", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Basic PivotTable manipulation.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json index 25ca7ef998a..c9df886264a 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-relativedatefilter", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Example demonstrates how to set relative DateFilter for visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-repeater/package.json b/examples/sdk-interactive-examples/examples/example-repeater/package.json index d3d0dbb597e..5535975e742 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/package.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-repeater", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates how to use Repeater component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/package.json b/examples/sdk-interactive-examples/package.json index 2cff2de1833..353cb28a40d 100644 --- a/examples/sdk-interactive-examples/package.json +++ b/examples/sdk-interactive-examples/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "GoodData React interactive examples", "license": "LicenseRef-LICENSE", diff --git a/libs/api-client-tiger/package.json b/libs/api-client-tiger/package.json index 616654212fe..46dbf979a63 100644 --- a/libs/api-client-tiger/package.json +++ b/libs/api-client-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/api-client-tiger", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "API Client for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts b/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts index f42defe8094..f49fc94f856 100644 --- a/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts +++ b/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts @@ -9,6 +9,7 @@ import { type SortKeyAttribute, type SortKeyValue, } from "../generated/afm-rest-api/index.js"; + import { type ITigerBucket, type ITigerFilter, diff --git a/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts b/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts index d28079e9d01..e38c4e83160 100644 --- a/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts +++ b/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts @@ -22,6 +22,7 @@ import { type JsonApiMetricOutWithLinks, type JsonApiVisualizationObjectOutWithLinks, } from "../generated/metadata-json-api/index.js"; + import { type ITigerAbsoluteDateFilter, type ITigerDashboardArbitraryAttributeFilter, diff --git a/libs/sdk-backend-base/package.json b/libs/sdk-backend-base/package.json index 0a4929fb0ea..6bac4a75b1e 100644 --- a/libs/sdk-backend-base/package.json +++ b/libs/sdk-backend-base/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-base", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Base for backend implementations", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts b/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts index bf620c16aef..e78b15d3b9c 100644 --- a/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts +++ b/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type IResultHeader, isResultAttributeHeader } from "@gooddata/sdk-model"; import { transformResultHeaders } from "../afm/result.js"; + import { resultHeaders, transformedResultHeaders } from "./AfmResultConverter.fixtures.js"; const transformResultHeader = (resultHeader: IResultHeader): IResultHeader => { diff --git a/libs/sdk-backend-base/src/customBackend/execution.ts b/libs/sdk-backend-base/src/customBackend/execution.ts index 9d0e6f313b2..803016ea1c2 100644 --- a/libs/sdk-backend-base/src/customBackend/execution.ts +++ b/libs/sdk-backend-base/src/customBackend/execution.ts @@ -35,6 +35,7 @@ import { } from "@gooddata/sdk-model"; import { AbstractExecutionFactory } from "../toolkit/execution.js"; + import { type CustomBackendConfig, type CustomBackendState, diff --git a/libs/sdk-backend-base/src/customBackend/index.ts b/libs/sdk-backend-base/src/customBackend/index.ts index 982de273879..99d812b2443 100644 --- a/libs/sdk-backend-base/src/customBackend/index.ts +++ b/libs/sdk-backend-base/src/customBackend/index.ts @@ -27,6 +27,7 @@ import { type IAuthenticatedAsyncCallContext, } from "../toolkit/auth.js"; import { type TelemetryData } from "../toolkit/backend.js"; + import { type CustomBackendConfig } from "./config.js"; import { CustomWorkspace } from "./workspace.js"; diff --git a/libs/sdk-backend-base/src/dummyBackend/index.ts b/libs/sdk-backend-base/src/dummyBackend/index.ts index 69b2c3a4940..ea158ea75be 100644 --- a/libs/sdk-backend-base/src/dummyBackend/index.ts +++ b/libs/sdk-backend-base/src/dummyBackend/index.ts @@ -227,6 +227,7 @@ import { } from "@gooddata/sdk-model"; import { AbstractExecutionFactory } from "../toolkit/execution.js"; + import { DummyAnalyticsCatalogService } from "./DummyAnalyticsCatalogService.js"; import { DummyChatConversations, DummyGenAIChatThread } from "./DummyGenAIChatThread.js"; import { DummySemanticQualityService } from "./DummySemanticQualityService.js"; diff --git a/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts b/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts index fb59f6ae809..a1ea4d13022 100644 --- a/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts @@ -22,6 +22,7 @@ import { type AttributeDisplayFormMetadataObjectBuilder, newAttributeDisplayFormMetadataObject, } from "../metadata/displayFormFactory.js"; + import { GroupableCatalogItemBuilder } from "./groupFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts b/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts index fcf2d62d56b..f4c83917097 100644 --- a/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts @@ -9,6 +9,7 @@ import { import { type BuilderModifications, builderFactory } from "../builder.js"; import { type FactMetadataObjectBuilder, newFactMetadataObject } from "../metadata/factFactory.js"; + import { GroupableCatalogItemBuilder } from "./groupFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts b/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts index accf2b388a5..31b4c440d4f 100644 --- a/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts @@ -13,6 +13,7 @@ import { import { type BuilderModifications, builderFactory } from "../builder.js"; import { type MeasureMetadataObjectBuilder, newMeasureMetadataObject } from "../metadata/measureFactory.js"; + import { GroupableCatalogItemBuilder } from "./groupFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts b/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts index aa9d3b70a88..a5bc9a878e6 100644 --- a/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts @@ -13,6 +13,7 @@ import { } from "@gooddata/sdk-model"; import { type ValueOrUpdateCallback } from "../builder.js"; + import { type IWidgetBaseBuilder, WidgetBaseBuilder } from "./widgetFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts b/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts index 5c4437e1076..f88614f9716 100644 --- a/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-model"; import { type ValueOrUpdateCallback, resolveValueOrUpdateCallback } from "../builder.js"; + import { type IWidgetBaseBuilder, WidgetBaseBuilder } from "./widgetFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts index 3ccf74c9556..c89ffdb016a 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts @@ -8,6 +8,7 @@ import { } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts index 561b9aa5ff6..e01d8530191 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts @@ -3,6 +3,7 @@ import { type IDashboardMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts index 1fd5e220ce0..d2195d8215d 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts @@ -3,6 +3,7 @@ import { type IDataSetMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts index 8b1e5aa2bfa..afac47af7cf 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts @@ -7,6 +7,7 @@ import { } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts index 88b5c4577a9..229088b2492 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts @@ -3,6 +3,7 @@ import { type IDataSetMetadataObject, type IFactMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts index ab6b44f8b14..41b41152926 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts @@ -3,6 +3,7 @@ import { type IMeasureMetadataObject, type IUser, type MetricType, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts index 2ec05f4d501..ebf79e28ba4 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts @@ -3,6 +3,7 @@ import { type IVariableMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/normalizingBackend/index.ts b/libs/sdk-backend-base/src/normalizingBackend/index.ts index 8e68879d3ff..875e7a39954 100644 --- a/libs/sdk-backend-base/src/normalizingBackend/index.ts +++ b/libs/sdk-backend-base/src/normalizingBackend/index.ts @@ -42,6 +42,7 @@ import { DecoratedPreparedExecution, } from "../decoratedBackend/execution.js"; import { decoratedBackend } from "../decoratedBackend/index.js"; + import { Denormalizer, type NormalizationState, Normalizer } from "./normalizer.js"; class WithNormalizationExecutionFactory extends DecoratedExecutionFactory { diff --git a/libs/sdk-backend-mockingbird/package.json b/libs/sdk-backend-mockingbird/package.json index 97d95a4c7ff..ebddc783dac 100644 --- a/libs/sdk-backend-mockingbird/package.json +++ b/libs/sdk-backend-mockingbird/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-mockingbird", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "Mock GoodData Backend SPI implementation", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts b/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts index cd7dd6600aa..670a284927b 100644 --- a/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts +++ b/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts @@ -82,6 +82,7 @@ import { } from "@gooddata/sdk-model"; import { createMockGeoService } from "../geoService.js"; + import { type IExecutionResponse, type IExecutionResult as ILegacyExecutionResult, diff --git a/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts b/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts index 64e784216a3..49dcb859533 100644 --- a/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts +++ b/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts @@ -86,6 +86,7 @@ import { } from "@gooddata/sdk-model"; import { createMockGeoService } from "../geoService.js"; + import { RecordedAttributeHierarchiesService } from "./attributeHierarchies.js"; import { RecordedAttributes } from "./attributes.js"; import { RecordedCatalogFactory } from "./catalog.js"; diff --git a/libs/sdk-backend-spi/package.json b/libs/sdk-backend-spi/package.json index 5fa6d0a309a..fe0e5c0be0d 100644 --- a/libs/sdk-backend-spi/package.json +++ b/libs/sdk-backend-spi/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-spi", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Backend SPI abstraction interfaces", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-spi/src/backend/index.ts b/libs/sdk-backend-spi/src/backend/index.ts index 920718691a7..e1fd5cf75b3 100644 --- a/libs/sdk-backend-spi/src/backend/index.ts +++ b/libs/sdk-backend-spi/src/backend/index.ts @@ -10,6 +10,7 @@ import { type IOrganization, type IOrganizations } from "../organization/index.j import { type IUserService } from "../user/index.js"; import { type IPreparedExecution, type IPreparedExecutionOptions } from "../workspace/execution/index.js"; import { type IAnalyticalWorkspace, type IWorkspacesQueryFactory } from "../workspace/index.js"; + import { type IBackendCapabilities } from "./capabilities.js"; /** diff --git a/libs/sdk-backend-spi/src/workspace/attributes/index.ts b/libs/sdk-backend-spi/src/workspace/attributes/index.ts index cd5b3b6025b..8afe57170cf 100644 --- a/libs/sdk-backend-spi/src/workspace/attributes/index.ts +++ b/libs/sdk-backend-spi/src/workspace/attributes/index.ts @@ -14,6 +14,7 @@ import { import type { IFilterBaseOptions } from "../../common/filtering.js"; import type { IPagedResource } from "../../common/paging.js"; import type { QueryMethod } from "../../common/query.js"; + import type { IElementsQueryFactory } from "./elements/index.js"; /** diff --git a/libs/sdk-backend-spi/src/workspace/execution/index.ts b/libs/sdk-backend-spi/src/workspace/execution/index.ts index 33a52b2a8e7..149e4651ca0 100644 --- a/libs/sdk-backend-spi/src/workspace/execution/index.ts +++ b/libs/sdk-backend-spi/src/workspace/execution/index.ts @@ -21,6 +21,7 @@ import { } from "@gooddata/sdk-model"; import { type ICancelable } from "../../cancelation/index.js"; + import { type IExportConfig, type IExportResult } from "./export.js"; /** diff --git a/libs/sdk-backend-spi/src/workspace/index.ts b/libs/sdk-backend-spi/src/workspace/index.ts index a44ed045263..ebecd94a1f9 100644 --- a/libs/sdk-backend-spi/src/workspace/index.ts +++ b/libs/sdk-backend-spi/src/workspace/index.ts @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { type IPagedResource } from "../common/paging.js"; + import { type IWorkspaceAccessControlService } from "./accessControl/index.js"; import { type IAttributeHierarchiesService } from "./attributeHierarchies/index.js"; import { type IWorkspaceAttributesService } from "./attributes/index.js"; diff --git a/libs/sdk-backend-spi/src/workspace/measures/index.ts b/libs/sdk-backend-spi/src/workspace/measures/index.ts index d07d19387bf..1ec57609b52 100644 --- a/libs/sdk-backend-spi/src/workspace/measures/index.ts +++ b/libs/sdk-backend-spi/src/workspace/measures/index.ts @@ -16,6 +16,7 @@ import type { import type { IFilterBaseOptions } from "../../common/filtering.js"; import type { IPagedResource } from "../../common/paging.js"; import type { QueryMethod } from "../../common/query.js"; + import type { IMeasureExpressionToken } from "./measure.js"; /** diff --git a/libs/sdk-backend-tiger/package.json b/libs/sdk-backend-tiger/package.json index 8c3429b1b08..46019177efe 100644 --- a/libs/sdk-backend-tiger/package.json +++ b/libs/sdk-backend-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-tiger", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-tiger/src/backend/features/feature.ts b/libs/sdk-backend-tiger/src/backend/features/feature.ts index 18dff2b59cd..280d8f6c8cf 100644 --- a/libs/sdk-backend-tiger/src/backend/features/feature.ts +++ b/libs/sdk-backend-tiger/src/backend/features/feature.ts @@ -1,6 +1,7 @@ // (C) 2020-2026 GoodData Corporation import { FeatureFlagsValues, type ITigerFeatureFlags, TigerFeaturesNames } from "../uiFeatures.js"; + import { convertState } from "./state.js"; export type FeatureDef = { diff --git a/libs/sdk-backend-tiger/src/backend/features/hub.ts b/libs/sdk-backend-tiger/src/backend/features/hub.ts index 887cc9e75df..7de48a93389 100644 --- a/libs/sdk-backend-tiger/src/backend/features/hub.ts +++ b/libs/sdk-backend-tiger/src/backend/features/hub.ts @@ -5,6 +5,7 @@ import axios, { type AxiosResponse } from "axios"; import { type FeatureContext, type ILiveFeatures } from "@gooddata/api-client-tiger"; import { DefaultFeatureFlags, type ITigerFeatureFlags } from "../uiFeatures.js"; + import { type FeatureDef, type FeaturesMap, mapFeatures } from "./feature.js"; type HubServiceState = Record< diff --git a/libs/sdk-backend-tiger/src/backend/features/index.ts b/libs/sdk-backend-tiger/src/backend/features/index.ts index 0a6ffbbd053..1f5b70878bb 100644 --- a/libs/sdk-backend-tiger/src/backend/features/index.ts +++ b/libs/sdk-backend-tiger/src/backend/features/index.ts @@ -15,6 +15,7 @@ import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/prof import { LIB_VERSION } from "../../__version.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; import { DefaultFeatureFlags, type ITigerFeatureFlags } from "../uiFeatures.js"; + import { getFeatureHubFeatures } from "./hub.js"; import { getStaticFeatures } from "./static.js"; diff --git a/libs/sdk-backend-tiger/src/backend/features/static.ts b/libs/sdk-backend-tiger/src/backend/features/static.ts index f3fe6b16e67..6d8565ff820 100644 --- a/libs/sdk-backend-tiger/src/backend/features/static.ts +++ b/libs/sdk-backend-tiger/src/backend/features/static.ts @@ -3,6 +3,7 @@ import { type IStaticFeatures } from "@gooddata/api-client-tiger"; import { type ITigerFeatureFlags } from "../uiFeatures.js"; + import { type FeatureDef, type FeaturesMap, mapFeatures } from "./feature.js"; export function getStaticFeatures({ items }: IStaticFeatures["static"]): Partial { diff --git a/libs/sdk-backend-tiger/src/backend/index.ts b/libs/sdk-backend-tiger/src/backend/index.ts index 3ea8f9174ed..b9d7b7f97c0 100644 --- a/libs/sdk-backend-tiger/src/backend/index.ts +++ b/libs/sdk-backend-tiger/src/backend/index.ts @@ -44,6 +44,7 @@ import { type DateStringifier, } from "../convertors/fromBackend/dateFormatting/types.js"; import { convertApiError } from "../utils/errorHandling.js"; + import { TigerDataSourcesService } from "./dataSources/index.js"; import { TigerEntitlements } from "./entitlements/index.js"; import { TigerGeoService } from "./geo/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/organization/agents.ts b/libs/sdk-backend-tiger/src/backend/organization/agents.ts index 4bc449b4f4b..332c01a9669 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/agents.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/agents.ts @@ -25,6 +25,7 @@ import { convertAgentToBackend, } from "../../convertors/toBackend/AgentConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { AgentsQuery } from "./agentsQuery.js"; const AGENT_INCLUDE: Array<"createdBy" | "modifiedBy" | "userGroups"> = [ diff --git a/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts b/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts index 3a8aae0be3d..7a345b4315b 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts @@ -13,6 +13,7 @@ import { } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { OrganizationAutomationsQuery } from "./automationsQuery.js"; /** diff --git a/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts b/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts index afd3695885f..46209687021 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts @@ -3,6 +3,7 @@ import type { IKnowledgeDocumentsService, IOrganizationGenAIService } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { OrganizationKnowledgeDocumentsService } from "./KnowledgeDocumentsService.js"; /** diff --git a/libs/sdk-backend-tiger/src/backend/organization/index.ts b/libs/sdk-backend-tiger/src/backend/organization/index.ts index 4e666a70b5c..bed8ffd969d 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/index.ts @@ -26,6 +26,7 @@ import { import { type IOrganizationDescriptor, type IOrganizationDescriptorUpdate, idRef } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { OrganizationAgentsService } from "./agents.js"; import { TigerOrganizationAutomationService } from "./automations/index.js"; import { OrganizationExportTemplatesService } from "./exportTemplates.js"; diff --git a/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts b/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts index 77cd4d89542..b3f182dceb6 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts @@ -22,6 +22,7 @@ import { import { convertLlmEndpoint } from "../../convertors/fromBackend/llmEndpointConvertor.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { LlmEndpointsQuery } from "./llmEndpointsQuery.js"; export class OrganizationLlmEndpointsService implements IOrganizationLlmEndpointsService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts b/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts index 86f56cd76ed..018be2e30ff 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts @@ -29,6 +29,7 @@ import { convertLlmProviderToBackend, } from "../../convertors/fromBackend/llmProviderConvertor.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { LlmProvidersQuery } from "./llmProvidersQuery.js"; export class OrganizationLlmProvidersService implements IOrganizationLlmProvidersService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts b/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts index 56d1017a4ca..b4596199c24 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts @@ -31,6 +31,7 @@ import { import { convertNotificationChannelFromBackend } from "../../convertors/fromBackend/NotificationChannelsConvertor.js"; import { convertNotificationChannelToBackend } from "../../convertors/toBackend/NotificationChannelsConvertor.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { NotificationChannelsQuery } from "./notificationChannelsQuery.js"; export class OrganizationNotificationChannelService implements IOrganizationNotificationChannelService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/notifications.ts b/libs/sdk-backend-tiger/src/backend/organization/notifications.ts index 921cfdd695c..1a868543ea6 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notifications.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notifications.ts @@ -8,6 +8,7 @@ import { import { type INotificationsQuery, type IOrganizationNotificationService } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { NotificationsQuery } from "./notificationsQuery.js"; export class OrganizationNotificationService implements IOrganizationNotificationService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/permissions.ts b/libs/sdk-backend-tiger/src/backend/organization/permissions.ts index 4af28c869e7..5e5012393a1 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/permissions.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/permissions.ts @@ -18,6 +18,7 @@ import { } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { convertDataSourcePermissionsAssignment, convertWorkspacePermissionsAssignment, diff --git a/libs/sdk-backend-tiger/src/backend/organization/styling.ts b/libs/sdk-backend-tiger/src/backend/organization/styling.ts index 31b42fa2271..90873d80ee3 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/styling.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/styling.ts @@ -45,6 +45,7 @@ import { convertTheme as convertThemeToBackend } from "../../convertors/toBacken import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; import { objRefToIdentifier } from "../../utils/api.js"; import { DefaultTheme } from "../workspace/styling/mocks/theme.js"; + import { OrganizationSettingsService } from "./settings.js"; export class OrganizationStylingService implements IOrganizationStylingService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/users.ts b/libs/sdk-backend-tiger/src/backend/organization/users.ts index 42b1e7cdf4e..6acbdf877aa 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/users.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/users.ts @@ -33,6 +33,7 @@ import { } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { convertEntityUserToOrganizationUser, convertIncludedUser, diff --git a/libs/sdk-backend-tiger/src/backend/user/index.ts b/libs/sdk-backend-tiger/src/backend/user/index.ts index c736d563f93..6d92781f700 100644 --- a/libs/sdk-backend-tiger/src/backend/user/index.ts +++ b/libs/sdk-backend-tiger/src/backend/user/index.ts @@ -9,6 +9,7 @@ import { type IUser } from "@gooddata/sdk-model"; import { convertUser } from "../../convertors/fromBackend/UsersConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { TigerUserSettingsService } from "./settings.js"; export class TigerUserService implements IUserService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts index 9f282c8fec3..96ba93c9dd5 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts @@ -54,6 +54,7 @@ import { type DateFormatter } from "../../../../convertors/fromBackend/dateForma import { toSdkGranularity } from "../../../../convertors/fromBackend/dateGranularityConversions.js"; import { toLabelQualifier, toObjQualifier } from "../../../../convertors/toBackend/ObjRefConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../../types/index.js"; + import { getRelativeDateFilterShiftedValues } from "./date.js"; import { mapDashboardDateFilterToDependentDateFilter } from "./dependentDateFilters.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts index 2b39ec1ce40..8b6f97496c3 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts @@ -51,6 +51,7 @@ import { getIdOrigin, isInheritedObject } from "../../../convertors/fromBackend/ import { jsonApiIdToObjRef } from "../../../convertors/fromBackend/ObjRefConverter.js"; import { toLabelQualifier } from "../../../convertors/toBackend/ObjRefConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { AttributesQuery } from "./attributesQuery.js"; import { TigerWorkspaceElements } from "./elements/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts index e299dfd0987..a56e795cae5 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts @@ -19,6 +19,7 @@ import { convertAutomationListToAutomations } from "../../../convertors/fromBack import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { DEFAULT_PAGE, DEFAULT_PAGE_SIZE } from "../../common/automations.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { buildFieldFilter, buildStatusFilter } from "./filterBuilders.js"; export class AutomationsQuery implements IAutomationsQuery { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts index cb57980e560..2a58e9a2280 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts @@ -34,6 +34,7 @@ import { convertAutomation as convertAutomationFromBackend } from "../../../conv import { convertAutomation as convertAutomationToBackend } from "../../../convertors/toBackend/AutomationConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { AutomationsQuery } from "./automationsQuery.js"; export class TigerWorkspaceAutomationService implements IWorkspaceAutomationService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts index 19f78c7e5ea..e9654ca2e46 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts @@ -42,6 +42,7 @@ import { convertAfmFilters } from "../../../convertors/toBackend/afm/AfmFiltersC import { convertAttribute } from "../../../convertors/toBackend/afm/AttributeConverter.js"; import { convertMeasure } from "../../../convertors/toBackend/afm/MeasureConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { TigerWorkspaceCatalogWithAvailableItems } from "./catalogWithAvailableItems.js"; //ivec investigate diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts index 9ca413eb2e9..16cd404bb46 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts @@ -23,6 +23,7 @@ import { } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { TigerWorkspaceCatalogAvailableItemsFactory } from "./availableItemsFactory.js"; export class TigerWorkspaceCatalog implements IWorkspaceCatalog { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts index c94b1fa3f5c..0fb38bd0fad 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts @@ -25,6 +25,7 @@ import { convertDateDataset, } from "../../../convertors/fromBackend/CatalogConverter.js"; import { convertAttributeHierarchy } from "../../../convertors/fromBackend/HierarchyConverter.js"; + import { addRsqlFilterToParams } from "./rsqlFilter.js"; function lookupRelatedObject(included: JsonApiAttributeOutIncludes[] | undefined, id: string, type: string) { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts index b740989cf8b..02dc3feb547 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts @@ -28,6 +28,7 @@ import { import { convertFact, convertMeasure } from "../../../convertors/fromBackend/CatalogConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { TigerWorkspaceCatalog } from "./catalog.js"; import { loadAttributesAndDateDatasetsAndHierarchies } from "./datasetLoader.js"; import { addRsqlFilterToParams, rsqlAnd, searchToRsqlFilter, tagsToRsqlFilter } from "./rsqlFilter.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts index b1b2d716c62..4076fa9bacd 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts @@ -136,6 +136,7 @@ import { handleExportResultPolling } from "../../../utils/exportPolling.js"; import { addFilterLocalIdentifier } from "../../../utils/filterLocalidentifier.js"; import { GET_OPTIMIZED_WORKSPACE_PARAMS } from "../constants.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { type TigerDashboardPermissionType, buildDashboardPermissions } from "./dashboardPermissions.js"; import { DashboardsQuery } from "./dashboardsQuery.js"; import { resolveWidgetFilters, resolveWidgetFiltersWithMultipleDateFilters } from "./widgetFilters.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts index a96b2525625..b4b8750afe7 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts @@ -19,6 +19,7 @@ import { import { convertDataSetItem } from "../../../convertors/fromBackend/DataSetConverter.js"; import type { TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { DatasetsQuery } from "./datasetsQuery.js"; export class TigerWorkspaceDataSets implements IWorkspaceDatasetsService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts index c207e75074c..56cd14763f8 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts @@ -5,6 +5,7 @@ import { type IPreparedExecution, type IPreparedExecutionOptions } from "@goodda import { type IExecutionDefinition } from "@gooddata/sdk-model"; import { type DateFormatter } from "../../../convertors/fromBackend/dateFormatting/types.js"; + import { TigerPreparedExecution } from "./preparedExecution.js"; /* diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts index f98fe3f9587..a3fe4119470 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts @@ -81,6 +81,7 @@ import { type DateFormatter } from "../../../convertors/fromBackend/dateFormatti import { toAfmExecution } from "../../../convertors/toBackend/afm/toAfmResultSpec.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { handleExportResultPolling } from "../../../utils/exportPolling.js"; + import { augmentCustomOverrideWithNormalizedKeys, resolveCustomOverride } from "./utils.js"; const TIGER_PAGE_SIZE_LIMIT = 1000; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts index 0cbb6f0e93c..ac08ac2b2b2 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts @@ -38,6 +38,7 @@ import { type DateFormatter } from "../../../convertors/fromBackend/dateFormatti import { toAfmExecution } from "../../../convertors/toBackend/afm/toAfmResultSpec.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { downloadFile, parseNameFromContentDisposition } from "../../../utils/downloadFile.js"; + import { TigerExecutionResult } from "./executionResult.js"; export class TigerPreparedExecution implements IPreparedExecution { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts index c7b80434573..bc5fa154b1c 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts @@ -36,6 +36,7 @@ import { import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { exportDefinitionsListComparator } from "./comparator.js"; import { ExportDefinitionsQuery } from "./exportDefinitionsQuery.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts index 70f3355b564..9c1fbefba9b 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts @@ -20,6 +20,7 @@ import { import { convertDatasetWithLinks, convertFact } from "../../../convertors/fromBackend/MetadataConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { FactsQuery } from "./factsQuery.js"; export class TigerWorkspaceFacts implements IWorkspaceFactsService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts index a36194dfeb1..84a7796bcbc 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts @@ -7,6 +7,7 @@ import { GenAiApi_PostMessages } from "@gooddata/api-client-tiger/endpoints/genA import type { DateNormalizer } from "../../../convertors/fromBackend/dateFormatting/types.js"; import type { TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { ChatConversationThreadQuery } from "./ChatConversations.js"; vi.mock("@gooddata/api-client-tiger/endpoints/genAI", () => ({ diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts index 96ec1db60df..d246e7d58aa 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts @@ -22,6 +22,7 @@ import { convertMemoryItemCreatedByUsers, } from "../../../convertors/fromBackend/MemoryItemConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { MemoryItemsQuery } from "./MemoryItemsQuery.js"; export class MemoryItemsService implements IMemoryItemsService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts index b95885cca57..7ec8fd602f6 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts @@ -17,6 +17,7 @@ import type { import { type DateNormalizer } from "../../../convertors/fromBackend/dateFormatting/types.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { AnalyticsCatalogService } from "./AnalyticsCatalogService.js"; import { ChatConversationsService } from "./ChatConversations.js"; import { ChatThreadService } from "./ChatThread.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/index.ts index 9f0478c771c..0011f47b90d 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/index.ts @@ -44,6 +44,7 @@ import { import { workspaceConverter } from "../../convertors/fromBackend/WorkspaceConverter.js"; import { convertWorkspaceUpdate } from "../../convertors/toBackend/WorkspaceConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { TigerWorkspaceAccessControlService } from "./accessControl/index.js"; import { TigerAttributeHierarchiesService } from "./attributeHierarchies/index.js"; import { TigerWorkspaceAttributes } from "./attributes/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts index 75077af5f9b..72612a74a42 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts @@ -79,6 +79,7 @@ import { convertVisualizationObject } from "../../../convertors/fromBackend/visu import { convertInsight } from "../../../convertors/toBackend/InsightConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier, objRefToUri } from "../../../utils/api.js"; + import { InsightsQuery } from "./insightsQuery.js"; import { visualizationClasses as visualizationClassesMocks } from "./mocks/visualizationClasses.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts index be559ff2912..b447970ef9e 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts @@ -53,6 +53,7 @@ import { convertMeasure } from "../../../convertors/toBackend/afm/MeasureConvert import { convertMetricToBackend } from "../../../convertors/toBackend/MetricConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { type IExpressionToken, tokenizeExpression } from "./measureExpressionTokens.js"; import { MeasuresQuery } from "./measuresQuery.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts index e895beb6070..70eb05d3c1a 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts @@ -24,6 +24,7 @@ import { } from "../../../convertors/toBackend/ParameterConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { ParametersQuery } from "./parametersQuery.js"; export class TigerWorkspaceParameters implements IWorkspaceParametersService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts index 9aca0a5a562..1f6deb1e02e 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts @@ -19,6 +19,7 @@ import { type JsonApiId } from "../../../convertors/fromBackend/ObjRefConverter. import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; import { TigerWorkspaceSettings, getSettingsForCurrentUser } from "../settings/index.js"; + import { DefaultColorPalette } from "./mocks/colorPalette.js"; import { DefaultTheme } from "./mocks/theme.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts index 3a564c5088e..ac609015510 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts @@ -57,6 +57,7 @@ import { } from "@gooddata/sdk-model"; import { fixNumber } from "../../utils/fixNumber.js"; + import { convertFilter } from "./afm/FilterConverter.js"; import { convertMeasure } from "./afm/MeasureConverter.js"; import { convertAttribute } from "./AttributeConvertor.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts index 10fb5c785ba..2a4d7b9d660 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts @@ -31,6 +31,7 @@ import { } from "@gooddata/sdk-model"; import { convertTigerToSdkFilters } from "../shared/storedFilterConverter.js"; + import { convertFilter } from "./afm/FilterConverter.js"; import { type IIncludedWithUserIdentifier, convertUserIdentifier } from "./UsersConverter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts index 85675d25932..260341d1f49 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-model"; import { toObjRef } from "../ObjRefConverter.js"; + import { convertFilter } from "./FilterConverter.js"; const isArithmeticMeasureDefinition = (definition: unknown): definition is ArithmeticMeasureDefinition => { diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts index a26a73cd547..865bc9810c7 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts @@ -8,6 +8,7 @@ import { type IDimensionDescriptor, type IExecutionDefinition } from "@gooddata/ import { defaultDateFormatter } from "../../dateFormatting/defaultDateFormatter.js"; import { getTransformDimensionHeaders } from "../DimensionHeaderConverter.js"; import { transformGrandTotalData } from "../GrandTotalsConverter.js"; + import { mockDefinition1, mockDefinition2, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts index f4f0e607273..17d5eb26211 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts @@ -14,6 +14,7 @@ import { } from "@gooddata/sdk-model"; import { transformResultDimensions } from "../dimensions.js"; + import { mockDimensions, mockGeoAreaDimensions, mockMultipleDimensions } from "./dimensions.fixture.js"; describe("transformResultDimensions", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts index ce95c4fb591..cda04a69f22 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { defaultDateFormatter } from "../../dateFormatting/defaultDateFormatter.js"; import { getTransformDimensionHeaders } from "../DimensionHeaderConverter.js"; import { transformExecutionResult } from "../result.js"; + import { mockDimensions, mockDimensionsWithDateFormat, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts index 00ab1dae1d3..b05f764fb8a 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts @@ -29,6 +29,7 @@ import { cloneWithSanitizedIdsTyped } from "../IdSanitization.js"; import { isInheritedObject } from "../ObjectInheritance.js"; import { convertUserIdentifier } from "../UsersConverter.js"; import { getShareStatus } from "../utils.js"; + import { convertDashboard as convertDashboardV1, convertFilterContextFromBackend as convertFilterContextFromBackendV1, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts index ec54806a001..19f2e21ae3d 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts @@ -55,6 +55,7 @@ import { convertUserIdentifier } from "../../UsersConverter.js"; import { getShareStatus, stripQueryParams } from "../../utils.js"; import { getFilterContextsFromIncluded } from "../common/filterContextUtils.js"; import { sanitizeSelectionMode } from "../common/singleSelectionFilter.js"; + import { convertFilterContextFilters } from "./FilterContextFiltersConverter.js"; function setWidgetRefsInLayout(layout: IDashboardLayout | undefined) { diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts index a67248d2f95..c4f298e7fd7 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts @@ -4,6 +4,7 @@ import { v4 as uuidv4 } from "uuid"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { prepareDrillLocalIdentifierIfMissing } from "../AnalyticalDashboardConverter.js"; + import { dashboardLayout } from "./AnalyticalDashboardConverter.fixture.js"; vi.mock("uuid", () => ({ diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts index 6e8be1fded7..e40c592d8fc 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts @@ -38,6 +38,7 @@ import { } from "@gooddata/sdk-model"; import { getFormatByGranularity } from "../../utils/dateUtils.js"; + import { convertMeasure } from "./afm/MeasureConverter.js"; import { convertAttribute } from "./AttributeConvertor.js"; import type { FormattingLocale } from "./dateFormatting/defaultDateFormatter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts index 2517a49a8a6..df26862d371 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts @@ -9,6 +9,7 @@ import { fixInsightLegacyElementUris, fixWidgetLegacyElementUris, } from "../../fixLegacyElementUris.js"; + import { mockInsight, mockWidget } from "./fixLegacyElementUris.fixtures.js"; describe("fixInsightLegacyElementUris", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts b/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts index 6d5b974e706..7b3cc3fd7c1 100644 --- a/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts @@ -10,6 +10,7 @@ import { type FilterContextItem, type IFilter } from "@gooddata/sdk-model"; import { cloneWithSanitizedIdsTyped as cloneWithSanitizedIdsTypedFromBackend } from "../fromBackend/IdSanitization.js"; import { cloneWithSanitizedIdsTyped as cloneWithSanitizedIdsTypedToBackend } from "../toBackend/IdSanitization.js"; + import { convertMeasureValueFilterSdkToTiger, convertMeasureValueFilterTigerToSdk, diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts index 187789fbe81..d5054f82451 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts @@ -37,6 +37,7 @@ import { addFilterLocalIdentifier } from "../../utils/filterLocalidentifier.js"; import { generateWidgetLocalIdentifier } from "../../utils/widgetLocalIdentifier.js"; import { convertLayout } from "../shared/layoutConverter.js"; import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js"; + import { cloneWithSanitizedIds, cloneWithSanitizedIdsTyped } from "./IdSanitization.js"; function removeIdentifiers(widget: IDashboardWidget, useWidgetLocalIdentifiers?: boolean): IDashboardWidget { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts index 77e987c45d2..d961960d6e0 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts @@ -24,6 +24,7 @@ import { } from "@gooddata/sdk-model"; import { fixNumber } from "../../utils/fixNumber.js"; + import { convertAfmFilters } from "./afm/AfmFiltersConverter.js"; import { convertAttribute } from "./afm/AttributeConverter.js"; import { convertMeasure } from "./afm/MeasureConverter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts index dcb41aa4382..606a635536d 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts @@ -26,6 +26,7 @@ import { } from "@gooddata/sdk-model"; import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js"; + import { convertAfmFilters } from "./afm/AfmFiltersConverter.js"; import { convertAttribute } from "./afm/AttributeConverter.js"; import { convertMeasure } from "./afm/MeasureConverter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts index 8224ae56f32..090132b4932 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts @@ -25,6 +25,7 @@ import { } from "@gooddata/sdk-model"; import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js"; + import { cloneWithSanitizedIdsTyped } from "./IdSanitization.js"; function removeIdentifiers(insight: IInsight): IInsightDefinition { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts index 423eb1ef53a..fc660b7339b 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts @@ -38,6 +38,7 @@ import { toFactQualifier, toLocalIdentifier, } from "../ObjRefConverter.js"; + import { convertFilter } from "./FilterConverter.js"; export function convertMeasure(measure: IMeasure): MeasureItem { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts index d294f9c8351..0d499aac352 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts @@ -27,6 +27,7 @@ import { convertFilter, newFilterWithApplyOnResult, } from "../FilterConverter.js"; + import { absoluteFilter, relativeFilter } from "./InvalidInputs.fixture.js"; describe("tiger filter converter from model to AFM", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts index 0a4b1db7c6f..a6924449f49 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts @@ -14,6 +14,7 @@ import { } from "@gooddata/sdk-model"; import { convertMeasure } from "../MeasureConverter.js"; + import { invalidMeasureDefinition, invalidObjQualifier } from "./InvalidInputs.fixture.js"; describe("measure converter", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts index a20648bd9ed..70ac02ce407 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts @@ -18,6 +18,7 @@ import { } from "@gooddata/sdk-model"; import { toAfmExecution } from "../toAfmResultSpec.js"; + import { defWithAlias, defWithoutFilters } from "./InvalidInputs.fixture.js"; const workspace = "test workspace"; diff --git a/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts b/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts index 48536fbca98..77bc2024f77 100644 --- a/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts +++ b/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts @@ -5,6 +5,7 @@ import { beforeAll, describe, expect, it } from "vitest"; import { measureLocalId, newArithmeticMeasure, newPopMeasure } from "@gooddata/sdk-model"; import { WinRate } from "../../src/fixtures/full.js"; + import { sanitizeWorkspace, sortToOrder, testBackend, testWorkspace } from "./backend.js"; const backend = testBackend(); diff --git a/libs/sdk-backend-tiger/tests/integrated/elements.test.ts b/libs/sdk-backend-tiger/tests/integrated/elements.test.ts index 6cc135931ca..857622405dd 100644 --- a/libs/sdk-backend-tiger/tests/integrated/elements.test.ts +++ b/libs/sdk-backend-tiger/tests/integrated/elements.test.ts @@ -12,6 +12,7 @@ import { import { Account, AccountId, Product } from "../../src/fixtures/full.js"; import { productName } from "../../src/fixtures/referenceObjects.js"; + import { testBackend, testWorkspace } from "./backend.js"; const backend = testBackend(); diff --git a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md index 9dd7e016935..689784d581b 100644 --- a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md +++ b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md @@ -1179,74 +1179,74 @@ export function yamlWidgetToDeclarative(entities: ExportEntities, input: Visuali // Warnings were encountered during analysis: // -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "load_5" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "save_5" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "ConfigDefaults" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "DefaultProperties_5" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:281:22 - (ae-forgotten-export) The symbol "load_2" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:281:22 - (ae-forgotten-export) The symbol "save_2" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:281:22 - (ae-forgotten-export) The symbol "DefaultProperties_2" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:245:25 - (ae-forgotten-export) The symbol "load_7" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:245:25 - (ae-forgotten-export) The symbol "save_7" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:245:25 - (ae-forgotten-export) The symbol "DefaultProperties_7" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:230:25 - (ae-forgotten-export) The symbol "load_14" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:230:25 - (ae-forgotten-export) The symbol "save_14" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:230:25 - (ae-forgotten-export) The symbol "DefaultProperties_14" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:281:25 - (ae-forgotten-export) The symbol "load_3" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:281:25 - (ae-forgotten-export) The symbol "save_3" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:281:25 - (ae-forgotten-export) The symbol "DefaultProperties_3" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:506:24 - (ae-forgotten-export) The symbol "load_19" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:506:24 - (ae-forgotten-export) The symbol "save_19" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:506:24 - (ae-forgotten-export) The symbol "DefaultProperties_19" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:112:34 - (ae-forgotten-export) The symbol "load_16" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:112:34 - (ae-forgotten-export) The symbol "save_16" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:112:34 - (ae-forgotten-export) The symbol "DefaultProperties_16" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:132:24 - (ae-forgotten-export) The symbol "load_9" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:132:24 - (ae-forgotten-export) The symbol "save_9" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:132:24 - (ae-forgotten-export) The symbol "DefaultProperties_9" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:132:25 - (ae-forgotten-export) The symbol "load_12" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:132:25 - (ae-forgotten-export) The symbol "save_12" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:132:25 - (ae-forgotten-export) The symbol "DefaultProperties_12" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:286:26 - (ae-forgotten-export) The symbol "load_21" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:286:26 - (ae-forgotten-export) The symbol "save_21" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:286:26 - (ae-forgotten-export) The symbol "DefaultProperties_21" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:351:22 - (ae-forgotten-export) The symbol "load_20" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:351:22 - (ae-forgotten-export) The symbol "save_20" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:351:22 - (ae-forgotten-export) The symbol "DefaultProperties_20" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:189:27 - (ae-forgotten-export) The symbol "load_18" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:189:27 - (ae-forgotten-export) The symbol "save_18" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:189:27 - (ae-forgotten-export) The symbol "DefaultProperties_18" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:208:26 - (ae-forgotten-export) The symbol "load_13" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:208:26 - (ae-forgotten-export) The symbol "save_13" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:208:26 - (ae-forgotten-export) The symbol "DefaultProperties_13" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:391:23 - (ae-forgotten-export) The symbol "load_4" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:391:23 - (ae-forgotten-export) The symbol "save_4" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:391:23 - (ae-forgotten-export) The symbol "DefaultProperties_4" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:132:22 - (ae-forgotten-export) The symbol "load_8" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:132:22 - (ae-forgotten-export) The symbol "save_8" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:132:22 - (ae-forgotten-export) The symbol "DefaultProperties_8" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:132:26 - (ae-forgotten-export) The symbol "load_11" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:132:26 - (ae-forgotten-export) The symbol "save_11" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:132:26 - (ae-forgotten-export) The symbol "DefaultProperties_11" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "load_22" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "save_22" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "saveInlineVisualizations" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "DefaultProperties_22" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:116:25 - (ae-forgotten-export) The symbol "load_17" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:116:25 - (ae-forgotten-export) The symbol "save_17" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:116:25 - (ae-forgotten-export) The symbol "DefaultProperties_17" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:270:26 - (ae-forgotten-export) The symbol "load_6" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:270:26 - (ae-forgotten-export) The symbol "save_6" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:270:26 - (ae-forgotten-export) The symbol "DefaultProperties_6" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:246:19 - (ae-forgotten-export) The symbol "load" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:246:19 - (ae-forgotten-export) The symbol "save" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:246:19 - (ae-forgotten-export) The symbol "DefaultProperties" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:132:26 - (ae-forgotten-export) The symbol "load_10" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:132:26 - (ae-forgotten-export) The symbol "save_10" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:132:26 - (ae-forgotten-export) The symbol "DefaultProperties_10" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:286:28 - (ae-forgotten-export) The symbol "load_15" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:286:28 - (ae-forgotten-export) The symbol "save_15" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:286:28 - (ae-forgotten-export) The symbol "DefaultProperties_15" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "load_5" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "save_5" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "ConfigDefaults" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "DefaultProperties_5" needs to be exported by the entry point index.d.ts +// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "load_2" needs to be exported by the entry point index.d.ts +// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "save_2" needs to be exported by the entry point index.d.ts +// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "DefaultProperties_2" needs to be exported by the entry point index.d.ts +// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "load_7" needs to be exported by the entry point index.d.ts +// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "save_7" needs to be exported by the entry point index.d.ts +// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "DefaultProperties_7" needs to be exported by the entry point index.d.ts +// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "load_14" needs to be exported by the entry point index.d.ts +// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "save_14" needs to be exported by the entry point index.d.ts +// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "DefaultProperties_14" needs to be exported by the entry point index.d.ts +// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "load_3" needs to be exported by the entry point index.d.ts +// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "save_3" needs to be exported by the entry point index.d.ts +// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "DefaultProperties_3" needs to be exported by the entry point index.d.ts +// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "load_19" needs to be exported by the entry point index.d.ts +// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "save_19" needs to be exported by the entry point index.d.ts +// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "DefaultProperties_19" needs to be exported by the entry point index.d.ts +// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "load_16" needs to be exported by the entry point index.d.ts +// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "save_16" needs to be exported by the entry point index.d.ts +// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "DefaultProperties_16" needs to be exported by the entry point index.d.ts +// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "load_9" needs to be exported by the entry point index.d.ts +// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "save_9" needs to be exported by the entry point index.d.ts +// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "DefaultProperties_9" needs to be exported by the entry point index.d.ts +// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "load_12" needs to be exported by the entry point index.d.ts +// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "save_12" needs to be exported by the entry point index.d.ts +// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "DefaultProperties_12" needs to be exported by the entry point index.d.ts +// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "load_21" needs to be exported by the entry point index.d.ts +// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "save_21" needs to be exported by the entry point index.d.ts +// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "DefaultProperties_21" needs to be exported by the entry point index.d.ts +// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "load_20" needs to be exported by the entry point index.d.ts +// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "save_20" needs to be exported by the entry point index.d.ts +// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "DefaultProperties_20" needs to be exported by the entry point index.d.ts +// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "load_18" needs to be exported by the entry point index.d.ts +// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "save_18" needs to be exported by the entry point index.d.ts +// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "DefaultProperties_18" needs to be exported by the entry point index.d.ts +// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "load_13" needs to be exported by the entry point index.d.ts +// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "save_13" needs to be exported by the entry point index.d.ts +// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "DefaultProperties_13" needs to be exported by the entry point index.d.ts +// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "load_4" needs to be exported by the entry point index.d.ts +// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "save_4" needs to be exported by the entry point index.d.ts +// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "DefaultProperties_4" needs to be exported by the entry point index.d.ts +// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "load_8" needs to be exported by the entry point index.d.ts +// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "save_8" needs to be exported by the entry point index.d.ts +// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "DefaultProperties_8" needs to be exported by the entry point index.d.ts +// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "load_11" needs to be exported by the entry point index.d.ts +// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "save_11" needs to be exported by the entry point index.d.ts +// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "DefaultProperties_11" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "load_22" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "save_22" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "saveInlineVisualizations" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "DefaultProperties_22" needs to be exported by the entry point index.d.ts +// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "load_17" needs to be exported by the entry point index.d.ts +// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "save_17" needs to be exported by the entry point index.d.ts +// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "DefaultProperties_17" needs to be exported by the entry point index.d.ts +// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "load_6" needs to be exported by the entry point index.d.ts +// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "save_6" needs to be exported by the entry point index.d.ts +// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "DefaultProperties_6" needs to be exported by the entry point index.d.ts +// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "load" needs to be exported by the entry point index.d.ts +// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "save" needs to be exported by the entry point index.d.ts +// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "DefaultProperties" needs to be exported by the entry point index.d.ts +// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "load_10" needs to be exported by the entry point index.d.ts +// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "save_10" needs to be exported by the entry point index.d.ts +// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "DefaultProperties_10" needs to be exported by the entry point index.d.ts +// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "load_15" needs to be exported by the entry point index.d.ts +// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "save_15" needs to be exported by the entry point index.d.ts +// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "DefaultProperties_15" needs to be exported by the entry point index.d.ts // src/to/yamlVisualisationToDeclarative.ts:1170:5 - (ae-forgotten-export) The symbol "VisualisationDefinition" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/libs/sdk-code-convertors/package.json b/libs/sdk-code-convertors/package.json index e90d3e347ae..ed46c5d3e2f 100644 --- a/libs/sdk-code-convertors/package.json +++ b/libs/sdk-code-convertors/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-convertors", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData AAC declarative converters", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-code-convertors/python/pyproject.toml b/libs/sdk-code-convertors/python/pyproject.toml index 2b386ddc385..3ebc47c0905 100644 --- a/libs/sdk-code-convertors/python/pyproject.toml +++ b/libs/sdk-code-convertors/python/pyproject.toml @@ -2,7 +2,7 @@ [project] name = "gooddata-code-convertors" -version = "11.35.0a3" +version = "11.35.0a4" description = "GoodData AAC YAML / Declarative API code converters (WASM-powered)" readme = "README.md" license = { file = "LICENSE" } diff --git a/libs/sdk-code-convertors/src/configs/areaChart.ts b/libs/sdk-code-convertors/src/configs/areaChart.ts index b4035819ea8..3c99888932b 100644 --- a/libs/sdk-code-convertors/src/configs/areaChart.ts +++ b/libs/sdk-code-convertors/src/configs/areaChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, diff --git a/libs/sdk-code-convertors/src/configs/barChart.ts b/libs/sdk-code-convertors/src/configs/barChart.ts index 5736990cbb8..c19f8d80f07 100644 --- a/libs/sdk-code-convertors/src/configs/barChart.ts +++ b/libs/sdk-code-convertors/src/configs/barChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/bubbleChart.ts b/libs/sdk-code-convertors/src/configs/bubbleChart.ts index 74ad30ef4c7..0bfd123a060 100644 --- a/libs/sdk-code-convertors/src/configs/bubbleChart.ts +++ b/libs/sdk-code-convertors/src/configs/bubbleChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/bulletChart.ts b/libs/sdk-code-convertors/src/configs/bulletChart.ts index f8fc93da7c1..58b9d3b8623 100644 --- a/libs/sdk-code-convertors/src/configs/bulletChart.ts +++ b/libs/sdk-code-convertors/src/configs/bulletChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/columnChart.ts b/libs/sdk-code-convertors/src/configs/columnChart.ts index 78281d61fe9..9c457f360d7 100644 --- a/libs/sdk-code-convertors/src/configs/columnChart.ts +++ b/libs/sdk-code-convertors/src/configs/columnChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/comboChart.ts b/libs/sdk-code-convertors/src/configs/comboChart.ts index fc134e4f2a7..be98f0819ab 100644 --- a/libs/sdk-code-convertors/src/configs/comboChart.ts +++ b/libs/sdk-code-convertors/src/configs/comboChart.ts @@ -4,6 +4,7 @@ import type { Bucket, Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; import { getFullBucket } from "../utils/sharedUtils.js"; + import { type ChartFillType, type ColorMapping, diff --git a/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts b/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts index 03ecce31884..570c5fd142b 100644 --- a/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts +++ b/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/donutChart.ts b/libs/sdk-code-convertors/src/configs/donutChart.ts index a497af3a67e..50414601ea9 100644 --- a/libs/sdk-code-convertors/src/configs/donutChart.ts +++ b/libs/sdk-code-convertors/src/configs/donutChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/funnelChart.ts b/libs/sdk-code-convertors/src/configs/funnelChart.ts index 0a9c5a96d35..b7aa44f4a5d 100644 --- a/libs/sdk-code-convertors/src/configs/funnelChart.ts +++ b/libs/sdk-code-convertors/src/configs/funnelChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/geoAreaChart.ts b/libs/sdk-code-convertors/src/configs/geoAreaChart.ts index 2f394482813..416e66b5d77 100644 --- a/libs/sdk-code-convertors/src/configs/geoAreaChart.ts +++ b/libs/sdk-code-convertors/src/configs/geoAreaChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/geoChart.ts b/libs/sdk-code-convertors/src/configs/geoChart.ts index 4c73bfe87d3..f4541bd70e1 100644 --- a/libs/sdk-code-convertors/src/configs/geoChart.ts +++ b/libs/sdk-code-convertors/src/configs/geoChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/headlineChart.ts b/libs/sdk-code-convertors/src/configs/headlineChart.ts index 7e449bcc475..829f05e41d3 100644 --- a/libs/sdk-code-convertors/src/configs/headlineChart.ts +++ b/libs/sdk-code-convertors/src/configs/headlineChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColor, saveColor } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/heatmapChart.ts b/libs/sdk-code-convertors/src/configs/heatmapChart.ts index 9b814581fd4..ae0bb86cc9b 100644 --- a/libs/sdk-code-convertors/src/configs/heatmapChart.ts +++ b/libs/sdk-code-convertors/src/configs/heatmapChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/lineChart.ts b/libs/sdk-code-convertors/src/configs/lineChart.ts index 9eee989e5eb..9b7864579b0 100644 --- a/libs/sdk-code-convertors/src/configs/lineChart.ts +++ b/libs/sdk-code-convertors/src/configs/lineChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping, type PointShapeSymbol } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/pieChart.ts b/libs/sdk-code-convertors/src/configs/pieChart.ts index 5d5251d2e66..aab9c143e19 100644 --- a/libs/sdk-code-convertors/src/configs/pieChart.ts +++ b/libs/sdk-code-convertors/src/configs/pieChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/pyramidChart.ts b/libs/sdk-code-convertors/src/configs/pyramidChart.ts index b08f53f777f..3ced301ced1 100644 --- a/libs/sdk-code-convertors/src/configs/pyramidChart.ts +++ b/libs/sdk-code-convertors/src/configs/pyramidChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/repeaterChart.ts b/libs/sdk-code-convertors/src/configs/repeaterChart.ts index fd744d4c45f..0a77802eeb1 100644 --- a/libs/sdk-code-convertors/src/configs/repeaterChart.ts +++ b/libs/sdk-code-convertors/src/configs/repeaterChart.ts @@ -9,6 +9,7 @@ import { saveColumnWidths, } from "../utils/configUtils.js"; import { getFullBucket } from "../utils/sharedUtils.js"; + import { type ColorMapping, type ColumnWidthItem } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/sankeyChart.ts b/libs/sdk-code-convertors/src/configs/sankeyChart.ts index 595a7155c86..db190729270 100644 --- a/libs/sdk-code-convertors/src/configs/sankeyChart.ts +++ b/libs/sdk-code-convertors/src/configs/sankeyChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/scatterChart.ts b/libs/sdk-code-convertors/src/configs/scatterChart.ts index c904092f41f..f4d741311cb 100644 --- a/libs/sdk-code-convertors/src/configs/scatterChart.ts +++ b/libs/sdk-code-convertors/src/configs/scatterChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/table.ts b/libs/sdk-code-convertors/src/configs/table.ts index e5539498d98..c139cd8efa1 100644 --- a/libs/sdk-code-convertors/src/configs/table.ts +++ b/libs/sdk-code-convertors/src/configs/table.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColumnsWidth, saveColumnWidths } from "../utils/configUtils.js"; + import { type ColumnLocator, type ColumnWidthItem } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/treemapChart.ts b/libs/sdk-code-convertors/src/configs/treemapChart.ts index e93644cd7cc..de5055892cc 100644 --- a/libs/sdk-code-convertors/src/configs/treemapChart.ts +++ b/libs/sdk-code-convertors/src/configs/treemapChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/waterfallChart.ts b/libs/sdk-code-convertors/src/configs/waterfallChart.ts index b6ec8bcf0a4..ad7fc58b97e 100644 --- a/libs/sdk-code-convertors/src/configs/waterfallChart.ts +++ b/libs/sdk-code-convertors/src/configs/waterfallChart.ts @@ -8,6 +8,7 @@ import { saveChartFill, saveColorDefinitions, } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/utils/configUtils.ts b/libs/sdk-code-convertors/src/utils/configUtils.ts index 77c700fcfc4..390a3cbe338 100644 --- a/libs/sdk-code-convertors/src/utils/configUtils.ts +++ b/libs/sdk-code-convertors/src/utils/configUtils.ts @@ -18,6 +18,7 @@ import { type IChartFill, } from "../configs/types.js"; import { getValueOrDefault } from "../configs/utils.js"; + import { type FullFields, getFullField } from "./sharedUtils.js"; import { isAttributeField, isMetricField } from "./typeGuards.js"; diff --git a/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts b/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts index 8da56500c0a..2e3d3e9d9b0 100644 --- a/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts +++ b/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts @@ -14,6 +14,7 @@ import type { } from "@gooddata/sdk-code-schemas/v1"; import { type ExportEntities } from "../types.js"; + import { mapDateAttribute, mapDateDataset } from "./dateUtils.js"; import { convertGranularity, convertGranularityToId } from "./granularityUtils.js"; import { mapLocationLabel } from "./locationUtils.js"; diff --git a/libs/sdk-code-convertors/src/utils/filterUtils.ts b/libs/sdk-code-convertors/src/utils/filterUtils.ts index 95854ed4e96..851a886005f 100644 --- a/libs/sdk-code-convertors/src/utils/filterUtils.ts +++ b/libs/sdk-code-convertors/src/utils/filterUtils.ts @@ -4,6 +4,7 @@ import type { DateDataset } from "@gooddata/sdk-code-schemas/v1"; import type { MatchFilterOperator } from "@gooddata/sdk-model"; import { type ExportEntities, type FromEntities } from "../types.js"; + import { convertGranularityToId, parseGranularityValue } from "./granularityUtils.js"; import type { TextFilterCondition } from "./typeGuards.js"; diff --git a/libs/sdk-code-convertors/src/utils/locationUtils.ts b/libs/sdk-code-convertors/src/utils/locationUtils.ts index 4274ddff582..2b5b2c13a12 100644 --- a/libs/sdk-code-convertors/src/utils/locationUtils.ts +++ b/libs/sdk-code-convertors/src/utils/locationUtils.ts @@ -5,6 +5,7 @@ import type { AttributeField, Dataset } from "@gooddata/sdk-code-schemas/v1"; import { type IAttribute } from "@gooddata/sdk-model"; import { type ExportEntities, type FromEntities } from "../types.js"; + import { isAttribute, parseReferenceObject } from "./typeGuards.js"; import { createIdentifier, getIdentifier } from "./yamlUtils.js"; diff --git a/libs/sdk-code-convertors/src/utils/yamlUtils.ts b/libs/sdk-code-convertors/src/utils/yamlUtils.ts index 07c3e6b3d50..2c7caddad9a 100644 --- a/libs/sdk-code-convertors/src/utils/yamlUtils.ts +++ b/libs/sdk-code-convertors/src/utils/yamlUtils.ts @@ -33,6 +33,7 @@ import { } from "@gooddata/sdk-model"; import { type Profile } from "../types.js"; + import { CoreErrorCode, type IErrorContext, newError, updateErrorContext } from "./errors.js"; import { parseGranularity } from "./granularityUtils.js"; import { TABLE_PATH_DELIMITER, getTableRootId } from "./sharedUtils.js"; diff --git a/libs/sdk-code-schemas/package.json b/libs/sdk-code-schemas/package.json index cc966669e24..f84fb517900 100644 --- a/libs/sdk-code-schemas/package.json +++ b/libs/sdk-code-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-schemas", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData AAC JSON Schema types and compiled schemas", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-e2e-utils/package.json b/libs/sdk-e2e-utils/package.json index 9041af830d8..b2bb59af696 100644 --- a/libs/sdk-e2e-utils/package.json +++ b/libs/sdk-e2e-utils/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-e2e-utils", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData utility functions for Playwright E2E tests", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-embedding/package.json b/libs/sdk-embedding/package.json index fe555026323..51803eb43b0 100644 --- a/libs/sdk-embedding/package.json +++ b/libs/sdk-embedding/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-embedding", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Embedding APIs", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-model/package.json b/libs/sdk-model/package.json index 2df24d0afbe..74ba85f1d8e 100644 --- a/libs/sdk-model/package.json +++ b/libs/sdk-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-model", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Model definitions used by UI components and Backend SPI", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-model/src/dashboard/alert.ts b/libs/sdk-model/src/dashboard/alert.ts index d80adc69801..3e967c5c4cc 100644 --- a/libs/sdk-model/src/dashboard/alert.ts +++ b/libs/sdk-model/src/dashboard/alert.ts @@ -3,6 +3,7 @@ import { isEmpty } from "lodash-es"; import { type ObjRef, isObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; import { type IFilterContext, diff --git a/libs/sdk-model/src/dashboard/analyticalWidgets.ts b/libs/sdk-model/src/dashboard/analyticalWidgets.ts index 36ce54d08ea..9b2fe818b1b 100644 --- a/libs/sdk-model/src/dashboard/analyticalWidgets.ts +++ b/libs/sdk-model/src/dashboard/analyticalWidgets.ts @@ -2,6 +2,7 @@ import { type VisualizationProperties } from "../insight/index.js"; import { type ObjRef } from "../objRef/index.js"; + import { type IBaseWidget, type IDrillableWidget, diff --git a/libs/sdk-model/src/dashboard/baseWidget.ts b/libs/sdk-model/src/dashboard/baseWidget.ts index eb39ccec0f5..1be4966e617 100644 --- a/libs/sdk-model/src/dashboard/baseWidget.ts +++ b/libs/sdk-model/src/dashboard/baseWidget.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ObjRef } from "../objRef/index.js"; + import { type DrillDefinition, type IDrillDownReference } from "./drill.js"; import { type IDashboardFilterReference } from "./filterContext.js"; diff --git a/libs/sdk-model/src/dashboard/dashboard.ts b/libs/sdk-model/src/dashboard/dashboard.ts index 7ccda272f74..f44d3243391 100644 --- a/libs/sdk-model/src/dashboard/dashboard.ts +++ b/libs/sdk-model/src/dashboard/dashboard.ts @@ -15,6 +15,7 @@ import { } from "../dateFilterConfig/index.js"; import { type IDataSetMetadataObject } from "../ldm/metadata/dataSet/index.js"; import { type Identifier, type ObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; import { type IFilterContext, diff --git a/libs/sdk-model/src/dashboard/filterContext.ts b/libs/sdk-model/src/dashboard/filterContext.ts index 50527ffd55c..612a276beaa 100644 --- a/libs/sdk-model/src/dashboard/filterContext.ts +++ b/libs/sdk-model/src/dashboard/filterContext.ts @@ -13,6 +13,7 @@ import { isAttributeElementsByRef, } from "../execution/filter/index.js"; import { type ObjRef, isObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; /** diff --git a/libs/sdk-model/src/dashboard/scheduledMail.ts b/libs/sdk-model/src/dashboard/scheduledMail.ts index b21bd535b04..f78abc84818 100644 --- a/libs/sdk-model/src/dashboard/scheduledMail.ts +++ b/libs/sdk-model/src/dashboard/scheduledMail.ts @@ -4,6 +4,7 @@ import { isEmpty } from "lodash-es"; import { type IAuditableUsers } from "../base/metadata.js"; import { type ObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; /** diff --git a/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts b/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts index 7bd245869aa..661833dbf9a 100644 --- a/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts +++ b/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts @@ -2,6 +2,7 @@ import { uriRef } from "../../objRef/factory.js"; import { type IWidgetAlert, type IWidgetAlertDefinition } from "../alert.js"; + import { filterContextDefinition } from "./filterContext.fixtures.js"; export const widgetAlert: IWidgetAlert = { diff --git a/libs/sdk-model/src/dashboard/test/alerts.test.ts b/libs/sdk-model/src/dashboard/test/alerts.test.ts index 506e15b2aba..658bd5d0c29 100644 --- a/libs/sdk-model/src/dashboard/test/alerts.test.ts +++ b/libs/sdk-model/src/dashboard/test/alerts.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isWidgetAlert, isWidgetAlertDefinition } from "../alert.js"; + import { widgetAlert, widgetAlertDefinitionToCreate, diff --git a/libs/sdk-model/src/dashboard/test/drills.test.ts b/libs/sdk-model/src/dashboard/test/drills.test.ts index 8bd6d0aa5a3..940e3e3a3c1 100644 --- a/libs/sdk-model/src/dashboard/test/drills.test.ts +++ b/libs/sdk-model/src/dashboard/test/drills.test.ts @@ -10,6 +10,7 @@ import { isDrillToInsight, isDrillToLegacyDashboard, } from "../drill.js"; + import { drillFromAttribute, drillFromMeasure, diff --git a/libs/sdk-model/src/dashboard/test/filterContext.test.ts b/libs/sdk-model/src/dashboard/test/filterContext.test.ts index 5f6126afeff..1720b9addf4 100644 --- a/libs/sdk-model/src/dashboard/test/filterContext.test.ts +++ b/libs/sdk-model/src/dashboard/test/filterContext.test.ts @@ -15,6 +15,7 @@ import { isFilterContextDefinition, isTempFilterContext, } from "../filterContext.js"; + import { dashboardAttributeFilter, dashboardAttributeFilterReference, diff --git a/libs/sdk-model/src/dashboard/test/kpi.test.ts b/libs/sdk-model/src/dashboard/test/kpi.test.ts index 8645afee762..52830a5e2d4 100644 --- a/libs/sdk-model/src/dashboard/test/kpi.test.ts +++ b/libs/sdk-model/src/dashboard/test/kpi.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isKpiWithComparison, isKpiWithoutComparison } from "../kpi.js"; + import { kpiWithComparison, kpiWithoutComparison } from "./kpi.fixtures.js"; describe("kpi type guards", () => { diff --git a/libs/sdk-model/src/dashboard/test/parameter.test.ts b/libs/sdk-model/src/dashboard/test/parameter.test.ts index efb5d8eae63..a16fb831187 100644 --- a/libs/sdk-model/src/dashboard/test/parameter.test.ts +++ b/libs/sdk-model/src/dashboard/test/parameter.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isDashboardParameter } from "../parameter.js"; + import { dashboardParameterFull, dashboardParameterMinimal } from "./parameter.fixtures.js"; describe("dashboard parameter type guards", () => { diff --git a/libs/sdk-model/src/dashboard/test/widgets.test.ts b/libs/sdk-model/src/dashboard/test/widgets.test.ts index fbbc6365b43..cb9a0206db6 100644 --- a/libs/sdk-model/src/dashboard/test/widgets.test.ts +++ b/libs/sdk-model/src/dashboard/test/widgets.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isWidget, isWidgetDefinition } from "../widget.js"; + import { widget, widgetDefinition } from "./widgets.fixtures.js"; describe("widget type guards", () => { diff --git a/libs/sdk-model/src/dashboard/widget.ts b/libs/sdk-model/src/dashboard/widget.ts index 18716c67d05..ae4faf18f5f 100644 --- a/libs/sdk-model/src/dashboard/widget.ts +++ b/libs/sdk-model/src/dashboard/widget.ts @@ -4,6 +4,7 @@ import { isEmpty } from "lodash-es"; import { invariant } from "ts-invariant"; import { type ObjRef, isObjRef } from "../objRef/index.js"; + import { type AnalyticalWidgetType, type IAnalyticalWidget, diff --git a/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts b/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts index 7ac79671589..7f75fe48a74 100644 --- a/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts +++ b/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts @@ -11,6 +11,7 @@ import { isRelativeDateFilterForm, isRelativeDateFilterPreset, } from "../index.js"; + import { absoluteDateFilterForm, absoluteDateFilterPreset, diff --git a/libs/sdk-model/src/execution/attribute/factory.ts b/libs/sdk-model/src/execution/attribute/factory.ts index 54695611dc9..ce6e3f46bea 100644 --- a/libs/sdk-model/src/execution/attribute/factory.ts +++ b/libs/sdk-model/src/execution/attribute/factory.ts @@ -6,6 +6,7 @@ import SparkMD5 from "spark-md5"; import { idRef } from "../../objRef/factory.js"; import { type Identifier, type ObjRef, isObjRef, objRefToString } from "../../objRef/index.js"; import { sanitizeLocalId } from "../../sanitizeLocalId.js"; + import { type IAttribute, isAttribute } from "./index.js"; /** diff --git a/libs/sdk-model/src/execution/base/dimension.ts b/libs/sdk-model/src/execution/base/dimension.ts index 2713418677e..40be49d6d2c 100644 --- a/libs/sdk-model/src/execution/base/dimension.ts +++ b/libs/sdk-model/src/execution/base/dimension.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { type Identifier } from "../../objRef/index.js"; import { type IAttribute, attributeLocalId, isAttribute } from "../attribute/index.js"; + import { type ITotal, isTotal } from "./totals.js"; /** diff --git a/libs/sdk-model/src/execution/buckets/bucketArray.ts b/libs/sdk-model/src/execution/buckets/bucketArray.ts index abc441805ad..7b743deeddb 100644 --- a/libs/sdk-model/src/execution/buckets/bucketArray.ts +++ b/libs/sdk-model/src/execution/buckets/bucketArray.ts @@ -17,6 +17,7 @@ import { idMatchMeasure, isMeasure, } from "../measure/index.js"; + import { type AttributeInBucket, type BucketItemModifications, diff --git a/libs/sdk-model/src/execution/buckets/bucketItem.ts b/libs/sdk-model/src/execution/buckets/bucketItem.ts index 18414167cbd..d6d6d88a089 100644 --- a/libs/sdk-model/src/execution/buckets/bucketItem.ts +++ b/libs/sdk-model/src/execution/buckets/bucketItem.ts @@ -4,6 +4,7 @@ import { InvariantError, invariant } from "ts-invariant"; import { attributeLocalId, isAttribute } from "../attribute/index.js"; import { isMeasure, measureLocalId } from "../measure/index.js"; + import { type IAttributeOrMeasure } from "./index.js"; /** diff --git a/libs/sdk-model/src/execution/executionDefinition/factory.ts b/libs/sdk-model/src/execution/executionDefinition/factory.ts index b314b44093d..c19f4a8b787 100644 --- a/libs/sdk-model/src/execution/executionDefinition/factory.ts +++ b/libs/sdk-model/src/execution/executionDefinition/factory.ts @@ -27,6 +27,7 @@ import { } from "../buckets/index.js"; import { type INullableFilter } from "../filter/index.js"; import { isMeasure } from "../measure/index.js"; + import { type DimensionGenerator, type IExecutionConfig, diff --git a/libs/sdk-model/src/execution/executionDefinition/index.ts b/libs/sdk-model/src/execution/executionDefinition/index.ts index 412b3e0f81e..ada4faf9ff2 100644 --- a/libs/sdk-model/src/execution/executionDefinition/index.ts +++ b/libs/sdk-model/src/execution/executionDefinition/index.ts @@ -16,6 +16,7 @@ import { type IFilter, type INullableFilter } from "../filter/index.js"; import { measureFingerprint } from "../measure/fingerprint.js"; import { type IMeasure } from "../measure/index.js"; import { type IInsightParameterValue } from "../parameter/index.js"; + import { attributeFingerprint, dataSamplingFingerprint, sortFingerprint } from "./fingerprints.js"; /** diff --git a/libs/sdk-model/src/execution/executionDefinition/validation.ts b/libs/sdk-model/src/execution/executionDefinition/validation.ts index 1051157a11a..f43d1ee5f09 100644 --- a/libs/sdk-model/src/execution/executionDefinition/validation.ts +++ b/libs/sdk-model/src/execution/executionDefinition/validation.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { attributeLocalId, isAttribute } from "../attribute/index.js"; import { measureLocalId } from "../measure/index.js"; + import { type IExecutionDefinition } from "./index.js"; /** diff --git a/libs/sdk-model/src/execution/filter/factory.ts b/libs/sdk-model/src/execution/filter/factory.ts index f63ee2e2188..766e63c4ea5 100644 --- a/libs/sdk-model/src/execution/filter/factory.ts +++ b/libs/sdk-model/src/execution/filter/factory.ts @@ -21,6 +21,7 @@ import { isAttribute, } from "../attribute/index.js"; import { type IMeasure, isMeasure, measureLocalId } from "../measure/index.js"; + import { type ComparisonConditionOperator, type EmptyValues, diff --git a/libs/sdk-model/src/execution/filter/filterMerge.ts b/libs/sdk-model/src/execution/filter/filterMerge.ts index 55d33a5334b..d3b8c54c52c 100644 --- a/libs/sdk-model/src/execution/filter/filterMerge.ts +++ b/libs/sdk-model/src/execution/filter/filterMerge.ts @@ -4,6 +4,7 @@ import { compact, groupBy } from "lodash-es"; import { invariant } from "ts-invariant"; import { objRefToString } from "../../objRef/index.js"; + import { type IAttributeFilter, type IDateFilter, diff --git a/libs/sdk-model/src/execution/measure/factory.ts b/libs/sdk-model/src/execution/measure/factory.ts index 111ce9f3752..ff6bf8e7b6b 100644 --- a/libs/sdk-model/src/execution/measure/factory.ts +++ b/libs/sdk-model/src/execution/measure/factory.ts @@ -8,6 +8,7 @@ import { idRef } from "../../objRef/factory.js"; import { type Identifier, type ObjRef, isObjRef, objRefToString } from "../../objRef/index.js"; import { sanitizeLocalId } from "../../sanitizeLocalId.js"; import { type IMeasureFilter } from "../filter/index.js"; + import { type ArithmeticMeasureOperator, type IArithmeticMeasureDefinition, diff --git a/libs/sdk-model/src/execution/measure/fingerprint.ts b/libs/sdk-model/src/execution/measure/fingerprint.ts index 0ad13bc1458..81b7bd78dc1 100644 --- a/libs/sdk-model/src/execution/measure/fingerprint.ts +++ b/libs/sdk-model/src/execution/measure/fingerprint.ts @@ -5,6 +5,7 @@ import { merge } from "lodash-es"; import { isFilterRelevantForFingerprinting } from "../filter/fingerprint.js"; import { type IMeasureFilter } from "../filter/index.js"; + import { type IMeasure, type IMeasureDefinition, isSimpleMeasure } from "./index.js"; type MeasureDefinitionPropsToDefault = Pick< diff --git a/libs/sdk-model/src/genAI/chat.ts b/libs/sdk-model/src/genAI/chat.ts index cf5f1906a3b..244c1e19a32 100644 --- a/libs/sdk-model/src/genAI/chat.ts +++ b/libs/sdk-model/src/genAI/chat.ts @@ -5,6 +5,7 @@ import type { IAttribute } from "../execution/attribute/index.js"; import type { IFilter } from "../execution/filter/index.js"; import type { IMeasure } from "../execution/measure/index.js"; import type { ObjRef } from "../objRef/index.js"; + import type { GenAIObjectType } from "./common.js"; import type { ISemanticSearchResult, ISemanticSearchResultItem } from "./semanticSearch.js"; diff --git a/libs/sdk-model/src/genAI/quality.ts b/libs/sdk-model/src/genAI/quality.ts index 245d994f4fa..72c7cd26153 100644 --- a/libs/sdk-model/src/genAI/quality.ts +++ b/libs/sdk-model/src/genAI/quality.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import type { Identifier } from "../objRef/index.js"; + import type { GenAIObjectType } from "./common.js"; /** diff --git a/libs/sdk-model/src/insight/comparators.ts b/libs/sdk-model/src/insight/comparators.ts index 06a96d0c5fd..46bafd4658b 100644 --- a/libs/sdk-model/src/insight/comparators.ts +++ b/libs/sdk-model/src/insight/comparators.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { stringComparatorFactory } from "../base/comparators.js"; + import { type IInsight, insightCreated, diff --git a/libs/sdk-model/src/insight/factory.ts b/libs/sdk-model/src/insight/factory.ts index 9218dd94dd3..bf88d95d6d2 100644 --- a/libs/sdk-model/src/insight/factory.ts +++ b/libs/sdk-model/src/insight/factory.ts @@ -3,6 +3,7 @@ import { type ISortItem } from "../execution/base/sort.js"; import { type IBucket } from "../execution/buckets/index.js"; import { type IFilter } from "../execution/filter/index.js"; + import { type IAttributeFilterConfigs, type IInsightDefinition, diff --git a/libs/sdk-model/src/insight/sanitization.ts b/libs/sdk-model/src/insight/sanitization.ts index 5bf7624ae97..bdba8ff7899 100644 --- a/libs/sdk-model/src/insight/sanitization.ts +++ b/libs/sdk-model/src/insight/sanitization.ts @@ -11,6 +11,7 @@ import { bucketSetTotals, bucketTotals, } from "../execution/buckets/index.js"; + import { type IInsightDefinition, insightAttributes, diff --git a/libs/sdk-model/src/ldm/catalog/index.ts b/libs/sdk-model/src/ldm/catalog/index.ts index 85f19e2bfbe..551d3d0a955 100644 --- a/libs/sdk-model/src/ldm/catalog/index.ts +++ b/libs/sdk-model/src/ldm/catalog/index.ts @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { type MetadataObject } from "../metadata/index.js"; + import { type ICatalogAttribute, isCatalogAttribute } from "./attribute/index.js"; import { type ICatalogAttributeHierarchy, isCatalogAttributeHierarchy } from "./attributeHierarchy/index.js"; import { type ICatalogDateDataset } from "./dateDataset/index.js"; diff --git a/libs/sdk-model/src/settings/index.ts b/libs/sdk-model/src/settings/index.ts index c227cc557b2..976aa615f0d 100644 --- a/libs/sdk-model/src/settings/index.ts +++ b/libs/sdk-model/src/settings/index.ts @@ -1,6 +1,7 @@ // (C) 2020-2026 GoodData Corporation import { type RemotePluggableApplicationsRegistry } from "../pluggableApplication/index.js"; + import { type IFeatureFlags, type IPermanentSettings } from "./settings.js"; /** diff --git a/libs/sdk-pluggable-application-model/package.json b/libs/sdk-pluggable-application-model/package.json index b46b7a5c11f..1407543ebd2 100644 --- a/libs/sdk-pluggable-application-model/package.json +++ b/libs/sdk-pluggable-application-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-pluggable-application-model", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK model contracts for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-all/package.json b/libs/sdk-ui-all/package.json index 1aa3824ca99..f208ce2561e 100644 --- a/libs/sdk-ui-all/package.json +++ b/libs/sdk-ui-all/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-all", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - All-In-One", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/libs/sdk-ui-catalog/package.json b/libs/sdk-ui-catalog/package.json index 505fe7d8eb8..6a20581d053 100644 --- a/libs/sdk-ui-catalog/package.json +++ b/libs/sdk-ui-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-catalog", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Analytics Catalog", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-catalog/src/catalog/Catalog.tsx b/libs/sdk-ui-catalog/src/catalog/Catalog.tsx index 1e300073e64..41d2e1e84d2 100644 --- a/libs/sdk-ui-catalog/src/catalog/Catalog.tsx +++ b/libs/sdk-ui-catalog/src/catalog/Catalog.tsx @@ -24,6 +24,7 @@ import { QualityScoreCard } from "../quality/QualityScoreCard.js"; import { FullTextSearchInput } from "../search/FullTextSearchInput.js"; import { CatalogTabs } from "../tabs/CatalogTabs.js"; import { useIsCatalogTrendingObjectsEnabled } from "../tabs/gate.js"; + import { Layout } from "./Layout.js"; type Props = { diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx index 56f091dcde3..522e2e3a2aa 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx @@ -8,6 +8,7 @@ import { Dropdown, type IUiMenuItem, UiButton, UiIconButton, UiMenu } from "@goo import { catalogDetailActionsTrigger } from "../automation/testIds.js"; import type { ICatalogItem } from "../catalogItem/types.js"; + import type { EditHandlerEvent, ICatalogDetailAction } from "./types.js"; const messages = defineMessages({ diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx index e3c0ebfb91f..d298bcc3b35 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx @@ -14,6 +14,7 @@ import type { ICatalogItem, ICatalogItemParameter, ICatalogItemRef } from "../ca import { ParameterCreateDialog } from "../parameter/ParameterCreateDialog.js"; import { ParameterDeleteDialog } from "../parameter/ParameterDeleteDialog.js"; import { ParameterEditDialog } from "../parameter/ParameterEditDialog.js"; + import { CatalogDetailActionBar } from "./CatalogDetailActionBar.js"; import type { ICatalogDetailAction, OpenHandlerEvent } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx index 1f316c4b023..2ee9c7afe62 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx @@ -17,6 +17,7 @@ import { type ObjectType } from "../objectType/types.js"; import { usePermissionsState } from "../permission/PermissionsContext.js"; import { useIsCatalogDescriptionGenerationEnabled, useIsCatalogQualityEnabled } from "../quality/gate.js"; import { useQualityIssuesById, useQualityReportState } from "../quality/QualityContext.js"; + import { CatalogDetailActions } from "./CatalogDetailActions.js"; import { CatalogDetailHeader, type ICatalogDetailHeaderRef } from "./CatalogDetailHeader.js"; import { CatalogDetailStatus } from "./CatalogDetailStatus.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx index 13260961fab..4fc7e89be4d 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx @@ -12,6 +12,7 @@ import { type ICatalogItem } from "../catalogItem/types.js"; import { CertificationIconMemo } from "../certification/CertificationIcon.js"; import { ObjectTypeIconMemo } from "../objectType/ObjectTypeIcon.js"; import { ObjectTypeTooltip } from "../objectType/ObjectTypeTooltip.js"; + import { CatalogDetailGenerateDescription } from "./CatalogDetailGenerateDescription.js"; import { CatalogDetailGenerateTitle } from "./CatalogDetailGenerateTitle.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx index 347db35b58a..981616bdc73 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, useIntl } from "react-intl"; import { Dropdown, DropdownButton, EditableLabel, UiDate, UiListbox } from "@gooddata/sdk-ui-kit"; import { type ICatalogItem } from "../catalogItem/types.js"; + import { CatalogDetailContentRow } from "./CatalogDetailContentRow.js"; const CERTIFICATION_STATUS = { diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx index 80c40e6d828..991eaa2e631 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx @@ -14,6 +14,7 @@ import { isCatalogItemMeasure, } from "../catalogItem/guards.js"; import { type ICatalogItem } from "../catalogItem/types.js"; + import { CatalogDetailContentRow } from "./CatalogDetailContentRow.js"; import { CatalogDetailGranularities } from "./CatalogDetailGranularities.js"; import { CatalogDetailMetricSettings } from "./CatalogDetailMetricSettings.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts b/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts index 8713ffadfdc..456b24f6c95 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts +++ b/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts @@ -18,6 +18,7 @@ import { } from "../../catalogItem/types.js"; import { useMounted } from "../../hooks/useMounted.js"; import { type ObjectType } from "../../objectType/types.js"; + import { useCatalogItemLoad } from "./useCatalogItemLoad.js"; export interface IUseCatalogItemUpdate { diff --git a/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx b/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx index 783e23364c2..100f374b034 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx +++ b/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx @@ -6,6 +6,7 @@ import type { IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { type AsyncStatus } from "../async/types.js"; import type { ObjectType } from "../objectType/types.js"; + import type { ICatalogItem, ICatalogItemRef } from "./types.js"; import { useCatalogItemFeed } from "./useCatalogItemFeed.js"; diff --git a/libs/sdk-ui-catalog/src/catalogItem/converter.ts b/libs/sdk-ui-catalog/src/catalogItem/converter.ts index 64e62ee521b..3940420aab4 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/converter.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/converter.ts @@ -25,6 +25,7 @@ import { import { mapObjectType } from "../objectType/mapping.js"; import { parseBackendDate } from "../utils/date.js"; + import type { ICatalogItem, ICatalogItemAttribute, diff --git a/libs/sdk-ui-catalog/src/catalogItem/query.ts b/libs/sdk-ui-catalog/src/catalogItem/query.ts index 1df73062b3f..48584c21574 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/query.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/query.ts @@ -7,6 +7,7 @@ import type { import { type IParameterMetadataObjectDefinition, type ObjRef, idRef } from "@gooddata/sdk-model"; import type { ObjectType } from "../objectType/types.js"; + import type { ICatalogItem, ICatalogItemAttribute, diff --git a/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts b/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts index 0c345677580..3058ae3d285 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts @@ -15,6 +15,7 @@ import type { IFeatureFlags, Identifier, ObjectOrigin } from "@gooddata/sdk-mode import { ObjectTypes } from "../objectType/constants.js"; import { type ObjectType } from "../objectType/types.js"; + import { getAttributesQuery, getDashboardsQuery, diff --git a/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts b/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts index 06235e3b55e..d56f48e8972 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts @@ -9,6 +9,7 @@ import { ObjectTypes } from "../objectType/constants.js"; import { type ObjectType } from "../objectType/types.js"; import { useFeatureFlags } from "../permission/PermissionsContext.js"; import { useFullTextSearchState } from "../search/FullTextSearchContext.js"; + import { convertEntityToCatalogItem } from "./converter.js"; import type { ICatalogItem, ICatalogItemFeedOptions, ICatalogItemRef } from "./types.js"; import { type FeedEndpoint, useCatalogEndpoints, useCatalogQueryOptions } from "./useCatalogEndpoints.js"; diff --git a/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx b/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx index 4dc4f0795f2..801d831bb82 100644 --- a/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx +++ b/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx @@ -7,6 +7,7 @@ import type { IntlShape } from "react-intl"; import { UiDate, UiIcon, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type ICatalogItem } from "../catalogItem/types.js"; + import { useIsCatalogCertificationEnabled } from "./gate.js"; type CertificationIconProps = ComponentProps<"div"> & { diff --git a/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx b/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx index 03f301c42d6..aa7ad3e5c8d 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx @@ -5,6 +5,7 @@ import { memo, useCallback, useMemo } from "react"; import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { filterCertification } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx b/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx index 2b10442b7c5..622049a1ead 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx @@ -10,6 +10,7 @@ import { useCancelablePromise } from "@gooddata/sdk-ui"; import { UiButton, UiSkeleton } from "@gooddata/sdk-ui-kit"; import { filterCreatedBy } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx b/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx index 58a1a636c53..bf1ddcf250a 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { useCatalogFeedCounter } from "../catalogItem/CatalogFeedContext.js"; import { ObjectTypeSelectMemo } from "../objectType/ObjectTypeSelect.js"; import { useIsParametersEnabled } from "../parameter/gate.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { FilterGroupLayout } from "./FilterGroupLayout.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx b/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx index 5f3e087636a..ab4b2e70207 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx @@ -9,6 +9,7 @@ import type { ObjectOrigin } from "@gooddata/sdk-model"; import { useCancelablePromise } from "@gooddata/sdk-ui"; import { filterOrigin } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx b/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx index 57bde0ad7c0..6df3061fb26 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx @@ -10,6 +10,7 @@ import { UiSkeleton } from "@gooddata/sdk-ui-kit"; import { filterQuality } from "../automation/testIds.js"; import { useQualityReportState } from "../quality/QualityContext.js"; import { getQualityIssueCodes } from "../quality/utils.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx b/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx index 2dfd895dc4e..cef5c158231 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { filterReset } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; export function FilterResetButton() { diff --git a/libs/sdk-ui-catalog/src/filter/FilterTags.tsx b/libs/sdk-ui-catalog/src/filter/FilterTags.tsx index 75e78bc2e69..bc455fe2045 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterTags.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterTags.tsx @@ -8,6 +8,7 @@ import { UiSkeleton } from "@gooddata/sdk-ui-kit"; import { filterTags } from "../automation/testIds.js"; import { useCatalogTags } from "../catalogResource/CatalogTagsContext.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx b/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx index a7397095a75..c09a12f4a0c 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx @@ -5,6 +5,7 @@ import { memo, useCallback, useMemo } from "react"; import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { filterVisibility } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/lineage/Lineage.tsx b/libs/sdk-ui-catalog/src/lineage/Lineage.tsx index 65bfd2ce97d..74be671325e 100644 --- a/libs/sdk-ui-catalog/src/lineage/Lineage.tsx +++ b/libs/sdk-ui-catalog/src/lineage/Lineage.tsx @@ -15,6 +15,7 @@ import { import { UiIconButton, UiTooltip, useElementSize } from "@gooddata/sdk-ui-kit"; import { type ICatalogItem, type ICatalogItemRef } from "../catalogItem/types.js"; + import { HIDDEN_ITEMS, LEAF_TYPES } from "./const.js"; import { useLineageGraph } from "./useLineageGraph.js"; diff --git a/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts b/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts index 4cb6546e560..b7aee77a74c 100644 --- a/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts +++ b/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts @@ -5,6 +5,7 @@ import * as joint from "@joint/core"; import { type IReferencesResult } from "@gooddata/sdk-backend-spi"; import { objRefToId, objRefToType } from "../utils.js"; + import { getIconData } from "./createIcon.js"; const BASE_HEIGHT = 24; diff --git a/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts b/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts index ca67c3cf273..2ccecaf90f8 100644 --- a/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts +++ b/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts @@ -8,6 +8,7 @@ import { type IReferencesResult } from "@gooddata/sdk-backend-spi"; import { type ObjectType } from "@gooddata/sdk-model"; import type { ICatalogItemRef } from "../catalogItem/types.js"; + import { applyLayout } from "./graph/applyLayout.js"; import { createEdge } from "./graph/createEdge.js"; import { createGraph } from "./graph/createGraph.js"; diff --git a/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts b/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts index c58adbff1a6..42f3d067897 100644 --- a/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts +++ b/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts @@ -4,6 +4,7 @@ import { act, renderHook } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import type { ICatalogItemParameter, ICatalogItemRef } from "../../catalogItem/types.js"; + import { useCatalogItemOpen } from "./useCatalogItemOpen.js"; const parameterRefA: ICatalogItemRef = { diff --git a/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx b/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx index 6ed0a67657f..b66defdc436 100644 --- a/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx +++ b/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx @@ -8,6 +8,7 @@ import type { IntlShape } from "react-intl"; import { type IconType, UiIcon } from "@gooddata/sdk-ui-kit"; import type { VisualizationType } from "../catalogItem/types.js"; + import { getObjectTypeLabel } from "./labels.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx b/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx index 0660d18cf69..a46693bc924 100644 --- a/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx +++ b/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx @@ -7,6 +7,7 @@ import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { type IconType, UiButtonSegmentedControl, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { objectType } from "../automation/testIds.js"; + import { OBJECT_TYPE_ORDER, ObjectTypes } from "./constants.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx b/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx index d0d838509d9..4037732505f 100644 --- a/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx +++ b/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx @@ -6,6 +6,7 @@ import { type IntlShape } from "react-intl"; import { UiTooltip } from "@gooddata/sdk-ui-kit"; import type { VisualizationType } from "../catalogItem/types.js"; + import { getObjectTypeLabel } from "./labels.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/objectType/labels.ts b/libs/sdk-ui-catalog/src/objectType/labels.ts index c8ccc127725..a2aeb509944 100644 --- a/libs/sdk-ui-catalog/src/objectType/labels.ts +++ b/libs/sdk-ui-catalog/src/objectType/labels.ts @@ -3,6 +3,7 @@ import { type IntlShape, type MessageDescriptor, defineMessages } from "react-intl"; import type { VisualizationType } from "../catalogItem/types.js"; + import { ObjectTypes } from "./constants.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx b/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx index e4b4bf34b2c..bca0a508bcb 100644 --- a/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx +++ b/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx @@ -8,6 +8,7 @@ import type { IParameterMetadataObjectDefinition } from "@gooddata/sdk-model"; import { useToastMessage } from "@gooddata/sdk-ui-kit"; import type { ICatalogItemParameter } from "../catalogItem/types.js"; + import { createCopiedParameter, isDuplicateIdError } from "./parameterCopy.js"; import type { ParameterDialogInitialParameter } from "./ParameterDialog.js"; import { useParameterMutation } from "./ParameterMutationContext.js"; diff --git a/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx b/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx index fb1b9e9c33e..2ee9b467e60 100644 --- a/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx +++ b/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, defineMessages, useIntl } from "react-intl"; import { ConfirmDialog, useToastMessage } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemParameter } from "../catalogItem/types.js"; + import { useParameterMutation } from "./ParameterMutationContext.js"; const messages = defineMessages({ diff --git a/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx b/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx index f025b129888..a63ec6f65ef 100644 --- a/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx +++ b/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx @@ -8,6 +8,7 @@ import type { IParameterMetadataObjectDefinition } from "@gooddata/sdk-model"; import { useToastMessage } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemParameter } from "../catalogItem/types.js"; + import { useParameterMutation } from "./ParameterMutationContext.js"; const ParameterDialog = lazy(() => diff --git a/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx b/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx index c5ec56e6c1f..c012cc1c6f7 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx +++ b/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx @@ -11,6 +11,7 @@ import { TestIntlProvider } from "../../localization/TestIntlProvider.js"; import { ParameterDeleteDialog } from "../ParameterDeleteDialog.js"; import { ParameterMutationProvider } from "../ParameterMutationContext.js"; import type { IParameterMutationPort } from "../parameterMutationPort.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; const parameterItem: ICatalogItemParameter = { diff --git a/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx b/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx index 7b937d6e4e8..f98e52e05bc 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx +++ b/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx @@ -12,6 +12,7 @@ import { TestIntlProvider } from "../../localization/TestIntlProvider.js"; import { ParameterEditDialog } from "../ParameterEditDialog.js"; import { ParameterMutationProvider } from "../ParameterMutationContext.js"; import type { IParameterMutationPort } from "../parameterMutationPort.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; // Mock SyntaxHighlightingInput (CodeMirror doesn't work in happy-dom) diff --git a/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx b/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx index 17d85654d3d..90184cf44e3 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx +++ b/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx @@ -8,6 +8,7 @@ import type { IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { BackendProvider, WorkspaceProvider } from "@gooddata/sdk-ui"; import { ParameterMutationProvider, useParameterMutation } from "../ParameterMutationContext.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; const fakeBackend = { diff --git a/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts b/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts index 7615658153c..e77e25ba66b 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts +++ b/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts @@ -7,6 +7,7 @@ import type { IParameterMetadataObject } from "@gooddata/sdk-model"; import type { ICatalogItemParameter } from "../../catalogItem/types.js"; import { createParameterMutationAdapter } from "../parameterMutationPort.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; const savedParameter: IParameterMetadataObject = { diff --git a/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx b/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx index 912dc776453..2e401a21e61 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx @@ -14,6 +14,7 @@ import { import { UiButton } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemRef } from "../catalogItem/types.js"; + import { QualityIssueObjects } from "./QualityIssueObjects.js"; import { QualitySeverityIcon } from "./QualitySeverityIcon.js"; diff --git a/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx b/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx index 079f50b4bce..db2cfd3602d 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx @@ -11,6 +11,7 @@ import { UiIcon, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemRef } from "../catalogItem/types.js"; import { mapObjectType } from "../objectType/mapping.js"; import { ObjectTypeIconMemo } from "../objectType/ObjectTypeIcon.js"; + import { QualityIssueObjectDetail } from "./QualityIssueObjectDetail.js"; type Props = { diff --git a/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx b/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx index 7fd4cd25342..9f4681a6a0b 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx @@ -5,6 +5,7 @@ import { useId } from "react"; import { useIntl } from "react-intl"; import { useFilterActions } from "../filter/FilterContext.js"; + import { useQualityActions, useQualityState } from "./QualityContext.js"; import { QualityScoreCardAction } from "./QualityScoreCardAction.js"; import { QualityScoreCardAnnouncements } from "./QualityScoreCardAnnouncements.js"; diff --git a/libs/sdk-ui-catalog/src/table/Table.tsx b/libs/sdk-ui-catalog/src/table/Table.tsx index 083873e6025..bc828db9227 100644 --- a/libs/sdk-ui-catalog/src/table/Table.tsx +++ b/libs/sdk-ui-catalog/src/table/Table.tsx @@ -18,6 +18,7 @@ import { import { type AsyncStatus } from "../async/types.js"; import type { ICatalogItem } from "../catalogItem/types.js"; import { useFullTextSearchState } from "../search/FullTextSearchContext.js"; + import { createdByColumn } from "./columns/CreatedByColumn.js"; import { updatedAtColumn } from "./columns/ModifiedColumn.js"; import { tagsColumn } from "./columns/TagsColumn.js"; diff --git a/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx b/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx index 47738a946f2..9cf60792d25 100644 --- a/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx +++ b/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import type { ICatalogItem } from "../catalogItem/types.js"; + import { CatalogItemCard } from "./CatalogItemCard.js"; type Props = { diff --git a/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx b/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx index 26e5aa786e2..f0ae38e5376 100644 --- a/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx +++ b/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx @@ -7,6 +7,7 @@ import { LoadingSpinner } from "@gooddata/sdk-ui-kit"; import type { ICatalogItem } from "../catalogItem/types.js"; import { QualityScoreCard } from "../quality/QualityScoreCard.js"; + import { CatalogItemCardGrid } from "./CatalogItemCardGrid.js"; import { useRecommendedItems } from "./useRecommendedItems.js"; import { useTrendingItems } from "./useTrendingItems.js"; diff --git a/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx b/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx index be77d1e8e66..44c7365cb06 100644 --- a/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx +++ b/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx @@ -8,6 +8,7 @@ import { type IUiTab, UiTabs } from "@gooddata/sdk-ui-kit"; import type { ICatalogItem } from "../catalogItem/types.js"; import { useIsCatalogQualityEnabled } from "../quality/gate.js"; + import { CatalogTabPanel } from "./CatalogTabPanel.js"; const DEFAULT_TAB_ID = "recommended"; diff --git a/libs/sdk-ui-charts/package.json b/libs/sdk-ui-charts/package.json index e78aedcbc0e..1c533509df6 100644 --- a/libs/sdk-ui-charts/package.json +++ b/libs/sdk-ui-charts/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-charts", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Charts", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx b/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx index 7b2367bac04..2939db5135b 100644 --- a/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx +++ b/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx @@ -16,6 +16,7 @@ import { import { type ICoreChartProps, type OnLegendReady } from "../../interfaces/chartProps.js"; import { withDefaultCoreChartProps } from "../_commons/defaultProps.js"; + import { type IRawChartProps, RawChart } from "./RawChart.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx b/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx index a33d6270c81..307b70acde8 100644 --- a/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx +++ b/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx @@ -26,6 +26,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreAreaChart } from "./CoreAreaChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx b/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx index 16760477187..05aef61566b 100644 --- a/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx +++ b/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx @@ -25,6 +25,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreBarChart } from "./CoreBarChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx b/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx index d700f1c19fe..b1b4d0d4406 100644 --- a/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx +++ b/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { pointyChartDimensions } from "../_commons/dimensions.js"; + import { CoreBubbleChart } from "./CoreBubbleChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx b/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx index 544407ef541..d00fe2c4b44 100644 --- a/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx +++ b/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx @@ -25,6 +25,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreBulletChart } from "./CoreBulletChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx b/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx index 544859e0a13..2aa62d7f52b 100644 --- a/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx +++ b/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx @@ -25,6 +25,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreColumnChart } from "./CoreColumnChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx b/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx index e06160bb842..a3e49dc1d77 100644 --- a/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx +++ b/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx @@ -25,6 +25,7 @@ import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { defaultDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; + import { CoreComboChart } from "./CoreComboChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx b/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx index 429bbb33135..a340784250c 100644 --- a/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx +++ b/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx @@ -18,6 +18,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { dependencyWheelDimensions } from "../_commons/dimensions.js"; + import { CoreDependencyWheelChart } from "./CoreDependencyWheelChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx b/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx index f2d5d2beb5c..6c48f8a7991 100644 --- a/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx +++ b/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx @@ -21,6 +21,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CoreDonutChart } from "./CoreDonutChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx b/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx index cb4f4086f0c..b1e7487591e 100644 --- a/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx +++ b/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CoreFunnelChart } from "./CoreFunnelChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx b/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx index ea9303879a3..7169cf2f290 100644 --- a/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx @@ -13,6 +13,7 @@ import { import { type ICoreChartProps } from "../../interfaces/chartProps.js"; import { withDefaultCoreChartProps } from "../_commons/defaultProps.js"; + import { type IHeadlineTransformationProps } from "./HeadlineProvider.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/headline/Headline.tsx b/libs/sdk-ui-charts/src/charts/headline/Headline.tsx index 2fc374807b4..f1dc3cb6a77 100644 --- a/libs/sdk-ui-charts/src/charts/headline/Headline.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/Headline.tsx @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-ui"; import { type IBucketChartProps, type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { CoreHeadline, type ICoreHeadlineExtendedProps } from "./CoreHeadline.js"; import { type IHeadlineProvider } from "./HeadlineProvider.js"; import { createHeadlineProvider } from "./HeadlineProviderFactory.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts b/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts index 614b2a8246a..41456dfc16c 100644 --- a/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts +++ b/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts @@ -7,6 +7,7 @@ import { BucketNames } from "@gooddata/sdk-ui"; import { type IChartConfig } from "../../interfaces/chartConfig.js"; import { type IComparison } from "../../interfaces/comparison.js"; + import { type IHeadlineProvider } from "./HeadlineProvider.js"; import { ComparisonProvider } from "./internal/providers/ComparisonProvider.js"; import { MultiMeasuresProvider } from "./internal/providers/MultiMeasuresProvider.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx index de42a266422..7dd316c3b7a 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx @@ -11,6 +11,7 @@ import { type IChartConfig } from "../../../../../interfaces/chartConfig.js"; import { type IBaseHeadlineData } from "../../interfaces/BaseHeadlines.js"; import { type HeadlineFiredDrillEvent } from "../../interfaces/DrillEvents.js"; import { type IHeadlineDataItem } from "../../interfaces/Headlines.js"; + import { BaseHeadlineContext } from "./BaseHeadlineContext.js"; import { CompareSection } from "./CompareSection.js"; import { PrimarySection } from "./PrimarySection.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx index 16247f36c20..b2f3d721d38 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { HeadlinePagination } from "@gooddata/sdk-ui-vis-commons"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../interfaces/BaseHeadlines.js"; + import { usePagination } from "./baseHeadlineDataItems/useOutOfBoundsDetection.js"; import { CompareSectionItem } from "./CompareSectionItem.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx index 82d502725dc..05be3106986 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx @@ -1,6 +1,7 @@ // (C) 2023-2026 GoodData Corporation import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../interfaces/BaseHeadlines.js"; + import { useBaseHeadline } from "./BaseHeadlineContext.js"; import { PrimarySectionCompactContent } from "./PrimarySectionCompactContent.js"; import { PrimarySectionContent } from "./PrimarySectionContent.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx index 71c348c9f2d..f87bacec908 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx @@ -5,6 +5,7 @@ import { type CSSProperties, useMemo } from "react"; import { calculateHeadlineHeightFontSize } from "@gooddata/sdk-ui-vis-commons"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../interfaces/BaseHeadlines.js"; + import { useBaseHeadline } from "./BaseHeadlineContext.js"; import { PrimarySectionContent } from "./PrimarySectionContent.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx index 42c7dc23e45..42a8eda677a 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx @@ -7,6 +7,7 @@ import { ResponsiveText } from "@gooddata/sdk-ui-kit"; import { type IBaseHeadlineDataItemProps } from "../../../interfaces/BaseHeadlines.js"; import { type IHeadlineDataItem } from "../../../interfaces/Headlines.js"; import { useBaseHeadline } from "../BaseHeadlineContext.js"; + import { useBaseHeadlineDataItem } from "./useBaseHeadlineDataItem.js"; import { useOutOfBoundsDetection } from "./useOutOfBoundsDetection.js"; import { withDrillable } from "./withDrillable.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx index f5a40437e41..56d85f045ff 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx @@ -10,6 +10,7 @@ import { } from "../../../../interfaces/BaseHeadlines.js"; import { useOutOfBoundsDetection } from "../useOutOfBoundsDetection.js"; import { withTitle } from "../withTitle.js"; + import { ComparisonValue } from "./ComparisonValue.js"; import { useComparisonDataItem } from "./useComparisonDataItem.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx index cef1bfb2f14..1222ddc99d9 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx @@ -10,6 +10,7 @@ import { } from "../../../../interfaces/BaseHeadlines.js"; import { useOutOfBoundsDetection } from "../useOutOfBoundsDetection.js"; import { withTitle } from "../withTitle.js"; + import { ComparisonValue } from "./ComparisonValue.js"; import { useComparisonDataItem } from "./useComparisonDataItem.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts index 20b0d4b623c..2e60e89abf8 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts @@ -14,6 +14,7 @@ import { import { getComparisonColor } from "../../../../utils/ComparisonDataItemUtils.js"; import { formatItemValue } from "../../../../utils/HeadlineDataItemUtils.js"; import { useBaseHeadline } from "../../BaseHeadlineContext.js"; + import { ComparisonIndicators, getComparisonAriaLabelMessage } from "./ComparisonIndicator.js"; function createComparisonAriaLabelFactory( diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx index 16f04fb4556..b2522e72157 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx @@ -13,6 +13,7 @@ import { } from "../../../tests/TestData.fixtures.js"; import { CompareSection } from "../CompareSection.js"; import { CompareSectionItem } from "../CompareSectionItem.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx index 9f04e5901cd..408d58eff57 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx @@ -8,6 +8,7 @@ import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../../interfaces/BaseHeadlines.js"; import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { CompareSectionItem } from "../CompareSectionItem.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx index 9c96da444b7..4f091c69a2a 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx @@ -7,6 +7,7 @@ import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { PrimarySection } from "../PrimarySection.js"; import { PrimarySectionCompactContent } from "../PrimarySectionCompactContent.js"; import { PrimarySectionContent } from "../PrimarySectionContent.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx index dcf846c591b..45a88e0573c 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx @@ -6,6 +6,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { PrimarySectionCompactContent } from "../PrimarySectionCompactContent.js"; import { PrimarySectionContent } from "../PrimarySectionContent.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx index af8578964fa..7e2fe33ed62 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx @@ -6,6 +6,7 @@ import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../../interfaces/BaseHeadlines.js"; import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { PrimarySectionContent } from "../PrimarySectionContent.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts b/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts index 29c1f0c8214..e4aae9f0577 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts @@ -7,6 +7,7 @@ import { isEmpty } from "lodash-es"; import { type HeadlineElementType } from "@gooddata/sdk-ui"; import { type IComparison } from "../../../../interfaces/comparison.js"; + import { type IHeadlineDataItem } from "./Headlines.js"; export const COMPARISON_DEFAULT_OBJECT: IComparison = { diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts b/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts index d61000b7c59..b6fd81a25d4 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts @@ -20,6 +20,7 @@ import { CalculateAs, type IComparison } from "../../../../interfaces/comparison import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { COMPARISON_DEFAULT_OBJECT } from "../interfaces/BaseHeadlines.js"; import { ComparisonTransformation } from "../transformations/ComparisonTransformation.js"; + import { AbstractProvider } from "./AbstractProvider.js"; const ARITHMETIC_BUCKET_IDENTIFIER = "comparison_virtual_arithmetic_bucket"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts b/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts index fca49aed9a6..47f05b6cdff 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts @@ -4,6 +4,7 @@ import { type ComponentType } from "react"; import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { MultiMeasuresTransformation } from "../transformations/MultiMeasuresTransformation.js"; + import { AbstractProvider } from "./AbstractProvider.js"; export class MultiMeasuresProvider extends AbstractProvider { diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts b/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts index ae3ee975417..1e9a6682c3e 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { CalculateAs, type CalculationType, type IComparison } from "../../../../../interfaces/comparison.js"; import { ComparisonProvider } from "../ComparisonProvider.js"; + import { TEST_BUCKETS, TEST_DATE_FORMAT, diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx index b09b4c0d4b7..0bfcbb3c125 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx @@ -9,6 +9,7 @@ import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { BaseHeadline } from "../headlines/baseHeadline/BaseHeadline.js"; import { COMPARISON_DEFAULT_OBJECT } from "../interfaces/BaseHeadlines.js"; import { getComparisonBaseHeadlineData } from "../utils/ComparisonTransformationUtils.js"; + import { useFireDrillEvent } from "./useFiredDrillEvent.js"; export function ComparisonTransformation({ diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx index 3d3db61b746..6928d25b339 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx @@ -5,6 +5,7 @@ import { useMemo } from "react"; import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { BaseHeadline } from "../headlines/baseHeadline/BaseHeadline.js"; import { getBaseHeadlineData } from "../utils/BaseHeadlineTransformationUtils.js"; + import { useFireDrillEvent } from "./useFiredDrillEvent.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts b/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts index 3a9d6a25165..c0c81871f38 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts @@ -17,6 +17,7 @@ import { type IBaseHeadlineItem, } from "../interfaces/BaseHeadlines.js"; import { type IHeadlineDataItem } from "../interfaces/Headlines.js"; + import { type IHeadlineExecutionData, createHeadlineDataItem, diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts b/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts index fc8fc26d9c9..8bd868d2303 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts @@ -35,6 +35,7 @@ import { type ComparisonDataItem as IComparisonDataItemType, type IComparisonDataWithSubItem, } from "../interfaces/BaseHeadlines.js"; + import { createBaseHeadlineItem } from "./BaseHeadlineTransformationUtils.js"; import { type IHeadlineExecutionData, getExecutionData } from "./HeadlineTransformationUtils.js"; diff --git a/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx b/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx index d6db276e33a..517bb4f5508 100644 --- a/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx +++ b/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx @@ -24,6 +24,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { heatmapDimensions } from "../_commons/dimensions.js"; + import { CoreHeatmap } from "./CoreHeatmap.js"; // diff --git a/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx b/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx index e44d902e5ab..8d3af0477c8 100644 --- a/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx +++ b/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx @@ -22,6 +22,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; + import { CoreLineChart } from "./CoreLineChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx b/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx index d13f966b2d7..f65fe79737c 100644 --- a/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx +++ b/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CorePieChart } from "./CorePieChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx b/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx index d4ad94182c3..f90bdad83d5 100644 --- a/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx +++ b/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CorePyramidChart } from "./CorePyramidChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx b/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx index 6cb1fea9ea9..394f1fcf5f2 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx @@ -22,6 +22,7 @@ import { ColorFactory } from "../../highcharts/chartTypes/_chartOptions/colorFac import { getValidColorPalette } from "../../highcharts/chartTypes/_util/color.js"; import { type IChartConfig } from "../../interfaces/chartConfig.js"; import { type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { getWindowSize } from "./internal/repeaterAgGridDataSource.js"; import { RepeaterChart } from "./internal/RepeaterChart.js"; import type { RepeaterColumnResizedCallback } from "./publicTypes.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx b/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx index 47281c49524..e7ea5e876ac 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx @@ -23,6 +23,7 @@ import { } from "@gooddata/sdk-ui"; import { type IBucketChartProps, type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { CoreRepeater } from "./CoreRepeater.js"; import { constructRepeaterBuckets, constructRepeaterDimensions } from "./internal/repeaterExecution.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx index 3202547eac3..9d0ab39c7b9 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx @@ -6,6 +6,7 @@ import Highcharts from "highcharts/esm/highcharts.js"; import { type IResultAttributeHeaderItem } from "@gooddata/sdk-model"; import { type HighchartsOptions } from "../../../highcharts/lib/index.js"; + import { type RepeaterInlineVisualizationDataPoint } from "./dataViewToRepeaterData.js"; import { getTooltipHtml } from "./highcharts.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx index 8ec913e5753..25664fe6f65 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx @@ -6,6 +6,7 @@ import Highcharts from "highcharts/esm/highcharts.js"; import { type IResultAttributeHeaderItem } from "@gooddata/sdk-model"; import { type HighchartsOptions } from "../../../highcharts/lib/index.js"; + import { type RepeaterInlineVisualizationDataPoint } from "./dataViewToRepeaterData.js"; import { getTooltipHtml } from "./highcharts.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx index e55613234fc..995c0840b9e 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx @@ -43,6 +43,7 @@ import { useFocusMng } from "../hooks/useFocusMng.js"; import { useRenderWatcher } from "../hooks/useRenderWatcher.js"; import { MANUALLY_SIZED_MIN_WIDTH, useResizing } from "../hooks/useResizing.js"; import { type IRepeaterChartProps } from "../publicTypes.js"; + import { type RepeaterInlineVisualizationDataPoint } from "./dataViewToRepeaterData.js"; import { InlineColumnChart } from "./InlineColumnChart.js"; import { InlineLineChart } from "./InlineLineChart.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts b/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts index 8983318625a..aa72cefc9cd 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts @@ -17,6 +17,7 @@ import { type RepeaterColumnWidth, type RepeaterColumnWidthItem, } from "../columnWidths.js"; + import { type ResizingState } from "./privateTypes.js"; export function getColumnWidths(resizingState: ResizingState): RepeaterColumnWidthItem[] { diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx index 33fe1fdd3cd..5c07be98180 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx @@ -5,6 +5,7 @@ import { type GridApi, type IDatasource, type IGetRowsParams } from "ag-grid-com import { DataViewFacade, type GoodDataSdkError, convertDataWindowError } from "@gooddata/sdk-ui"; import { type IRepeaterChartConfig } from "../publicTypes.js"; + import { dataViewToRepeaterData } from "./dataViewToRepeaterData.js"; const MAX_COLUMNS = 1000; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts b/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts index 744f16c956d..e29323d79c0 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts @@ -3,6 +3,7 @@ import { type RefObject } from "react"; import { scheduleAnimationFrame } from "../../_base/animationFrameScheduler.js"; + import { getManualResizedColumn } from "./columnSizing.js"; import { type ColumnResizingConfig, type ResizingState } from "./privateTypes.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts b/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts index 0b8e2d0d271..bcf4f383df2 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts +++ b/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts @@ -3,6 +3,7 @@ import { type DataViewFacade, type ExplicitDrill, type OnFiredDrillEvent } from "@gooddata/sdk-ui"; import { type IChartConfig } from "../../interfaces/chartConfig.js"; + import { type RepeaterColumnWidthItem } from "./columnWidths.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx b/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx index b40ee97a6b6..f05daa55b43 100644 --- a/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx +++ b/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx @@ -18,6 +18,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { sankeyDimensions } from "../_commons/dimensions.js"; + import { CoreSankeyChart } from "./CoreSankeyChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx b/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx index 1c762b0969e..61c3cf483fc 100644 --- a/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx +++ b/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { pointyChartDimensions } from "../_commons/dimensions.js"; + import { CoreScatterPlot } from "./CoreScatterPlot.js"; // diff --git a/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx b/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx index ca087e28f12..8036a51d223 100644 --- a/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx +++ b/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx @@ -25,6 +25,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { treemapDimensions } from "../_commons/dimensions.js"; + import { CoreTreemap } from "./CoreTreemap.js"; // diff --git a/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx b/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx index 63808f42ca6..e015fca0dc5 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx +++ b/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx @@ -13,6 +13,7 @@ import { import { type ICoreChartProps } from "../../interfaces/chartProps.js"; import { withDefaultCoreChartProps } from "../_commons/defaultProps.js"; + import { XirrTransformation } from "./internal/XirrTransformation.js"; type Props = ICoreChartProps & ILoadingInjectedProps; diff --git a/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx b/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx index 5c55213b944..c46d885b445 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx +++ b/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx @@ -26,6 +26,7 @@ import { } from "@gooddata/sdk-ui"; import { type IBucketChartProps, type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { CoreXirr } from "./CoreXirr.js"; // diff --git a/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx b/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx index d5b1f78374b..6351705101a 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx +++ b/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx @@ -16,6 +16,7 @@ import { type HeadlineFiredDrillEvent, type IHeadlineFiredDrillEventItemContext, } from "../../headline/internal/interfaces/DrillEvents.js"; + import { applyDrillableItems, buildDrillEventData, diff --git a/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts b/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts index 470936932d8..3d82d3b7adf 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts +++ b/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts @@ -18,6 +18,7 @@ import { } from "@gooddata/sdk-ui"; import { type IHeadlineData } from "../../../headline/internal/interfaces/Headlines.js"; + import { calculateXirr } from "./calculateXirr.js"; export interface IXirrExecutionData { diff --git a/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx b/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx index 56a99282f54..100cc5953b1 100644 --- a/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx +++ b/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx @@ -24,6 +24,7 @@ import { type ILegendOptions } from "@gooddata/sdk-ui-vis-commons"; import { type IChartConfig } from "../interfaces/chartConfig.js"; import { type OnLegendReady } from "../interfaces/chartProps.js"; + import { initChartPlugins } from "./adapter/chartPlugins.js"; import { HighChartsMeasuredRenderer } from "./adapter/HighChartsMeasuredRenderer.js"; import { diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx b/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx index f4f6ee3ec12..256d17c7f04 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx +++ b/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-ui"; import { type HChart, type HighchartsOptions } from "../lib/index.js"; + import { initChartPlugins } from "./chartPlugins.js"; import "highcharts/esm/highcharts-more.js"; import "highcharts/esm/modules/drilldown.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx b/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx index 54b1605cc00..1265cc5910a 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx +++ b/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx @@ -44,6 +44,7 @@ import { import { type HChart, type HighchartsOptions, type XAxisOptions, type YAxisOptions } from "../lib/index.js"; import { BOTTOM, LEFT, RIGHT, TOP } from "../typings/mess.js"; import { type IChartOptions, type ISeriesDataItem, type ISeriesItem } from "../typings/unsafe.js"; + import { Chart, type IChartProps } from "./Chart.js"; import { coalesceNulls, skipLeadingZeros } from "./dataSanitizers.js"; import { mergePropertiesWithOverride } from "./propertyMerger.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts b/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts index 1e8a8f91f56..662120f2c89 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts +++ b/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts @@ -28,6 +28,7 @@ import { } from "../chartTypes/_util/common.js"; import { type ChartType } from "../typings/chartType.js"; import { type IChartOptions, type ISeriesItem, type ISeriesNodeItem } from "../typings/unsafe.js"; + import { createDualAxesSeriesMapper, createWaterfallLegendItems, diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts index b266a6f8cee..bf36104397a 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts +++ b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts @@ -28,6 +28,7 @@ import { toNeighbors, } from "../../../chartTypes/_chartCreators/helpers.js"; import { type Axis } from "../../../lib/index.js"; + import { areLabelsOverlappingColumns, getStackItems, getStackTotalGroups } from "./autohideColumnLabels.js"; const toggleStackedChartLabels = ( diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts index eba3a128649..10415c21ad1 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts +++ b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts @@ -9,6 +9,7 @@ import { minimizeDataLabel, } from "../../../chartTypes/_chartCreators/dataLabelsHelpers.js"; import { getChartType } from "../../../chartTypes/_chartCreators/helpers.js"; + import { autohideBarLabels, autohideBarTotalLabels, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts index 71da6b0eb47..12e65f47425 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts @@ -12,6 +12,7 @@ import { recordedDataFacade } from "../../../../../testUtils/recordings.js"; import { ColorFactory } from "../../_chartOptions/colorFactory.js"; import { getMVS } from "../../_util/test/helper.js"; import { MeasureColorStrategy } from "../measure.js"; + import { TwoColorPalette } from "./color.fixture.js"; import { getColorsFromStrategy } from "./helper.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts index 76e672377b1..5376eff67cb 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts @@ -20,6 +20,7 @@ import { type IChartOptions } from "../../typings/unsafe.js"; import { isHighContrastMode } from "../../utils/highContrastMode.js"; import { supportedDualAxesChartTypes } from "../_chartOptions/chartCapabilities.js"; import { isOneOfTypes } from "../_util/common.js"; + import { chartClick } from "./drilldownEventing.js"; import { setupDrilldown } from "./setupDrilldownToParentAttribute.js"; import { styleVariables } from "./styles/variables.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts index 3914c279fe4..bea0f00d00a 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts @@ -53,6 +53,7 @@ import { percentFormatter, } from "../_util/common.js"; import { canComboChartBeStackedInPercent } from "../comboChart/comboChartOptions.js"; + import { HOVER_BRIGHTNESS, MINIMUM_HC_SAFE_BRIGHTNESS } from "./commonConfiguration.js"; import { type IIdentifierMapping } from "./customTooltip/identifierMapping.js"; import { resolveReferencesFromPoint } from "./customTooltip/referenceResolver.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts index dae95c7766e..b00218401ed 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts @@ -14,6 +14,7 @@ import { type IDrillEventIntersectionElement, isDrillIntersectionAttributeItem } import { type IResolvedReferenceValues } from "@gooddata/sdk-ui-vis-commons"; import { type IUnsafeHighchartsTooltipPoint } from "../../../typings/unsafe.js"; + import { type IIdentifierMapping } from "./identifierMapping.js"; /** diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts index c1646f2634c..17ab57c62da 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts @@ -14,6 +14,7 @@ import { import { type StackingType } from "../../constants/stacking.js"; import { type DataLabelsOptions } from "../../lib/index.js"; import { isAreaChart, isBarChart, isColumnChart, isDependencyWheel, isOneOfTypes } from "../_util/common.js"; + import { type IAxisRange, type IAxisRangeForAxes, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts index 243743a35d4..168f7f236e5 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts @@ -20,6 +20,7 @@ import { import { type DrilldownEventObject } from "../../lib/index.js"; import { isBulletChart, isComboChart, isHeatmap, isTreemap } from "../_util/common.js"; + import { type IHighchartsPointObject, isGroupHighchartsDrillEvent } from "./isGroupHighchartsDrillEvent.js"; export function getClickableElementNameByChartType(type: VisType): ChartElementType { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts index 0f99be88c9d..842874238dd 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts @@ -24,6 +24,7 @@ import { isLineChart, } from "../_util/common.js"; import { canComboChartBeStackedInPercent } from "../comboChart/comboChartOptions.js"; + import { formatAsPercent, getLabelStyle, getTotalsVisibilityConfig } from "./dataLabelsHelpers.js"; import { isPrimaryYAxis } from "./isPrimaryYAxis.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts index 86820da2d14..481a52cf2ac 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts @@ -28,6 +28,7 @@ import { getSankeyConfiguration } from "../sankeyChart/sankeyConfiguration.js"; import { getScatterConfiguration } from "../scatterPlot/scatterConfiguration.js"; import { getTreemapConfiguration } from "../treemap/treemapConfiguration.js"; import { getWaterfallConfiguration } from "../waterfallChart/waterfallConfiguration.js"; + import { getCommonConfiguration } from "./commonConfiguration.js"; import { getCustomizedConfiguration } from "./customConfiguration.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts index f6c1c9b6e54..669a91699c5 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts @@ -17,6 +17,7 @@ import { isSupportingJoinedAttributeAxisName, unwrap, } from "../_util/common.js"; + import { supportedDualAxesChartTypes } from "./chartCapabilities.js"; function preprocessMeasureGroupItems( diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts index 898c820fe43..dfb96dae2bf 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts @@ -16,6 +16,7 @@ import { type IUnwrappedAttributeHeadersWithItems } from "../../typings/mess.js" import { type IPointData, type ISeriesDataItem } from "../../typings/unsafe.js"; import { isBubbleChart, isHeatmap, isOneOfTypes, isScatterPlot, isTreemap, unwrap } from "../_util/common.js"; import { findMeasureGroupInDimensions } from "../_util/executionResultHelper.js"; + import { multiMeasuresAlternatingTypes } from "./chartCapabilities.js"; function getViewBy( diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts index 95683e7fb7e..79b0ba3f923 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts @@ -24,6 +24,7 @@ import { type ChartType } from "../../typings/chartType.js"; import { type IChartOptions, type ISeriesDataItem, type ISeriesItem } from "../../typings/unsafe.js"; import { isDataOfReasonableSize } from "../_chartCreators/highChartsCreators.js"; import { isOneOfTypes, isTreemap } from "../_util/common.js"; + import { unsupportedNegativeValuesTypes } from "./chartCapabilities.js"; export interface IValidationResult { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts index cdd2f21c072..605ba236959 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts @@ -53,6 +53,7 @@ import { getColorAssignment, getWaterfallChartCategories, } from "../waterfallChart/waterfallChartOptions.js"; + import { assignYAxes, getXAxes, getYAxes } from "./chartAxes.js"; import { multiMeasuresAlternatingTypes, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts index 73e5fe610d5..70138552688 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts @@ -31,6 +31,7 @@ import { buildSankeyChartSeries } from "../sankeyChart/sankeyChartOptions.js"; import { getScatterPlotSeries } from "../scatterPlot/scatterPlotSeries.js"; import { getTreemapStackedSeries } from "../treemap/treemapChartSeries.js"; import { getWaterfallChartSeries } from "../waterfallChart/waterfallChartsSeries.js"; + import { multiMeasuresAlternatingTypes } from "./chartCapabilities.js"; import { getChartFillProperties, getColorOrPatternFillIndex, isSolidFill } from "./patternFillOptions.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts index 85ded9019ce..e53d2a0326e 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts @@ -21,6 +21,7 @@ import { isTreemap, unwrap, } from "../_util/common.js"; + import { multiMeasuresAlternatingTypes } from "./chartCapabilities.js"; import { formatValueForTooltip, getFormattedValueForTooltip } from "./tooltip.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts index 05e10114e55..0f49fa9b969 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts @@ -26,6 +26,7 @@ import { import { DEFAULT_BULLET_GRAY_COLOR } from "../_util/color.js"; import { findMeasureGroupInDimensions } from "../_util/executionResultHelper.js"; + import { getOccupiedMeasureBucketsLocalIdentifiers, isComparativeSeries, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts index 0cca0a47516..4d30c68c84f 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts @@ -9,6 +9,7 @@ import { ColorFactory } from "../../_chartOptions/colorFactory.js"; import { CUSTOM_COLOR_PALETTE } from "../../_util/test/colorPalette.fixture.js"; import { getMVSForViewByTwoAttributes } from "../../_util/test/helper.js"; import { SankeyChartColorStrategy } from "../sankeyChartColoring.js"; + import { CHART_TYPE, COLOR_MAPPINGS, RECORDS_WITHOUT_EMPTY_ATTRIBUTE } from "./sankeyChart.fixture.js"; describe("SankeyChartColorStrategy", () => { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts index 8572f8f1115..2924615729b 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts @@ -9,6 +9,7 @@ import { ColorFactory } from "../../_chartOptions/colorFactory.js"; import { CUSTOM_COLOR_PALETTE } from "../../_util/test/colorPalette.fixture.js"; import { getMVSForViewByTwoAttributes } from "../../_util/test/helper.js"; import { buildSankeyChartSeries } from "../sankeyChartOptions.js"; + import { CHART_TYPE, COLOR_MAPPINGS, EMPTY_HEADER_TITLE_VALUE, RECORDS } from "./sankeyChart.fixture.js"; describe("SankeyChart buildSankeyChartSeries", () => { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts index 6abe757233b..acc31a7a7f0 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts @@ -9,6 +9,7 @@ import { type ScenarioRecording } from "@gooddata/sdk-backend-mockingbird"; import { recordedDataFacade } from "../../../../../testUtils/recordings.js"; import { generateTooltipSankeyChartFn } from "../../_chartOptions/chartTooltips.js"; import { getMVSForViewByTwoAttributes } from "../../_util/test/helper.js"; + import { DEFAULT_TOOLTIP_CONTENT_WIDTH } from "./sankeyChart.fixture.js"; describe("SankeyChart tooltip", () => { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts index f414006efa1..569011be9ef 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts @@ -17,6 +17,7 @@ import { type IChartConfig, type ITotalConfig } from "../../../interfaces/chartC import { type ISeriesDataItem, type ISeriesItem } from "../../typings/unsafe.js"; import { getChartFillProperties } from "../_chartOptions/patternFillOptions.js"; import { unwrap } from "../_util/common.js"; + import { getColorOrLegendIndex } from "./waterfallChartsSeries.js"; function isTotalColumnEnabled(chartConfig: IChartConfig): boolean { diff --git a/libs/sdk-ui-dashboard/package.json b/libs/sdk-ui-dashboard/package.json index bce579c0ecd..d5864ea0d63 100644 --- a/libs/sdk-ui-dashboard/package.json +++ b/libs/sdk-ui-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-dashboard", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Dashboard Component", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts index 90f2b3d9eec..e8b32b4dae5 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts @@ -31,6 +31,7 @@ import { } from "@gooddata/sdk-model"; import { type IDashboardFilter } from "../../types.js"; + import { createDefaultFilterContext } from "./defaultFilterContext.js"; /** diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts index 460a9b4d3d1..e9b42f59a1f 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts @@ -24,6 +24,7 @@ import { import { type ILayoutItemPath } from "../../../../types.js"; import { type IDashboardLayoutItemFacade } from "../facade/interfaces.js"; + import { type DashboardLayoutItemModifications, type IDashboardLayoutBuilder, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts index 7c26a60bb4d..2158a4355e8 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts @@ -15,6 +15,7 @@ import { type ILayoutItemPath, type ILayoutSectionPath } from "../../../../types import { getSectionIndex } from "../../../layout/coordinates.js"; import { type IDashboardLayoutFacade } from "../facade/interfaces.js"; import { DashboardLayoutFacade } from "../facade/layout.js"; + import { type DashboardLayoutModifications, type DashboardLayoutSectionModifications, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts index 1f6e42d8d8d..2d751485705 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts @@ -15,6 +15,7 @@ import { import { getItemIndex } from "../../../layout/coordinates.js"; import { type IDashboardLayoutSectionFacade } from "../facade/interfaces.js"; + import { type DashboardLayoutItemModifications, type DashboardLayoutItemsSelector, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts index cf066e3b1a1..7e15b330542 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts @@ -13,6 +13,7 @@ import { import { DashboardLayoutItemBuilder } from "../item.js"; import { DashboardLayoutBuilder } from "../layout.js"; import { DashboardLayoutSectionBuilder } from "../section.js"; + import { createEmptyDashboardLayoutItemBuilder, createValueOrUpdateCallbackTestCases, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts index 0aef5bbcafd..8fbfa74862e 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts @@ -8,6 +8,7 @@ import { type IDashboardLayout, type IDashboardLayoutSection, idRef } from "@goo import { serializeLayoutSectionPath } from "../../../../layout/coordinates.js"; import { type IDashboardLayoutItemBuilder, type IDashboardLayoutSectionBuilder } from "../interfaces.js"; import { DashboardLayoutBuilder } from "../layout.js"; + import { createEmptyDashboardLayoutBuilder, createEmptyDashboardLayoutSectionBuilder, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts index 3c52f16f299..fade85fa5d1 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts @@ -12,6 +12,7 @@ import { import { serializeLayoutItemPath } from "../../../../layout/coordinates.js"; import { DashboardLayoutBuilder } from "../layout.js"; import { DashboardLayoutSectionBuilder } from "../section.js"; + import { createEmptyDashboardLayoutBuilder, createEmptyDashboardLayoutSectionBuilder, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts index f4b6e501fac..4ef2f5212e8 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts @@ -31,6 +31,7 @@ import { import { type ILayoutItemPath } from "../../../../types.js"; import { areLayoutPathsEqual, updateItemIndex } from "../../../layout/coordinates.js"; import { determineWidthForScreen } from "../../../layout/sizing.js"; + import { type IDashboardLayoutItemFacade, type IDashboardLayoutSectionFacade } from "./interfaces.js"; /** diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts index 862ffa359e4..d1514d12cba 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts @@ -6,6 +6,7 @@ import { type IDashboardLayoutItem, type ScreenSize } from "@gooddata/sdk-model" import { asLayoutItemPath } from "../../../layout/coordinates.js"; import { DASHBOARD_LAYOUT_GRID_COLUMNS_COUNT } from "../config.js"; + import { type IDashboardLayoutItemFacade, type IDashboardLayoutItemsFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts index d20c83c64be..23c420b8d93 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { type IDashboardLayout, type IDashboardLayoutSize, isDashboardLayout } from "@gooddata/sdk-model"; import { type ILayoutItemPath } from "../../../../types.js"; + import { type IDashboardLayoutFacade, type IDashboardLayoutSectionFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts index 4c2f2f77371..61e32e15971 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts @@ -10,6 +10,7 @@ import { asLayoutItemPath, updateSectionIndex, } from "../../../layout/coordinates.js"; + import { type IDashboardLayoutFacade, type IDashboardLayoutItemFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts index e9818f0c2d0..822715d4c77 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts @@ -3,6 +3,7 @@ import { type IDashboardLayoutSection } from "@gooddata/sdk-model"; import { type ILayoutItemPath } from "../../../../types.js"; + import { type IDashboardLayoutFacade, type IDashboardLayoutSectionFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts index 73617951220..7688ba48ce4 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts @@ -9,6 +9,7 @@ import { import { type ExtendedDashboardWidget } from "../../../model/types/layoutTypes.js"; import { type ILayoutItemPath } from "../../../types.js"; import { findItem } from "../../layout/coordinates.js"; + import { type IDashboardLayoutItemFacade } from "./facade/interfaces.js"; /** diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts index 84fe803f70d..17ee10acb71 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts @@ -11,6 +11,7 @@ import { dashboardFilterContextDefinition, dashboardFilterContextSanitize, } from "../dashboardFilterContext.js"; + import { TestFilterContext, TestFilterContextWithInvalidParents } from "./dashboardFilterContext.fixture.js"; // TODO RAIL-3383 move the fixtures? diff --git a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts index 046a0c20e09..80e760660c1 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui-filters"; import { matchDateFilterToDateFilterOption } from "../dateFilterOptionMapping.js"; + import { allTime, last30days } from "./fixtures.js"; describe("matchDateFilterToDateFilterOption", () => { diff --git a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts index 0b3f649b45e..ffed80cd99f 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type IDashboardDateFilterConfig, type IDateFilterConfig, idRef } from "@gooddata/sdk-model"; import { mergeDateFilterConfigs } from "../merge.js"; + import { absoluteForm, allTime, diff --git a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts index f1e53ccb23c..f27cf5ae405 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts @@ -6,6 +6,7 @@ import { type IDateFilterConfig, idRef } from "@gooddata/sdk-model"; import { suppressConsole } from "@gooddata/util"; import { validateDateFilterConfig } from "../validation.js"; + import { absoluteForm, allTime, lastMonth, relativeForm, year2019 } from "./fixtures.js"; describe("validateDateFilterConfig", () => { diff --git a/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts b/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts index c79a6cb2225..66cc52318d9 100644 --- a/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts +++ b/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts @@ -43,6 +43,7 @@ import { type ILayoutItemPath } from "../../types.js"; import { DASHBOARD_LAYOUT_GRID_COLUMNS_COUNT } from "../dashboard/flexibleLayout/config.js"; import { getLayoutConfiguration } from "../dashboard/flexibleLayout/layoutConfiguration.js"; import { type ObjRefMap } from "../metadata/objRefMap.js"; + import { GRID_ROW_HEIGHT_IN_PX, KPI_WITHOUT_COMPARISON_SIZE_INFO, diff --git a/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts b/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts index df40db169db..865c7148f9b 100644 --- a/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts @@ -27,6 +27,7 @@ import { updateItemIndex, updateSectionIndex, } from "../coordinates.js"; + import { NESTED_LAYOUT } from "./coordinates.mock.js"; describe("coordinates", () => { diff --git a/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts b/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts index 881e5f6984d..3eec7df3be6 100644 --- a/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts +++ b/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts @@ -36,6 +36,7 @@ import { convertDateFilterConfigToDateFilterOptions } from "../dateFilterConfig/ import { matchDateFilterToDateFilterOptionWithPreference } from "../dateFilterConfig/dateFilterOptionMapping.js"; import { defaultDateFilterConfig } from "../dateFilterConfig/defaultConfig.js"; import { ensureAllTimeFilterForExport } from "../exportUtils/filterUtils.js"; + import { useAttributeFilterDisplayFormFromMap } from "./useAttributeFilterDisplayFormFromMap.js"; import { useCommonDateFilterTitle } from "./useCommonDateFilterTitle.js"; import { useDateFiltersTitles } from "./useDateFiltersTitles.js"; diff --git a/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts b/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts index 9aa5955aaef..e06bbe48e4b 100644 --- a/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts +++ b/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-model"; import { objRef } from "../../model/utils/objRef.js"; + import { containerSlideTransformer } from "./containerSlideTransformer.js"; import { containsVisualizationSwitcher } from "./utils/index.js"; diff --git a/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts b/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts index 9bb02b68eff..4dc9c5a0a2f 100644 --- a/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts +++ b/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts @@ -3,6 +3,7 @@ import { type IDashboardLayout, type IDashboardLayoutSection } from "@gooddata/sdk-model"; import { type IDashboardFocusObject } from "../../model/types/commonTypes.js"; + import { sectionLayoutSection } from "./sectionSlideTransformer.js"; import { singleWidgetTransformer } from "./singleWidgetTransformer.js"; import { findFocusedWidget } from "./utils/index.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx index b61fd932922..34bcbb424ea 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { IntlWrapper } from "../presentation/localization/IntlWrapper.js"; + import { KdaDialog as KdaDialogComponent } from "./dialog/KdaDialog.js"; import { KdaStateProvider } from "./providers/KdaState.js"; import { type IKdaDialogProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx index e3fb51b22ec..787b535ba8e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx @@ -16,6 +16,7 @@ import { useSummaryDrivers } from "../hooks/useSummaryDrivers.js"; import { type IKdaItem, type IKdaItemGroup } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; import { getSortedSignificantDriver } from "../tools/sortedKeyDrivers.js"; + import { driverColumn } from "./columns/driverColumn.js"; import { driversCountColumn } from "./columns/driversCount.js"; import { titleColumn } from "./columns/titleColumn.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx index cefd67cb61c..045d6d3af90 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx @@ -8,6 +8,7 @@ import { useDateAttribute } from "../hooks/useDateAttribute.js"; import { type IKdaDateOptions } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; import { formatKeyDriverAnalysisDateRange, formatValue } from "../utils.js"; + import { DateHeadline } from "./headlines/DateHeadline.js"; import { DiffHeadline } from "./headlines/DiffHeadline.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx index 1b31d42169a..10c2112703e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx @@ -9,6 +9,7 @@ import { Typography, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type IAddAttributeFilterButtonProps } from "../../presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterButton.js"; import { AttributesDropdown } from "../../presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useAddNewAttributeHandler } from "./hooks/useAddNewAttributeHandler.js"; import { useUnusedAttributes } from "./hooks/useUnusedAttributes.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx index d0a0012df00..1894e79f736 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx @@ -7,6 +7,7 @@ import { selectAttributeFilterConfigsOverrides } from "../../model/store/tabs/at import { AttributeBar } from "../components/bars/AttributeBar.js"; import { DateBar } from "../components/bars/DateBar.js"; import { KdaBar } from "../components/KdaBar.js"; + import { AddFilterButton } from "./AddFilterButton.js"; import { useAttributeFiltersChangeHandler } from "./hooks/useAttributeFiltersChangeHandler.js"; import { usePeriodChangeHandler } from "./hooks/usePeriodChangeHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx index 3f9434b4561..16d79847b8e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx @@ -18,6 +18,7 @@ import { KdaSummaryDrivers } from "../components/KdaSummaryDrivers.js"; import { KdaSummaryHeadline } from "../components/KdaSummaryHeadline.js"; import { type IKdaItem, type IKdaState } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useDataViewWithConfig } from "./hooks/useDataViewWithConfig.js"; import { useGroupAndItem } from "./hooks/useGroupAndItem.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx index 43c4d186358..15ea33096f8 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx @@ -18,6 +18,7 @@ import { MetricsBar } from "../composition/MetricsBar.js"; import { KDA_DIALOG_OVERS_Z_INDEX } from "../const.js"; import { useKdaState } from "../providers/KdaState.js"; import { type IKdaDialogProps } from "../types.js"; + import { useChangeAnalysis } from "./hooks/useChangeAnalysis.js"; import { useKdaDialogAccessibility } from "./hooks/useKdaDialogAccessibility.js"; import { useKdaDialogTooltipsOverride } from "./hooks/useKdaDialogTooltipsOverride.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx index d0458727ed3..005d49a38da 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx @@ -8,6 +8,7 @@ import type { ISeparators } from "@gooddata/sdk-model"; import { KdaProvider } from "../providers/Kda.js"; import type { IKdaDefinition, IKdaDialogProps } from "../types.js"; + import { KdaDialog } from "./KdaDialog.js"; import { KdaDialogArbiter } from "./KdaDialogArbiter.js"; import { KdaReplaceConfirmationDialog } from "./KdaReplaceConfirmationDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx index 8fed375cb27..c7f0e01c268 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx @@ -5,6 +5,7 @@ import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { LoadingSpinner, UiIcon } from "@gooddata/sdk-ui-kit"; import type { KdaAsyncStatus } from "../internalTypes.js"; + import { KdaDialogActionButtons } from "./KdaDialogActionButtons.js"; type KdaFloatingStatus = "step01" | "step02" | "done" | "error"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts index 0497143c9d9..89153c8e38c 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts @@ -26,6 +26,7 @@ import { useRelevantFilters } from "../../hooks/useRelevantFilters.js"; import { type IKdaItem, type IKdaState } from "../../internalTypes.js"; import { useKdaState } from "../../providers/KdaState.js"; import { type DeepReadonly, type IKdaDefinition } from "../../types.js"; + import { useTags } from "./useTags.js"; export function useChangeAnalysis() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts index 6fab9b418fe..b8fbcdbe2ba 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts @@ -8,6 +8,7 @@ import { type IUiListboxInteractiveItem } from "@gooddata/sdk-ui-kit"; import { type IKdaItem, type IKdaTrend } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useTrendDrivers } from "./useTrendDrivers.js"; export function useSignificantDrives() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts index d32c8e48e1e..1c3b319026a 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useMemo } from "react"; @@ -6,6 +6,7 @@ import { type ICatalogAttribute } from "@gooddata/sdk-model"; import { useKdaState } from "../providers/KdaState.js"; import { getOnlyRelevantFilters } from "../utils.js"; + import { useAttribute } from "./useAttribute.js"; export function useRelevantFilters() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts index 1aaae66aad1..f7835366901 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts @@ -6,6 +6,7 @@ import { type ObjRef, objRefToString } from "@gooddata/sdk-model"; import { type IKdaItemGroup } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useAttribute } from "./useAttribute.js"; export function useSummaryDrivers() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx index c2ff3fd6ddf..6e056a5481e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx @@ -6,6 +6,7 @@ import { type ISeparators, isAllValuesDashboardAttributeFilter } from "@gooddata import { type IKdaState } from "../internalTypes.js"; import { type IKdaDefinition } from "../types.js"; + import { KdaStateProvider } from "./KdaState.js"; export interface IKdaProps { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts index fa77e559f97..a3b791ee4df 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts @@ -34,6 +34,7 @@ import { extractDisplayFormIdentifiers, extractInsightFilterDisplayFormIdentifiers, } from "../widgets/validation/insightDrillDefinitionUtils.js"; + import { isDisplayFormRelevantToDrill } from "./isDisplayFormRelevantToDrill.js"; interface IInvalidParamsInfo { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts index 7fb0366c851..559a6462b01 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts @@ -21,6 +21,7 @@ import { dashboardPermissionsActions } from "../../store/dashboardPermissions/in import { metaActions } from "../../store/meta/index.js"; import { selectDashboardRef, selectPersistedDashboard } from "../../store/meta/metaSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { loadDashboardPermissions } from "./initializeDashboardHandler/loadDashboardPermissions.js"; type DashboardSaveSharingContext = { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts index eb57ff0df20..f2da7b617da 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts @@ -3,6 +3,7 @@ import { type ISettings } from "@gooddata/sdk-model"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { loadNotificationChannelsCount } from "./loadNotificationChannelsCount.js"; import { loadWorkspaceAutomationsCount } from "./loadWorkspaceAutomationsCount.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts index 958213a59f7..f94224a57e8 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts @@ -69,6 +69,7 @@ import { } from "../../../types/commonTypes.js"; import { type ExtendedDashboardWidget } from "../../../types/layoutTypes.js"; import { resolveFilterDisplayForms } from "../../../utils/filterResolver.js"; + import { EmptyDashboardLayout, dashboardInitialize } from "./dashboardInitialize.js"; import { loadAvailableDisplayFormRefs } from "./loadAvailableDisplayFormRefs.js"; import { mergedMigratedAttributeFilters } from "./migratedAttributeFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts index df1369bd18c..80c0e678191 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts @@ -16,6 +16,7 @@ import { listedDashboardsActions } from "../../store/listedDashboards/index.js"; import { selectBasicLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { selectTabs } from "../../store/tabs/tabsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { hasMacroInLayout, isDashboardSummaryWorkflowStatus } from "./dashboardSummaryWorkflowUtils.js"; export function newDashboardSummaryWorkflowWorker() { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts index 124bae04a3b..2f468c2c357 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts @@ -15,6 +15,7 @@ import { selectDateFilterConfig, selectSettings } from "../../store/config/confi import { executionResultsActions } from "../../store/executionResults/index.js"; import { selectPersistedDashboard } from "../../store/meta/metaSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { actionsToInitializeNewDashboard } from "./common/stateInitializers.js"; function deleteDashboard(ctx: DashboardContext, dashboardRef: ObjRef): Promise { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts index d3a4b620f09..509f004c873 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts @@ -59,6 +59,7 @@ import { actionsToInitializeExistingDashboard, actionsToInitializeNewDashboard, } from "../common/stateInitializers.js"; + import { loadCatalog } from "./loadCatalog.js"; import { loadDashboardList } from "./loadDashboardList.js"; import { loadDashboardParameters } from "./loadDashboardParameters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts index 3b79aed169d..77fe13f300e 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts @@ -9,6 +9,7 @@ import { mergeDateFilterConfigs } from "../../../../_staging/dateFilterConfig/me import { validateDateFilterConfig } from "../../../../_staging/dateFilterConfig/validation.js"; import { type InitializeDashboard } from "../../../commands/dashboard.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { onDateFilterConfigValidationError } from "./onDateFilterConfigValidationError.js"; export interface IDateFilterMergeResult { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts index 45d3e679b5b..c5b8dd90a84 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts @@ -29,6 +29,7 @@ import { } from "../../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../../types/sagas.js"; import { loadAutomationsData } from "../common/loadAutomationsData.js"; + import { onDateFilterConfigValidationError } from "./onDateFilterConfigValidationError.js"; import { sanitizeUnfinishedFeatureSettings } from "./sanitizeUnfinishedFeatureSettings.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts index cadadbc2752..dd5c362e71b 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts @@ -34,6 +34,7 @@ import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tab import { DEFAULT_TAB_ID, type ITabState } from "../../store/tabs/tabsState.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveInsights } from "../../utils/insightResolver.js"; + import { applyDefaultFilterView } from "./common/filterViews.js"; import { insightReferencesFromDashboard } from "./common/insightReferences.js"; import { getMigratedAttributeFilters } from "./common/migratedAttributeFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts index 61cb5e770a9..5e948fadf99 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts @@ -55,6 +55,7 @@ import { selectCurrentUser } from "../../store/user/userSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; import { changeRenderModeHandler } from "../renderMode/changeRenderModeHandler.js"; + import { getMigratedAttributeFilters, mergedMigratedAttributeFilters, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts index 0af8e36141c..fa02bf1b460 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts @@ -40,6 +40,7 @@ import { type DashboardContext } from "../../types/commonTypes.js"; import { addAttributeFilterHandler } from "../filterContext/attributeFilter/addAttributeFilterHandler.js"; import { changeAttributeFilterSelectionHandler } from "../filterContext/attributeFilter/changeAttributeFilterSelectionHandler.js"; import { removeAttributeFiltersHandler } from "../filterContext/attributeFilter/removeAttributeFiltersHandler.js"; + import { convertIntersectionToAttributeFilters } from "./common/intersectionUtils.js"; function findMatchingVirtualFilter( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts index b81d378022b..5114944a97f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts @@ -16,6 +16,7 @@ import { import { selectSettings } from "../../store/config/configSelectors.js"; import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { removeIgnoredValuesFromDrillIntersection } from "./common/intersectionUtils.js"; export function* drillDownHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts index 65a3a8a0e28..93ff5d34c1d 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts @@ -12,6 +12,7 @@ import { } from "../../events/drill.js"; import { selectWidgetDrills } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDrillToUrlFiltersWithResolvedValues } from "./getDrillToUrlFilters.js"; import { resolveDrillToAttributeUrl } from "./resolveDrillToAttributeUrl.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts index 838cc7082a9..65c871edda2 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts @@ -10,6 +10,7 @@ import { drillToCustomUrlResolved, } from "../../events/drill.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDrillToUrlFiltersWithResolvedValues } from "./getDrillToUrlFilters.js"; import { resolveDrillToCustomUrl } from "./resolveDrillToCustomUrl.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts index 70b1d1c017f..91ad9f8477f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts @@ -57,6 +57,7 @@ import { import { selectAnalyticalWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardState } from "../../store/types.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type IConversionResult, convertIntersectionToAttributeFilters, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts index da3e5d70e04..847689d53c6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts @@ -11,6 +11,7 @@ import { } from "../../events/drill.js"; import { selectInsightByRef, selectInsightByWidgetRef } from "../../store/insights/insightsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { addDrillFiltersToInsight } from "./drillToInsightUtils.js"; export function* drillToInsightHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts index 24d9e114531..8431491e440 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts @@ -23,6 +23,7 @@ import { import { addIntersectionFiltersToInsight } from "@gooddata/sdk-ui-ext"; import { type IDashboardDrillEvent } from "../../../types.js"; + import { removeIgnoredValuesFromDrillIntersection } from "./common/intersectionUtils.js"; import { getIncludedSourceInsightFilters, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts index 83a442a7a1a..6fc980c4b87 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts @@ -16,6 +16,7 @@ import { queryWidgetFilters } from "../../queries/widgets.js"; import { query } from "../../store/_infra/queryCall.js"; import { selectEnableFilterValuesResolutionInDrillEvents } from "../../store/config/configSelectors.js"; import { type DashboardContext, type FiltersInfo, type ResolvableFilter } from "../../types/commonTypes.js"; + import { resolveFilterValues } from "./common/filterValuesResolver.js"; export function* getDrillToUrlFiltersWithResolvedValues( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts index 2add190c792..3475e0aa99e 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts @@ -25,6 +25,7 @@ import { selectCatalogDateAttributes } from "../../store/catalog/catalogSelector import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { removeDateFilters, removeIgnoredWidgetFilters } from "../../utils/widgetFilters.js"; + import { convertIntersectionToAttributeFilters } from "./common/intersectionUtils.js"; export function* keyDriverAnalysisHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts index 27867bc82e6..7d819cd691a 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts @@ -12,6 +12,7 @@ import { import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { getElementTitle } from "./getElementTitle.js"; function getDrillToAttributeUrlIntersectionAttributeItemHeader( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts index 97a571d2db2..005f925d8ef 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts @@ -58,6 +58,7 @@ import { selectAnalyticalWidgetByRef } from "../../store/tabs/layout/layoutSelec import { type DashboardContext } from "../../types/commonTypes.js"; import { DRILL_TO_URL_PLACEHOLDER } from "../../types/drillTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { getElementTitle, getElementsSecondaryTitles } from "./getElementTitle.js"; interface IDrillToUrlPlaceholderReplacement { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts index 32b4af93260..58d4533abbe 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts @@ -36,6 +36,7 @@ import { type PromiseFnReturnType, type PromiseReturnType } from "../../../types import { resolveDisplayFormMetadata } from "../../../utils/displayFormResolver.js"; import { validateDrillToCustomUrlParams } from "../../common/validateDrillToCustomUrlParams.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { canFilterBeAdded } from "./validation/uniqueFiltersValidation.js"; export function* addAttributeFilterHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts index 11f14c3e991..26c31d07b93 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts @@ -29,6 +29,7 @@ import { type DashboardContext } from "../../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../../types/sagas.js"; import { validateDrillToCustomUrlParams } from "../../common/validateDrillToCustomUrlParams.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./resolveDisplayFormMetadata.js"; import { canFilterBeAdded } from "./validation/uniqueFiltersValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts index 32090c9c79b..e94c8817bb4 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts @@ -17,6 +17,7 @@ import { selectFilterContextAttributeFilterItemByLocalId } from "../../../store/ import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./resolveDisplayFormMetadata.js"; import { validateFilterDisplayForm } from "./validation/filterDisplayFormValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts index dfcbbbf8467..4df7a10a6c3 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts @@ -18,6 +18,7 @@ import { selectFilterContextAttributeFilterItemByLocalId } from "../../../store/ import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged, resetCrossFiltering } from "../common.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./resolveDisplayFormMetadata.js"; export function* replaceAttributeFilterItemSelectionHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts index 80eb10081c5..b859effe209 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts @@ -16,6 +16,7 @@ import { import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { validateAttributeFilterParents } from "./validation/parentFiltersValidation.js"; export function* setAttributeFilterParentsHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts index 780760ca7c0..a7eed63cc80 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts @@ -84,6 +84,7 @@ import { resolveDisplayFormMetadata, } from "../../utils/displayFormResolver.js"; import { canApplyFilterTypeToTarget } from "../dashboard/common/attributeFilterSelectionTypeCompatibility.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./attributeFilter/resolveDisplayFormMetadata.js"; import { canApplyDateFilter, dispatchFilterContextChanged } from "./common.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts index f37482bc08f..7f6240bc8e7 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts @@ -19,6 +19,7 @@ import { import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged } from "../common.js"; + // import { dispatchDashboardEvent } from "../../../store/_infra/eventDispatcher.js"; import { canFilterBeAdded } from "./validation/uniqueFiltersValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts index 323a7f4f3d6..77540e1f68b 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts @@ -46,6 +46,7 @@ import { selectActiveTabLocalIdentifier } from "../../store/tabs/tabsSelectors.j import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; import { loadFilterViews } from "../dashboard/initializeDashboardHandler/loadFilterViews.js"; + import { resetCrossFiltering } from "./common.js"; function createFilterView( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts index b0faf8360c5..4a4e31f5fb6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts @@ -7,6 +7,7 @@ import { type DashboardCommands } from "../commands/index.js"; import { commandRejected } from "../events/general.js"; import { dispatchDashboardEvent } from "../store/_infra/eventDispatcher.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { createAlertHandler } from "./alerts/createAlertHandler.js"; import { saveAlertHandler } from "./alerts/saveAlertHandler.js"; import { changeAttributeFilterDisplayAsLabelHandler } from "./dashboard/changeAttributeFilterDisplayAsLabelHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts index 33d601b9dac..d452d2da2b0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts @@ -27,6 +27,7 @@ import { } from "../../types/layoutTypes.js"; import { resolveIndexOfNewItem } from "../../utils/arrayOps.js"; import { addTemporaryIdentityToWidgets } from "../../utils/dashboardItemUtils.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { sanitizeHeader } from "./utils.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts index 505705cf33f..23921bc0c14 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts @@ -29,6 +29,7 @@ import { } from "../../types/layoutTypes.js"; import { resolveIndexOfNewItem } from "../../utils/arrayOps.js"; import { addTemporaryIdentityToWidgets } from "../../utils/dashboardItemUtils.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateAndNormalizeWidgetItems, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts index f8c24e176ab..ed5b1b2d29c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts @@ -16,6 +16,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { sanitizeHeader } from "./utils.js"; import { validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts index f42db45f997..4e21ecd01db 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts @@ -19,6 +19,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveRelativeIndex } from "../../utils/arrayOps.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateSectionExists, validateSectionPlacement } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts index 2aa4c040c5d..48e1e690cfe 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts @@ -29,6 +29,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveIndexOfNewItem, resolveRelativeIndex } from "../../utils/arrayOps.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { buildRowContainerSanitizationActions } from "./rowContainerSanitization.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts index 2faf1e94aea..e432ee120d3 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts @@ -30,6 +30,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardLayoutSection } from "../../types/layoutTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { buildRowContainerSanitizationActions } from "./rowContainerSanitization.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts index 6f4491470a5..496282203e0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts @@ -17,6 +17,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveRelativeIndex } from "../../utils/arrayOps.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts index 32297b59576..2ca691b131f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts @@ -9,6 +9,7 @@ import { type IRemoveSectionItemByWidgetRef } from "../../commands/layout.js"; import { invalidArgumentsProvided } from "../../events/general.js"; import { selectWidgetPathByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { removeSectionItemSaga } from "./removeSectionItemHandler.js"; export function* removeSectionItemByWidgetRefHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts index 4a89661acb3..719178aa7f9 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts @@ -21,6 +21,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardLayoutSection } from "../../types/layoutTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateItemExists, validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts index ddfe302ac1f..0da218bae63 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts @@ -24,6 +24,7 @@ import { selectLayout, selectScreen, selectStash } from "../../store/tabs/layout import { type DashboardContext } from "../../types/commonTypes.js"; import { type InternalDashboardItemDefinition } from "../../types/layoutTypes.js"; import { addTemporaryIdentityToWidgets } from "../../utils/dashboardItemUtils.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateAndNormalizeWidgetItems, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts index 9c64904b7cc..5331b4b8d34 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts @@ -22,6 +22,7 @@ import { selectInsightsMap } from "../../store/insights/insightsSelectors.js"; import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateItemExists, validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts index 7bb6dd4b78f..4949347f1a3 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts @@ -38,6 +38,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardWidget, type IItemWithWidth } from "../../types/layoutTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { getUpdatedSizesOnly } from "./containerWidthSanitization.js"; import { validateItemExists, validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts index e9bcc20ea6e..a2dee794b3f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts @@ -18,6 +18,7 @@ import { type ILayoutItemPath } from "../../../types.js"; import { type IDashboardCommand } from "../../commands/base.js"; import { tabsActions } from "../../store/tabs/index.js"; import { type ExtendedDashboardWidget } from "../../types/layoutTypes.js"; + import { getChildWidgetLayoutPaths, getUpdatedSizesOnly } from "./containerWidthSanitization.js"; function findNestedRowContainers( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts index 32e50c3c22b..b657cd8aabf 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts @@ -22,6 +22,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardWidget, type IItemWithWidth } from "../../types/layoutTypes.js"; + import { getChildWidgetLayoutPaths, getChildWidgetLayoutPathsWithMinWidths, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts index c18976d841a..7909b77bbb0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts @@ -46,6 +46,7 @@ import { validateDatasetForKpiWidgetDateFilter, validateDatasetForRichTextWidgetDateFilter, } from "../../widgets/validation/filterValidation.js"; + import { type IItemResolutionResult } from "./stashValidation.js"; function normalizeItems( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts index c5d67175609..4e2e674e904 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts @@ -9,6 +9,7 @@ import { newDashboardEventPredicate } from "../../events/index.js"; import { renderRequested, renderResolvedWithDetails } from "../../events/render.js"; import { executedActions } from "../../store/executed/index.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type IRenderingWorkerConfiguration } from "./types.js"; function* wait(ms: number): SagaIterator { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts index 3aa2caa4485..5c6a5c71920 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts @@ -41,6 +41,7 @@ import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; import { prepareGeoRawExportDefinition } from "../common/prepareGeoRawExportDefinition.js"; + import { prepareCsvRawExecutionDefinition } from "./csvRawExecutionDefinition.js"; function createScheduledEmail( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts index d4c95c25d44..3e8227ac5a4 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts @@ -86,6 +86,7 @@ import { type PromiseFnReturnType } from "../../types/sagas.js"; import { isFilterTypeCompatibleWithSelectionType } from "../dashboard/common/attributeFilterSelectionTypeCompatibility.js"; import { changeFilterContextSelectionHandler } from "../filterContext/changeFilterContextSelectionHandler.js"; import { switchDashboardTabHandler } from "../tabs/switchDashboardTabHandler.js"; + import { loadDashboardUserAutomations, loadWorkspaceAutomationsCount } from "./loadAutomations.js"; import { loadNotificationChannels } from "./loadNotificationChannels.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts index 1c0df13fb27..215ad4356ec 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts @@ -20,6 +20,7 @@ import { selectCanManageWorkspace } from "../../store/permissions/permissionsSel import { selectCurrentUser } from "../../store/user/userSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { loadDashboardUserAutomations, loadWorkspaceAutomationsCount } from "./loadAutomations.js"; export function* refreshAutomationsHandlers(ctx: DashboardContext, cmd: IRefreshAutomations): SagaIterator { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts index ce847e90a56..01b597bdb5e 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts @@ -40,6 +40,7 @@ import { selectPreloadedAttributesWithReferences } from "../../store/tabs/filter import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { prepareGeoRawExportDefinition } from "../common/prepareGeoRawExportDefinition.js"; + import { prepareCsvRawExecutionDefinition } from "./csvRawExecutionDefinition.js"; function saveScheduledEmail( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts index c73dfa20e83..2265584aa5c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts @@ -12,6 +12,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tabsSelectors.js"; import { DEFAULT_TAB_ID } from "../../store/tabs/tabsState.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; export function* convertDashboardTabFromDefaultHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts index ed5b05aa70f..62e6df05db2 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts @@ -28,6 +28,7 @@ import { type ITabState } from "../../store/tabs/tabsState.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardWidget } from "../../types/layoutTypes.js"; import { EmptyDashboardLayout } from "../dashboard/common/dashboardInitialize.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; const getTabState = ({ diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts index 73193a31848..b8d4e40acf0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts @@ -16,6 +16,7 @@ import { selectAllAnalyticalWidgets } from "../../store/tabs/layout/layoutSelect import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tabsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { validateDrills } from "../common/validateDrills.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts index 6cd53a8bcd4..2ec0ca1269f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts @@ -10,6 +10,7 @@ import { dispatchDashboardEvent } from "../../store/_infra/eventDispatcher.js"; import { tabsActions } from "../../store/tabs/index.js"; import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tabsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts index 9f9d08f7410..fa990634b49 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts @@ -10,6 +10,7 @@ import { type ILoadAllWorkspaceUsers } from "../../commands/users.js"; import { usersActions } from "../../store/users/index.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { loadWorkspaceUsers } from "./loadWorkspaceUsers.js"; export function* loadAllWorkspaceUsersHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts index ef5f4ca9f56..859104d133a 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts @@ -16,6 +16,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { existBlacklistHierarchyPredicate } from "../../utils/attributeHierarchyUtils.js"; + import { hierarchyToDrillDownReference } from "./common/drillDown.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts index 538d76519be..be58cd275bc 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts @@ -15,6 +15,7 @@ import { insightsActions } from "../../store/insights/index.js"; import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingVisualizationSwitcherWidget } from "./validation/widgetValidations.js"; export function* addVisualizationToSwticherWidgetContentHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts index 722a549cf73..c6b97f42110 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetDescriptionHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts index 272cbdb0ae9..2b3e3b00c1c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts @@ -18,6 +18,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type FilterValidators, processFilterOp } from "./common/filterOperations.js"; import { toDashboardFilterReferences } from "./common/filterReferences.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts index 2d70267db91..cc023fdc17c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetHeaderHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts index 8ed9076d09a..b817ea69f68 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetIgnoreCrossFilteringHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts index c574623325a..b697272d023 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts @@ -34,6 +34,7 @@ import { uiActions } from "../../store/ui/index.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { shouldRevalidateDrillsAfterInsightChange } from "../common/drillRevalidationUtils.js"; import { validateDrills } from "../common/validateDrills.js"; + import { loadInsight } from "./common/loadInsight.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts index 3dc6fcc8bfc..89546ae8acf 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetVisConfigurationHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts index f01931f457d..80d67764e45 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetVisPropertiesHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts index 4cb66f4235e..3c714027e83 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts @@ -10,6 +10,7 @@ import { type IDashboardKpiWidgetComparisonChanged, kpiWidgetComparisonChanged } import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetComparisonHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts index bad90ec18fe..ee1ba0fde33 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetConfigurationHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts index 861cc14a562..6940d01b7f6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts @@ -8,6 +8,7 @@ import { type IDashboardKpiWidgetDescriptionChanged, kpiWidgetDescriptionChanged import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetDescriptionHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts index 8aa8afe9042..12701fc2574 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts @@ -18,6 +18,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type FilterValidators, processFilterOp } from "./common/filterOperations.js"; import { validateAttributeFiltersToIgnore, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts index 605ed8d89b4..05774f8d5f7 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts @@ -8,6 +8,7 @@ import { type IDashboardKpiWidgetHeaderChanged, kpiWidgetHeaderChanged } from ". import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetHeaderHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts index c8299cf6046..b96f080e0a5 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts @@ -24,6 +24,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type IWidgetHeader, isWidgetHeader } from "../../types/widgetTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; function* validateMeasure( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts index 3c596358749..c996aa91e37 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingRichTextWidget } from "./validation/widgetValidations.js"; export function* changeRichTextWidgetContentHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts index 038dc3ae984..fe0ab847b81 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts @@ -18,6 +18,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type FilterValidators, processFilterOp } from "./common/filterOperations.js"; import { toDashboardFilterReferences } from "./common/filterReferences.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts index e965aecc03c..b763953c8a6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts @@ -16,6 +16,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { existBlacklistHierarchyPredicate } from "../../utils/attributeHierarchyUtils.js"; + import { hierarchyToDrillDownReference } from "./common/drillDown.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts index e2936bd18b9..bf74f4e72e4 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts @@ -15,6 +15,7 @@ import { selectWidgetByRef, selectWidgetsMap } from "../../store/tabs/layout/lay import { type DashboardContext } from "../../types/commonTypes.js"; import { validateDrills } from "../common/validateDrills.js"; import { validateDrillToCustomUrlParams } from "../common/validateDrillToCustomUrlParams.js"; + import { existsDrillDefinitionInArray, getDrillDefinitionFromArray, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts index 33065cc2d00..a678608d33a 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts @@ -12,6 +12,7 @@ import { insightsActions } from "../../store/insights/index.js"; import { selectInsightByRef } from "../../store/insights/insightsSelectors.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { loadInsight } from "./common/loadInsight.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts index 2bd7ddecd33..0759c9d6e79 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts @@ -12,6 +12,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* removeDrillDownForInsightWidgetHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts index c2db081080c..9e8d3e2f7f0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts @@ -8,6 +8,7 @@ import { type IDashboardKpiWidgetDrillRemoved, kpiWidgetDrillRemoved } from "../ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* removeDrillForKpiWidgetHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts index 99d0ae2aeef..9ccd32e7680 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts @@ -6,6 +6,7 @@ import { type IRemoveDrillToUrlForInsightWidget } from "../../commands/insight.j import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* removeDrillToUrlForInsightWidgetHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts index 92e52d392b0..20cd787a562 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts @@ -13,6 +13,7 @@ import { selectWidgetByRef, selectWidgetsMap } from "../../store/tabs/layout/lay import { type DashboardContext } from "../../types/commonTypes.js"; import { validateDrills } from "../common/validateDrills.js"; import { validateDrillToCustomUrlParams } from "../common/validateDrillToCustomUrlParams.js"; + import { existsDrillDefinitionInArray } from "./validation/insightDrillDefinitionUtils.js"; import { validateRemoveDrillsByLocalIdentifier } from "./validation/removeDrillsSelectorValidation.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts index 28741b03cbf..d55a54ee7db 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts @@ -10,6 +10,7 @@ import { type IDashboardKpiWidgetDrillSet, kpiWidgetDrillSet } from "../../event import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateKpiDrill } from "./validation/kpiDrillValidation.js"; import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts index 3b5dfe86111..9741b480c21 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingVisualizationSwitcherWidget } from "./validation/widgetValidations.js"; export function* updateVisualizationsFromSwticherWidgetContentHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts index 03f0e2ad5df..3c35c367ad1 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts @@ -36,6 +36,7 @@ import { resolveDisplayFormMetadata, } from "../../../utils/displayFormResolver.js"; import { type IInsightResolutionResult, resolveInsights } from "../../../utils/insightResolver.js"; + import { type IInsightDrillDefinitionValidationData, extractDisplayFormIdentifiers, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts index 55a77c6c43f..a8b3f5ca4fc 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts @@ -5,6 +5,7 @@ import { type KpiDrillDefinition } from "@gooddata/sdk-model"; import { type IDashboardCommand } from "../../../commands/base.js"; import { invalidArgumentsProvided } from "../../../events/general.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { validateKpiDrillTarget } from "./kpiDrillValidationUtils.js"; export function validateKpiDrill(drill: KpiDrillDefinition, ctx: DashboardContext, cmd: IDashboardCommand) { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts index 44b91a974f2..43087b6478d 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts @@ -6,6 +6,7 @@ import { type IDashboardCommand } from "../../../commands/base.js"; import { type RemoveDrillsSelector, isAllDrillSelector } from "../../../commands/insight.js"; import { invalidArgumentsProvided } from "../../../events/general.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { validateDrillDefinitionByLocalIdentifier } from "./insightDrillDefinitionUtils.js"; export function validateRemoveDrillsByLocalIdentifier( diff --git a/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts b/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts index e3fd93ab5db..e47e40845d2 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts @@ -13,6 +13,7 @@ import { import { type ISharingApplyPayload } from "@gooddata/sdk-ui-kit"; import { type DashboardConfig } from "../types/commonTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/density.ts b/libs/sdk-ui-dashboard/src/model/commands/density.ts index d874776855b..27da1f77bf5 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/density.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/density.ts @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { type DashboardDensity } from "../../types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/drill.ts b/libs/sdk-ui-dashboard/src/model/commands/drill.ts index a30c76ae135..d1d5eff21e8 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/drill.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/drill.ts @@ -19,6 +19,7 @@ import { type IDrillDownDefinition, } from "../../types.js"; import { type IDashboardKeyDriverCombinationItem } from "../events/drill.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/events.ts b/libs/sdk-ui-dashboard/src/model/commands/events.ts index a89120a9f4d..2601cd29a39 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/events.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/events.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type DashboardEventBody, type ICustomDashboardEvent, type IDashboardEvent } from "../events/base.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts b/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts index b4186b4db4f..4b42e4a09ff 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts @@ -5,6 +5,7 @@ import { type IResultWarning, type ObjRef, serializeObjRef } from "@gooddata/sdk import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { type IExecutionResultEnvelope } from "../store/executionResults/types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/filters.ts b/libs/sdk-ui-dashboard/src/model/commands/filters.ts index 73c6e36a500..ed4f29633ca 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/filters.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/filters.ts @@ -35,6 +35,7 @@ import { } from "@gooddata/sdk-model"; import { type IDashboardFilter } from "../../types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/insight.ts b/libs/sdk-ui-dashboard/src/model/commands/insight.ts index 221407f85db..49beb6e9f53 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/insight.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/insight.ts @@ -20,6 +20,7 @@ import { type IWidgetFilterOperation, type IWidgetHeader, } from "../types/widgetTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/kpi.ts b/libs/sdk-ui-dashboard/src/model/commands/kpi.ts index bcce1367eb0..e7b915569a3 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/kpi.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/kpi.ts @@ -14,6 +14,7 @@ import { type IWidgetFilterOperation, type IWidgetHeader, } from "../types/widgetTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/layout.ts b/libs/sdk-ui-dashboard/src/model/commands/layout.ts index b74fe49d415..1b50df429c8 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/layout.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/layout.ts @@ -13,6 +13,7 @@ import { type RelativeIndex, type StashedDashboardItemsId, } from "../types/layoutTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts b/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts index bd01c0d8cd0..e02f7e62a3d 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type RenderMode } from "../../types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/richText.ts b/libs/sdk-ui-dashboard/src/model/commands/richText.ts index 30bb7ab61f8..14c07d5aec7 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/richText.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/richText.ts @@ -3,6 +3,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IWidgetFilterOperation } from "../types/widgetTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts b/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts index 15726d89082..070a27092d5 100644 --- a/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts +++ b/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts @@ -5,6 +5,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { changeFilterContextSelectionByParams } from "../commands/filters.js"; import { type IDashboardDrillToDashboardResolved } from "../events/drill.js"; import { newDashboardEventPredicate } from "../events/index.js"; + import { type DashboardEventHandler } from "./eventHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/events/alerts.ts b/libs/sdk-ui-dashboard/src/model/events/alerts.ts index 4a0b15c3421..2ae75f852f2 100644 --- a/libs/sdk-ui-dashboard/src/model/events/alerts.ts +++ b/libs/sdk-ui-dashboard/src/model/events/alerts.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/dashboard.ts b/libs/sdk-ui-dashboard/src/model/events/dashboard.ts index 8f269963190..928fb0753f2 100644 --- a/libs/sdk-ui-dashboard/src/model/events/dashboard.ts +++ b/libs/sdk-ui-dashboard/src/model/events/dashboard.ts @@ -5,6 +5,7 @@ import { type IDashboard, type IInsight, type IWorkspacePermissions, type ObjRef import { type DateFilterValidationResult, type ISharingProperties } from "../../types.js"; import { type DashboardConfig, type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/drill.ts b/libs/sdk-ui-dashboard/src/model/events/drill.ts index 04c4f203586..eae2ef25fe7 100644 --- a/libs/sdk-ui-dashboard/src/model/events/drill.ts +++ b/libs/sdk-ui-dashboard/src/model/events/drill.ts @@ -25,6 +25,7 @@ import { type IDrillDownDefinition, } from "../../types.js"; import { type DashboardContext, type FiltersInfo } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts b/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts index 1aeb566d755..65ccdbcf2d7 100644 --- a/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts +++ b/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts @@ -4,6 +4,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IAvailableDrillTargets } from "@gooddata/sdk-ui"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/filters.ts b/libs/sdk-ui-dashboard/src/model/events/filters.ts index fa74b3d80c1..6179a7c147d 100644 --- a/libs/sdk-ui-dashboard/src/model/events/filters.ts +++ b/libs/sdk-ui-dashboard/src/model/events/filters.ts @@ -14,6 +14,7 @@ import { } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type DashboardEventBody, type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/general.ts b/libs/sdk-ui-dashboard/src/model/events/general.ts index 8d2f160181f..b75a54d16a6 100644 --- a/libs/sdk-ui-dashboard/src/model/events/general.ts +++ b/libs/sdk-ui-dashboard/src/model/events/general.ts @@ -3,6 +3,7 @@ import { type IDashboardCommand } from "../commands/base.js"; import { type IDashboardQuery } from "../queries/base.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/insight.ts b/libs/sdk-ui-dashboard/src/model/events/insight.ts index 7076005b8e0..151338eb72c 100644 --- a/libs/sdk-ui-dashboard/src/model/events/insight.ts +++ b/libs/sdk-ui-dashboard/src/model/events/insight.ts @@ -18,6 +18,7 @@ import { import { type DashboardContext } from "../types/commonTypes.js"; import { type IExportConfig } from "../types/exportTypes.js"; import { type IWidgetDescription, type IWidgetHeader } from "../types/widgetTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/kpi.ts b/libs/sdk-ui-dashboard/src/model/events/kpi.ts index 4f490475775..cf27320b459 100644 --- a/libs/sdk-ui-dashboard/src/model/events/kpi.ts +++ b/libs/sdk-ui-dashboard/src/model/events/kpi.ts @@ -14,6 +14,7 @@ import { import { type DashboardContext } from "../types/commonTypes.js"; import { type IWidgetDescription, type IWidgetHeader } from "../types/widgetTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/layout.ts b/libs/sdk-ui-dashboard/src/model/events/layout.ts index add957ba398..10ffadaf33c 100644 --- a/libs/sdk-ui-dashboard/src/model/events/layout.ts +++ b/libs/sdk-ui-dashboard/src/model/events/layout.ts @@ -15,6 +15,7 @@ import { type ExtendedDashboardWidget, type StashedDashboardItemsId, } from "../types/layoutTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/render.ts b/libs/sdk-ui-dashboard/src/model/events/render.ts index 492d70a57a6..8141652620e 100644 --- a/libs/sdk-ui-dashboard/src/model/events/render.ts +++ b/libs/sdk-ui-dashboard/src/model/events/render.ts @@ -2,6 +2,7 @@ import { type IRenderingWorkerConfiguration } from "../commandHandlers/render/types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/renderMode.ts b/libs/sdk-ui-dashboard/src/model/events/renderMode.ts index f444b72e373..d780132529c 100644 --- a/libs/sdk-ui-dashboard/src/model/events/renderMode.ts +++ b/libs/sdk-ui-dashboard/src/model/events/renderMode.ts @@ -2,6 +2,7 @@ import { type RenderMode } from "../../types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/richText.ts b/libs/sdk-ui-dashboard/src/model/events/richText.ts index 8873eb7bf11..33c9543bb68 100644 --- a/libs/sdk-ui-dashboard/src/model/events/richText.ts +++ b/libs/sdk-ui-dashboard/src/model/events/richText.ts @@ -8,6 +8,7 @@ import { } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts b/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts index b1ba07014ce..76dece97909 100644 --- a/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts +++ b/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts b/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts index 85cda39625d..b5550f9c528 100644 --- a/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts +++ b/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts @@ -3,6 +3,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/tabs.ts b/libs/sdk-ui-dashboard/src/model/events/tabs.ts index 788ae5a59b3..d30c49a7a96 100644 --- a/libs/sdk-ui-dashboard/src/model/events/tabs.ts +++ b/libs/sdk-ui-dashboard/src/model/events/tabs.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts b/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts index 2859cd5f2cc..2bf7b19dcf3 100644 --- a/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts +++ b/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts @@ -3,6 +3,7 @@ import { type IInsightWidget, type ObjRef } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/queries/insights.ts b/libs/sdk-ui-dashboard/src/model/queries/insights.ts index 0216476b94a..0f4f6e79712 100644 --- a/libs/sdk-ui-dashboard/src/model/queries/insights.ts +++ b/libs/sdk-ui-dashboard/src/model/queries/insights.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-model"; import { newInsight } from "../../_staging/insight/insightBuilder.js"; + import { type IDashboardQuery } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts b/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts index b9ee73ab0d6..5aa7a916086 100644 --- a/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts +++ b/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts @@ -43,6 +43,7 @@ import { import { selectInsightByRef } from "../store/insights/insightsSelectors.js"; import { type DashboardState } from "../store/types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { loadDateDatasetsForInsight } from "./loadAvailableDateDatasets.js"; export const QueryDateDatasetsForInsightService = createCachedQueryService( diff --git a/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts b/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts index 6819181e80a..0573ee94798 100644 --- a/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts +++ b/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts @@ -21,6 +21,7 @@ import { type QueryCacheEntryResult, createCachedQueryService } from "../store/_ import { selectAllCatalogMeasuresMap } from "../store/catalog/catalogSelectors.js"; import { type DashboardState } from "../store/types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { loadDateDatasetsForInsight } from "./loadAvailableDateDatasets.js"; export const QueryDateDatasetsForMeasureService = createCachedQueryService( diff --git a/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx b/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx index 1a17c5468ad..0a7ceb442b8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx +++ b/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx @@ -12,6 +12,7 @@ import { } from "react-redux"; import { type DashboardState } from "../store/types.js"; + import { DashboardEventsProvider } from "./DashboardEventsContext.js"; import { type IDashboardStoreProviderProps } from "./types.js"; import { useInitializeDashboardStore } from "./useInitializeDashboardStore.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts index 40df5504336..86dcf7d22bb 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { getAutomationDashboardFilters } from "../../../_staging/automation/index.js"; + import { useAutomationAvailableDashboardFilters } from "./useAutomationAvailableDashboardFilters.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts index 1bcf58ef03c..a1505cbe09a 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject, type IInsight } from "@gooddata/sdk-model"; import { type FilterableDashboardWidget } from "../../types/layoutTypes.js"; + import { useDashboardScheduledExportFilters } from "./useDashboardScheduledExportFilters.js"; import { useWidgetScheduledExportFilters } from "./useWidgetScheduledExportFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts index 3533c19ea07..43abfe60ebc 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts @@ -11,6 +11,7 @@ import { type FilterableDashboardWidget } from "../../types/layoutTypes.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { type QueryProcessingState } from "../useDashboardQueryProcessing.js"; import { useWidgetFilters } from "../useWidgetFilters.js"; + import { sanitizeWidgetFilters } from "./shared.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts index 284ed782f98..c1439f353dd 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts @@ -12,6 +12,7 @@ import { type FilterableDashboardWidget } from "../../types/layoutTypes.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { type QueryProcessingState } from "../useDashboardQueryProcessing.js"; import { useWidgetFilters } from "../useWidgetFilters.js"; + import { sanitizeWidgetFilters } from "./shared.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts index ee1c59349e7..cc0cdfb27e5 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts @@ -2,6 +2,7 @@ import { selectIsScheduleEmailDialogContext } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; + import { useDashboardScheduledEmailsData } from "./useDashboardScheduledEmailsData.js"; import { useDashboardScheduledEmailsDialog } from "./useDashboardScheduledEmailsDialog.js"; import { useDashboardScheduledEmailsManagementDialog } from "./useDashboardScheduledEmailsManagementDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts index 4f0dd0b504f..be74dca3318 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts @@ -22,6 +22,7 @@ import { selectWidgets } from "../../store/tabs/layout/layoutSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; import { useDashboardUserInteraction } from "../useDashboardUserInteraction.js"; + import { useDashboardScheduledEmailsCommands } from "./useDashboardScheduledEmailsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts index debcf57a427..82fbd672416 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts @@ -11,6 +11,7 @@ import { selectDashboardRef } from "../../store/meta/metaSelectors.js"; import { selectIsScheduleEmailManagementDialogContext } from "../../store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; + import { useDashboardScheduledEmailsCommands } from "./useDashboardScheduledEmailsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx index 14d6754e759..f65b8dc83c8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx @@ -2,6 +2,7 @@ import { selectAlertingDialogContext } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; + import { useDashboardAlertsData } from "./useDashboardAlertsData.js"; import { useDashboardAlertsDialog } from "./useDashboardAlertsDialog.js"; import { useDashboardAlertsManagementDialog } from "./useDashboardAlertsManagementDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts index 81413a2da0f..617f637bb76 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts @@ -19,6 +19,7 @@ import { selectWidgets } from "../../store/tabs/layout/layoutSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; import { useDashboardUserInteraction } from "../useDashboardUserInteraction.js"; + import { useDashboardAlertsCommands } from "./useDashboardAlertsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts index e71246e33f9..9a41546fb81 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts @@ -12,6 +12,7 @@ import { selectDashboardRef } from "../../store/meta/metaSelectors.js"; import { selectIsAlertingManagementDialogContext } from "../../store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; + import { useDashboardAlertsCommands } from "./useDashboardAlertsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts index 6c05415f662..024c73686f8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts @@ -25,6 +25,7 @@ import { selectIsAlertsManagementDialogOpen, selectMenuButtonItemsVisibility, } from "../store/ui/uiSelectors.js"; + import { useDashboardDispatch, useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts index 8a8ec5581bb..5a230fa7ae7 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts @@ -3,6 +3,7 @@ import { useCallback } from "react"; import { requestAsyncRender, resolveAsyncRender } from "../commands/render.js"; + import { useDispatchDashboardCommand } from "./useDispatchDashboardCommand.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts index 7ecf081df8a..f30696d17e2 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts @@ -8,6 +8,7 @@ import { type DashboardCommands } from "../commands/index.js"; import { type DashboardEventHandler } from "../eventHandlers/eventHandler.js"; import { type DashboardEventType } from "../events/base.js"; import { type DashboardEvents } from "../events/index.js"; + import { useDashboardEventsContext } from "./DashboardEventsContext.js"; import { useDashboardDispatch } from "./DashboardStoreProvider.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts index 62c8253df90..a81238a71a8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts @@ -5,6 +5,7 @@ import { useState } from "react"; import { type DashboardCommands } from "../commands/index.js"; import { type DashboardEventType } from "../events/base.js"; import { type DashboardEvents } from "../events/index.js"; + import { useDashboardCommand } from "./useDashboardCommand.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts index 0920ef4e9d3..73c77913223 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts @@ -11,6 +11,7 @@ import { isDashboardEventOrCustomDashboardEvent, } from "../events/base.js"; import { type DashboardEvents } from "../events/index.js"; + import { useDashboardDispatch } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts index 348e3d5bf4d..be97f9ac080 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts @@ -14,6 +14,7 @@ import { } from "../events/general.js"; import { type DashboardQueries } from "../queries/index.js"; import { queryAndWaitFor } from "../store/_infra/queryAndWaitFor.js"; + import { useDashboardDispatch } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts index a328785bf88..1093bf14e65 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts @@ -14,6 +14,7 @@ import { type VisualizationSwitcherInteractionType, userInteractionTriggered, } from "../events/userInteraction.js"; + import { useDashboardEventDispatch } from "./useDashboardEventDispatch.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts b/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts index cff95b8d74f..8e009f859f8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts @@ -3,6 +3,7 @@ import { useCallback } from "react"; import { type DashboardCommands } from "../commands/index.js"; + import { useDashboardDispatch } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts b/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts index e031b586e04..ae78a74a03c 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts @@ -4,6 +4,7 @@ import { type IExportTemplate } from "@gooddata/sdk-model"; import { useBackendStrict, useCancelablePromise } from "@gooddata/sdk-ui"; import { selectEnableExportTemplateSelection } from "../store/config/configSelectors.js"; + import { useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts b/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts index dcec050971c..7ef5334ea1f 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts @@ -22,6 +22,7 @@ import { dashboardDeinitialized } from "../events/dashboard.js"; import { type IReduxedDashboardStore, createDashboardStore } from "../store/dashboardStore.js"; import { getWidgetsOfType } from "../store/tabs/layout/layoutUtils.js"; import type { DashboardConfig } from "../types/commonTypes.js"; + import { type IDashboardStoreProviderProps } from "./types.js"; type InitProps = { diff --git a/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts b/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts index 30b13a0e003..9895ad6dccf 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts @@ -11,6 +11,7 @@ import { setExecutionResultError, setExecutionResultLoading, } from "../commands/executionResults.js"; + import { useDispatchDashboardCommand } from "./useDispatchDashboardCommand.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts b/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts index b1c9839d194..f0adc7c12d9 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts @@ -28,6 +28,7 @@ import { selectCrossFilteringFiltersLocalIdentifiersByWidgetRef } from "../store import { selectIsInEditMode } from "../store/renderMode/renderModeSelectors.js"; import { selectFilterContextFilters } from "../store/tabs/filterContext/filterContextSelectors.js"; import { type FilterableDashboardWidget } from "../types/layoutTypes.js"; + import { useDashboardSelector } from "./DashboardStoreProvider.js"; import { type QueryProcessingState, diff --git a/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx b/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx index 8c7bc76590e..8baa38c5ac4 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx +++ b/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx @@ -7,6 +7,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { selectIsInEditMode } from "../store/renderMode/renderModeSelectors.js"; import { uiActions } from "../store/ui/index.js"; import { selectConfigurationPanelOpened, selectSelectedWidgetRef } from "../store/ui/uiSelectors.js"; + import { useDashboardDispatch, useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts b/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts index cbf1807e1c7..580afae1627 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts @@ -4,6 +4,7 @@ import { useEffect } from "react"; import { loadAllWorkspaceUsers } from "../commands/users.js"; import { selectErrorUsers, selectUsers, selectUsersLoadingStatus } from "../store/users/usersSelectors.js"; + import { useDashboardDispatch, useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts index 3d927254ca3..496ca571f63 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts @@ -2,6 +2,7 @@ import { type DashboardCommands } from "../../commands/index.js"; import { type DashboardDispatch } from "../types.js"; + import { commandEnvelopeWithPromise } from "./rootCommandHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts index c2d612ad349..3918ca82e12 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts @@ -2,6 +2,7 @@ import { type DashboardQueries } from "../../queries/index.js"; import { type DashboardDispatch } from "../types.js"; + import { queryEnvelopeWithPromise } from "./queryProcessing.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts index e5df3124ee8..1056dfc2ff5 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts @@ -4,6 +4,7 @@ import { type SagaIterator } from "redux-saga"; import { call, put } from "redux-saga/effects"; import { type IDashboardQuery } from "../../queries/base.js"; + import { queryEnvelopeWithPromise } from "./queryProcessing.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts index 7b4f4770a1f..d16bbb53576 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts @@ -14,6 +14,7 @@ import { } from "../../events/general.js"; import { type IDashboardQuery } from "../../queries/base.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDashboardContext } from "./contexts.js"; import { dispatchDashboardEvent } from "./eventDispatcher.js"; import { type IDashboardQueryService } from "./queryService.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts index 553ae6ae54d..50e03d4e112 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts @@ -14,6 +14,7 @@ import { isDashboardCommandFailed, } from "../../events/general.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDashboardContext } from "./contexts.js"; import { dispatchDashboardEvent } from "./eventDispatcher.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts index ff3e735da09..490ed1511dc 100644 --- a/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts @@ -6,6 +6,7 @@ import { type IListedDashboard } from "@gooddata/sdk-model"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { accessibleDashboardsEntityAdapter } from "./accessibleDashboardsEntityAdapter.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts index dd85f87653e..eb61281b097 100644 --- a/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts @@ -39,6 +39,7 @@ import { selectSupportsAttributeHierarchies, } from "../backendCapabilities/backendCapabilitiesSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type CatalogParametersStatus } from "./catalogState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts index 31405938930..2233a4ad460 100644 --- a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts +++ b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts @@ -8,6 +8,7 @@ import { type ICatalogAttributeHierarchy, type IParameterMetadataObject, idRef } import { catalogReducers } from "../catalogReducers.js"; import { type CatalogState } from "../catalogState.js"; import { catalogActions } from "../index.js"; + import { catalogAttributeHierarchies } from "./catalog.fixture.js"; describe("catalogReducers", () => { diff --git a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts index 604746af1e9..c4dcf93ba73 100644 --- a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts +++ b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts @@ -11,6 +11,7 @@ import { selectCatalogParametersStatus, } from "../catalogSelectors.js"; import { type ICatalogParametersState } from "../catalogState.js"; + import { catalogDateDatasets, defaultDateHierarchyTemplates } from "./catalogSelectors.fixture.js"; describe("catalogSelectors", () => { diff --git a/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts b/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts index 191a7ac2b2d..1ade00aadb3 100644 --- a/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts @@ -3,6 +3,7 @@ import { type Action, type CaseReducer, type PayloadAction } from "@reduxjs/toolkit"; import { type ResolvedDashboardConfig } from "../../types/commonTypes.js"; + import { type ConfigState } from "./configState.js"; type ConfigReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts b/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts index 4efe40c5b2e..4bada4e3271 100644 --- a/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts +++ b/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts @@ -22,6 +22,7 @@ import { type DashboardEventHandler } from "../eventHandlers/eventHandler.js"; import { type DashboardEventType } from "../events/base.js"; import { AllQueryServices } from "../queryServices/index.js"; import { type DashboardContext, type PrivateDashboardContext } from "../types/commonTypes.js"; + import { getDashboardContext } from "./_infra/contexts.js"; import { createQueryProcessingModule } from "./_infra/queryProcessing.js"; import { type IDashboardQueryService } from "./_infra/queryService.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts index 00a2f793164..3e8d5480056 100644 --- a/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts @@ -4,6 +4,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { selectDashboardId } from "../meta/metaSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type DashboardSummaryWorkflowInfo } from "./dashboardSummaryWorkflowState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts index 487f9d62153..ff364d788de 100644 --- a/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts @@ -8,6 +8,7 @@ import { type ExplicitDrill, type IDrillEventIntersectionElement } from "@goodda import { createMemoizedSelector } from "../_infra/selectors.js"; import { selectActiveOrDefaultTabLocalIdentifier } from "../tabs/tabsSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type ICrossFilteringItem } from "./types.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts index 5cf427b5f37..d513ed78f86 100644 --- a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts +++ b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts @@ -5,6 +5,7 @@ import { type EntityId, createEntityAdapter } from "@reduxjs/toolkit"; import { type ObjRef, serializeObjRef } from "@gooddata/sdk-model"; import { objRef } from "../../utils/objRef.js"; + import { type IDrillTargets } from "./drillTargetsTypes.js"; export const drillTargetsAdapter = createEntityAdapter({ diff --git a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts index d6a6341c66b..12df93748b9 100644 --- a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts @@ -7,6 +7,7 @@ import { type ObjRef, serializeObjRef } from "@gooddata/sdk-model"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { drillTargetsAdapter } from "./drillTargetsEntityAdapter.js"; import { type IDrillTargets } from "./drillTargetsTypes.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts b/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts index c0aef9ac0b2..19cce7c9bce 100644 --- a/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts @@ -3,6 +3,7 @@ import { type Action, type CaseReducer, type PayloadAction } from "@reduxjs/toolkit"; import { type ResolvedEntitlements } from "../../types/commonTypes.js"; + import { type IEntitlementsState } from "./entitlementsState.js"; type EntitlementsReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts index 016d08a32cf..318079c07be 100644 --- a/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type IExecutedState } from "./executedState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts index 34cfa15fd52..18481b79f1a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts @@ -17,6 +17,7 @@ import { selectSettings } from "../config/configSelectors.js"; import { selectCanExecuteRaw, selectCanExportTabular } from "../permissions/permissionsSelectors.js"; import { selectAnalyticalWidgetByRef } from "../tabs/layout/layoutSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { executionResultsAdapter } from "./executionResultsEntityAdapter.js"; import { type IExecutionResultEnvelope } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts index 6326d780da4..2ac424b45e2 100644 --- a/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts @@ -5,6 +5,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type IInaccessibleDashboard } from "../../types/inaccessibleDashboardTypes.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { inaccessibleDashboardsEntityAdapter } from "./inaccessibleDashboardsEntityAdapter.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts index 6df60f1dbae..20b1fb63db7 100644 --- a/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts @@ -34,6 +34,7 @@ import { import { selectLocale } from "../config/configSelectors.js"; import { selectWidgetByRef } from "../tabs/layout/layoutSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { insightsAdapter } from "./insightsEntityAdapter.js"; const entitySelectors = insightsAdapter.getSelectors((state: DashboardState) => state.insights); diff --git a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts index 91f547207ac..af0b93cc2a9 100644 --- a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts @@ -6,6 +6,7 @@ import { type IListedDashboard } from "@gooddata/sdk-model"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { listedDashboardsEntityAdapter } from "./listedDashboardsEntityAdapter.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts index d0f64bdcc97..75b5c767c2a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts @@ -4,6 +4,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { selectDashboardId } from "../meta/metaSelectors.js"; import { type DashboardSelector } from "../types.js"; + import { selectListedDashboards } from "./listedDashboardsSelectors.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts index 5f22a67f5ad..7c2241699eb 100644 --- a/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type ILoadingState } from "./loadingState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts index de0cb5eba2a..df6c42da14e 100644 --- a/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts @@ -60,6 +60,7 @@ import { selectMeasureValueFilterConfigsOverridesByTab } from "../tabs/measureVa import { selectActiveTabLocalIdentifier, selectTabs } from "../tabs/tabsSelectors.js"; import { DEFAULT_TAB_ID, type ITabState } from "../tabs/tabsState.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type DashboardDescriptor } from "./metaState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts index 7e620f76ced..49c5eefed0f 100644 --- a/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts @@ -19,6 +19,7 @@ import { selectCatalogParameters, selectCatalogParametersIsLoaded } from "../cat import { selectEnableParameters } from "../config/configSelectors.js"; import { selectInsightByWidgetRef } from "../insights/insightsSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type IDashboardParameterEntry } from "./parametersState.js"; const selectSelf = (state: DashboardState) => state.parameters; diff --git a/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts b/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts index 7457d0482d9..a8f09f5fd9a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts @@ -3,6 +3,7 @@ import { type Action, type AnyAction, type CaseReducer, type PayloadAction } from "@reduxjs/toolkit"; import { type RenderMode } from "../../../types.js"; + import { type IRenderModeState } from "./renderModeState.js"; type RenderModeReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts index 42bfad3c3d2..c6b529fc0ec 100644 --- a/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type SavingState } from "./savingState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts index 4fef00a7350..d7c90af1578 100644 --- a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts +++ b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { type ObjRef, idRef, serializeObjRef } from "@gooddata/sdk-model"; import { type DashboardDispatch, type DashboardSelectorEvaluator, type DashboardState } from "../types.js"; + import { DashboardStoreAccessor } from "./DashboardStoreAccessor.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts index 7692697fda1..8463cad32ec 100644 --- a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts +++ b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts @@ -3,6 +3,7 @@ import { idRef, serializeObjRef } from "@gooddata/sdk-model"; import { type DashboardDispatch, type DashboardSelectorEvaluator, type DashboardState } from "../types.js"; + import { DashboardStoreAccessorRepository } from "./DashboardStoreAccessorRepository.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts index 8ddf7387276..87fc12d1206 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts @@ -11,6 +11,7 @@ import { import { type DateFilterValidationResult } from "../../../../types.js"; import { type ITabsState, getActiveTab } from "../tabsState.js"; + import { type IDateFilterConfigState } from "./dateFilterConfigState.js"; type DateFilterConfigReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts index e26c1b8667f..6958ce4897a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts @@ -47,6 +47,7 @@ import { import { type IAddDateFilterPayload, type IAddMeasureValueFilterPayload } from "../../../commands/filters.js"; import { generateFilterLocalIdentifier } from "../../_infra/generators.js"; import { type ITabsState, getActiveTab, getTabOrActive } from "../tabsState.js"; + import { type WorkingDashboardMeasureValueFilter, filterContextInitialState } from "./filterContextState.js"; import { applyFilterContext, initializeFilterContext } from "./filterContextUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts index d3e41658167..dafa64a7e84 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts @@ -42,6 +42,7 @@ import { selectCrossFilteringFiltersLocalIdentifiers } from "../../drill/drillSe import { type DashboardSelector, type DashboardState } from "../../types.js"; import { selectActiveTabLocalIdentifier, selectTabs, selectTabsState } from "../tabsSelectors.js"; import { DEFAULT_TAB_ID } from "../tabsState.js"; + import { type FilterContextState, filterContextInitialState } from "./filterContextState.js"; import { applyFilterContext, getFilterIdentifier } from "./filterContextUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts index 0a19f0d33a4..04f3e9b5550 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts @@ -25,6 +25,7 @@ import { } from "@gooddata/sdk-model"; import { generateFilterLocalIdentifier } from "../../_infra/generators.js"; + import type { FilterContextState, IWorkingFilterContextDefinition } from "./filterContextState.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts index 707ea6561fd..3ab73e94bd6 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts @@ -58,6 +58,7 @@ import { type IWidgetDescription, type IWidgetHeader } from "../../../types/widg import { addArrayElements, removeArrayElement } from "../../../utils/arrayOps.js"; import { resetUndoReducer, undoReducer, withUndo } from "../../_infra/undoEnhancer.js"; import { type ITabsState } from "../tabsState.js"; + import { type ILayoutState, layoutInitialState } from "./layoutState.js"; import { getWidgetCoordinatesAndItem, resizeInsightWidget } from "./layoutUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts index 450b5111691..075bccac8ec 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts @@ -52,6 +52,7 @@ import { type DashboardSelector } from "../../types.js"; import { selectFilterContextFilters } from "../filterContext/filterContextSelectors.js"; import { selectActiveTabLocalIdentifier, selectTabs } from "../tabsSelectors.js"; import { DEFAULT_TAB_ID } from "../tabsState.js"; + import { type ILayoutState, type LayoutStash, layoutInitialState } from "./layoutState.js"; const selectSelf = createSelector(selectTabs, selectActiveTabLocalIdentifier, (tabs, activeTabId) => { diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts index b5209ac1844..37a56d45b5b 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { DEFAULT_TAB_ID, type ITabState } from "./tabsState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/types.ts b/libs/sdk-ui-dashboard/src/model/store/types.ts index 53a0314e23f..01810b8a9a4 100644 --- a/libs/sdk-ui-dashboard/src/model/store/types.ts +++ b/libs/sdk-ui-dashboard/src/model/store/types.ts @@ -5,6 +5,7 @@ import { type AnyAction, type Dispatch, type EntityId, type EntityState } from " import { type IInsight, type IListedDashboard } from "@gooddata/sdk-model"; import { type IInaccessibleDashboard } from "../types/inaccessibleDashboardTypes.js"; + import { type IAccessibleDashboardsState } from "./accessibleDashboards/index.js"; import { type IAutomationsState } from "./automations/automationsState.js"; import { type BackendCapabilitiesState } from "./backendCapabilities/backendCapabilitiesState.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts b/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts index d45a093c281..e841b2fbd8b 100644 --- a/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts @@ -26,6 +26,7 @@ import { type IScheduleEmailContext, } from "../../../types.js"; import { type IDashboardWidgetOverlay } from "../../types/commonTypes.js"; + import { type FilterViewDialogMode, type IInvalidCustomUrlDrillParameterInfo, diff --git a/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts index 2057b6606b4..16bb55c3fa9 100644 --- a/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts @@ -23,6 +23,7 @@ import { selectConfig, selectEnableDashboardDensitySetting } from "../config/con import { selectIsInEditMode } from "../renderMode/renderModeSelectors.js"; import { selectWidgetsMap } from "../tabs/layout/layoutSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type FilterViewDialogMode, type IInvalidCustomUrlDrillParameterInfo } from "./uiState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts b/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts index abca087a886..51c3387fe55 100644 --- a/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts +++ b/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts @@ -8,6 +8,7 @@ import { type Matcher, suppressConsole } from "@gooddata/util"; import { selectDrillTargetsByWidgetRef } from "../../drillTargets/drillTargetsSelectors.js"; import { selectIgnoredDrillDownHierarchiesByWidgetRef } from "../../tabs/layout/layoutSelectors.js"; import { selectGlobalDrillsDownAttributeHierarchyByWidgetRef } from "../widgetDrillSelectors.js"; + import { availableDrillTargets, catalogAttributeHierarchies, diff --git a/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts b/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts index 46af6c91277..4f5ffb0e788 100644 --- a/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts +++ b/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts @@ -23,6 +23,7 @@ import { newInsightPlaceholderWidget, newKpiPlaceholderWidget, } from "../../../widgets/placeholders/types.js"; + import { PivotTableWithRowAndColumnAttributes } from "./Insights.fixtures.js"; export const TestSectionHeader: IDashboardLayoutSectionHeader = { diff --git a/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts b/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts index e6bb86faf73..9c1d4df92d2 100644 --- a/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts +++ b/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts @@ -16,6 +16,7 @@ import { import { type IAvailableDrillTargets } from "@gooddata/sdk-ui"; import { type IInaccessibleDashboard } from "../../types/inaccessibleDashboardTypes.js"; + import { ComplexDashboardIdentifier } from "./ComplexDashboard.fixtures.js"; export const SimpleDashboardIdentifier = "adb4fefa-c5ad-410e-bb2c-d6933e0ec7a0"; diff --git a/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts b/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts index 91b35c7f41d..8dff416d956 100644 --- a/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts +++ b/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts @@ -18,6 +18,7 @@ import { import { type ILocale } from "@gooddata/sdk-ui"; import { type IDashboardFilter, type IMenuButtonItemsVisibility, type RenderMode } from "../../types.js"; + import { type ExtendedDashboardWidget } from "./layoutTypes.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts b/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts index a99be0bd579..3245f616005 100644 --- a/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts +++ b/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts @@ -16,6 +16,7 @@ import { import { type ObjRefMap } from "../../_staging/metadata/objRefMap.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { resolveDisplayFormMetadata } from "./displayFormResolver.js"; /** diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts index b8034f2261e..b26c820f484 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts @@ -9,6 +9,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardAttributeFilter } from "../../presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.js"; import { type IAttributeFiltersCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts index 20202ab62f9..e2593924e0b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts @@ -28,6 +28,7 @@ import { type IVisualizationSwitcherCustomizer, } from "../customizer.js"; import { type IDashboardPluginContract_V1 } from "../plugin.js"; + import { DashboardCustomizationLogger } from "./customizationLogging.js"; import { DefaultDashboardContentCustomizer } from "./dashboardContentCustomizer.js"; import { DefaultFilterBarCustomizer } from "./filterBarCustomizer.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts index c73ae6aee27..f5bda9e02bf 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type IDashboardPluginContract_V1 } from "../plugin.js"; + import { pluginDebugStr } from "./pluginUtils.js"; function addPluginInfoToMessage(plugin: IDashboardPluginContract_V1 | undefined, message: string) { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts index 0e3ed7fdd09..614d4016e03 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts @@ -9,6 +9,7 @@ import { type OptionalDashboardContentComponentProvider, } from "../../presentation/dashboardContexts/types.js"; import { type IDashboardContentCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts index a732c8a09f9..69c1ae4dfbf 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts @@ -8,6 +8,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardDateFilter } from "../../presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js"; import { type IDateFiltersCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; const DefaultDateFilterRendererProvider: DateFilterComponentProvider = () => { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx index 91eb953bb02..56e2b45941b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx @@ -14,6 +14,7 @@ import { switcherSlideTransformer } from "../../_staging/slideshow/switcherSlide import { containsVisualizationSwitcher } from "../../_staging/slideshow/utils/index.js"; import { widgetSlideTransformer } from "../../_staging/slideshow/widgetSlideTransformer.js"; import { type IExportLayoutCustomizer, type SectionSlidesTransformer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx index 01d62d06ca6..684bf63eea9 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx @@ -11,6 +11,7 @@ import { HiddenFilterBar } from "../../presentation/filterBar/filterBar/HiddenFi import { RenderModeAwareFilterBar } from "../../presentation/filterBar/filterBar/RenderModeAwareFilterBar.js"; import { type CustomFilterBarComponent } from "../../presentation/filterBar/filterBar/types.js"; import { type FilterBarRenderingMode, type IFilterBarCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts index 35e56ea090d..769551a5c4b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts @@ -8,6 +8,7 @@ import type { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardFilterGroup } from "../../presentation/filterBar/filterBar/DefaultDashboardFilterGroup.js"; import { type IFilterGroupsCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; const DefaultFilterGroupRendererProvider: FilterGroupComponentProvider = () => { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts index e15ce95379f..3328b38022b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type IFiltersCustomizer } from "../customizer.js"; + import { DefaultAttributeFiltersCustomizer } from "./attributeFiltersCustomizer.js"; import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { DefaultDateFiltersCustomizer } from "./dateFiltersCustomizer.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts index baf92f47ea5..6b38f3d7741 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts @@ -13,6 +13,7 @@ import { DashboardLayoutBuilder } from "../../_staging/dashboard/flexibleLayout/ import { type ExtendedDashboardWidget, type ICustomWidget } from "../../model/types/layoutTypes.js"; import { type ILayoutItemPath, type ILayoutSectionPath } from "../../types.js"; import { type IFluidLayoutCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx index 2b3cd32c392..acf3cbad527 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx @@ -15,6 +15,7 @@ import { DefaultDashboardInsight } from "../../presentation/widget/insight/Defau import { DefaultInsightBody } from "../../presentation/widget/insight/DefaultInsightBody/DefaultInsightBody.js"; import { type CustomDashboardInsightComponent } from "../../presentation/widget/insight/types.js"; import { type IDashboardInsightCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx index 9c51a9fe598..190df9285fa 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx @@ -22,6 +22,7 @@ import { type FluidLayoutCustomizationFn, type IDashboardLayoutCustomizer, } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { ExportLayoutCustomizer } from "./exportLayoutCustomizer.js"; import { FluidLayoutCustomizer } from "./fluidLayoutCustomizer.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx index cc1544a839e..287a763ca7f 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx @@ -12,6 +12,7 @@ import { type OptionalLoadingComponentProvider, } from "../../presentation/dashboardContexts/types.js"; import { type ILoadingCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts index 075b92d410f..0470b8a67db 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts @@ -8,6 +8,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardMeasureValueFilter } from "../../presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.js"; import { type IMeasureValueFiltersCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; const DefaultMeasureValueFilterRendererProvider: MeasureValueFilterComponentProvider = () => { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx index ce2f18cd7b2..f361ccfb27b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx @@ -9,6 +9,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardRichText } from "../../presentation/widget/richText/DefaultDashboardRichText.js"; import { type IRichTextCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx index 65c8717979d..295da35e477 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx @@ -20,6 +20,7 @@ import { type IDashboardAttributeFilterProps } from "../../../presentation/filte import { DefaultAttributeFiltersCustomizer } from "../attributeFiltersCustomizer.js"; import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; // diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx index 5ecde91133d..65d9e1de39e 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx @@ -16,6 +16,7 @@ import { import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultDashboardContentCustomizer } from "../dashboardContentCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; // diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx index d3ec2d1b596..af450d4b176 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx @@ -8,6 +8,7 @@ import { HiddenFilterBar } from "../../../presentation/filterBar/filterBar/Hidde import { type IFilterBarProps } from "../../../presentation/filterBar/filterBar/types.js"; import { DefaultFilterBarCustomizer } from "../filterBarCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts index 5ca60d27c95..bc963d111a4 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts @@ -17,6 +17,7 @@ import { import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { FluidLayoutCustomizer } from "../fluidLayoutCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; const EmptyLayout: IDashboardLayout = { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx index eaa8eeab126..fca2eba65f9 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx @@ -19,6 +19,7 @@ import { type IDashboardInsightProps } from "../../../presentation/widget/insigh import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultInsightCustomizer } from "../insightCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; // diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx index 4b0d6b80009..50bb04c5256 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx @@ -11,6 +11,7 @@ import { type IDashboardLayoutProps } from "../../../presentation/widget/dashboa import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultLayoutCustomizer } from "../layoutCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx index 221db82c1ad..a9719fc7d49 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx @@ -7,6 +7,7 @@ import { type ILoadingProps } from "@gooddata/sdk-ui"; import { DefaultLoadingCustomizer } from "../loadingCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx index 85894e44d47..37d369b6b4b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx @@ -16,6 +16,7 @@ import { type IDashboardMeasureValueFilterProps } from "../../../presentation/fi import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultMeasureValueFiltersCustomizer } from "../measureValueFiltersCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; const TestMeasureValueFilter: IDashboardMeasureValueFilter = { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx index 437903fde36..d73b2c8cdfd 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx @@ -8,6 +8,7 @@ import { type IRichTextWidget, idRef } from "@gooddata/sdk-model"; import { DefaultRichTextCustomizer } from "../richTextCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx index ca478884baa..a9cd446cce3 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx @@ -6,6 +6,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { type ITitleProps } from "../../../presentation/topBar/title/types.js"; import { DefaultTitleCustomizer } from "../titleCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx index a3e6e4b0e07..cd08037059d 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx @@ -7,6 +7,7 @@ import { type IButtonBarProps } from "../../../presentation/topBar/buttonBar/typ import { type ITopBarProps } from "../../../presentation/topBar/topBar/types.js"; import { DefaultTopBarCustomizer } from "../topBarCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx index 08db0777df2..b284f1c6d58 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx @@ -8,6 +8,7 @@ import { type IVisualizationSwitcherWidget, idRef } from "@gooddata/sdk-model"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; import { DefaultVisualizationSwitcherCustomizer } from "../visualizationSwitcherCustomizer.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx index d32924ef668..8a6d261a841 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx @@ -10,6 +10,7 @@ import { import { RenderModeAwareTitle } from "../../presentation/topBar/title/RenderModeAwareTitle.js"; import { type CustomTitleComponent } from "../../presentation/topBar/title/types.js"; import { type ITitleCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx index 0628ee2a004..5cb8df1b549 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx @@ -10,6 +10,7 @@ import { import { RenderModeAwareTopBar } from "../../presentation/topBar/topBar/RenderModeAwareTopBar.js"; import { type CustomTopBarComponent } from "../../presentation/topBar/topBar/types.js"; import { type ITopBarCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx index 520f861853a..4f2c82f1145 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx @@ -12,6 +12,7 @@ import type { import { DefaultVisualizationSwitcherToolbar } from "../../presentation/widget/visualizationSwitcher/configuration/DefaultVisualizationSwitcherToolbar.js"; import { DefaultDashboardVisualizationSwitcher } from "../../presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.js"; import { type IVisualizationSwitcherCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx index e88900f802f..46d8ce5105c 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx @@ -4,6 +4,7 @@ import { isCustomWidget } from "../../model/types/layoutTypes.js"; import type { OptionalWidgetComponentProvider } from "../../presentation/dashboardContexts/types.js"; import type { CustomDashboardWidgetComponent } from "../../presentation/widget/widget/types.js"; import { type IDashboardWidgetCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; /* diff --git a/libs/sdk-ui-dashboard/src/plugins/engine.ts b/libs/sdk-ui-dashboard/src/plugins/engine.ts index 03e99229eae..ce6cb70e8c7 100644 --- a/libs/sdk-ui-dashboard/src/plugins/engine.ts +++ b/libs/sdk-ui-dashboard/src/plugins/engine.ts @@ -6,6 +6,7 @@ import { LIB_VERSION } from "../__version.js"; import type { DashboardContext } from "../model/types/commonTypes.js"; import { Dashboard } from "../presentation/dashboard/Dashboard.js"; import type { IDashboardExtensionProps, IDashboardProps } from "../presentation/dashboard/types.js"; + import { DashboardCustomizationBuilder } from "./customizationApis/customizationBuilder.js"; import { DefaultDashboardEventHandling } from "./customizationApis/dashboardEventHandling.js"; import { pluginDebugStr } from "./customizationApis/pluginUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/plugin.ts b/libs/sdk-ui-dashboard/src/plugins/plugin.ts index 4ec217133ec..d2c93478a8f 100644 --- a/libs/sdk-ui-dashboard/src/plugins/plugin.ts +++ b/libs/sdk-ui-dashboard/src/plugins/plugin.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import type { DashboardContext } from "../model/types/commonTypes.js"; + import { type IDashboardCustomizer, type IDashboardEventHandling } from "./customizer.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx index f0b174a489a..d1d64ba5e9e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IAlertingDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx index 1d0615df79c..42102ad41f5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IAlertingManagementDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx index c29301b8001..d318495d817 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx @@ -56,6 +56,7 @@ import { IntlWrapper } from "../../localization/IntlWrapper.js"; import { RecipientsSelect } from "../../scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js"; import { DeleteAlertConfirmDialog } from "../DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.js"; import { type IAlertingDialogProps } from "../types.js"; + import { AlertingDialogHeader } from "./AlertingDialogHeader.js"; import { AlertAttributeSelect } from "./components/AlertAttributeSelect.js"; import { AlertComparisonOperatorSelect } from "./components/AlertComparisonOperatorSelect.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts index 3fbdc644bf1..4460b9573eb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts @@ -95,6 +95,7 @@ import { transformAlertBySensitivity, transformAlertByValue, } from "../utils/transformation.js"; + import { useAlertValidation } from "./useAlertValidation.js"; import { useAttributeValuesFromExecResults } from "./useAttributeValuesFromExecResults.js"; import { useThresholdValue } from "./useThresholdValue.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts index 710e15d1f7b..6adf1506112 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts @@ -14,6 +14,7 @@ import { import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../../model/store/config/configSelectors.js"; + import { useCreateAlert } from "./useCreateAlert.js"; import { useUpdateAlert } from "./useUpdateAlert.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts index 4d0732c854c..1e3d86076eb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-model"; import { type AlertMetric } from "../../types.js"; + import { type IMeasureFormatMap, getMeasureFormat, getMeasureTitle } from "./getters.js"; import { transformAlertExecutionByMetric } from "./transformation.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts index 2d039c6b15d..5ab3880b948 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts @@ -44,6 +44,7 @@ import { import { type AlertAttribute, type AlertMetric, type AlertMetricComparator } from "../../types.js"; import { DEFAULT_MEASURE_FORMAT } from "../constants.js"; + import { isChangeOperator, isDifferenceOperator } from "./guards.js"; export type IMeasureFormatMap = { [key: string]: string }; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts index d1a73818680..2a825bd91d4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts @@ -31,6 +31,7 @@ import { import { BucketNames } from "@gooddata/sdk-ui"; import { type AlertAttribute, type AlertMetric, AlertMetricComparatorType } from "../../types.js"; + import { getCatalogAttribute, getFiltersAttribute } from "./getters.js"; type InsightType = diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts index 8e1cd66d257..230a15707ac 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts @@ -37,6 +37,7 @@ import { type AlertMetricComparator, AlertMetricComparatorType, } from "../../types.js"; + import { createCronFromGranularity } from "./cron.js"; import { type IMeasureFormatMap, diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx index 412ab533776..24a3c017af7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx @@ -21,6 +21,7 @@ import { selectIsAlertingDialogOpen } from "../../../model/store/ui/uiSelectors. import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../constants/zIndex.js"; import { isMobileView } from "../DefaultAlertingDialog/utils/responsive.js"; import { useAlertingDialogAccessibility } from "../hooks/useAlertingDialogAccessibility.js"; + import { Alerts } from "./components/AlertsList.js"; const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx index a51c10d7219..776e08c81a8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx @@ -16,6 +16,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectDashboardId } from "../../../model/store/meta/metaSelectors.js"; import { type IAlertingManagementDialogProps } from "../types.js"; + import { DeleteAlertConfirmDialog } from "./components/DeleteAlertConfirmDialog.js"; import { PauseAlertRunner } from "./components/PauseAlertRunner.js"; import { DefaultAlertingManagementDialogContentBasic } from "./DefaultAlertingManagementDialogContentBasic.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx index f587f67287d..33bf2515b9e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx @@ -17,6 +17,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { selectIsWhiteLabeled } from "../../../model/store/config/configSelectors.js"; import { isMobileView } from "../DefaultAlertingDialog/utils/responsive.js"; import { type IAlertingManagementDialogOldProps } from "../types.js"; + import { AlertsOld } from "./components/AlertsListOld.js"; import { DeleteAlertConfirmDialog } from "./components/DeleteAlertConfirmDialog.js"; import { PauseAlertRunner } from "./components/PauseAlertRunner.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx index 29698fbfa6b..d33426115fd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx @@ -17,6 +17,7 @@ import { selectCurrentUser } from "../../../../model/store/user/userSelectors.js import { gdColorNegative, gdColorStateBlank } from "../../../constants/colors.js"; import { useAlertValidation } from "../../DefaultAlertingDialog/hooks/useAlertValidation.js"; import { getSubtitle } from "../../DefaultAlertingDialog/utils/getters.js"; + import { AlertDropdown } from "./AlertDropdown.js"; interface IAlertProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx index 2e79423ff67..c412328812c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx @@ -20,6 +20,7 @@ import { } from "@gooddata/sdk-ui-kit"; import { DefaultDashboardAttributeFilter } from "../../filterBar/attributeFilter/DefaultDashboardAttributeFilter.js"; + import { AutomationAttributeFilterProvider, useAutomationAttributeFilterContext, diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx index 0079e91079d..e98efeb1f13 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx @@ -18,6 +18,7 @@ import { } from "../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js"; import { DefaultDashboardDateFilter } from "../../filterBar/dateFilter/DefaultDashboardDateFilter.js"; import type { IDashboardDateFilterConfig } from "../../filterBar/dateFilter/types.js"; + import { AutomationDateFilterProvider, useAutomationDateFilterContext, diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx index 83b0e373893..c953e853e78 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx @@ -46,6 +46,7 @@ import { } from "../../constants/automations.js"; import { AttributesDropdown } from "../../filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js"; import { useAutomationFilters, useAutomationFiltersByTab } from "../useAutomationFilters.js"; + import { AutomationAttributeFilter } from "./AutomationAttributeFilter.js"; import { AutomationDateFilter } from "./AutomationDateFilter.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts index 28acfbee419..8ded2d7e3f9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts @@ -38,6 +38,7 @@ import { selectDateFilterConfigsOverrides, selectDateFilterConfigsOverridesByTab, } from "../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js"; + import { areFiltersMatchedByIdentifier, getCatalogAttributesByFilters, diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts index cbf70ef8393..ab30f1af040 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts @@ -18,6 +18,7 @@ import { } from "../../model/store/filtering/dashboardFilterSelectors.js"; import type { ExtendedDashboardWidget } from "../../model/types/layoutTypes.js"; import { removeIgnoredWidgetFilters } from "../../model/utils/widgetFilters.js"; + import { useAutomationVisibleFilters, useAutomationVisibleFiltersByTab, diff --git a/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx index 8a48de08592..a62b320e530 100644 --- a/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx @@ -10,6 +10,7 @@ import { cancelEditRenderMode } from "../../model/commands/renderMode.js"; import { useDashboardDispatch, useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { uiActions } from "../../model/store/ui/index.js"; import { selectIsCancelEditModeDialogOpen } from "../../model/store/ui/uiSelectors.js"; + import { type ICancelEditDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx index 312625a4c8f..43fc29beaba 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx index a4ff788ad0f..592ff0e6fff 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx @@ -2,6 +2,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../model/store/config/configSelectors.js"; + import { AlertingDialogProviderNew } from "./AlertingDialogProviderNew.js"; import { AlertingDialogProviderOld } from "./AlertingDialogProviderOld.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx index 6afe60ae0b7..6f42d110e6e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx @@ -21,6 +21,7 @@ import { TopBar } from "../../topBar/topBar/TopBar.js"; import { useWidgetDeleteDialogProps } from "../../widgetDeleteDialog/DefaultWidgetDeleteDialog.js"; import { WidgetDeleteDialog } from "../../widgetDeleteDialog/WidgetDeleteDialog.js"; import { ToastMessages } from "../components/ToastMessages.js"; + import { AlertingDialogProvider } from "./AlertingDialogProvider.js"; import { DashboardTabs, useDashboardTabsProps } from "./DashboardTabs.js"; import { DensityDialogProvider } from "./DensityDialogProvider.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx index 25e17ab91c2..aca98fff74a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx @@ -27,6 +27,7 @@ import { type IWrapCreatePanelItemWithDragComponent, type IWrapInsightListItemWithDragComponent, } from "../../dragAndDrop/types.js"; + import { DraggableInsightList } from "./DraggableInsightList/DraggableInsightList.js"; interface ICreationPanelProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx index 74fb28d3611..9ae2b2d4c89 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type ISidebarProps } from "./types.js"; export function DashboardSidebar(props: ISidebarProps): ReactElement { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx index 526450d27da..e73a535c356 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx @@ -5,6 +5,7 @@ import { useEffect, useRef } from "react"; import { FlexDimensions } from "@gooddata/sdk-ui-kit"; import { type IWrapInsightListItemWithDragComponent } from "../../../dragAndDrop/types.js"; + import { DraggableInsightListCore } from "./DraggableInsightListCore.js"; interface IDraggableInsightListProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx index 88679e1d36c..43613e7f816 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx @@ -24,6 +24,7 @@ import { import { useDashboardComponentsContext } from "../../../dashboardContexts/DashboardComponentsContext.js"; import { InsightList } from "../../../insightList/InsightList.js"; import { type IInsightListProps } from "../../../insightList/types.js"; + import { DraggableInsightListItemWrapper } from "./DraggableInsightListItemWrapper.js"; export function DraggableInsightListCore({ diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx index b454bbd3ab9..9172ebe0ff6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx @@ -58,6 +58,7 @@ import { gdColorStateBlank } from "../../constants/colors.js"; import { useWidgetDragEndHandler } from "../../dragAndDrop/draggableWidget/useWidgetDragEndHandler.js"; import { type DraggableItem } from "../../dragAndDrop/types.js"; import { useDashboardDrag } from "../../dragAndDrop/useDashboardDrag.js"; + import { InsightPickerPanel } from "./InsightPickerPanel.js"; const ICON_SIZE = 28; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx index c3dded30798..65f57c65d0f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx @@ -21,6 +21,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectCurrentUser } from "../../../model/store/user/userSelectors.js"; import { getAuthor } from "../../../model/utils/author.js"; + import { InsightPickerListItem } from "./InsightPickerListItem.js"; import { useInsertInsightToLayout } from "./useInsertInsightToLayout.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx index 1377c8c1f07..b862876d67a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx @@ -3,6 +3,7 @@ import { type ComponentType } from "react"; import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { SidebarConfigurationPanel } from "./SidebarConfigurationPanel.js"; import { type ISidebarProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx index 7f3767398f0..1bc9441b641 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx @@ -5,6 +5,7 @@ import { type ReactElement } from "react"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { useWidgetSelection } from "../../../model/react/useWidgetSelection.js"; import { selectSettings } from "../../../model/store/config/configSelectors.js"; + import { CreationPanel } from "./CreationPanel.js"; import { FloatingToolbar } from "./FloatingToolbar.js"; import { type ISidebarProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx index 42b4a6ea7d7..2e2de280989 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx @@ -35,6 +35,7 @@ import { DashboardHeader } from "../DashboardHeader/DashboardHeader.js"; import { DashboardSidebar } from "../DashboardSidebar/DashboardSidebar.js"; import { RenderModeAwareDashboardSidebar } from "../DashboardSidebar/RenderModeAwareDashboardSidebar.js"; import { type IDashboardProps } from "../types.js"; + import { DashboardScreenSizeProvider } from "./DashboardScreenSizeContext.js"; const overlayController = OverlayController.getInstance(DASHBOARD_HEADER_OVERLAYS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx index 80e9ed0c05b..5adcc1f7332 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx @@ -4,6 +4,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { selectDashboardLoading } from "../../../model/store/loading/loadingSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; import { type IDashboardProps } from "../types.js"; + import { DashboardInner } from "./DashboardInner.js"; export function DashboardLoading(props: IDashboardProps) { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx index 1b397a22c14..bb814f57c6a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx @@ -11,6 +11,7 @@ import { useDashboardDrop } from "../../dragAndDrop/useDashboardDrop.js"; import { useWidgetDragHoverHandlers as useFlexibleWidgetDragHoverHandlers } from "../../flexibleLayout/dragAndDrop/draggableWidget/useWidgetDragHoverHandlers.js"; import { DashboardLayout } from "../../widget/dashboardLayout/DashboardLayout.js"; import { type IDashboardProps } from "../types.js"; + import { DateFilterConfigWarnings } from "./DateFilterConfigWarnings.js"; export const DashboardMainContent = forwardRef(function DashboardMainContent(_: IDashboardProps, ref) { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx index 9d10ba2dbf6..7351fed660a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx @@ -44,6 +44,7 @@ import { RenderModeAwareDashboardSidebar } from "../DashboardSidebar/RenderModeA import { defaultDashboardThemeModifier } from "../defaultDashboardThemeModifier.js"; import { useDashboard } from "../hooks/useDashboard.js"; import { type IDashboardProps } from "../types.js"; + import { DashboardItemPathAndSizeProvider } from "./DashboardItemPathAndSizeContext.js"; import { DashboardLoading } from "./DashboardLoading.js"; import { DensityInitializer } from "./DensityInitializer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts b/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts index 85ed77504fd..55f723cbc87 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts @@ -60,6 +60,7 @@ import { type CustomMenuButtonComponent, type IMenuButtonConfiguration } from ". import { type CustomTitleComponent } from "../topBar/title/types.js"; import { type CustomTopBarComponent } from "../topBar/topBar/types.js"; import { type CustomDashboardLayoutComponent } from "../widget/dashboardLayout/types.js"; + import { type CustomSidebarComponent } from "./DashboardSidebar/types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx index 405b5626ac3..1833a7b3015 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx @@ -40,6 +40,7 @@ import { type CustomMenuButtonComponent } from "../topBar/menuButton/types.js"; import { type CustomTitleComponent } from "../topBar/title/types.js"; import { type CustomTopBarComponent } from "../topBar/topBar/types.js"; import { type CustomDashboardLayoutComponent } from "../widget/dashboardLayout/types.js"; + import { type AttributeFilterComponentProvider, type DashboardContentComponentProvider, diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx index 9b54c7fb382..e3e542b7f28 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx @@ -6,6 +6,7 @@ import { type DashboardLayoutExportTransformFn, type IDashboardExportSlideConfig, } from "../../model/types/commonTypes.js"; + import { type InsightMenuItemsProvider, type RichTextMenuItemsProvider } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts index 367fd5d83cc..b2124376d0b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type ILayoutItemPath, type RenderMode } from "../../types.js"; + import { useDashboardCustomizationsContext } from "./DashboardCustomizationsContext.js"; type LayoutElementType = "root" | "nested" | "section" | "item" | "leaf-item"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx index afa3a74627e..65da06af487 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { Dropdown, DropdownList } from "@gooddata/sdk-ui-kit"; import { dashboardMatch } from "../drill/utils/dashboardPredicate.js"; + import { DashboardListButton } from "./DashboardListButton.js"; import { DashboardListItem } from "./DashboardListItem.js"; import { type IDashboardListProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx index 2fc88b339a2..3c9cbcf00ba 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardSettingsDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx index 527155f1c41..bd2b02c7903 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx @@ -37,6 +37,7 @@ import { selectWeekStart, } from "../../model/store/config/configSelectors.js"; import { selectCrossFilteringEnabledAndSupported } from "../../model/store/topBar/topBarSelectors.js"; + import { type IDashboardSettingsDialogProps } from "./types.js"; import { useDialogData } from "./useDialogData.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts index a3162d718e2..11836c02259 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts @@ -13,6 +13,7 @@ import { selectEvaluationFrequency, selectSectionHeadersDateDataSet, } from "../../model/store/meta/metaSelectors.js"; + import { type IDashboardSettingsApplyPayload } from "./types.js"; export function useDialogData() { diff --git a/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx index d7d0cb232d7..8f077988435 100644 --- a/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx @@ -18,6 +18,7 @@ import { selectEnableAlerting, selectEnableScheduling } from "../../model/store/ import { selectDashboardTitle } from "../../model/store/meta/metaSelectors.js"; import { uiActions } from "../../model/store/ui/index.js"; import { selectIsDeleteDialogOpen } from "../../model/store/ui/uiSelectors.js"; + import { type IDeleteDialogProps } from "./types.js"; const deleteMessages = defineMessages({ diff --git a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx index a9d8eb02881..b7542f7d604 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { useExportCsvDialogContext } from "../dashboardContexts/ExportCsvDialogContext.js"; + import { ExportCsvDialog } from "./ExportCsvDialog.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx index 9774dfeb7da..b829861c01d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { useExportTemplateDialogContext } from "../dashboardContexts/ExportTemplateDialogContext.js"; + import { ExportTemplateSelectionDialog } from "./ExportTemplateSelectionDialog/ExportTemplateSelectionDialog.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx index 569eb9e4a30..d4c52a8d48b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type CustomCreatePanelItemComponent } from "../componentDefinition/types.js"; + import { type DraggableItem, type IWrapCreatePanelItemWithDragComponent } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx index 5c3f8df3f7a..7f93809acaf 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx @@ -1,10 +1,11 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type ReactNode, createContext, useCallback, useContext, useRef, useState } from "react"; import { type XYCoord } from "@evil-internetmann/react-dnd"; import { emptyDOMRect } from "../constants.js"; + import { type ReachedResizingLimit } from "./DragLayerPreview/types.js"; type ResizeDirection = "height" | "width" | "none"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx index 3fb1eaf7be8..35e17bfd444 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { selectIsInEditMode } from "../../model/store/renderMode/renderModeSelectors.js"; + import { useWidgetDragEndHandler } from "./draggableWidget/useWidgetDragEndHandler.js"; import { type IWrapCreatePanelItemWithDragInnerProps, diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx index ab398974d5e..9dac200f736 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx @@ -10,6 +10,7 @@ import { getSizeInfo } from "../../_staging/layout/sizing.js"; import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { selectSettings } from "../../model/store/config/configSelectors.js"; import { selectIsInEditMode } from "../../model/store/renderMode/renderModeSelectors.js"; + import { useWidgetDragEndHandler } from "./draggableWidget/useWidgetDragEndHandler.js"; import { type IWrapInsightListItemWithDragProps } from "./types.js"; import { useDashboardDrag } from "./useDashboardDrag.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx index 99cf33b2a18..5a3028121af 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { type IDashboardLayoutDraggingComponentProps } from "../../componentDefinition/types.js"; + import { AddDashboardLayoutWidgetButton } from "./AddDashboardLayoutWidgetButton.js"; /* diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx index ea3900c003a..8b15df07eb5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type IRichTextDraggingComponentProps } from "../../componentDefinition/types.js"; + import { AddRichTextWidgetButton } from "./AddRichTextWidgetButton.js"; /* diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx index 1f699c92a3a..f04674b4232 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { type IVisualizationSwitcherDraggingComponentProps } from "../../componentDefinition/types.js"; + import { AddVisualizationSwitcherWidgetButton } from "./AddVisualizationSwitcherWidgetButton.js"; /* diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts index 1370f159aa2..7895f3ada86 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts @@ -12,6 +12,7 @@ import { } from "../../model/commands/filters.js"; import { useDashboardDispatch } from "../../model/react/DashboardStoreProvider.js"; import { parametersActions } from "../../model/store/parameters/index.js"; + import { isAttributeFilterDraggableItem, isDateFilterDraggableItem, diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx index a1c26d5a207..00b82088d28 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx @@ -43,6 +43,7 @@ import { selectFilterableWidgetByRef } from "../../../../model/store/tabs/layout import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { useInvalidFilteringParametersIdentifiers } from "../../../widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.js"; import { type UrlDrillTarget, isDrillToCustomUrlConfig } from "../../types.js"; + import { ParametersPanel } from "./CustomUrlEditorParameters.js"; import { type IAttributeWithDisplayForm } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx index f0206c2aa22..dc9cb774e89 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx @@ -15,6 +15,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { selectAllCatalogDisplayFormsMap } from "../../../../../model/store/catalog/catalogSelectors.js"; import { DropdownSectionHeader } from "../DropdownSectionHeader.js"; import { type IParametersPanelSectionsCommonProps } from "../types.js"; + import { DisplayFormParam } from "./DisplayFormParam.js"; export interface IDashboardParametersSectionProps extends IParametersPanelSectionsCommonProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx index 1330e6e21f0..64bf54f83d3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx @@ -13,6 +13,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { selectAllCatalogAttributesMap } from "../../../../../model/store/catalog/catalogSelectors.js"; import { selectFilterContextAttributeFilterItemByDisplayForm } from "../../../../../model/store/tabs/filterContext/filterContextSelectors.js"; import { AttributeDisplayFormParameterDetail } from "../ParameterDetails/AttributeDisplayFormParameterDetail.js"; + import { Parameter } from "./Parameter.js"; interface IXProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx index c7101a8bbcd..7b4b3349509 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx @@ -15,6 +15,7 @@ import { InsightIdParameterDetail } from "../ParameterDetails/InsightIdParameter import { ProjectIdParameterDetail } from "../ParameterDetails/ProjectIdParameterDetail.js"; import { WidgetIdParameterDetail } from "../ParameterDetails/WidgetIdParameterDetail.js"; import { type IIdentifierParametersSectionProps } from "../types.js"; + import { Parameter } from "./Parameter.js"; interface IIdentifierParameter { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx index 2314ecb7ac4..bcbf9467154 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx @@ -8,6 +8,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { selectAllCatalogDisplayFormsMap } from "../../../../../model/store/catalog/catalogSelectors.js"; import { DropdownSectionHeader } from "../DropdownSectionHeader.js"; import { type IAttributeWithDisplayForm, type IParametersPanelSectionsCommonProps } from "../types.js"; + import { DisplayFormParam } from "./DisplayFormParam.js"; export interface IInsightParametersSectionProps extends IParametersPanelSectionsCommonProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx index 8b8270675c1..ce248ca0167 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, useIntl } from "react-intl"; import { Button } from "@gooddata/sdk-ui-kit"; import { type UrlDrillTarget, isDrillToCustomUrlConfig } from "../../types.js"; + import { DropdownSectionHeader } from "./DropdownSectionHeader.js"; type ToggleModalCallback = () => void; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx index 1f7c2d000f3..a177b42b84b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx @@ -18,6 +18,7 @@ import { newDisplayFormMap } from "../../../../../_staging/metadata/objRefMap.js import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectBackendCapabilities } from "../../../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js"; import { selectCatalogDateDatasets } from "../../../../../model/store/catalog/catalogSelectors.js"; + import { ParameterDetail } from "./ParameterDetail.js"; const MAX_CACHED_REQUESTS = 50; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx index c6fead0cb2d..d1369eca768 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx @@ -4,6 +4,7 @@ import { useIntl } from "react-intl"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectDashboardId } from "../../../../../model/store/meta/metaSelectors.js"; + import { ParameterDetail } from "./ParameterDetail.js"; interface IIdentifierDetailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx index bf2fb408b23..a9241d1bcab 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx @@ -8,6 +8,7 @@ import { type ObjRef, isInsightWidget } from "@gooddata/sdk-model"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectInsightByRef } from "../../../../../model/store/insights/insightsSelectors.js"; import { selectWidgetByRef } from "../../../../../model/store/tabs/layout/layoutSelectors.js"; + import { ParameterDetail } from "./ParameterDetail.js"; interface IIdentifierDetailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx index a10fee99227..5c856c4d550 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx @@ -7,6 +7,7 @@ import { type ObjRef, isInsightWidget } from "@gooddata/sdk-model"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectWidgetByRef } from "../../../../../model/store/tabs/layout/layoutSelectors.js"; import { isTemporaryIdentity } from "../../../../../model/utils/dashboardItemUtils.js"; + import { ParameterDetail } from "./ParameterDetail.js"; interface IIdentifierDetailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx index 1effe314367..982ff2529b8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx @@ -49,6 +49,7 @@ import { } from "../utils/drillDownUtils.js"; import { getDrillToCustomUrlMissingAttributes } from "../utils/drillToCustomUrlUtils.js"; import { getKdaKeyDriverCombinations, getKeyDriverCombinationItemTitle } from "../utils/kdaUtils.js"; + import { DrillSelectDropdownMenuItem } from "./DrillSelectDropdownMenuItem.js"; import { DrillType, type IDrillSelectContext, type IDrillSelectItem } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx index f00214604b3..c71a65305ef 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx @@ -6,6 +6,7 @@ import { compact } from "lodash-es"; import { type IUiMenuInteractiveItemProps, type IconType, UiIcon, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type IDrillSelectDropdownMenuItemData } from "../hooks/useDrillSelectDropdownMenuItems.js"; + import { DrillType } from "./types.js"; const DRILL_ICON_NAME: Record = { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx index dfea73e1cd6..81c14b1c0c6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx @@ -46,6 +46,7 @@ import { type OnWidgetDrill, } from "../types.js"; import { filterDrillFromAttributeByPriority } from "../utils/drillDownUtils.js"; + import { DrillSelectDropdown } from "./DrillSelectDropdown.js"; import { type IDrillSelectContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts b/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts index ad762df767c..6e0ed15fcc8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts +++ b/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts @@ -23,6 +23,7 @@ import { type OnKeyDriverAnalysisError, type OnKeyDriverAnalysisSuccess, } from "../types.js"; + import { useCrossFiltering } from "./useCrossFiltering.js"; import { useDrill } from "./useDrill.js"; import { useDrillDown } from "./useDrillDown.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx b/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx index 2ca9ade5aeb..431fc82e3d0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx @@ -10,6 +10,7 @@ import { selectConfig } from "../../model/store/config/configSelectors.js"; import { selectDashboardDescriptor, selectDashboardId } from "../../model/store/meta/metaSelectors.js"; import { selectCurrentUser } from "../../model/store/user/userSelectors.js"; import { type RenderMode } from "../../types.js"; + import { useDashboardRelatedFilters } from "./hooks/useDashboardRelatedFilters.js"; import { type MetaExportDataAttributes } from "./types.js"; import { useMetaExportData, useMetaExportImageData, useMetaPaletteData } from "./useExportData.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts b/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts index 6f452377367..cfc57ef380b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts +++ b/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts @@ -23,6 +23,7 @@ import { selectInsightByWidgetRef } from "../../model/store/insights/insightsSel import { selectIsInExportMode } from "../../model/store/renderMode/renderModeSelectors.js"; import type { ExtendedDashboardWidget } from "../../model/types/layoutTypes.js"; import { type RenderMode } from "../../types.js"; + import { type CommonExportDataAttributes, type MetaExportData, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx index 53613dc89f2..9b2401d6952 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx @@ -34,6 +34,7 @@ import { selectFilterContextDateFiltersWithDimension, selectOtherContextAttributeFilterItems, } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { useDependentDateFiltersConfiguration } from "./dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.js"; import { useDisplayFormConfiguration } from "./dashboardDropdownBody/configuration/hooks/useDisplayFormConfiguration.js"; import { useLimitingItemsConfiguration } from "./dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx index eae72988f0e..35841c3fa25 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx @@ -14,6 +14,7 @@ import { selectIsWhiteLabeled } from "../../../model/store/config/configSelector import { selectCanAddMoreFilters } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; import type { ICreatePanelItemComponentProps } from "../../componentDefinition/types.js"; import { DraggableAttributeFilterCreatePanelItem } from "../../dragAndDrop/draggableAttributeFilter/DraggableAttributeFilterCreatePanelItem.js"; + import { AddAttributeFilterPlaceholder } from "./addAttributeFilter/AddAttributeFilterPlaceholder.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx index d76cb12022b..0c19b837204 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx @@ -60,6 +60,7 @@ import { selectPreloadedAttributesWithReferences, } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; import { getVisibilityIcon } from "../utils.js"; + import { AttributeFilterParentFilteringProvider, useAttributeFilterParentFiltering, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts index e9866019516..9d2bd63cebf 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts @@ -3,6 +3,7 @@ import { type AttributeFilterComponentSet } from "../../componentDefinition/types.js"; import { type AttributeFilterComponentProvider } from "../../dashboardContexts/types.js"; import { DefaultAttributeFilterDraggingComponent } from "../../dragAndDrop/draggableAttributeFilter/DefaultAttributeFilterDraggingComponent.js"; + import { AttributesDropdown } from "./addAttributeFilter/AttributesDropdown.js"; import { CreatableAttributeFilter } from "./CreatableAttributeFilter.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx index 70d014703f5..1087cc6ed0c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx @@ -30,6 +30,7 @@ import { import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; import { selectAllInsightWidgets } from "../../../../model/store/tabs/layout/layoutSelectors.js"; import { type IDashboardAttributeFilterPlaceholderProps } from "../types.js"; + import { AddAttributeFilterButton } from "./AddAttributeFilterButton.js"; import { isLocationIconEnabled } from "./addAttributeFilterUtils.js"; import { AttributeListItem, getAttributeListItemTitle } from "./AttributeListItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx index d0350505eb6..e9ce90a8f5f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx @@ -7,6 +7,7 @@ import { Bubble, BubbleHoverTrigger, type IAlignPoint } from "@gooddata/sdk-ui-k import { useAttributeDataSet } from "../../dashboardDropdownBody/configuration/hooks/useAttributeDataSet.js"; import { useAttributeElements } from "../../dashboardDropdownBody/configuration/hooks/useAttributeElements.js"; + import { AttributeListItemTooltipContent } from "./AttributeListItemTooltipContent.js"; const ATTR_ELEMENTS_LIMIT: number = 5; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx index fcde23426ef..a2f6f5b4774 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx @@ -31,6 +31,7 @@ import { import { ConfigModeSelect } from "../../../configuration/ConfigurationModeSelect.js"; import { AttributeTitleRenaming } from "../../../configuration/title/AttributeTitleRenaming.js"; import { useAttributeFilterParentFiltering } from "../../AttributeFilterParentFilteringContext.js"; + import { ConfigurationCategory } from "./ConfigurationCategory.js"; import { ConfigurationPanelHeader } from "./ConfigurationPanelHeader.js"; import { AttributeDisplayFormsDropdown } from "./displayForms/AttributeDisplayFormsDropdown.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx index 7eb79926f1b..752700f541e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx @@ -6,6 +6,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { Dropdown, DropdownButton, DropdownList } from "@gooddata/sdk-ui-kit"; import { type IConnectingAttribute } from "../../../../../../model/types/attributeFilterTypes.js"; + import { ConnectingAttributeItem } from "./ConnectingAttributeItem.js"; interface IConnectingAttributeDropdownProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts index ac89e5dca4d..e847aca82a1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts @@ -10,6 +10,7 @@ import { type IDashboardAttributeFilter, type IDashboardDateFilter, isUriRef } f import { setAttributeFilterDependentDateFilters } from "../../../../../../model/commands/filters.js"; import { useDispatchDashboardCommand } from "../../../../../../model/react/useDispatchDashboardCommand.js"; import { type IDashboardDependentDateFilter } from "../../../../../../model/types/dateFilterTypes.js"; + import { useDependentCommonDateFilterConfigurationState, useDependentDateFilterConfigurationState, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts index b3aa8f4d62a..cbceeb4b21b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts @@ -16,6 +16,7 @@ import { useBackend } from "@gooddata/sdk-ui"; import { setAttributeFilterParents } from "../../../../../../model/commands/filters.js"; import { useDispatchDashboardCommand } from "../../../../../../model/react/useDispatchDashboardCommand.js"; import { type IDashboardAttributeFilterParentItem } from "../../../../../../model/types/attributeFilterTypes.js"; + import { useOriginalConfigurationState } from "./useOriginalConfigurationState.js"; export function useParentsConfiguration( diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx index b12119286ba..a6f325ab243 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx @@ -28,6 +28,7 @@ import { } from "../../../../../../model/types/dateFilterTypes.js"; import { IntlWrapper } from "../../../../../localization/IntlWrapper.js"; import { type ValuesLimitingItem } from "../../../types.js"; + import { AddLimitingItemDialog } from "./dialog/AddLimitingItemDialog.js"; import { LimitingItem } from "./shared/LimitingItem.js"; import { useLimitingItems } from "./shared/limitingItemsHook.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx index 8813daec0a0..0be3c6338ec 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx @@ -12,6 +12,7 @@ import { messages } from "../../../../../../../locales.js"; import { useDashboardSelector } from "../../../../../../../model/react/DashboardStoreProvider.js"; import { useDashboardUserInteraction } from "../../../../../../../model/react/useDashboardUserInteraction.js"; import { selectIsWhiteLabeled } from "../../../../../../../model/store/config/configSelectors.js"; + import { PopupHeader } from "./PopupHeader.js"; interface IActionProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx index 2eeb036d34f..ff124fc583a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx @@ -9,6 +9,7 @@ import { type IDashboardAttributeFilterParentItem } from "../../../../../../../m import { type IDashboardDependentDateFilter } from "../../../../../../../model/types/dateFilterTypes.js"; import { ConfigurationBubble } from "../../../../../../widget/common/configuration/ConfigurationBubble.js"; import { type ValuesLimitingItem } from "../../../../types.js"; + import { ActionSelectionPage } from "./ActionSelectionPage.js"; import { DateFiltersPage } from "./DateFiltersPage.js"; import { LimitingItemsPage } from "./LimitingItemsPage.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx index 8de1716456f..afed42b8590 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx @@ -22,6 +22,7 @@ import { useCommonDateItems, useDependentDateFilterTitle, } from "../shared/limitingItemsHook.js"; + import { PopupHeader } from "./PopupHeader.js"; import { WithDisabledParentFilterTooltip } from "./WithDisabledParentFilterTooltip.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx index bded3548a46..d01407a45eb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx @@ -17,6 +17,7 @@ import { type IValuesLimitingItemWithTitle, useSearchableLimitingItems, } from "../shared/limitingItemsHook.js"; + import { PopupHeader } from "./PopupHeader.js"; import { getTelemetryEventForLimitingItem } from "./telemetryUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx index 5c7c732b658..c99bc94cd1c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx @@ -26,6 +26,7 @@ import { import { type ValuesLimitingItem } from "../../../../types.js"; import { LimitingItemTitle, UnknownItemTitle } from "../shared/LimitingItem.js"; import { type IValuesLimitingItemWithTitle, useFilterItems } from "../shared/limitingItemsHook.js"; + import { PopupHeader } from "./PopupHeader.js"; import { WithDisabledParentFilterTooltip } from "./WithDisabledParentFilterTooltip.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx index 76600d583ba..9aaf3e6a382 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx @@ -9,6 +9,7 @@ import { type IConnectingAttribute, type IDashboardAttributeFilterParentItem, } from "../../../../../../model/types/attributeFilterTypes.js"; + import { ParentFiltersListItem } from "./ParentFiltersListItem.js"; import { ParentFiltersListItemWithoutConnectingAttributes } from "./ParentFiltersListItemWithoutConnectingAttributes.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx index 55086edab86..460aff02296 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx @@ -15,6 +15,7 @@ import { type IDashboardAttributeFilterParentItem, } from "../../../../../../model/types/attributeFilterTypes.js"; import { ConnectingAttributeDropdown } from "../connectingAttribute/ConnectingAttributeDropdown.js"; + import { ParentFiltersDisabledItem } from "./ParentFiltersDisabledItem.js"; export interface IConfigurationParentItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx index a02e5d1828f..fb7384bacf9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx @@ -8,6 +8,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { simplifyText } from "@gooddata/util"; import { type IDashboardAttributeFilterParentItem } from "../../../../../../model/types/attributeFilterTypes.js"; + import { ParentFiltersDisabledItem } from "./ParentFiltersDisabledItem.js"; interface IConfigurationParentItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx index c7ecc926d2a..a240b0d3d17 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx @@ -4,6 +4,7 @@ import { type DashboardAttributeFilterSelectionMode } from "@gooddata/sdk-model" import { Dropdown, DropdownList, type IAlignPoint } from "@gooddata/sdk-ui-kit"; import { ConfigurationCategory } from "../ConfigurationCategory.js"; + import { SelectionModeButton } from "./SelectionModeButton.js"; import { SelectionModeItem } from "./SelectionModeItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts index 1c69d543b55..77770cc40e4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts @@ -16,6 +16,7 @@ import { type IDashboardAttributeFilterParentItem } from "../../../model/types/a import { type IDashboardDependentDateFilter } from "../../../model/types/dateFilterTypes.js"; import type { IFilterBarFilterGroupItem } from "../filterBar/useFiltersWithAddedPlaceholder.js"; import { type DashboardFilterSelectionType } from "../filterSelectionTypes.js"; + import { type IAddAttributeFilterButtonProps } from "./addAttributeFilter/AddAttributeFilterButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx index 35cf98d486c..5ee8bf49974 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx @@ -5,6 +5,7 @@ import { type ChangeEvent, useCallback } from "react"; import { type IntlShape } from "react-intl/src/types.js"; import { messages } from "../../../locales.js"; + import { ModeSelectItem } from "./ConfigurationModeSelectItem.js"; export interface IConfigModeSelectProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx index f78d922d47d..37722bf132a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx @@ -32,6 +32,7 @@ import { import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js"; import { useCurrentDateFilterConfig } from "../../dragAndDrop/useCurrentDateFilterConfig.js"; import { getVisibilityIcon } from "../utils.js"; + import { DateFilterConfigurationBody } from "./configuration/DateFilterConfigurationBody.js"; import { type IDashboardDateFilterProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx index f4ec21f5d6b..0a7d0acad40 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx @@ -15,6 +15,7 @@ import { ConfigModeSelect } from "../../configuration/ConfigurationModeSelect.js import { ConfigurationPanelHeader } from "../../configuration/ConfigurationPanelHeader.js"; import { AttributeTitleRenaming } from "../../configuration/title/AttributeTitleRenaming.js"; import { useDateFilterConfig } from "../useDateFilterConfig.js"; + import { DateFilterConfigurationActions } from "./DateFilterConfigurationActions.js"; interface IDateFilterConfigurationProps extends IFilterConfigurationProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts index 92d33b6ab11..748d4824e76 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts @@ -10,6 +10,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { useDispatchDashboardCommand } from "../../../model/react/useDispatchDashboardCommand.js"; import { selectDateFilterConfigOverrides } from "../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js"; import { selectDateFilterConfigsOverrides } from "../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js"; + import { useDateFilterTitleConfiguration } from "./configuration/hooks/useDateFilterTitleConfiguration.js"; export const useDateFilterConfig = (dateDataSet: ObjRef | undefined, defaultDateFilterTitle: string) => { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx index 5029ae19520..1d710aaa13a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx @@ -40,6 +40,7 @@ import { } from "../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js"; import { DefaultDashboardAttributeFilter } from "../attributeFilter/DefaultDashboardAttributeFilter.js"; import type { IDashboardFilterGroupProps } from "../attributeFilter/types.js"; + import { type FilterBarAttributeFilterIndexed, isFilterBarAttributeFilter, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx index 8630949aaf0..430e807a357 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx @@ -74,6 +74,7 @@ import { type IDashboardDateFilterConfig } from "../dateFilter/types.js"; import { AddFilterMenu } from "../parameterFilter/AddFilterMenu.js"; import { DashboardParameterFilter } from "../parameterFilter/DashboardParameterFilter.js"; import { areAllFiltersHidden } from "../utils.js"; + import { DefaultFilterBarContainer } from "./DefaultFilterBarContainer.js"; import { DefaultFilterBarItem } from "./DefaultFilterBarItem.js"; import { groupFilterItems } from "./filterGroupUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx index 54c898817b4..5389a48bb7e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx @@ -45,6 +45,7 @@ import { } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; import { BulletsBar as FlexibleBulletsBar } from "../../flexibleLayout/dragAndDrop/Resize/BulletsBar.js"; import { IntlWrapper } from "../../localization/IntlWrapper.js"; + import { FilterViews } from "./filterViews/FilterViews.js"; import { useFilterBarState } from "./hooks/useFilterBarState.js"; import { useFilterExpansionByDragAndDrop } from "./hooks/useFilterExpansionByDragAndDrop.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx index 57d1cf5db84..fde3e30a8f7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx @@ -49,6 +49,7 @@ import { DraggableDateFilter } from "../../dragAndDrop/draggableDateFilter/Dragg import { DraggableMeasureValueFilter } from "../../dragAndDrop/draggableMeasureValueFilter/DraggableMeasureValueFilter.js"; import { type IDashboardDateFilterConfig } from "../dateFilter/types.js"; import { type DashboardFilterSelectionType } from "../filterSelectionTypes.js"; + import { DefaultDashboardFilterGroup } from "./DefaultDashboardFilterGroup.js"; import { type IFilterBarProps } from "./types.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx index bcae7d0ade4..bb7f2476ee6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IFilterBarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx index 2a541e3f985..1421cb361fd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DefaultFilterBar } from "./DefaultFilterBar.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx index b25f1f2d9bd..0eea3c4a89e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx @@ -9,6 +9,7 @@ import { IconReset, UiTooltip } from "@gooddata/sdk-ui-kit"; import { useEventToastMessage } from "../../../_staging/sharedHooks/useEventToastMessage.js"; import { messages } from "../../../locales.js"; import { isDashboardFilterContextSelectionReset } from "../../../model/events/filters.js"; + import { useResetFiltersButton } from "./hooks/useResetFiltersButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx index a60320efdc9..afcbb81bc3d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx @@ -38,6 +38,7 @@ import { selectIsFilterViewsDialogOpen, } from "../../../../model/store/ui/uiSelectors.js"; import { ConfigurationBubble } from "../../../widget/common/configuration/ConfigurationBubble.js"; + import { AddFilterView } from "./AddFilterView.js"; import { FilterViewsList } from "./FilterViewsList.js"; import { useFilterViewsToastMessages } from "./useFilterViewsToastMessages.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx index 763543de0aa..04b3e207b35 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx @@ -35,6 +35,7 @@ import { } from "../../../../model/react/DashboardStoreProvider.js"; import { selectFilterViewsAreLoading } from "../../../../model/store/filterViews/filterViewsReducersSelectors.js"; import { selectCanCreateFilterView } from "../../../../model/store/permissions/permissionsSelectors.js"; + import { FilterViewDeleteConfirm } from "./FilterViewDeleteConfirm.js"; type IAction = "setDefault" | "delete" | typeof SELECT_ITEM_ACTION; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts index efbb343280a..17c194a3d52 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts @@ -8,6 +8,7 @@ import { } from "../../../../model/react/DashboardStoreProvider.js"; import { uiActions } from "../../../../model/store/ui/index.js"; import { selectFilterBarExpanded } from "../../../../model/store/ui/uiSelectors.js"; + import { type CalculatedRows, CalculatedRowsDefault } from "./useRowsCalculator.js"; //NOTE: This 1px is size of border bottom on filter bar diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx index 0f3392ce0f9..e064af6f59d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx @@ -40,6 +40,7 @@ import { selectWorkingFilterContextMeasureValueFilterByLocalId } from "../../../ import { selectMeasureValueFilterConfigsModeMap } from "../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js"; import { useAttributeFilterConfigTexts } from "../attributeFilter/useAttributeFilterConfigTexts.js"; import { getVisibilityIcon } from "../utils.js"; + import { CustomConfigureMeasureValueFilterDropdownActions, CustomMeasureValueFilterDropdownActions, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts index 52c5574b789..2de05b11bd1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-model"; import { areAllFiltersHidden, getVisibilityIcon } from "../utils.js"; + import { filterBarAttributeFilterIndexes } from "./filterBar.fixture.js"; describe("utils", () => { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts index f8ff399a3b4..2ae1ddb8e58 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts @@ -14,6 +14,7 @@ import { import { type IFilterButtonCustomIcon, type VisibilityMode } from "@gooddata/sdk-ui-filters"; import { messages } from "../../locales.js"; + import { type FilterBarDraggableItems, type FilterBarItem, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx index 7d1f7b266f7..fbb9bdb3516 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx @@ -5,6 +5,7 @@ import { useDashboardDispatch, useDashboardSelector } from "../../../model/react import { uiActions } from "../../../model/store/ui/index.js"; import { selectSectionModification, selectWidgetsOverlayState } from "../../../model/store/ui/uiSelectors.js"; import { getRefsForSection } from "../refs.js"; + import { DashboardItemOverlay } from "./DashboardItemOverlay.js"; interface IDashboardLayoutSectionOverlayControllerProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx index 2327a2aef73..c3a60453d69 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx @@ -61,6 +61,7 @@ import { useDashboardDrag } from "../dragAndDrop/useDashboardDrag.js"; import { useWidgetExportData } from "../export/useExportData.js"; import { DashboardWidget } from "../widget/widget/DashboardWidget.js"; import { type IDashboardWidgetProps } from "../widget/widget/types.js"; + import { DEFAULT_COLUMN_CLIENT_WIDTH, DEFAULT_WIDTH_RESIZER_HEIGHT } from "./constants.js"; import { DashboardItemOverlay } from "./DashboardItemOverlay/DashboardItemOverlay.js"; import { type IDashboardLayoutWidgetRenderProps } from "./DefaultDashboardLayoutRenderer/interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx index 0d4981456aa..d4f9a6e37e4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IDashboardLayoutProps } from "../widget/dashboardLayout/types.js"; + import { DefaultFlexibleDashboardLayout } from "./DefaultFlexibleDashboardLayout.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx index ac3e39a0e86..671474ba210 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx @@ -16,6 +16,7 @@ import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeCon import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js"; import { useDashboardExportData } from "../../export/useExportData.js"; import { SectionHotspot } from "../dragAndDrop/draggableWidget/SectionHotspot.js"; + import { DashboardLayoutSection } from "./DashboardLayoutSection.js"; import { GridLayoutElement } from "./GridLayoutElement.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx index 86f542e53c2..8830e47d700 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx @@ -10,6 +10,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { selectIsSectionInsertedByPlugin } from "../../../model/store/ui/uiSelectors.js"; import { SectionHotspot } from "../dragAndDrop/draggableWidget/SectionHotspot.js"; import { getRefsForSection } from "../refs.js"; + import { SectionHeaderEditable } from "./EditableHeader/SectionHeaderEditable.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx index 3452fe9bc58..17ea857beef 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx @@ -6,6 +6,7 @@ import { type IDashboardLayoutSectionFacade } from "../../../_staging/dashboard/ import { determineWidthForScreen } from "../../../_staging/layout/sizing.js"; import { isInitialPlaceholderWidget } from "../../../widgets/placeholders/types.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { DashboardLayoutEditSectionHeader } from "./DashboardLayoutEditSectionHeader.js"; import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx index d3be2513578..f4919925b07 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx @@ -7,6 +7,7 @@ import { isEmpty } from "lodash-es"; import { determineWidthForScreen } from "../../../_staging/layout/sizing.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; import { useSectionDescriptionExportData } from "../../export/useExportData.js"; + import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { DashboardLayoutViewSectionHeader } from "./DashboardLayoutViewSectionHeaderRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx index 3798ba8bc98..dd878fa49cb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx @@ -9,6 +9,7 @@ import { import { serializeLayoutItemPath } from "../../../_staging/layout/coordinates.js"; import { type RenderMode } from "../../../types.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { DashboardLayoutItem } from "./DashboardLayoutItem.js"; import { type IDashboardLayoutGridRowRenderer, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx index b2baf0a7258..5f3b410117e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx @@ -11,6 +11,7 @@ import { type ExtendedDashboardWidget } from "../../../model/types/layoutTypes.j import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; import { useIsDraggingWidget } from "../../dragAndDrop/draggableWidget/useIsDraggingWidget.js"; import { HeightResizerHotspot } from "../dragAndDrop/Resize/HeightResizerHotspot.js"; + import { type IDashboardLayoutGridRowProps } from "./DashboardLayoutGridRow.js"; import { DashboardLayoutItem } from "./DashboardLayoutItem.js"; import { type IDashboardLayoutItemKeyGetter } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx index 7e3c43345d2..bf58a9e4c45 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx @@ -4,6 +4,7 @@ import { type ReactElement } from "react"; import { type IDashboardLayoutItemFacade } from "../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; import { type RenderMode } from "../../../types.js"; + import { DashboardLayoutItemRenderer } from "./DashboardLayoutItemRenderer.js"; import { DashboardLayoutWidgetRenderer } from "./DashboardLayoutWidgetRenderer.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx index e390e5835f9..ba19d59db26 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx @@ -6,6 +6,7 @@ import { isCustomWidgetBase } from "../../../model/types/layoutTypes.js"; import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; import { RowEndHotspot } from "../dragAndDrop/draggableWidget/RowEndHotspot.js"; import { useIsDraggingCurrentItem } from "../dragAndDrop/draggableWidget/useIsDraggingCurrentItem.js"; + import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutItemRenderProps, type IDashboardLayoutItemRenderer } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx index 7714237c522..33f363f763d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx @@ -8,6 +8,7 @@ import { type ScreenSize } from "@gooddata/sdk-model"; import { type IDashboardLayoutItemFacade } from "../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { GridLayoutElement } from "./GridLayoutElement.js"; import { type IDashboardLayoutItemRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx index 84328c10b35..2a609a3320c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx @@ -14,6 +14,7 @@ import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeCon import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js"; import { useSectionExportData } from "../../export/useExportData.js"; import { DashboardLayoutSectionOverlayController } from "../DashboardItemOverlay/DashboardItemOverlayController.js"; + import { DashboardLayoutGridRow } from "./DashboardLayoutGridRow.js"; import { DashboardLayoutGridRowEdit } from "./DashboardLayoutGridRowEdit.js"; import { DashboardLayoutSectionHeaderRenderer } from "./DashboardLayoutSectionHeaderRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx index f4b3c7117cc..6fd11d5b20b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx @@ -4,6 +4,7 @@ import { type ReactElement, useMemo } from "react"; import { determineWidthForScreen } from "../../../_staging/layout/sizing.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { DashboardLayoutViewSectionHeader } from "./DashboardLayoutViewSectionHeaderRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx index fcbcc8e6f95..e1e309a4a50 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx @@ -15,6 +15,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; import { type HeaderExportData } from "../../export/types.js"; + import { DashboardLayoutSectionHeaderDescription } from "./DashboardLayoutSectionHeaderDescription.js"; export interface IDashboardLayoutSectionHeaderProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx index 76b4b2a855b..916c7892d0d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx @@ -10,6 +10,7 @@ import { selectIsExport, } from "../../../model/store/config/configSelectors.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { type IDashboardLayoutWidgetRenderProps } from "./interfaces.js"; export function DashboardLayoutWidgetRenderer({ diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx index 84667984f68..029191a4943 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx @@ -7,6 +7,7 @@ import { selectActiveSection } from "../../../model/store/ui/uiSelectors.js"; import { useIsDraggingWidget } from "../../dragAndDrop/draggableWidget/useIsDraggingWidget.js"; import { DashboardLayoutSectionBorder } from "../dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorder.js"; import { type DashboardLayoutSectionBorderStatus } from "../dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/types.js"; + import { GridLayoutElement } from "./GridLayoutElement.js"; import { type IDashboardLayoutSectionRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx index f9bb0226fd7..bc50643e076 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx @@ -23,6 +23,7 @@ import { import { uiActions } from "../../../../model/store/ui/index.js"; import { selectExecutionTimestamp } from "../../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../../dashboardContexts/DashboardComponentsContext.js"; + import { EditableLabelWithBubble } from "./EditableLabelWithBubble.js"; import { DESCRIPTION_LENGTH_WARNING_LIMIT, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx index 3b8acd68f97..b5d25bda602 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx @@ -1,6 +1,7 @@ // (C) 2007-2026 GoodData Corporation import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js"; + import { GridLayoutElement } from "./GridLayoutElement.js"; import { type IDashboardLayoutSectionRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx index bb590d182d9..1fdd5d84c2c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { type IDashboardLayoutSizeByScreenSize } from "@gooddata/sdk-model"; import { type CommonExportDataAttributes } from "../../export/types.js"; + import { useWidthValidation } from "./useItemWidthValidation.js"; export type LayoutElementType = "root" | "nested" | "section" | "item" | "leaf-item"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx index ece212bd07c..69bc5d7c29e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DashboardLayoutEditSectionHeaderRenderer } from "./DashboardLayoutEditSectionHeaderRenderer.js"; import { DashboardLayoutExportSectionHeaderRenderer } from "./DashboardLayoutExportSectionHeaderRenderer.js"; import { DashboardLayoutSectionHeaderRenderer } from "./DashboardLayoutSectionHeaderRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx index 9b0a542e0f0..6795b1d4c63 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DashboardLayoutSectionRenderer } from "./DashboardLayoutSectionRenderer.js"; import { EditableDashboardLayoutSectionRenderer } from "./EditableDashboardLayoutSectionRenderer.js"; import { ExportableDashboardLayoutSectionRenderer } from "./ExportableDashboardLayoutSectionRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts index 486b31d1220..7d2183a24b9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-model"; import { type DashboardLayoutItemModifications } from "../../_staging/dashboard/flexibleLayout/builder/interfaces.js"; + import { validateDashboardLayoutWidgetSize } from "./DefaultDashboardLayoutRenderer/utils/sizing.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx index ff1e1e71cc8..91c84da7fca 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx @@ -28,6 +28,7 @@ import { useScreenSize } from "../dashboard/components/DashboardScreenSizeContex import { useDashboardCustomizationsContext } from "../dashboardContexts/DashboardCustomizationsContext.js"; import { DefaultDashboardExportVariables } from "../export/DefaultDashboardExportVariables.js"; import { type IDashboardLayoutProps } from "../widget/dashboardLayout/types.js"; + import { DashboardLayoutWidget } from "./DashboardLayoutWidget.js"; import { DashboardLayout } from "./DefaultDashboardLayoutRenderer/DashboardLayout.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts index f15232fdbb7..cef09d2335a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../componentDefinition/renderModeAware.js"; + import { EmptyDashboardDropZone } from "./dragAndDrop/draggableWidget/EmptyDashboardDropZone.js"; import { EmptyDashboardError } from "./EmptyDashboardError.js"; import { ExportEmptyDashboardError } from "./ExportEmptyDashboardError.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts index 0046b253b56..aae83d78982 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../componentDefinition/renderModeAware.js"; + import { EmptyNestedLayoutDropZone } from "./dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.js"; import { ViewModeEmptyNestedLayout } from "./ViewModeEmptyNestedLayout.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx index 8e53971895e..5cf8b9a9893 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx @@ -1,6 +1,7 @@ // (C) 2020-2026 GoodData Corporation import { useDashboardExportData } from "../export/useExportData.js"; + import { EmptyDashboardError } from "./EmptyDashboardError.js"; export function ExportEmptyDashboardError() { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx index 4342b60a6c8..01d14b9a7c3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx @@ -13,6 +13,7 @@ import { type DraggableItemType, isDraggableInternalItemType, } from "../../dragAndDrop/types.js"; + import { ContentDragPreview } from "./DragLayerPreview/ContentDragPreview.js"; import { HeightResizerDragPreview } from "./DragLayerPreview/HeightResizerDragPreview.js"; import { WidthResizerDragPreview } from "./DragLayerPreview/WidthResizerDragPreview.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx index 576816aef80..b9a44bc1d72 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx @@ -11,6 +11,7 @@ import { import { useResizeHandlers } from "../../../dragAndDrop/LayoutResizeContext.js"; import { type IHeightResizerDragItem } from "../../../dragAndDrop/types.js"; import { HeightResizer } from "../Resize/HeightResizer.js"; + import { getLimitedSize } from "./sizeLimiting.js"; export type HeightResizerDragPreviewProps = DragResizeProps; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx index d2bf183003e..7a0ccf8866e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx @@ -9,6 +9,7 @@ import { type DragResizeProps } from "../../../dragAndDrop/DragLayerPreview/type import { useResizeHandlers } from "../../../dragAndDrop/LayoutResizeContext.js"; import { type IWidthResizerDragItem } from "../../../dragAndDrop/types.js"; import { WidthResizer } from "../Resize/WidthResizer.js"; + import { applySizeLimitation } from "./sizeLimiting.js"; export type WidthResizerDragPreviewProps = DragResizeProps; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx index 50bef69967d..d4fb28fb95c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx @@ -34,6 +34,7 @@ import { HoveredWidgetContext } from "../../../dragAndDrop/HoveredWidgetContext. import { useResizeContext } from "../../../dragAndDrop/LayoutResizeContext.js"; import { useDashboardDrag } from "../../../dragAndDrop/useDashboardDrag.js"; import { DEFAULT_WIDTH_RESIZER_HEIGHT } from "../../constants.js"; + import { HeightResizer } from "./HeightResizer.js"; export type HeightResizerHotspotProps = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx index e4c8d44552c..91764027b5d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx @@ -27,6 +27,7 @@ import { useResizeHandlers, useResizeWidthItemStatus } from "../../../dragAndDro import { useDashboardDrag } from "../../../dragAndDrop/useDashboardDrag.js"; import { getDashboardLayoutItemMaxGridWidth } from "../../DefaultDashboardLayoutRenderer/utils/sizing.js"; import { getSizeAndXCoords } from "../DragLayerPreview/WidthResizerDragPreview.js"; + import { WidthResizer } from "./WidthResizer.js"; export type WidthResizerHotspotProps = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx index 2101c94282f..2c86b397c3c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { type IDashboardLayoutSizeByScreenSize } from "@gooddata/sdk-model"; import { GridLayoutElement } from "../../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; + import { DashboardLayoutSectionBorderMarker } from "./DashboardLayoutSectionBorderMarker.js"; import { type DashboardLayoutSectionBorderStatus } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx index 7c140c10ef2..67341c86683 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx @@ -10,6 +10,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { useDashboardComponentsContext } from "../../../dashboardContexts/DashboardComponentsContext.js"; import { type BaseDraggableLayoutItem, type DraggableItemType } from "../../../dragAndDrop/types.js"; import { GridLayoutElement } from "../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; + import { useEmptyContentHandlers } from "./useEmptyContentHandlers.js"; const widgetCategoryMapping: Partial<{ [D in DraggableItemType]: string }> = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx index d5b3d44153d..e831d4a1352 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx @@ -9,6 +9,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { useDashboardItemPathAndSize } from "../../../dashboard/components/DashboardItemPathAndSizeContext.js"; import { type DraggableItemType } from "../../../dragAndDrop/types.js"; + import { useEmptyContentHandlers } from "./useEmptyContentHandlers.js"; import { useWidgetDragHoverHandlers } from "./useWidgetDragHoverHandlers.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx index c867468c5c7..07656d83805 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx @@ -24,6 +24,7 @@ import { isVisualizationSwitcherDraggableItem, } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; + import { useDashboardLayoutPlaceholderDropHandler } from "./useDashboardLayoutPlaceholderDropHandler.js"; import { useInsightListItemDropHandler } from "./useInsightListItemDropHandler.js"; import { useInsightPlaceholderDropHandler } from "./useInsightPlaceholderDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx index 070a03ab176..6325bfb5523 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx @@ -20,6 +20,7 @@ import { useScreenSize } from "../../../dashboard/components/DashboardScreenSize import { useIsDraggingWidget } from "../../../dragAndDrop/draggableWidget/useIsDraggingWidget.js"; import { GridLayoutElement } from "../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; import { getRemainingHeightInColumn, getRemainingWidthInRow } from "../../rowEndHotspotHelper.js"; + import { Hotspot } from "./Hotspot.js"; import { WidgetDropZoneColumn } from "./WidgetDropZoneColumn.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx index 8774c5b898b..7942e7ba9af 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx @@ -13,6 +13,7 @@ import { getDropZoneDebugStyle } from "../../../dragAndDrop/debug.js"; import { draggableWidgetDropHandler } from "../../../dragAndDrop/draggableWidget/draggableWidgetDropHandler.js"; import { isBaseDraggableMovingItem } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; + import { SectionDropZoneBox } from "./SectionDropZoneBox.js"; import { useMoveWidgetToNewSectionDropHandler } from "./useMoveWidgetToNewSectionDropHandler.js"; import { useNewSectionDashboardLayoutPlaceholderDropHandler } from "./useNewSectionDashboardLayoutPlaceholderDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx index 264e66e043e..57a797215ed 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx @@ -2,6 +2,7 @@ import { hasParent } from "../../../../_staging/layout/coordinates.js"; import { type ILayoutItemPath } from "../../../../types.js"; + import { WidgetDropZoneBox } from "./WidgetDropZoneBox.js"; export type WidgetDropZoneProps = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx index 4c0640c37ea..3ee573eedce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx @@ -21,6 +21,7 @@ import { draggableWidgetDropHandler } from "../../../dragAndDrop/draggableWidget import { type BaseDraggableLayoutItem } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; import { GridLayoutElement } from "../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; + import { useDashboardLayoutPlaceholderDropHandler } from "./useDashboardLayoutPlaceholderDropHandler.js"; import { useInsightListItemDropHandler } from "./useInsightListItemDropHandler.js"; import { useInsightPlaceholderDropHandler } from "./useInsightPlaceholderDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts index 7a4c68baeaa..73a384a665c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts @@ -12,6 +12,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useDashboardLayoutPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts index 8dfe025bdbe..40b73d97da3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts @@ -14,6 +14,7 @@ import { isVisualizationSwitcherDraggableListItem, } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; + import { useMoveWidgetToNewSectionDropHandler } from "./useMoveWidgetToNewSectionDropHandler.js"; import { useNewSectionDashboardLayoutPlaceholderDropHandler } from "./useNewSectionDashboardLayoutPlaceholderDropHandler.js"; import { useNewSectionInsightListItemDropHandler } from "./useNewSectionInsightListItemDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts index 51f8ad03aaf..8d6e8fff1ce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts @@ -25,6 +25,7 @@ import { selectSettings } from "../../../../model/store/config/configSelectors.j import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { newLoadingPlaceholderWidget } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useInsightListItemDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts index c608f590d39..b25681acd46 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts @@ -18,6 +18,7 @@ import { INSIGHT_PLACEHOLDER_WIDGET_ID, newInsightPlaceholderWidget, } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useInsightPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts index 7fa84cff38d..64befdbed0f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts @@ -13,6 +13,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionDashboardLayoutPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts index f9729b4e797..e4650845215 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts @@ -22,6 +22,7 @@ import { selectSettings } from "../../../../model/store/config/configSelectors.j import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { newLoadingPlaceholderWidget } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionInsightListItemDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts index 1f3704376a8..257ece57a42 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts @@ -19,6 +19,7 @@ import { INSIGHT_PLACEHOLDER_WIDGET_ID, newInsightPlaceholderWidget, } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionInsightPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts index 1ac49356cb3..7466bd6ecf5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts @@ -16,6 +16,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionRichTextPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts index 7d71d36a593..b8f3cfa6a03 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts @@ -13,6 +13,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionVisualizationSwitcherPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts index 74f4de67e6a..b7f61307338 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts @@ -15,6 +15,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useRichTextPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts index 0dfcdca8704..847aa564e06 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts @@ -12,6 +12,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useVisualizationSwitcherPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx index 2215c4d1f44..afe44862d94 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx @@ -5,6 +5,7 @@ import { Fragment } from "react"; import { objRefToString } from "@gooddata/sdk-model"; import { DashboardLayout } from "../../../DefaultDashboardLayoutRenderer/DashboardLayout.js"; + import { DashboardEditLayoutItemRenderer } from "./DashboardEditLayoutItemRenderer.js"; import { DashboardEditLayoutRowRenderer } from "./DashboardEditLayoutRowRenderer.js"; import { DashboardEditLayoutSectionHeaderRenderer } from "./DashboardEditLayoutSectionHeaderRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx index 5a9834d6f47..3e3a901f38c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx @@ -6,6 +6,7 @@ import { type ObjRef, areObjRefsEqual, idRef } from "@gooddata/sdk-model"; import { DashboardLayoutItemViewRenderer } from "../../../DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutItemRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; export interface IDashboardEditLayoutItemRendererStateProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts index 89d1d109832..6560046ca68 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts @@ -4,6 +4,7 @@ import { type ObjRef, idRef } from "@gooddata/sdk-model"; import { type VisType } from "@gooddata/sdk-ui"; import { newInsight } from "../../../../../_staging/insight/insightBuilder.js"; + import { type IDashboardEditLayout, type IDashboardEditLayoutContent, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx index 6b3b9b2702d..dae423f1e09 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx @@ -8,6 +8,7 @@ import { type IDashboardLayoutItemFacade, type IDashboardLayoutSectionFacade, } from "../../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; export interface IDashboardEditLayoutRowRendererOwnProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx index 755145fcc8e..9cac479bada 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx @@ -5,6 +5,7 @@ import { type ScreenSize } from "@gooddata/sdk-model"; import { type IDashboardLayoutItemFacade } from "../../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; import { DashboardLayoutItemViewRenderer } from "../../../DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; + import { DashboardEditLayoutSectionHeader } from "./DashboardEditLayoutSectionHeader.js"; import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx index 1a339243b1c..8d402d9e92b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx @@ -5,6 +5,7 @@ import { useCallback, useState } from "react"; import cx from "classnames"; import { type IDashboardLayoutSectionRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; + import { DashboardEditLayoutSectionBorder } from "./DashboardEditLayoutSectionBorder.js"; import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx index 8d888aad1a1..f8f5b4ba815 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx @@ -5,6 +5,7 @@ import { type RefObject } from "react"; import { type ScreenSize } from "@gooddata/sdk-model"; import { type IDashboardLayoutItemFacade } from "../../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; export interface IDashboardEditLayoutWidgetProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx index 0b058ff866d..f8de293b685 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { type IDashboardLayoutWidgetRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; import { getDashboardLayoutItemHeightForRatioAndScreen } from "../../../DefaultDashboardLayoutRenderer/utils/sizing.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; import { DashboardEditLayoutWidget } from "./DashboardEditLayoutWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx b/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx index f831810c998..5742e296c18 100644 --- a/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx @@ -39,6 +39,7 @@ import { import { selectCurrentUser } from "../../model/store/user/userSelectors.js"; import { getAuthor } from "../../model/utils/author.js"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { InsightListNoData } from "./InsightListNoData.js"; import { type IInsightListProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx index cffeb71fa41..10b0db03f5a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx @@ -14,6 +14,7 @@ import { selectIsKpiDeleteDialogOpen, selectKpiDeleteDialogWidgetLayoutPath, } from "../../model/store/ui/uiSelectors.js"; + import { type IKpiDeleteDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx b/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx index 90c7d661460..e559a7a1cba 100644 --- a/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx @@ -6,6 +6,7 @@ import OriginalLinesEllipsis from "react-lines-ellipsis"; import responsiveHOC from "react-lines-ellipsis/lib/responsiveHOC.js"; import { type CommonExportDataAttributes } from "../../export/types.js"; + import { DashboardItemHeadlineContainer } from "./DashboardItemHeadlineContainer.js"; // This fixes the infinite render loop with 0.15.x version, diff --git a/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx b/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx index 5e13148f5dc..e3c5719c247 100644 --- a/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx @@ -9,6 +9,7 @@ import { useDashboardDispatch, useDashboardSelector } from "../../../model/react import { uiActions } from "../../../model/store/ui/index.js"; import { selectIsSaveAsDialogOpen } from "../../../model/store/ui/uiSelectors.js"; import { type ISaveAsDialogProps } from "../types.js"; + import { SaveAsDialogRenderer } from "./SaveAsDialogRenderer.js"; import { useSaveAs } from "./useSaveAs.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx index ac6a48ede4f..7e2a59e1ea4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type ISaveAsDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx index 351d481f8d4..ba78a25905b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx @@ -71,6 +71,7 @@ import { getDefaultCronExpression } from "../utils/cron.js"; import { getDefaultPdfPageSize } from "../utils/pdfPageSize.js"; import { isMobileView } from "../utils/responsive.js"; import { TIMEZONE_DEFAULT } from "../utils/timezone.js"; + import { DashboardAttachments } from "./components/Attachments/DashboardAttachments.js"; import { WidgetAttachments } from "./components/Attachments/WidgetAttachments.js"; import { DashboardAttachments as DashboardAttachmentsOld } from "./components/AttachmentsOld/DashboardAttachments.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx index 1b9ff33dbab..e558b51a6f1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx @@ -13,6 +13,7 @@ import { import { Message } from "@gooddata/sdk-ui-kit"; import { AUTOMATION_ATTACHMENTS_GROUP_LABEL_ID } from "../../../../constants/automations.js"; + import { AttachmentsList } from "./AttachmentsList.js"; import { AttachmentsSelect } from "./AttachmentsSelect.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx index 441d8d7e9d9..a646cf1a851 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-model"; import { AUTOMATION_ATTACHMENTS_GROUP_LABEL_ID } from "../../../../constants/automations.js"; + import { AttachmentsList } from "./AttachmentsList.js"; import { AttachmentsSelect } from "./AttachmentsSelect.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx index dc792fdcc06..26d65bb9f70 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx @@ -16,6 +16,7 @@ import { import { DEFAULT_DROPDOWN_ALIGN_POINTS } from "../../constants.js"; import { type IAttachmentFilterInfo } from "../../hooks/useFiltersForDashboardScheduledExportInfo.js"; + import { AttachmentFiltersList } from "./AttachmentFiltersList.js"; const TOOLTIP_ALIGN_POINTS: IAlignPoint[] = [ diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx index 34f8fb9d1dc..651270f7548 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx @@ -9,6 +9,7 @@ import { Message, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { getAutomationDashboardFilters } from "../../../../../_staging/automation/index.js"; import { type IAttachmentFilterInfo } from "../../hooks/useFiltersForDashboardScheduledExportInfo.js"; + import { type AttachmentFilterType, AttachmentFilters } from "./AttachmentFilters.js"; import { AttachmentDashboard } from "./AttachmentItems.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx index cdb3c093f5b..84b7ba99ed8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx @@ -12,6 +12,7 @@ import { import { Message, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { type OldWidgetAttachmentType } from "../../types.js"; + import { AttachmentWidgets } from "./AttachmentItems.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx index 2636bd1338e..e56df40e512 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx @@ -16,6 +16,7 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { convertUserToAutomationRecipient } from "../../../../../_staging/automation/index.js"; import { createUser, matchUser } from "../../../utils/users.js"; import { isEmail } from "../../../utils/validate.js"; + import { RecipientsSelectRenderer } from "./RecipientsSelectRenderer.js"; interface IRecipientsSelectProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts index cea440fbfa3..c647c90ceee 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts @@ -75,6 +75,7 @@ import { import { getUserTimezone } from "../../utils/timezone.js"; import { isEmail } from "../../utils/validate.js"; import { type OldWidgetAttachmentType } from "../types.js"; + import { useScheduleValidation } from "./useScheduleValidation.js"; export interface IUseEditScheduledEmailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts index e35e1149bb2..6193d6183db 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts @@ -22,6 +22,7 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../../model/store/config/configSelectors.js"; import { type IScheduledEmailDialogProps } from "../../types.js"; + import { useCreateScheduledEmail } from "./useCreateScheduledEmail.js"; import { useUpdateScheduledEmail } from "./useUpdateScheduledEmail.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx index 6c8c3941b9c..335ab5ae8a7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx @@ -13,6 +13,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectDashboardId } from "../../../model/store/meta/metaSelectors.js"; import { type IScheduledEmailManagementDialogProps } from "../types.js"; + import { DeleteScheduleConfirmDialog } from "./components/DeleteScheduleConfirmDialog.js"; import { DefaultScheduledEmailManagementDialogContentBasic } from "./DefaultScheduledEmailManagementDialogContentBasic.js"; import { DefaultScheduledEmailManagementDialogContentEnhanced } from "./DefaultScheduledEmailManagementDialogContentEnhanced.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx index f4912446513..6c4b82b2033 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx @@ -34,6 +34,7 @@ import { selectCurrentUser } from "../../../model/store/user/userSelectors.js"; import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../constants/zIndex.js"; import { useScheduleEmailDialogAccessibility } from "../hooks/useScheduleEmailDialogAccessibility.js"; import { isMobileView } from "../utils/responsive.js"; + import { ScheduledEmails } from "./components/ScheduledEmailsList.js"; const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx index a50b66eb452..c99e29452a6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IScheduledEmailDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx index 7fd06a43ed7..8213afdd851 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IScheduledEmailManagementDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx index 3ac568d9f92..c36e386356b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx @@ -8,6 +8,7 @@ import { type IShareDialogLabels, ShareDialog } from "@gooddata/sdk-ui-kit"; import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { selectLocale } from "../../model/store/config/configSelectors.js"; + import { type IShareDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx index 64e2aa48943..371facc26c4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IShareDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx index 8391b2f7a04..31f210964a0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IToolbarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx index 060bbacb490..620b3c69239 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IButtonBarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx index 524bdb914ff..74b5d708807 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx @@ -15,6 +15,7 @@ import { selectIsDashboardDirty } from "../../../../../model/store/meta/metaSele import { selectIsInEditMode } from "../../../../../model/store/renderMode/renderModeSelectors.js"; import { selectIsDashboardSaving } from "../../../../../model/store/saving/savingSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; + import { type ICancelButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx index 61c4513e963..64f5ccdce48 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx @@ -21,6 +21,7 @@ import { selectDashboardDensity, selectExecutionTimestamp, } from "../../../../../model/store/ui/uiSelectors.js"; + import { type IEditButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx index f1a906859ad..1563e773164 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx @@ -12,6 +12,7 @@ import { } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectIsSaveAsNewButtonVisible } from "../../../../../model/store/topBar/topBarSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; + import { type ISaveAsNewButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx index 5d198bec3d8..021f1eecc34 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx @@ -21,6 +21,7 @@ import { selectCanSaveDashboard, selectIsPrivateDashboard, } from "../../../../../model/store/topBar/topBarSelectors.js"; + import { type ISaveButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx index 5673cf876e1..859ee431cb9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { type ISaveButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx index eaf779e8802..4a578022365 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx @@ -14,6 +14,7 @@ import { import { selectIsInEditMode } from "../../../../../model/store/renderMode/renderModeSelectors.js"; import { selectIsDashboardSaving } from "../../../../../model/store/saving/savingSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; + import { type ISettingButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx index 8358e93341f..05c42aec16c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { type ISettingButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx index 698b2b3a6e4..f4bb7eb36d4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx @@ -14,6 +14,7 @@ import { import { selectIsShareButtonVisible } from "../../../../../model/store/topBar/topBarSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; import { selectDashboardDensity } from "../../../../../model/store/ui/uiSelectors.js"; + import { HiddenShareButton } from "./HiddenShareButton.js"; import { type IShareButtonProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx index 92a740b4e1d..ff8d3ca3b84 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx @@ -31,6 +31,7 @@ import { import { DEFAULT_MENU_BUTTON_ID } from "../../../_staging/accessibility/elementId.js"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectDashboardDensity } from "../../../model/store/ui/uiSelectors.js"; + import { DefaultSubmenuHeader } from "./DefaultSubmenuHeader.js"; import { type IMenuButtonItem, diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx index 4a629674068..7871c367204 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IMenuButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx index 388c28d1a20..a01e77da1ee 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx @@ -37,6 +37,7 @@ import { import { uiActions } from "../../../model/store/ui/index.js"; import { selectMenuButtonItemsVisibility } from "../../../model/store/ui/uiSelectors.js"; import { useExportXlsxDialogContext } from "../../dashboardContexts/ExportXlsxDialogContext.js"; + import { type IMenuButtonItem } from "./types.js"; import { useExportDashboardToPdf } from "./useExportDashboardToPdf.js"; import { useExportDashboardToPdfPresentation } from "./useExportDashboardToPdfPresentation.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx index 6b5dacb5dfd..6cb172415c0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx @@ -5,6 +5,7 @@ import { type ReactElement } from "react"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectSettings } from "../../../../model/store/config/configSelectors.js"; import { selectCanManageAnalyticalDashboard } from "../../../../model/store/permissions/permissionsSelectors.js"; + import { LockedStatusIndicator } from "./LockedStatusIndicator.js"; import { type ILockedStatusProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx index 971fcd9f4d7..967d5e97c77 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx @@ -8,6 +8,7 @@ import { Bubble, BubbleHoverTrigger, IconLock } from "@gooddata/sdk-ui-kit"; import { useTheme } from "@gooddata/sdk-ui-theme-provider"; import { gdColorStateBlank } from "../../../constants/colors.js"; + import { type ILockedStatusProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx index 22ba1d6b472..b59068a08ad 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx @@ -5,6 +5,7 @@ import { type ReactElement } from "react"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectSupportsAccessControlCapability } from "../../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js"; import { selectCanManageAnalyticalDashboard } from "../../../../model/store/permissions/permissionsSelectors.js"; + import { ShareStatusIndicator } from "./ShareStatusIndicator.js"; import { type IShareStatusProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx index 315598f4d97..d9f07784abd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx @@ -7,6 +7,7 @@ import { EditableLabel } from "@gooddata/sdk-ui-kit"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectDashboardTitle } from "../../../model/store/meta/metaSelectors.js"; import { DASHBOARD_TITLE_MAX_LENGTH } from "../../constants/dashboard.js"; + import { TitleWrapper } from "./TitleWrapper.js"; import { type ITitleProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx index 50db0e1a0ee..9e22f34da48 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DefaultTitle } from "./DefaultTitle.js"; import { EditableTitle } from "./EditableTitle.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx index b981f0a895d..618b1218c31 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type ITitleProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx index a1639cd0177..879ca4bc99e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx @@ -28,6 +28,7 @@ import { useDefaultMenuItems } from "../menuButton/useDefaultMenuItems.js"; import { DefaultLockedStatus } from "../shareIndicators/lockedStatus/DefaultLockedStatus.js"; import { DefaultShareStatus } from "../shareIndicators/shareStatus/DefaultShareStatus.js"; import { Title } from "../title/Title.js"; + import { HiddenTopBar } from "./HiddenTopBar.js"; import { type ITopBarProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx index 1a559675f71..81227d524f9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DefaultTopBar } from "./DefaultTopBar.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx index d1937e39d54..02e9794cd03 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type ITopBarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx index 05c324abe5b..e2484f8fa30 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx @@ -17,6 +17,7 @@ import { useAttributes } from "../../../../_staging/sharedHooks/useAttributes.js import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectAllCatalogAttributesMap } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectFilterContextAttributeFilterItems } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { AttributeFilterConfigurationItem } from "./AttributeFilterConfigurationItem.js"; import { getAttributeByDisplayForm } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx index 1bcd7471cc8..b46959a4c4d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx @@ -16,6 +16,7 @@ import { import { simplifyText } from "@gooddata/util"; import { useAttributeFilterDisplayFormFromMap } from "../../../../_staging/sharedHooks/useAttributeFilterDisplayFormFromMap.js"; + import { FilterConfigurationItemLabel } from "./FilterConfigurationItemLabel.js"; import { useAttributeFilterConfigurationHandling } from "./useAttributeFilterConfigurationHandling.js"; import { useIsFilterNotApplied } from "./useIsFilterNotApplied.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx index 027a849dc0e..e43f1a26c35 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx @@ -11,6 +11,7 @@ import { } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectEnableUnavailableItemsVisibility } from "../../../../model/store/config/configSelectors.js"; import { selectFilterContextDateFilterByDataSet } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { DateDatasetDuplicityWarning } from "./DateDatasetDuplicityWarning.js"; import { DateDatasetPicker } from "./DateDatasetPicker.js"; import { DateFilterCheckbox } from "./DateFilterCheckbox.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx index 1739c83a57b..c0aabf8631f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx @@ -9,6 +9,7 @@ import { type ICatalogDateDataset, type IWidget, type ObjRef, isInsightWidget } import { type IAlignPoint, ShortenedText } from "@gooddata/sdk-ui-kit"; import { useCurrentDateFilterConfig } from "../../../dragAndDrop/useCurrentDateFilterConfig.js"; + import { getUnrelatedDateDataset } from "./utils.js"; const tooltipAlignPoints: IAlignPoint[] = [{ align: "cl cr", offset: { x: -20, y: 0 } }]; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx index 1995d84d860..580b005535d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx @@ -19,6 +19,7 @@ import { simplifyText } from "@gooddata/util"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectAllCatalogDateDatasetsMap } from "../../../../model/store/catalog/catalogSelectors.js"; import { useCurrentDateFilterConfig } from "../../../dragAndDrop/useCurrentDateFilterConfig.js"; + import { useDateFilterConfigurationHandling } from "./useDateFilterConfigurationHandling.js"; const tooltipAlignPoints: IAlignPoint[] = [{ align: "cl cr", offset: { x: -20, y: 0 } }]; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx index 947aa40dc6b..aff624adba1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx @@ -26,6 +26,7 @@ import { } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectAttributeFilterConfigsDisplayAsLabelMap } from "../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js"; import { selectFilterContextFilters } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { AttributeFilterConfigurationItem } from "./AttributeFilterConfigurationItem.js"; import { DateFilterConfigurationItem } from "./DateFilterConfigurationItem.js"; import { MeasureValueFilterConfigurationItem } from "./MeasureValueFilterConfigurationItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts b/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts index c5dcc33ecd4..de93263714b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts @@ -56,6 +56,7 @@ import { useExportXlsxDialogContext } from "../../dashboardContexts/ExportXlsxDi import { getDefaultPdfPageSize } from "../../scheduledEmail/utils/pdfPageSize.js"; import { useExportToTabular } from "../../topBar/menuButton/useExportToTabular.js"; import { useExportWithTemplateSelection } from "../../topBar/menuButton/useExportWithTemplateSelection.js"; + import { useExportHandler } from "./useExportHandler.js"; import { useImageExportHandler } from "./useImageExportHandler.js"; import { useRawExportHandler } from "./useRawExportHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx index 26d24e72a71..85f2b2f7594 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardLayoutProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts index 1a2e078603d..dd23ccad05d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DashboardLayout } from "./DashboardLayout.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx index 0ffa3ef717f..107e96bd81b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx @@ -3,6 +3,7 @@ import { type DashboardLayoutWidgetComponentSet } from "../../componentDefinition/types.js"; import { type DashboardLayoutComponentProvider } from "../../dashboardContexts/types.js"; import { DashboardLayoutDraggingComponent } from "../../dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.js"; + import { CreatableDashboardLayout } from "./CreatableDashboardLayout.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx index cb5736d1f32..52c5de553fb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx @@ -10,6 +10,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IInsightWidgetDescriptionTriggerProps } from "./types.js"; import { useInsightWidgetDescription } from "./useInsightWidgetDescription.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx index c4c51dbe32a..054ee2d96b0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx @@ -10,6 +10,7 @@ import { useDashboardUserInteraction } from "../../../model/react/useDashboardUs import { selectEnableRichTextDynamicReferences } from "../../../model/store/config/configSelectors.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { DescriptionClickTrigger } from "./DescriptionClickTrigger.js"; import { type IInsightWidgetDescriptionTriggerProps } from "./types.js"; import { useInsightWidgetDescription } from "./useInsightWidgetDescription.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts b/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts index 7631ecfd79e..dccd5c8adc1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectEnableRichTextDescriptions } from "../../../model/store/config/configSelectors.js"; + import { type IInsightWidgetDescriptionTriggerProps } from "./types.js"; export const useInsightWidgetDescription = (props: IInsightWidgetDescriptionTriggerProps) => { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx index 1c0784e97d3..5a8f6cb643a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { type IInsight } from "@gooddata/sdk-model"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx index 2e8fc6f71e7..a4cb80fa40f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { EditModeDashboardInsight } from "./EditModeDashboardInsight/EditModeDashboardInsight.js"; import { ExportModeDashboardInsight } from "./ExportModeDashboardInsight/ExportModeDashboardInsight.js"; import { type IDashboardInsightProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx index 18a4ee92457..c757d4cccfc 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx @@ -3,6 +3,7 @@ import { useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IInsightBodyProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx index 3e5e48d6b5d..1f47de7e726 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx @@ -25,6 +25,7 @@ import { } from "../../../drill/types.js"; import { getDrillDownTitle } from "../../../drill/utils/drillDownUtils.js"; import { type IDashboardInsightProps } from "../types.js"; + import { DashboardInsightWithDrillSelect } from "./Insight/DashboardInsightWithDrillSelect.js"; import { InsightDrillDialog } from "./InsightDrillDialog/InsightDrillDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx index 1400c6c72d2..bb8165a159a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx @@ -69,6 +69,7 @@ import { type IDashboardInsightProps } from "../../types.js"; import { CustomError } from "../CustomError/CustomError.js"; import { useInsightPositionStyle } from "../useInsightPositionStyle.js"; import { useResolveDashboardInsightProperties } from "../useResolveDashboardInsightProperties.js"; + import { useDashboardInsightDrills } from "./useDashboardInsightDrills.js"; import { useHandlePropertiesPushData } from "./useHandlePropertiesPushData.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx index 3025c25a0db..bae0b47db5f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx @@ -4,6 +4,7 @@ import { type ReactElement } from "react"; import { WithDrillSelect } from "../../../../drill/DrillSelect/WithDrillSelect.js"; import { type IDashboardInsightProps } from "../../types.js"; + import { DashboardInsight } from "./DashboardInsight.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx index 2ec1972a00f..1cdc4a9f5c1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx @@ -26,6 +26,7 @@ import { selectSettings, } from "../../../../../model/store/config/configSelectors.js"; import { selectCanExportTabular } from "../../../../../model/store/permissions/permissionsSelectors.js"; + import { DrillDialogExportDropdownResolver } from "./DrillDialogExportDropdownResolver.js"; import { getTitleWithBreadcrumbs } from "./getTitleWithBreadcrumbs.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx index f551bf793c8..efe7d9efcde 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx @@ -5,6 +5,7 @@ import { type ReactElement, useMemo } from "react"; import { type IInsight, type IInsightWidget } from "@gooddata/sdk-model"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDrillDialogExportDropdownProps } from "./drillDialogExportDropdownTypes.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx index 97c177a713b..7774ae0ffa2 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx @@ -46,6 +46,7 @@ import { type IDashboardInsightProps } from "../../types.js"; import { CustomError } from "../CustomError/CustomError.js"; import { useInsightPositionStyle } from "../useInsightPositionStyle.js"; import { useResolveDashboardInsightProperties } from "../useResolveDashboardInsightProperties.js"; + import { useDrillDialogInsightDrills } from "./useDrillDialogInsightDrills.js"; import { useDrillDialogSyncInsightProperties } from "./useDrillDialogSyncInsightProperties.js"; import { useExcludedDrillDefinitionFilters } from "./useExcludedDrillDefinitionFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx index 64cfdc2b5d8..1c129241eff 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx @@ -47,6 +47,7 @@ import { ThemedLoadingEqualizer } from "../../../../presentationComponents/Theme import { useInsightExport } from "../../../common/useInsightExport.js"; import { useShowAsTable } from "../../../showAsTableButton/useShowAsTable.js"; import { supportsShowAsTable } from "../../insightToTable.js"; + import { DrillDialog } from "./DrillDialog.js"; import { DrillDialogInsight } from "./DrillDialogInsight.js"; import { getTitleWithBreadcrumbs } from "./getTitleWithBreadcrumbs.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx index 24e17c414df..eba872fd37f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IDashboardInsightProps } from "../types.js"; + import { DashboardInsightWithDrillDialog } from "./DashboardInsightWithDrillDialog.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx index b9c1d12f3af..6c7c2201eb4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx @@ -6,6 +6,7 @@ import { type IDrillConfigItem, type IDrillDownAttributeHierarchyDefinition, } from "../../../../drill/types.js"; + import { DrillFiltersConfigInner } from "./DrillFiltersConfigInner.js"; import { useDrillFiltersConfig } from "./useDrillFiltersConfig.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx index c7a91d56c8d..99bb2c76968 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx @@ -5,6 +5,7 @@ import { useIntl } from "react-intl"; import { type SourceInsightFilterObjRef, type SourceMeasureFilterObjRef } from "@gooddata/sdk-model"; import { type IDrillFiltersConfigExtended } from "../../../../drill/types.js"; + import { DrillFiltersConfigSection } from "./DrillFiltersConfigSection.js"; import { messages } from "./messages.js"; import { type IDrillFiltersConfigOption } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts index 022cec363d6..c8b82ed7b3c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts @@ -38,6 +38,7 @@ import { findDashboardAttributeFilterByIncomingDisplayAsLabel, findDashboardAttributeFilterByTargetDisplayAsLabel, } from "../../../../../model/utils/filterContextUtils.js"; + import { messages } from "./messages.js"; import { type IDrillFiltersConfigOption } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts index 914a58bc324..f90c661c0b0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts @@ -38,6 +38,7 @@ import { type IDrillToInsightConfig, isDrillToInsightConfig, } from "../../../../drill/types.js"; + import { mapDashboardFilterToOption } from "./optionMappings/mapDashboardFilterToOption.js"; import { mapIntersectionAttributeToOption } from "./optionMappings/mapIntersectionAttributeToOption.js"; import { mapSourceInsightFilterToOption } from "./optionMappings/mapSourceInsightFilterToOption.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts index 2311cb33e8f..9f05a7ad922 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts @@ -6,6 +6,7 @@ import { type SourceInsightFilterObjRef, type SourceMeasureFilterObjRef } from " import { isSourceInsightFilterObjRefEqual } from "../../../../../_staging/drills/drillingUtils.js"; import { type IDrillFiltersConfigExtended } from "../../../../drill/types.js"; + import { type IDrillFiltersConfigOption } from "./types.js"; export type IDrillFiltersConfigSelection = Partial< diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts index 942fca557f0..d01dc3fa469 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts @@ -8,6 +8,7 @@ import { type IDrillConfigItem, type IDrillDownAttributeHierarchyDefinition, } from "../../../../drill/types.js"; + import { isDrillFiltersConfigOptionSelected } from "./types.js"; import { useDrillFiltersConfig } from "./useDrillFiltersConfig.js"; import { useDrillFiltersConfigInner } from "./useDrillFiltersConfigInner.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts index 753ce71924e..7637411558d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts @@ -21,6 +21,7 @@ import { type IDrillConfigItem, type IDrillToDashboardConfig, } from "../../../../drill/types.js"; + import { getTargetDashboardFiltersCacheKey, useTargetDashboardFiltersContext, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx index 636e9227e94..12ee4a3a35e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx @@ -11,6 +11,7 @@ import { } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectInsightByWidgetRef } from "../../../../model/store/insights/insightsSelectors.js"; import { type DRILL_TARGET_TYPE, type IDrillConfigItem } from "../../../drill/types.js"; + import { DrillIntersectionIgnoredAttributesSelect, type IDrillIntersectionIgnoredAttributesSelectOption, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx index df5c1b73f6a..4e34d360bf1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx @@ -8,6 +8,7 @@ import { Dropdown, DropdownButton } from "@gooddata/sdk-ui-kit"; import { useDashboardUserInteraction } from "../../../../../model/react/useDashboardUserInteraction.js"; import { type IAvailableDrillTargetItem } from "../../../../drill/DrillSelect/types.js"; + import { DrillOriginSelectorBody } from "./DrillOriginSelectorBody.js"; export interface IDrillOriginSelectorProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx index 02d50de7bef..f699a004cd1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { type IAvailableDrillTargets } from "@gooddata/sdk-ui"; import { type IAvailableDrillTargetItem } from "../../../../drill/DrillSelect/types.js"; + import { DrillAttributeSelectorList } from "./DrillAttributeSelectorList.js"; import { DrillMeasureSelectorList } from "./DrillMeasureSelectorList.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx index 44e50782a2a..e68a80e6910 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx @@ -7,6 +7,7 @@ import { Dropdown, DropdownList } from "@gooddata/sdk-ui-kit"; import { DRILL_TARGET_TYPE } from "../../../../drill/types.js"; import { ButtonWithIcon } from "../ButtonWithIcon.js"; import { type IDrillTargetType } from "../useDrillTargetTypeItems.js"; + import { DrillTargetTypeListItem } from "./DrillTargetTypeListItem.js"; export interface IDrillTargetProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx index c1fdcb3b787..c4e4b7c18c5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx @@ -23,6 +23,7 @@ import { selectAllCatalogAttributeHierarchies } from "../../../../../model/store import { selectIgnoredDrillDownHierarchiesByWidgetRef } from "../../../../../model/store/tabs/layout/layoutSelectors.js"; import { existBlacklistHierarchyPredicate } from "../../../../../model/utils/attributeHierarchyUtils.js"; import { type IDrillDownAttributeHierarchyConfig } from "../../../../drill/types.js"; + import { AttributeHierarchyList, type IAttributeHierarchyItem } from "./AttributeHierarchyList.js"; interface IAttributeHierarchyDropdownProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx index 2e02cca27f7..e5fcaa1677d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx @@ -9,6 +9,7 @@ import { DropdownList, UiTooltip } from "@gooddata/sdk-ui-kit"; import { messages } from "../../../../../locales.js"; import { useDashboardUserInteraction } from "../../../../../model/react/useDashboardUserInteraction.js"; + import { AttributeHierarchyListFooter } from "./AttributeHierarchyListFooter.js"; import { AttributeHierarchyListItem } from "./AttributeHierarchyListItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx index 0dc0774847b..cb4311893b6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx @@ -15,6 +15,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { useDashboardUserInteraction } from "../../../../../model/react/useDashboardUserInteraction.js"; import { selectAllCatalogAttributeHierarchies } from "../../../../../model/store/catalog/catalogSelectors.js"; import { type IDrillDownAttributeHierarchyConfig } from "../../../../drill/types.js"; + import { AttributeHierarchyDropdown } from "./AttributeHierarchyDropdown.js"; import { EmptyAttributeHierarchyInfo } from "./EmptyAttributeHierarchyInfo.js"; import { useAttributeHierarchy } from "./useAttributeHierarchy.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx index 83b257e8fb1..e49a7e576c0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx @@ -12,6 +12,7 @@ import { selectInaccessibleDashboards } from "../../../../../model/store/inacces import { type IInaccessibleDashboard } from "../../../../../model/types/inaccessibleDashboardTypes.js"; import { DashboardList } from "../../../../dashboardList/DashboardList.js"; import { type IDrillableDashboardListItem } from "../../../../dashboardList/types.js"; + import { DrillTargetDashboardTabSelector } from "./DrillTargetDashboardTabSelector.js"; interface IDrillTargetDashboardItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx index 69230a93792..f16a750e08f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx @@ -3,6 +3,7 @@ import { type IInsight } from "@gooddata/sdk-model"; import { type IDrillConfigItem } from "../../../../drill/types.js"; + import { DrillingInsightDropdown } from "./DrillingInsightDropdown.js"; export interface IDrillMeasureItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx index 013759e9642..ed1fbbb4b52 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx @@ -24,6 +24,7 @@ import { isDrillToAttributeUrlConfig, isDrillToCustomUrlConfig, } from "../../../../drill/types.js"; + import { useAttributesWithDisplayForms } from "./useAttributesWithDisplayForms.js"; import { useInvalidAttributeDisplayFormIdentifiers } from "./useInvalidAttributeDisplayFormIdentifier.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx index 4b840c8160f..c22824f1ac7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx @@ -26,6 +26,7 @@ import { isDrillToDashboardConfig, isDrillToUrlConfig, } from "../../../../drill/types.js"; + import { DrillTargetAttributeHierarchyItem } from "./DrillTargetAttributeHierarchyItem.js"; import { DrillTargetDashboardItem } from "./DrillTargetDashboardItem.js"; import { DrillTargetInsightItem } from "./DrillTargetInsightItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx index 1b55f7e6202..20459dd5240 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx @@ -14,6 +14,7 @@ import { import { type IExecutionResultEnvelope } from "../../../../../model/store/executionResults/types.js"; import { type IMeasureFormatMap } from "../../../../alerting/DefaultAlertingDialog/utils/getters.js"; import { type AlertAttribute, type AlertMetric } from "../../../../alerting/types.js"; + import { EditAlert } from "./EditAlert.js"; interface ICreateAlertProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx index 6212ac30bdc..ff2f51b4b81 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx @@ -56,6 +56,7 @@ import { import { type AlertAttribute, type AlertMetric } from "../../../../alerting/types.js"; import { RecipientsSelect } from "../../../../scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js"; import { DashboardInsightSubmenuContainer } from "../../../insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/DashboardInsightSubmenuContainer.js"; + import { AlertTitle } from "./AlertTitle.js"; import { EditAlertConfiguration } from "./EditAlertConfiguration.js"; import { useEditAlert } from "./hooks/useEditAlert.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx index edf85a26178..1ab0b3c37e1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx @@ -3,6 +3,7 @@ import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../../model/store/config/configSelectors.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { InsightAlertsNew } from "./InsightAlertsNew.js"; import { InsightAlertsOld } from "./InsightAlertsOld.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx index 75e3c302f68..56f2bdd0481 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx @@ -50,6 +50,7 @@ import { messages } from "../../../alerting/DefaultAlertingDialog/messages.js"; import { getSupportedInsightMeasuresByInsight } from "../../../alerting/DefaultAlertingDialog/utils/items.js"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { AlertsList } from "./InsightAlertConfig/AlertsList.js"; import { NoAvailableMeasures } from "./InsightAlertConfig/NoAvailableAlerts.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx index cfdb64af76e..306b6c2e9e6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx @@ -9,6 +9,7 @@ import { simplifyText } from "@gooddata/util"; import { AlertDeleteDialog } from "../../../alerting/DefaultAlertingDialog/components/AlertDeleteDialog.js"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { AlertsList } from "./InsightAlertConfig/AlertsList.js"; import { CreateAlert } from "./InsightAlertConfig/CreateAlert.js"; import { EditAlert } from "./InsightAlertConfig/EditAlert.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx index 1913d7c7101..47862ceb929 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx @@ -21,6 +21,7 @@ import { import { selectSettings } from "../../../../model/store/config/configSelectors.js"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { InsightDescriptionConfig } from "./InsightDescriptionConfig/InsightDescriptionConfig.js"; import { InsightFilters } from "./InsightFilters.js"; import { InsightTitleConfig } from "./InsightTitleConfig.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx index f0a07879147..795b09f7dcd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx @@ -18,6 +18,7 @@ import { useWidgetFilters } from "../../../../../model/react/useWidgetFilters.js import { selectSeparators } from "../../../../../model/store/config/configSelectors.js"; import { selectInsightByRef } from "../../../../../model/store/insights/insightsSelectors.js"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { InsightDescription } from "./InsightDescription.js"; interface IInsightDescriptionConfigProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx index 34b0a906dce..f89d020dd1b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx @@ -33,6 +33,7 @@ import { isDrillToDashboardConfig, isDrillToInsightConfig, } from "../../../drill/types.js"; + import { DrillFiltersTrigger } from "./DrillFilters/DrillFiltersTrigger.js"; import { useDrillFiltersCount } from "./DrillFilters/useDrillFiltersCount.js"; import { useDrillFiltersSubview } from "./DrillFilters/useDrillFiltersSubview.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx index f2de5fb2d3d..6ba70a6da67 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx @@ -4,6 +4,7 @@ import { type InsightDrillDefinition } from "@gooddata/sdk-model"; import { ScrollableItem } from "@gooddata/sdk-ui-kit"; import { type IDrillConfigItem, type IDrillDownAttributeHierarchyDefinition } from "../../../drill/types.js"; + import { DrillConfigItem } from "./InsightDrillConfigItem.js"; import { useDrillTargetTypeItems } from "./useDrillTargetTypeItems.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx index d967133ab13..00a17b80b66 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx @@ -9,6 +9,7 @@ import { DrillFiltersConfig } from "../DrillFilters/DrillFiltersConfig.js"; import { DrillOriginSelector } from "../DrillOriginSelector/DrillOriginSelector.js"; import { InsightDrillConfigList } from "../InsightDrillConfigList.js"; import { ZoomInsightConfiguration } from "../ZoomInsightConfiguration.js"; + import { useInsightDrillConfigPanel } from "./useInsightDrillConfigPanel.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts index 27c08a17b41..0a9def651a4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type IInsightWidget, idRef } from "@gooddata/sdk-model"; import { getGlobalDrillDownMappedConfigForWidget } from "../drillConfigMapper.js"; + import { availableDrillTargets, globalDrillDowns } from "./drillConfigMapper.fixture.js"; describe("drillConfigMapper", () => { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts index 9870da21341..475d895bc34 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts @@ -58,6 +58,7 @@ import { isDrillToUrlConfig, } from "../../../../drill/types.js"; import { useDrillFiltersSubview } from "../DrillFilters/useDrillFiltersSubview.js"; + import { getDrillToUrlMappedConfigForWidget, getGlobalDrillDownMappedConfigForWidget, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx index a7eab60cc97..a083b76c160 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx @@ -6,6 +6,7 @@ import { type IInsightWidget, isInsightWidget } from "@gooddata/sdk-model"; import { Typography } from "@gooddata/sdk-ui-kit"; import { FilterConfiguration } from "../../common/configuration/FilterConfiguration.js"; + import { InsightCrossFiltering } from "./InsightCrossFiltering.js"; import { InsightDateDataSetFilter } from "./InsightDateDataSetFilter.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx index c6913efcbda..8bebdada051 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx @@ -7,6 +7,7 @@ import { OverlayController, OverlayControllerProvider, ScrollablePanel } from "@ import { simplifyText } from "@gooddata/util"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; + import { TargetDashboardFiltersProvider } from "./DrillFilters/TargetDashboardFiltersContext.js"; import { InsightDrillConfigPanel } from "./InsightDrillConfigPanel/InsightDrillConfigPanel.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts index 2489d4d3b61..68a6db4dfce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts @@ -37,6 +37,7 @@ import { type OnWidgetDrill, } from "../../drill/types.js"; import { type WidgetExportDataAttributes } from "../../export/types.js"; + import { type ILayerTableDefinition } from "./insightToTable.js"; /// diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx index 885cc9e495a..948ac8a5217 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightMenuProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx index 9ee65ed1df1..c8fa1934ce6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightMenuButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx index 1b18dadec7e..050a4fd7a81 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightMenuTitleProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx index 943dc28f150..9b6e8b00f1e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx @@ -18,6 +18,7 @@ import { import { DashboardInsightMenuTitle } from "../../DashboardInsightMenuTitle.js"; import { type IDashboardInsightMenuTitleProps } from "../../types.js"; + import { DashboardInsightMenuItemButton } from "./DashboardInsightMenuItemButton.js"; import { DashboardInsightSubmenuContainer } from "./DashboardInsightSubmenuContainer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx index 54920f09950..dc0c7e1946d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx @@ -29,6 +29,7 @@ import { type IInsightMenuSubmenu, isIInsightMenuSubmenu, } from "../../types.js"; + import { CustomUiMenuContentComponent, CustomUiMenuContentItemComponent, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx index 84711ee4a29..ab92d93d81a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx @@ -1,8 +1,9 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { type ReactElement } from "react"; import { type IDashboardInsightMenuProps } from "../types.js"; + import { DashboardInsightMenu } from "./DashboardInsightMenu/index.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx index bec3fb251a1..6b50cf7a59e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IDashboardInsightMenuButtonProps } from "../types.js"; + import { DashboardInsightMenuButton } from "./DashboardInsightMenuButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx index eb5d78d5a0d..a81607d1344 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx @@ -10,6 +10,7 @@ import { UiIcon } from "@gooddata/sdk-ui-kit"; import { type IExecutionResultEnvelope } from "../../../../model/store/executionResults/types.js"; import { InsightAlerts } from "../../insight/configuration/InsightAlerts.js"; import { type IInsightMenuItem } from "../types.js"; + import { getExportTooltipId } from "./getExportTooltips.js"; import { type IUseInsightMenuConfig } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts index a1010d11d00..7f4ba033ea9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts @@ -4,6 +4,7 @@ import { defineMessages } from "react-intl"; import { isDataError, isDataErrorTooLarge } from "../../../../_staging/errors/errorPredicates.js"; import { type IExecutionResultEnvelope } from "../../../../model/store/executionResults/types.js"; + import { type DisabledReason } from "./types.js"; const tooltipMessages = defineMessages({ diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx index d752c2b7d53..75befe6bf9c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts index 304e389853b..b48fa6e265b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { EditModeDashboardRichText } from "./EditModeDashboardRichText.js"; import { ExportModeDashboardRichText } from "./ExportModeDashboardRichText.js"; import { ViewModeDashboardRichText } from "./ViewModeDashboardRichText.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx index 5d74f197d09..0b4b32dd12e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx @@ -3,6 +3,7 @@ import { type RichTextWidgetComponentSet } from "../../componentDefinition/types.js"; import { type RichTextComponentProvider } from "../../dashboardContexts/types.js"; import { RichTextDraggingComponent } from "../../dragAndDrop/draggableWidget/RichTextDraggingComponent.js"; + import { CreatableRichText } from "./CreatableRichText.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx index 6a4301067f4..082b2cd3b42 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx @@ -31,6 +31,7 @@ import { uiActions } from "../../../model/store/ui/index.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { DASHBOARD_OVERLAYS_FILTER_Z_INDEX } from "../../../presentation/constants/zIndex.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextProps } from "./types.js"; import { useEditableRichTextMenu } from "./useEditableRichTextMenu.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx index 72096b247b9..f0403d6f308 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx @@ -5,6 +5,7 @@ import { useCallback, useState } from "react"; import { type GoodDataSdkError, type ILoadingState } from "@gooddata/sdk-ui"; import { useRichTextExportData, useVisualizationExportData } from "../../export/useExportData.js"; + import { type IDashboardRichTextProps } from "./types.js"; import { ViewModeDashboardRichText } from "./ViewModeDashboardRichText.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx index 3705e4a330c..13af3440e76 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx @@ -15,6 +15,7 @@ import { selectCurrentDashboardSummaryWorkflowStatus } from "../../../model/stor import { selectCurrentDashboardSummary } from "../../../model/store/listedDashboards/listedDashboardsSummarySelectors.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx index 02e3909e3f8..1aed4faeab9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx @@ -8,6 +8,7 @@ import { simplifyText } from "@gooddata/util"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IRichTextMenuSubmenuComponentProps } from "../../richTextMenu/types.js"; + import { RichTextFilters } from "./RichTextFilters.js"; const overlayController = OverlayController.getInstance(DASHBOARD_HEADER_OVERLAYS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx index defc71799cd..f71df89c4fd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx @@ -6,6 +6,7 @@ import { type IRichTextWidget } from "@gooddata/sdk-model"; import { Typography } from "@gooddata/sdk-ui-kit"; import { FilterConfiguration } from "../../common/configuration/FilterConfiguration.js"; + import { RichTextDateDataSetFilter } from "./RichTextDateDataSetFilter.js"; interface IRichTextFiltersProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx index c27eafb18df..c62140f825f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextMenuTitleProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx index dc1c9040853..f09cd4c132e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx @@ -16,6 +16,7 @@ import { type IRichTextMenuItem, type IRichTextMenuSubmenu, } from "../../types.js"; + import { DashboardRichTextMenuContainer } from "./DashboardRichTextMenuContainer.js"; export function DashboardRichTextMenuBody({ diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx index 87181ffe21a..92306f497ce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx @@ -1,8 +1,9 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { type ReactElement } from "react"; import { type IDashboardRichTextMenuProps } from "../types.js"; + import { DashboardRichTextMenu } from "./DashboardRichTextMenu/index.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx index d1a9457a142..77ab505f245 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IShowAsTableButtonProps } from "../types.js"; + import { ShowAsTableButton } from "./ShowAsTableButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx index 5ac436668a3..fc2eecad929 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IShowAsTableButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx index 7d068a2e0f0..3aeafc0721e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardVisualizationSwitcherProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts index 4bdca2373eb..d1a8c4d917f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { EditModeDashboardVisualizationSwitcher } from "./EditModeDashboardVisualizationSwitcher.js"; import { ExportModeDashboardVisualizationSwitcher } from "./ExportModeDashboardVisualizationSwitcher.js"; import { ViewModeDashboardVisualizationSwitcher } from "./ViewModeDashboardVisualizationSwitcher.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx index 8a8eb15e22e..dd4ce5aa4b7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx @@ -3,6 +3,7 @@ import { type VisualizationSwitcherWidgetComponentSet } from "../../componentDefinition/types.js"; import { type VisualizationSwitcherComponentProvider } from "../../dashboardContexts/types.js"; import { VisualizationSwitcherDraggingComponent } from "../../dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.js"; + import { CreatableVisualizationSwitcher } from "./CreatableVisualizationSwitcher.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx index 79654f4542d..d1dc30f1cf4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx @@ -14,6 +14,7 @@ import { DashboardItem } from "../../presentationComponents/DashboardItems/Dashb import { DashboardItemVisualization } from "../../presentationComponents/DashboardItems/DashboardItemVisualization.js"; import { getVisTypeCssClass } from "../../presentationComponents/DashboardItems/utils.js"; import { EditableDashboardInsightWidgetHeader } from "../widget/InsightWidget/EditableDashboardInsightWidgetHeader.js"; + import { AllVisualizationsDashInsights } from "./AllVisualizationsDashInsights.js"; import { type IDashboardVisualizationSwitcherProps } from "./types.js"; import { useExecutionProgress } from "./useExecutionProgress.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx index 7bb1c1207cc..bd1240591c5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx @@ -30,6 +30,7 @@ import { useShowAsTable } from "../showAsTableButton/useShowAsTable.js"; import { useAlertingAndScheduling } from "../widget/InsightWidget/useAlertingAndScheduling.js"; import { useInsightMenu } from "../widget/InsightWidget/useInsightMenu.js"; import { VisualizationSwitcherNavigationHeader } from "../widget/VisualizationSwitcherWidget/VisualizationSwitcherNavigationHeader.js"; + import { AllVisualizationsDashInsights } from "./AllVisualizationsDashInsights.js"; import { type IDashboardVisualizationSwitcherProps } from "./types.js"; import { useExecutionProgress } from "./useExecutionProgress.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx index 22963b45c16..b4bb6102328 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx @@ -24,6 +24,7 @@ import { defaultAlignPoints, defaultArrowDirections, } from "../../common/configuration/ConfigurationBubble.js"; + import { ToolbarBottom } from "./ToolbarBottom.js"; import { ToolbarTop } from "./ToolbarTop.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx index 9dc0c6075a2..c41e399ccce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx @@ -6,6 +6,7 @@ import { useDashboardSelector } from "../../../../model/react/DashboardStoreProv import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; import { selectRenderMode } from "../../../../model/store/renderMode/renderModeSelectors.js"; import { DashboardInsightMenuBody } from "../../insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.js"; + import { useVisualizationSwitcherEditableInsightMenu } from "./useVisualizationSwitcherEditableInsightMenu.js"; interface IVisualizationConfigProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx index 4c895663181..ead895cd278 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx @@ -5,6 +5,7 @@ import { type IInsight, type IInsightWidget } from "@gooddata/sdk-model"; import { type ObjRefMap } from "../../../../../_staging/metadata/objRefMap.js"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectInsightsMap } from "../../../../../model/store/insights/insightsSelectors.js"; + import { VisualizationListItem } from "./VisualizationListItem.js"; interface IVisulizationsListProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx index 45293b7a777..9a573c34288 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx @@ -10,6 +10,7 @@ import { Button, Typography } from "@gooddata/sdk-ui-kit"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { useDashboardUserInteraction } from "../../../../model/react/useDashboardUserInteraction.js"; import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; + import { InsightPicker } from "./InsightPicker.js"; import { VisualizationsList } from "./VisualizationsList/VisualizationsList.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx index fec5780a756..bc17a4d7341 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx @@ -23,6 +23,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardLayout } from "../../dashboardLayout/DashboardLayout.js"; import { type IDashboardLayoutProps } from "../../dashboardLayout/types.js"; + import { Toolbar } from "./Toolbar.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx index 0f66adc408a..a0d9e5bd204 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx @@ -2,6 +2,7 @@ import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; import { DefaultDashboardLayout } from "../../dashboardLayout/DefaultDashboardLayout.js"; + import { EditableDashboardNestedLayoutWidget } from "./EditableDashboardNestedLayoutWidget.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx index 7ccf4f4d3bd..b5be922833f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx @@ -18,6 +18,7 @@ import { import { getLayoutConfiguration } from "../../../../_staging/dashboard/flexibleLayout/layoutConfiguration.js"; import { useDashboardUserInteraction } from "../../../../model/react/useDashboardUserInteraction.js"; import { type ExtendedDashboardWidget } from "../../../../model/types/layoutTypes.js"; + import { LayoutDirectionConfigurationDialog } from "./LayoutDirectionConfigurationDialog.js"; const TOOLBAR_ALIGN_POINTS: IAlignPoint[] = [ diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx index 5494b71580e..f2a9c4edab4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx @@ -13,6 +13,7 @@ import { import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; import { LoadingDashboardPlaceholderWidget } from "../../dragAndDrop/draggableWidget/LoadingDashboardWidget.js"; import { EmptyDashboardDropZone as FlexibleEmptyDashboardDropZone } from "../../flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.js"; + import { DefaultDashboardWidget } from "./DefaultDashboardWidget.js"; import { type CustomDashboardWidgetComponent, type IDashboardWidgetProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx index 1364ad65896..1a399f4587f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx @@ -25,6 +25,7 @@ import { } from "../../../model/events/widget.js"; import { useDashboardEventDispatch } from "../../../model/react/useDashboardEventDispatch.js"; import { isExtendedDashboardLayoutWidget } from "../../../model/types/layoutTypes.js"; + import { RenderModeAwareDashboardNestedLayoutWidget } from "./DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.js"; import { RenderModeAwareDashboardInsightWidget } from "./InsightWidget/RenderModeAwareDashboardInsightWidget.js"; import { RenderModeAwareDashboardRichTextWidget } from "./RichTextWidget/RenderModeAwareDashboardRichTextWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx index f6583ea6d4d..0ace0caed8b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx @@ -4,6 +4,7 @@ import { type ComponentType } from "react"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; + import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; interface IDashboardWidgetInsightGuardProps extends Omit { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx index 84c445fdb0a..51439ee6fde 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx @@ -33,6 +33,7 @@ import { } from "../../insight/insightToTable.js"; import { ShowAsTableButton } from "../../showAsTableButton/ShowAsTableButton.js"; import { useShowAsTable } from "../../showAsTableButton/useShowAsTable.js"; + import { DashboardWidgetInsightGuard } from "./DashboardWidgetInsightGuard.js"; import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; import { useAlertingAndScheduling } from "./useAlertingAndScheduling.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx index 93141247140..33b63798713 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx @@ -16,6 +16,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemVisualization } from "../../../presentationComponents/DashboardItems/DashboardItemVisualization.js"; import { getVisTypeCssClass } from "../../../presentationComponents/DashboardItems/utils.js"; import { DashboardInsight } from "../../insight/DashboardInsight.js"; + import { DashboardWidgetInsightGuard } from "./DashboardWidgetInsightGuard.js"; import { EditableDashboardInsightWidgetHeader } from "./EditableDashboardInsightWidgetHeader.js"; import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx index 5819ea2d6b2..5ee2352ad1e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx @@ -2,6 +2,7 @@ import { ExportModeInsightWidgetDescription } from "../../description/ExportModeInsightWidgetDescription.js"; import { InsightWidgetDescriptionComponentProvider } from "../../description/InsightWidgetDescriptionComponentProvider.js"; + import { DefaultDashboardInsightWidget } from "./DefaultDashboardInsightWidget.js"; import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts index 18735b71e70..e6097830a7c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; + import { DefaultDashboardInsightWidget } from "./DefaultDashboardInsightWidget.js"; import { EditableDashboardInsightWidget } from "./EditableDashboardInsightWidget.js"; import { ExportableDashboardInsightWidget } from "./ExportableDashboardInsightWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx index c2ec736fb29..f42bc6cd140 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx @@ -6,6 +6,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { useWidgetHighlighting } from "../../common/useWidgetHighlighting.js"; import { DashboardRichText } from "../../richText/DashboardRichText.js"; + import { type IDefaultDashboardRichTextWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx index 61c5241db49..aeed8dd3ef1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx @@ -11,6 +11,7 @@ import { useIsDraggingWidget } from "../../../dragAndDrop/draggableWidget/useIsD import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardRichText } from "../../richText/DashboardRichText.js"; + import { type IDefaultDashboardRichTextWidgetProps } from "./types.js"; /** * @internal diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx index 7eef80a98b7..21d552cb464 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardRichText } from "../../richText/DashboardRichText.js"; + import { type IDefaultDashboardRichTextWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx index 04b218e68f9..53ea5161d44 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; + import { DefaultDashboardRichTextWidget } from "./DefaultDashboardRichTextWidget.js"; import { EditableDashboardRichTextWidget } from "./EditableDashboardRichTextWidget.js"; import { ExportableDashboardRichTextWidget } from "./ExportableDashboardRichTextWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx index 3e97b7c5f01..edc65966a06 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx @@ -6,6 +6,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { useWidgetHighlighting } from "../../common/useWidgetHighlighting.js"; import { DashboardVisualizationSwitcher } from "../../visualizationSwitcher/DashboardVisualizationSwitcher.js"; + import { type IDefaultDashboardVisualizationSwitcherWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx index e327a2babe5..b63d5e1e5cf 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx @@ -31,6 +31,7 @@ import { useIsDraggingWidget } from "../../../dragAndDrop/draggableWidget/useIsD import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardVisualizationSwitcher } from "../../visualizationSwitcher/DashboardVisualizationSwitcher.js"; + import { type IDefaultDashboardVisualizationSwitcherWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx index 4965ff054b2..33abde930ab 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardVisualizationSwitcher } from "../../visualizationSwitcher/DashboardVisualizationSwitcher.js"; + import { type IDefaultDashboardVisualizationSwitcherWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx index 0a56b970bc1..a6764747f04 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; + import { DefaultDashboardVisualizationSwitcherWidget } from "./DefaultDashboardVisualizationSwitcherWidget.js"; import { EditableDashboardVisualizationSwitcherWidget } from "./EditableDashboardVisualizationSwitcherWidget.js"; import { ExportableDashboardVisualizationSwitcherWidget } from "./ExportableDashboardVisualizationSwitcherWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx index d2b1430ef2a..fc94b6ec17d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx @@ -21,6 +21,7 @@ import { selectIsWidgetDeleteDialogOpen, selectWidgetDeleteDialogWidgetRef, } from "../../model/store/ui/uiSelectors.js"; + import { type IWidgetDeleteDialogProps } from "./types.js"; const deleteMessages = defineMessages({ diff --git a/libs/sdk-ui-ext/package.json b/libs/sdk-ui-ext/package.json index d545cc83654..3ce2b3095e5 100644 --- a/libs/sdk-ui-ext/package.json +++ b/libs/sdk-ui-ext/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-ext", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Extensions", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-ext/src/automations/Automations.tsx b/libs/sdk-ui-ext/src/automations/Automations.tsx index f7ee5494b52..a5758a031fe 100644 --- a/libs/sdk-ui-ext/src/automations/Automations.tsx +++ b/libs/sdk-ui-ext/src/automations/Automations.tsx @@ -10,6 +10,7 @@ import { import { ToastsCenterContextProvider } from "@gooddata/sdk-ui-kit"; import { InternalIntlWrapper } from "../internal/utils/internalIntlProvider.js"; + import { AutomationsCore } from "./AutomationsCore.js"; import { DEFAULT_MAX_HEIGHT, diff --git a/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx b/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx index b5d03087678..e0882b85fdb 100644 --- a/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx +++ b/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx @@ -13,6 +13,7 @@ import { formatAutomationSubtitle, formatCellValue } from "../format.js"; import { messages } from "../messages.js"; import { type IAutomationIconProps } from "../types.js"; import { getRecipientName } from "../utils.js"; + import { AutomationIconTooltip } from "./AutomationIconTooltip.js"; const { e } = bem("gd-ui-ext-automation-icon-tooltip"); diff --git a/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx b/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx index ba52bd9c3c8..e8ea972c09a 100644 --- a/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx +++ b/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx @@ -19,6 +19,7 @@ import { messages } from "../messages.js"; import { type AutomationsColumnName, type IUseAutomationColumnsProps } from "../types.js"; import { useUser } from "../UserContext.js"; import { getNextRunFromCron, getWidgetId, getWidgetName, getWorkspaceId } from "../utils.js"; + import { AutomationIcon } from "./AutomationIcon.js"; import { AutomationMenu } from "./AutomationMenu.js"; export const useAutomationColumns = ({ diff --git a/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts b/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts index a61838ea943..805e6bf2fe0 100644 --- a/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts +++ b/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts @@ -19,6 +19,7 @@ import { type IAutomationFilterQuery, } from "../types.js"; import { useUser } from "../UserContext.js"; + import { useFilterOptions } from "./FilterOptionsContext.js"; //generic filter hook diff --git a/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts b/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts index 7d958c6e5b3..e0f82e1e1c9 100644 --- a/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts +++ b/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts @@ -7,6 +7,7 @@ import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { type IInsight, type ObjRef, idRef } from "@gooddata/sdk-model"; import { insightDataLoaderFactory } from "../InsightDataLoader.js"; + import { noopWorkspaceInsightsService } from "./dataLoaders.mock.js"; describe("InsightDataLoader", () => { diff --git a/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx b/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx index df27ac05799..61da5901686 100644 --- a/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx +++ b/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx @@ -5,6 +5,7 @@ import { useContext } from "react"; import { IntlContext } from "react-intl"; import { InternalIntlWrapper } from "../internal/utils/internalIntlProvider.js"; + import { InsightPickerCore } from "./InsightPickerCore.js"; import { type IInsightPickerProps } from "./types.js"; diff --git a/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx b/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx index 2d1a822d022..fdbc05b74e1 100644 --- a/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx +++ b/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx @@ -12,6 +12,7 @@ import { type ITabsIds, useInsightPagedList, } from "../internal/components/insightList/useInsightPagedList.js"; + import { InsightPickerFilterBar } from "./InsightPickerFilterBar.js"; import { InsightPickerRow } from "./InsightPickerRow.js"; import { messages } from "./messages.js"; diff --git a/libs/sdk-ui-ext/src/insightView/InsightView.tsx b/libs/sdk-ui-ext/src/insightView/InsightView.tsx index d42494b0c10..c1f0be0f26d 100644 --- a/libs/sdk-ui-ext/src/insightView/InsightView.tsx +++ b/libs/sdk-ui-ext/src/insightView/InsightView.tsx @@ -35,6 +35,7 @@ import { insightDataLoaderFactory } from "../dataLoaders/InsightDataLoader.js"; import { userWorkspaceSettingsDataLoaderFactory } from "../dataLoaders/UserWorkspaceSettingsDataLoader.js"; import { workspacePermissionsDataLoaderFactory } from "../dataLoaders/WorkspacePermissionsDataLoader.js"; import { type IInsightViewProps } from "../internal/index.js"; + import { InsightError } from "./InsightError.js"; import { InsightRenderer } from "./InsightRenderer.js"; import { InsightTitle } from "./InsightTitle.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx b/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx index 8e603104155..cc5f70009f4 100644 --- a/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx +++ b/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx @@ -48,6 +48,7 @@ import { } from "../interfaces/Visualization.js"; import { type PluggableVisualizationFactory } from "../interfaces/VisualizationDescriptor.js"; import { cleanupKeyDriverAnalysisOnMetrics, hideKeyDriverOnMetrics } from "../utils/keyDriverAnalysis.js"; + import { FullVisualizationCatalog, type IVisualizationCatalog } from "./VisualizationCatalog.js"; export interface IBaseVisualizationProps extends IVisCallbacks { diff --git a/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts b/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts index 7a2489882b8..f36fe357791 100644 --- a/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts +++ b/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts @@ -3,6 +3,7 @@ import { type IInsightDefinition, insightVisualizationUrl } from "@gooddata/sdk-model"; import { type IVisualizationDescriptor } from "../interfaces/VisualizationDescriptor.js"; + import { AreaChartDescriptor } from "./pluggableVisualizations/areaChart/AreaChartDescriptor.js"; import { BarChartDescriptor } from "./pluggableVisualizations/barChart/BarChartDescriptor.js"; import { BubbleChartDescriptor } from "./pluggableVisualizations/bubbleChart/BubbleChartDescriptor.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts index aa92d3a3664..cbdc9cab0bf 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts @@ -9,6 +9,7 @@ import { findCatalogAttributeByRef, searchAttributes, } from "../utils.js"; + import { attributesData, catalogAttributes, catalogDateDatasets } from "./utils.fixture.js"; describe("utils", () => { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx index 7eafc3be719..935616990d1 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx @@ -4,6 +4,7 @@ import { memo } from "react"; import { messages } from "../../../locales.js"; import { type IDropdownItem } from "../../interfaces/Dropdown.js"; + import { DropdownControl, type IDropdownControlProps } from "./DropdownControl.js"; export interface IBasemapDropdownControlProps extends Omit< diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx index 659a6161d8b..5a69786619e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx @@ -2,6 +2,7 @@ import { messages } from "../../../locales.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { CellTextWrappingControl } from "./PivotTableTextWrappingControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx index 548a69331db..410ce1bd1f2 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx @@ -9,6 +9,7 @@ import { columnHeadersPositionDropdownItems } from "../../constants/dropdowns.js import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { isSetColumnHeadersPositionToLeftAllowed } from "../../utils/controlsHelper.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; import { ColumnHeaderTextWrappingControl } from "./PivotTableTextWrappingControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx index 7afd7bfb5dc..70df8a5324c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx @@ -7,6 +7,7 @@ import { dataLabelStyleDropdownItems, dataLabelsDropdownItems } from "../../cons import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; import { CheckboxControl } from "../configurationControls/CheckboxControl.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IDataLabelsControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx index e8af0a7091b..8cfbf5efd34 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../locales.js"; import { dataPointsDropdownLabels } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IDataPointsControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx index f2ab87d663c..311aeb10659 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx @@ -19,6 +19,7 @@ import { messages } from "../../../locales.js"; import { pushpinViewportDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { CheckboxControl } from "./CheckboxControl.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx index 27129ec2d52..3eab877a10d 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../locales.js"; import { grandTotalsPositionDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx index 0e3c62e36ae..7370e58a21c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { imageDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IImageControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx index 8975c3a3a44..23f5fce7022 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../locales.js"; import { metricsPositionDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx index 4a2203c3dae..10ed60f9e14 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx @@ -11,6 +11,7 @@ import { messages } from "../../../locales.js"; import { orientationDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IOrientationDropdownControl { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx index ac4e48b9758..75e8d632893 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx @@ -9,6 +9,7 @@ import { type IPushData } from "@gooddata/sdk-ui"; import { messages } from "../../../locales.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; + import { ConfigSection } from "./ConfigSection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx index 3627af09258..f76f24babfa 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx @@ -10,6 +10,7 @@ import { pushpinShapeTypeDropdownItems } from "../../constants/dropdowns.js"; import { type IDropdownItem } from "../../interfaces/Dropdown.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx index 061a404355f..76d489f39f8 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx @@ -8,6 +8,7 @@ import { messages } from "../../../locales.js"; import { pushpinSizeDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx index d8b91fe6e2b..1790f7834bc 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { rowSizingDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IRowHeightControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx index fd62c27ba1a..fdb3ac8c398 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { textWrappingDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface ITextWrappingControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx index e1a8d7f6f04..415e66243d8 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { verticalAlignmentDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IVerticalAlignControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx index 2d98afdef0d..7976e91af00 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx @@ -12,6 +12,7 @@ import { Button } from "@gooddata/sdk-ui-kit"; import { messages } from "../../../../locales.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { ConfigEditor } from "./ConfigEditor.js"; import { useOverflow } from "./useOverflow.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx index cb9a8f32d96..01960bf250f 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx @@ -9,6 +9,7 @@ import { useIntl } from "react-intl"; import { Button, Hyperlink, type IAlignPoint, Overlay } from "@gooddata/sdk-ui-kit"; import { messages } from "../../../../locales.js"; + import { CodeMirrorEditor } from "./CodeMirrorEditor.js"; import { SnippetHeader, SnippetItem } from "./SnippetItem.js"; import { type IChartConfigurationItemSnippet, SNIPPETS } from "./snippets.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx index 3d9350b34d1..f6bdbaf261b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx @@ -8,6 +8,7 @@ import { messages } from "../../../../locales.js"; import { type IColorConfiguration } from "../../../interfaces/Colors.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { AnomalyColorControl } from "./AnomalyColorControl.js"; import { AnomalyIndicatorControl } from "./AnomalyIndicatorControl.js"; import { AnomalySensitivityControl } from "./AnomalySensitivityControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx index 4ddc69942a2..d00c913d895 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../../locales.js"; import { type AxisType } from "../../../interfaces/AxisType.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSubsection } from "../../configurationControls/ConfigSubsection.js"; + import { LabelFormatControl } from "./LabelFormatControl.js"; import { LabelRotationControl } from "./LabelRotationControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx index 0adf887a437..0e091a6ca41 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../../locales.js"; import { type IConfigItemSubsection } from "../../../interfaces/ConfigurationPanel.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSubsection } from "../../configurationControls/ConfigSubsection.js"; + import { NamePositionControl } from "./NamePositionControl.js"; export const NameSubsection = memo(function NameSubsection(props: IConfigItemSubsection) { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx index ae1f4e9787a..9e3736a7295 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx @@ -16,6 +16,7 @@ import { getColoredInputItems, getProperties } from "../../../utils/colors.js"; import { getTranslatedDropdownItems, getTranslation } from "../../../utils/translations.js"; import { ConfigSection } from "../../configurationControls/ConfigSection.js"; import { DropdownControl } from "../DropdownControl.js"; + import { ColoredItemsList } from "./coloredItemsList/ColoredItemsList.js"; export interface IColorsSectionProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx index 6dee71611d6..b06e7b5f00e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx @@ -12,6 +12,7 @@ import { type IColoredItem } from "../../../../interfaces/Colors.js"; import { getTranslation } from "../../../../utils/translations.js"; import { isWaterfallColorHeaderItemKey } from "../../../../utils/uiConfigHelpers/waterfallChartUiConfigHelper.js"; import { ColorDropdown } from "../colorDropdown/ColorDropdown.js"; + import { ColoredItemContent } from "./ColoredItemContent.js"; export interface IColoredItemProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx index 0c2635e5cf9..dc5e0a28ad7 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx @@ -8,6 +8,7 @@ import { DropdownList, GOODSTRAP_SCROLLED_EVENT } from "@gooddata/sdk-ui-kit"; import { type IColoredItem } from "../../../../interfaces/Colors.js"; import { getSearchedItems } from "../../../../utils/colors.js"; + import { ColoredItem } from "./ColoredItem.js"; const DROPDOWN_MAX_HEIGHT = 150; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx index 20102efd5fd..8ecac498dcd 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx @@ -8,6 +8,7 @@ import { describe, expect, it } from "vitest"; import { colorPalette } from "../../../../../tests/mocks/testColorHelper.js"; import { InternalIntlWrapper } from "../../../../../utils/internalIntlProvider.js"; import { ColoredItemsList, type IColoredItemsListProps } from "../ColoredItemsList.js"; + import { inputItemsMock } from "./mock.js"; const defaultProps: IColoredItemsListProps = { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx index 38ce67daf37..4a58ac2138b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx @@ -8,6 +8,7 @@ import { comparisonMessages } from "../../../../locales.js"; import { type IComparisonControlProperties } from "../../../interfaces/ControlProperties.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { CalculationControl } from "./calculation/CalculationControl.js"; import { COMPARISON_ENABLED_VALUE_PATH } from "./ComparisonValuePath.js"; import { IndicatorSubSection } from "./indicators/IndicatorSubSection.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx index 7b2c4143aca..d2cc8e65c8c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx @@ -13,6 +13,7 @@ import { type IComparisonControlProperties } from "../../../../interfaces/Contro import { type IVisualizationProperties } from "../../../../interfaces/Visualization.js"; import { DropdownControl } from "../../DropdownControl.js"; import { COMPARISON_CALCULATION_TYPE_VALUE_PATH } from "../ComparisonValuePath.js"; + import { CalculationListItem } from "./CalculationListItem.js"; interface ICalculationControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx index d63c7b395bf..628497c7a54 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx @@ -6,6 +6,7 @@ import { type CalculationType } from "@gooddata/sdk-ui-charts"; import { Bubble, BubbleHoverTrigger, type ISingleSelectListItemProps } from "@gooddata/sdk-ui-kit"; import { HIDE_DELAY_DEFAULT, SHOW_DELAY_DEFAULT } from "../../../../constants/bubble.js"; + import { CalculationListItemInfo } from "./CalculationListItemInfo.js"; const BUBBLE_INFO_ALIGN_POINTS = [{ align: "cr cl" }]; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx index fc48b995135..671fc83c379 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx @@ -7,6 +7,7 @@ import { comparisonMessages } from "../../../../../locales.js"; import { type IComparisonControlProperties } from "../../../../interfaces/ControlProperties.js"; import { type IVisualizationProperties } from "../../../../interfaces/Visualization.js"; import { ConfigSubsection } from "../../ConfigSubsection.js"; + import { ArrowControl } from "./ArrowControl.js"; import { ColorsControl } from "./colorsControl/ColorsControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx index 36152194355..b090c3266fe 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx @@ -12,6 +12,7 @@ import { COMPARISON_COLOR_CONFIG_NEGATIVE, COMPARISON_COLOR_CONFIG_POSITIVE, } from "../../ComparisonValuePath.js"; + import { ColorCheckbox } from "./ColorCheckbox.js"; import { ColorItem } from "./ColorItem.js"; import { ColorResetButton } from "./ColorResetButton.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx index 56383cf4e1a..0dbd5448e79 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx @@ -9,6 +9,7 @@ import { type IVisualizationProperties } from "../../../../interfaces/Visualizat import { getNumberFormat, getNumberSubFormat } from "../../../../utils/comparisonHelper.js"; import { ConfigSubsection } from "../../ConfigSubsection.js"; import { COMPARISON_FORMAT_VALUE_PATH, COMPARISON_SUB_FORMAT_VALUE_PATH } from "../ComparisonValuePath.js"; + import { ComparisonPositionControl } from "./ComparisonPositionControl.js"; import { NumberFormatControl } from "./numberFormat/NumberFormatControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx index 9cd288045fb..86060d23d92 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx @@ -12,6 +12,7 @@ import { type IComparisonControlProperties } from "../../../../../interfaces/Con import { type IVisualizationProperties } from "../../../../../interfaces/Visualization.js"; import { getPresets, getTemplates } from "../../../../../utils/comparisonHelper.js"; import { DisabledBubbleMessage } from "../../../../DisabledBubbleMessage.js"; + import { NumberFormatToggleButton } from "./NumberFormatToggleButton.js"; interface INumberFormatControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx index f6a3681580d..deeb852b1ee 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx @@ -11,6 +11,7 @@ import { type IVisualizationProperties } from "../../../interfaces/Visualization import { CheckboxControl } from "../CheckboxControl.js"; import { ConfigSection } from "../ConfigSection.js"; import { InputControl } from "../InputControl.js"; + import { ForecastConfidenceControl } from "./ForecastConfidenceControl.js"; export interface IForecastSection { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx index abf32ef20f5..ba46d4c7677 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx @@ -5,6 +5,7 @@ import { memo } from "react"; import { messages } from "../../../../locales.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { GeoLegendPositionControl } from "./GeoLegendPositionControl.js"; type IGeoLegendPropertiesMeta = Record; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx index 43a7c7d81ec..15c88a90d2a 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx @@ -5,6 +5,7 @@ import { memo } from "react"; import { messages } from "../../../../locales.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { LegendPositionControl } from "./LegendPositionControl.js"; export interface ILegendSection { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx index 4f492d04999..654b273f527 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { BAR_CHART_AXIS_CONFIG } from "../../constants/axis.js"; + import { BaseChartConfigurationPanel } from "./BaseChartConfigurationPanel.js"; export class BarChartConfigurationPanel extends BaseChartConfigurationPanel { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx index 6acec9325c8..a5aad397569 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx @@ -26,6 +26,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx index e4a0ca18df5..03e74b4d1e0 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx @@ -24,6 +24,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class BubbleChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx index 71c17324944..63761857f5b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx @@ -20,6 +20,7 @@ import { CheckboxControl } from "../configurationControls/CheckboxControl.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class BulletChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx index 29df9d83b88..9c535e25059 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx @@ -36,6 +36,7 @@ import { isInsightSupportedForScheduledExports, } from "../pluggableVisualizations/alerts.js"; import { isInsightSupportedForImplicitDrillToUrl } from "../pluggableVisualizations/drillDownUtil.js"; + import { type SectionName } from "./sectionName.js"; export interface IConfigurationPanelContentProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx index 81f74d0db78..f8f15b23916 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class FunnelChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx index 2b3be7fda6a..8b1961d4c8e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx @@ -14,6 +14,7 @@ import { ColorsSection } from "../configurationControls/colors/ColorsSection.js" import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { GeoViewportControl, type ICurrentMapView } from "../configurationControls/GeoViewportControl.js"; import { GeoLegendSection } from "../configurationControls/legend/GeoLegendSection.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx index 3f701b57709..e2aeb918b0c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx @@ -32,6 +32,7 @@ import { GeoLegendSection } from "../configurationControls/legend/GeoLegendSecti import { PushpinShapeControl } from "../configurationControls/PushpinShapeControl.js"; import { PushpinSizeControl } from "../configurationControls/PushpinSizeControl.js"; import { PushpinViewportControl } from "../configurationControls/PushpinViewportControl.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx index f628730dddd..85325e51ab8 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx @@ -21,6 +21,7 @@ import { isComparisonEnabled, } from "../../utils/uiConfigHelpers/headlineUiConfigHelper.js"; import { ComparisonSection } from "../configurationControls/comparison/ComparisonSection.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx index b9e961ec9ad..3da75c60e32 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx @@ -21,6 +21,7 @@ import { LabelSubsection } from "../configurationControls/axis/LabelSubsection.j import { NameSubsection } from "../configurationControls/axis/NameSubsection.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class HeatMapConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx index dd60823ef69..7e05fbcf634 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx @@ -19,6 +19,7 @@ import { ContinuousLineControl } from "../configurationControls/ContinuousLineCo import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { DataPointsControl } from "../configurationControls/DataPointsControl.js"; import { DistinctPointShapesControl } from "../configurationControls/DistintcPointShapesControl.js"; + import { BaseChartConfigurationPanel } from "./BaseChartConfigurationPanel.js"; import { type IConfigurationPanelContentProps } from "./ConfigurationPanelContent.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx index a7e4f5dea08..e1418c9741a 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class PieChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx index 70c83326d37..f3945bc5368 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx @@ -23,6 +23,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { GrandTotalsControl } from "../configurationControls/GrandTotalsControl.js"; import { MetricsPositionControl } from "../configurationControls/MetricsPositionControl.js"; import { PagingSection } from "../configurationControls/PagingSection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; import { type SectionName } from "./sectionName.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx index 13fe38d1755..6a167b244b4 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class PyramidChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx index e20dbd18d46..210ecf154ec 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx @@ -19,6 +19,7 @@ import { ImageControl } from "../configurationControls/ImageControl.js"; import { RowHeightControl } from "../configurationControls/RowHeightControl.js"; import { TextWrappingControl } from "../configurationControls/TextWrappingControl.js"; import { VerticalAlignControl } from "../configurationControls/VerticalAlignControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class RepeaterConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx index 239ad99da06..95b32f6a50e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx @@ -18,6 +18,7 @@ import { import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { LegendSection } from "../configurationControls/legend/LegendSection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class SankeyChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx index 70e8cba3426..b861117d08c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx @@ -26,6 +26,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class ScatterPlotConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx index 3d6eb20005d..f5979109df6 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class TreeMapConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx index 5c706c6178d..9c50345c84b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx @@ -5,6 +5,7 @@ import { type ReactNode } from "react"; import { omit } from "lodash-es"; import { UnsupportedProperties } from "../configurationControls/UnsupportedProperties.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class UnsupportedConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx index 7f20165dcf8..5aa24ff1fde 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx @@ -23,6 +23,7 @@ import { LegendSection } from "../configurationControls/legend/LegendSection.js" import { OrientationDropdownControl } from "../configurationControls/OrientationDropdownControl.js"; import { TotalSection } from "../configurationControls/total/TotalSection.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { BaseChartConfigurationPanel } from "./BaseChartConfigurationPanel.js"; import { type IConfigurationPanelContentProps } from "./ConfigurationPanelContent.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx index ad41fac21a2..60c3aa20c23 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type DataSourcePermissionSubject, type IGrantedDataSource } from "../types.js"; + import { AddDataSourceSelect } from "./AddDataSourceSelect.js"; import { DataSourceList } from "./DataSourceList.js"; import { useAddDataSource } from "./useAddDataSource.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx index baceeceb46e..9da9708208a 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx @@ -18,6 +18,7 @@ import { isDataSourceItem, isSelectErrorOption, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx index 9b4000669fa..d84fb78fe5d 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { IconDataSource } from "@gooddata/sdk-ui-kit"; import { type DataSourcePermissionSubject, type IGrantedDataSource } from "../types.js"; + import { PermissionsDropdown } from "./PermissionsDropdown.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx index a01e7c384a7..72af3ce4ea3 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx @@ -4,6 +4,7 @@ import { type ReactElement, useMemo } from "react"; import { type IGrantedDataSource, type ListMode, type WorkspacePermissionSubject } from "../types.js"; import { sortByName } from "../utils.js"; + import { DataSourceItem } from "./DataSourceItem.js"; import { DataSourceListEmpty } from "./DataSourceListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx index 599dcad8913..b71aed0bafd 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx @@ -15,6 +15,7 @@ import { type IDataSourcePermissionsItem, type IGrantedDataSource, } from "../types.js"; + import { dataSourcePermissionMessages } from "./locales.js"; import { PermissionsDropdownList } from "./PermissionsDropdownList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx index 74a421b388c..4a7f0866f32 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type DataSourcePermission, type IDataSourcePermissionsItem } from "../types.js"; + import { dataSourcePermissionMessages } from "./locales.js"; import { QuestionMarkIcon } from "./QuestionMarkIcon.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx index 51b07785abd..38bb63fe0f0 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx @@ -12,6 +12,7 @@ import { type DataSourcePermissionSubject, type IDataSourcePermissionsItem, } from "../types.js"; + import { dataSourcePermissionMessages } from "./locales.js"; import { PermissionDropdownItem } from "./PermissionsDropdownItem.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx index e3ba96e3741..5ecf259d9ae 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx @@ -9,6 +9,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { extractUserName } from "../utils.js"; + import { useUserDetails } from "./detailsHooks.js"; import { UserDetailsView } from "./UserDetailsView.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx index 383abb600df..4a54ddd992a 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx @@ -9,6 +9,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { extractUserGroupName } from "../utils.js"; + import { useUserGroupDetails } from "./detailsHooks.js"; import { UserGroupDetailsView } from "./UserGroupDetailsView.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx index ac8df2e2cfc..c6c78451324 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx @@ -7,6 +7,7 @@ import { type IUser } from "@gooddata/sdk-model"; import { messages } from "../locales.js"; import { useTelemetry } from "../TelemetryContext.js"; import { type ListMode } from "../types.js"; + import { DetailRow } from "./DetailRow.js"; import { OrganizationMemberDropdown } from "./OrganizationMemberDropdown.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx index 884c0975b65..751c2ef9a54 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx @@ -6,6 +6,7 @@ import { type IUserGroup } from "@gooddata/sdk-model"; import { messages } from "../locales.js"; import { type ListMode } from "../types.js"; + import { DetailRow } from "./DetailRow.js"; export interface IUserGroupDetailsViewProps { diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx index 7a25fa9e511..7649f6cc661 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type IGrantedUserGroup } from "../types.js"; + import { AddUserGroupContent } from "./AddUserGroupContent.js"; import { useAddUserGroup } from "./userGroupHooks.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx index 1c993b03ef4..be256485e0e 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx @@ -1,6 +1,7 @@ // (C) 2023-2026 GoodData Corporation import { type IGrantedUserGroup } from "../types.js"; + import { AddUserGroupSelect } from "./AddUserGroupSelect.js"; import { UserGroupsList } from "./UserGroupsList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx index a6da92597d4..aa7dc66ea00 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx @@ -18,6 +18,7 @@ import { isGrantedUserGroup, isSelectErrorOption, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx index 78e1d276f05..a61296b8fb9 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { type IGrantedUserGroup, type ListMode } from "../types.js"; import { sortByName } from "../utils.js"; + import { UserGroupItem } from "./UserGroupItem.js"; import { UserGroupsListEmpty } from "./UserGroupsListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx index 4785744b1b6..bf7444263fc 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type IUserMember } from "../types.js"; + import { AddUserContent } from "./AddUserContent.js"; import { useAddUsers } from "./usersHooks.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx index 21bd3b1c879..5a0bd115d01 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx @@ -1,6 +1,7 @@ // (C) 2023-2026 GoodData Corporation import { type IUserMember } from "../types.js"; + import { AddUserSelect } from "./AddUserSelect.js"; import { UsersList } from "./UsersList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx index 9c501e59ff1..1380c89add1 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx @@ -17,6 +17,7 @@ import { isSelectErrorOption, isUserItem, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx index 6e41922f371..8e80189bfca 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { type IUserMember, type ListMode } from "../types.js"; import { sortByName } from "../utils.js"; + import { UserItem } from "./UserItem.js"; import { UsersListEmpty } from "./UsersListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx index 4e642b3d00d..938abdcab64 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx @@ -17,6 +17,7 @@ import { isSelectErrorOption, isWorkspaceItem, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx index 36752609d77..aef82593381 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase, Hyperlink } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type IGrantedWorkspace, type WorkspacePermissionSubject } from "../types.js"; + import { AddSingleWorkspaceSelect } from "./AddSingleWorkspaceSelect.js"; import { useAddWorkspace } from "./useAddWorkspace.js"; import { GranularPermissions } from "./WorkspaceItem/GranularPermissions.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx index 9d6e87c9ff1..944968058d7 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx @@ -18,6 +18,7 @@ import { isSelectErrorOption, isWorkspaceItem, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx index e276647feb7..405bff91db9 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx @@ -12,6 +12,7 @@ import { type WorkspacePermission, type WorkspacePermissions, } from "../../types.js"; + import { AdditionalAccessPermissionItem, WorkspaceAccessPermissionItem } from "./GranularPermissionsItems.js"; import { getGranularPermissions, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx index 10037ac6a91..948ac67a64b 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { FormattedMessage } from "react-intl"; import { type IPermissionsItem, type WorkspacePermission } from "../../types.js"; + import { getGranularPermissionTitle, granularTooltipMessages } from "./locales.js"; import { QuestionMarkIcon } from "./QuestionMarkIcon.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx index 6923687b9ce..032910981ae 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx @@ -5,6 +5,7 @@ import { useIntl } from "react-intl"; import { RemoveIcon } from "../../RemoveIcon.js"; import { type IGrantedWorkspace } from "../../types.js"; + import { getHumanReadablePermissionsTitle } from "./granularPermissionUtils.js"; import { workspaceGranularPermissionMessages } from "./locales.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx index 9c9c2fea75f..1c674d55ed2 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx @@ -10,6 +10,7 @@ import { simplifyText } from "@gooddata/util"; import { type TrackEventCallback, useTelemetry } from "../../TelemetryContext.js"; import { type IGrantedWorkspace, type WorkspacePermissionSubject } from "../../types.js"; + import { PermissionsDropdownList } from "./HierarchicalPermissionsDropdownList.js"; import { hierarchicalPermissionMessages } from "./locales.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx index 6c08ca39ff4..17e5e8f465d 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type IPermissionsItem, type WorkspacePermission } from "../../types.js"; + import { getPermissionTitle } from "./locales.js"; import { QuestionMarkIcon } from "./QuestionMarkIcon.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx index e5faeaf9138..91cb9b788ce 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx @@ -15,6 +15,7 @@ import { type WorkspacePermission, type WorkspacePermissionSubject, } from "../../types.js"; + import { getPermissionTitle } from "./locales.js"; import { PermissionsDropdownList } from "./PermissionsDropdownList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx index 60fdf210161..10397688ca6 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx @@ -12,6 +12,7 @@ import { type WorkspacePermission, type WorkspacePermissionSubject, } from "../../types.js"; + import { workspacePermissionMessages } from "./locales.js"; import { PermissionDropdownItem } from "./PermissionDropdownItem.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx index 2449ea6ef10..f59567fdb45 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type IGrantedWorkspace, type WorkspacePermissionSubject } from "../../types.js"; + import { HierarchicalPermissionsDropdown } from "./HierarchicalPermissionsDropdown.js"; import { PermissionsDropdown } from "./PermissionsDropdown.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts index 214a79d0804..09f9894bedf 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts @@ -4,6 +4,7 @@ import { isEqual } from "lodash-es"; import { type IntlShape } from "react-intl"; import { type IGrantedWorkspace, type WorkspacePermission, type WorkspacePermissions } from "../../types.js"; + import { workspaceGranularPermissionMessages } from "./locales.js"; export const workspacePermissions: WorkspacePermissions = ["MANAGE", "ANALYZE", "VIEW"]; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx index 1208b55880b..0e015c348a7 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { type IGrantedWorkspace, type ListMode, type WorkspacePermissionSubject } from "../types.js"; import { sortByName } from "../utils.js"; + import { GranularPermissionsWorkspaceItem } from "./WorkspaceItem/GranularPermissionsWorkspaceItem.js"; import { WorkspaceListEmpty } from "./WorkspaceListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts index 3de0e12e2c4..9a24d1e7317 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts @@ -7,6 +7,7 @@ import { type IVisualizationSizeInfo, type PluggableVisualizationFactory, } from "../../interfaces/VisualizationDescriptor.js"; + import { BaseChartDescriptor } from "./baseChart/BaseChartDescriptor.js"; import { MIN_VISUALIZATION_HEIGHT_FLEXIBLE_LAYOUT } from "./constants.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx index 6887b65d2c1..fd75569fdfa 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx @@ -54,6 +54,7 @@ import { setSecondaryMeasures, } from "../../utils/propertiesHelper.js"; import { setColumnBarChartUiConfig } from "../../utils/uiConfigHelpers/columnBarChartUiConfigHelper.js"; + import { PluggableBaseChart } from "./baseChart/PluggableBaseChart.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "./drillDownUtil.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx index 85fd1699240..217617f2dd3 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx @@ -16,6 +16,7 @@ import { type RenderFunction, type UnmountFunction, } from "../../interfaces/Visualization.js"; + import { AbstractPluggableVisualization } from "./AbstractPluggableVisualization.js"; export type IIntlLocalizedUnknownVisualizationClass = WrappedComponentProps & { onAfterRender?: () => void }; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts index b1f8618d69e..c223e22f151 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts @@ -8,6 +8,7 @@ import { type IVisualizationMeta, type PluggableVisualizationFactory, } from "../../interfaces/VisualizationDescriptor.js"; + import { BaseChartDescriptor } from "./baseChart/BaseChartDescriptor.js"; import { PluggableUnknownChart } from "./PluggableUnknownChart.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts index ce10bc19f8f..4a62b3bb3fe 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts @@ -28,6 +28,7 @@ import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection, } from "../drillDownUtil.js"; + import { PluggableAreaChart } from "./PluggableAreaChart.js"; export class AreaChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx index 5d67e77d459..df96d4e0759 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx @@ -73,6 +73,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableAreaChart } from "../PluggableAreaChart.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts index f3193dfb858..02af990fd5a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts @@ -31,6 +31,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableBarChart } from "./PluggableBarChart.js"; export class BarChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx index f190bc01416..3a8efe1fedd 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx @@ -17,6 +17,7 @@ import { getBucketItems } from "../../../utils/bucketHelper.js"; import { getCustomSortDisabledExplanation } from "../../../utils/sort.js"; import { BarChartConfigurationPanel } from "../../configurationPanels/BarChartConfigurationPanel.js"; import { PluggableColumnBarCharts } from "../PluggableColumnBarCharts.js"; + import { canSortStackTotalValue } from "./sortHelpers.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx index 28448106c3b..d3ddc7c2900 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx @@ -61,6 +61,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableBaseChart } from "../PluggableBaseChart.js"; + import { expectedInsightDefRegion, intersection, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts index 55cdcbd3407..cb182447ba1 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableBubbleChart } from "./PluggableBubbleChart.js"; export class BubbleChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts index 25bf94e3945..252c899fba1 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts @@ -24,6 +24,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableBulletChart } from "./PluggableBulletChart.js"; export class BulletChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx index 4ce21df36af..0d4a0d0efae 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx @@ -50,6 +50,7 @@ import { getBulletChartUiConfig } from "../../../utils/uiConfigHelpers/bulletCha import { BulletChartConfigurationPanel } from "../../configurationPanels/BulletChartConfigurationPanel.js"; import { PluggableBaseChart } from "../baseChart/PluggableBaseChart.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { transformBuckets } from "./bucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx index e9c3b4816d2..3c965c8c652 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx @@ -49,6 +49,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableBulletChart } from "../PluggableBulletChart.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts index e4499aaba57..e9d0a334859 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts @@ -31,6 +31,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableColumnChart } from "./PluggableColumnChart.js"; export class ColumnChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts index f7211bcd024..51503f44674 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableComboChart } from "./PluggableComboChart.js"; export class ComboChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts index c1b2df30138..3e1ad36d0d6 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts @@ -5,6 +5,7 @@ import { type PluggableVisualizationFactory, } from "../../../interfaces/VisualizationDescriptor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; + import { PluggableComboChartDeprecated } from "./PluggableComboChartDeprecated.js"; export class ComboChartDescriptorDeprecated extends BigChartDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx index 1aeaa04887f..56f8d03db3e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { SankeyChartDescriptor } from "../sankeyChart/SankeyChartDescriptor.js"; + import { PluggableDependencyWheelChart } from "./PluggableDependencyWheelChart.js"; export class DependencyWheelChartDescriptor diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts index 90a3900a8c3..6c9bc9aab8b 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableDonutChart } from "./PluggableDonutChart.js"; export class DonutChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts index a2463c514e7..9d939335637 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableFunnelChart } from "./PluggableFunnelChart.js"; export class FunnelChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts index 96fdca7815f..c9d75b921da 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts @@ -27,6 +27,7 @@ import { buildGeoChartNextGlobalFilters, buildGeoChartNextLayers, } from "../geoChartNext/geoEmbeddingLayers.js"; + import { PluggableGeoAreaChart } from "./PluggableGeoAreaChart.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx index 29ad91497da..68acc338bfa 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx @@ -61,6 +61,7 @@ import { getGeoVisualizationPropertiesWithFallback, } from "../geoCommon/geoVisualizationPropertiesWithFallback.js"; import { LiveMapViewTracker, createSyncedViewportHandlers } from "../geoCommon/liveMapViewTracking.js"; + import { createAreaConfiguredBuckets, createAreaSortForSegment, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts index 16632af8db5..83b9c84193a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts @@ -30,6 +30,7 @@ import { import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories } from "../chartCodeGenUtils.js"; import { MAX_VISUALIZATION_HEIGHT, MIDDLE_VISUALIZATION_HEIGHT } from "../constants.js"; + import { geoConfigFromInsight, geoInsightConversion } from "./geoConfigCodeGenerator.js"; import { PluggableGeoPushpinChart } from "./PluggableGeoPushpinChart.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts index dd2eee09b94..7717184e6af 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts @@ -22,6 +22,7 @@ import { import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories } from "../chartCodeGenUtils.js"; import { MAX_VISUALIZATION_HEIGHT, MIDDLE_VISUALIZATION_HEIGHT } from "../constants.js"; + import { geoConfigFromInsight } from "./geoConfigBuilder.js"; import { buildGeoChartNextGlobalFilters, buildGeoChartNextLayers } from "./geoEmbeddingLayers.js"; import { PluggableGeoPushpinChartNext } from "./PluggableGeoPushpinChartNext.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx index ac14aa529b7..f0bf721a0be 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx @@ -75,6 +75,7 @@ import { getGeoVisualizationPropertiesWithFallback, } from "../geoCommon/geoVisualizationPropertiesWithFallback.js"; import { LiveMapViewTracker, createSyncedViewportHandlers } from "../geoCommon/liveMapViewTracking.js"; + import { extractControls, getLatitudeAttribute, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts index cf1afad8017..23d76b1c017 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts @@ -8,6 +8,7 @@ import { BucketNames } from "@gooddata/sdk-ui"; import { ANALYTICAL_ENVIRONMENT, DASHBOARDS_ENVIRONMENT } from "../../../constants/properties.js"; import { type IEmbeddingCodeContext } from "../../../interfaces/VisualizationDescriptor.js"; import { buildAreaVisualizationConfig } from "../geoAreaChart/geoAreaConfigBuilder.js"; + import { buildGeoVisualizationConfig, geoConfigFromInsight, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts index 91a6350f13b..176e0025e28 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts @@ -10,6 +10,7 @@ import { import { BucketNames } from "@gooddata/sdk-ui"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; + import { createAttributeRef, getAttributeMetadata, getLatitudeAttribute } from "./geoAttributeHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts index f48891ecbab..6cfdfb6f745 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts @@ -23,6 +23,7 @@ import { insightConversion, } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { MAX_VISUALIZATION_HEIGHT } from "../constants.js"; + import { multipleSecondaryMeasuresBucketConversion, singleSecondaryMeasureBucketConversion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx index 5e99ac9e9ff..639e7fdf37a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx @@ -64,6 +64,7 @@ import { } from "../../../utils/uiConfigHelpers/headlineUiConfigHelper.js"; import { HeadlineConfigurationPanel } from "../../configurationPanels/HeadlineConfigurationPanel.js"; import { AbstractPluggableVisualization } from "../AbstractPluggableVisualization.js"; + import { setHeadlineRefPointBuckets, tryToMapForeignBuckets } from "./headlineBucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts index abf53ab3988..d1b109e1b0e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts @@ -24,6 +24,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableHeatmap } from "./PluggableHeatmap.js"; export class HeatmapDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx index 6343cec75af..310ebb7ecf0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx @@ -34,6 +34,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableHeatmap } from "../PluggableHeatmap.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts index 7604f6282a8..e0386ffdf60 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts @@ -31,6 +31,7 @@ import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection, } from "../drillDownUtil.js"; + import { PluggableLineChart } from "./PluggableLineChart.js"; export class LineChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts index 2e2a6a5d408..6b5769a505e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggablePieChart } from "./PluggablePieChart.js"; export class PieChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts index d97bf4044fb..03fbe4965e0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts @@ -33,6 +33,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { pivotTableAdditionalFactories } from "./pivotTableAdditionalFactories.js"; import { pivotTableConfigFromInsight } from "./pivotTableConfigFromInsight.js"; import { PluggablePivotTable } from "./PluggablePivotTable.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx index 697701eeb98..ba0e039bd5c 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx @@ -83,6 +83,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { adaptReferencePointSortItemsToPivotTable, addDefaultSort, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts index 4fcd29aff72..0a40fe81f58 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts @@ -7,6 +7,7 @@ import { type IPivotTableConfig } from "@gooddata/sdk-ui-pivot"; import { type IEmbeddingCodeContext } from "../../../interfaces/VisualizationDescriptor.js"; import { getColumnWidthsFromProperties } from "../../../utils/propertiesHelper.js"; + import { createPivotTableConfig } from "./PluggablePivotTable.js"; export function pivotTableConfigFromInsight( diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx index 59b2ddb4119..524b70b97d7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx @@ -50,6 +50,7 @@ import { getColumnAttributes, getRowAttributes, } from "../PluggablePivotTable.js"; + import { getInsightWithDrillDownApplied } from "./getInsightWithDrillDownAppliedMock.js"; import { getMockReferencePoint } from "./mockReferencePoint.js"; import { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts index 517f6439864..1481bf347ef 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts @@ -16,6 +16,7 @@ import { addDefaultSort, isSortItemVisible, } from "../sortItemsHelpers.js"; + import { getMockReferencePoint } from "./mockReferencePoint.js"; import { invalidAttributeSort, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts index 693fabb5d02..9bbc8732690 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts @@ -8,6 +8,7 @@ import { type ColumnWidthItem, type MeasureGroupDimension } from "@gooddata/sdk- import { type IBucketFilter, type IBucketItem } from "../../../../interfaces/Visualization.js"; import { simpleStackedReferencePoint } from "../../../../tests/mocks/referencePointMocks.js"; import { adaptReferencePointWidthItemsToPivotTable } from "../widthItemsHelpers.js"; + import { invalidAttributeColumnWidthItem, invalidMeasureColumnWidthItem, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts index 7807b7c6660..90ff507fa4f 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts @@ -40,6 +40,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { pivotTableNextAdditionalFactories } from "./pivotTableNextAdditionalFactories.js"; import { pivotTableNextConfigFromInsight } from "./pivotTableNextConfigFromInsight.js"; import { PluggablePivotTableNext } from "./PluggablePivotTableNext.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx index 5ef1c92bb6e..60e63e765c0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx @@ -80,6 +80,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { getColumnAttributes, getRowAttributes, shouldAdjustColumnHeadersPositionToTop } from "./helpers.js"; import { adaptReferencePointSortItemsToPivotTable, getSanitizedSortItems } from "./sortHelpers.js"; import { removeInvalidTotals } from "./totalsHelpers.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts index b729bc584e4..996ff5429cc 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggablePyramidChart } from "./PluggablePyramidChart.js"; export class PyramidChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts index 1c16c239b51..0fd1c4f5cae 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts @@ -23,6 +23,7 @@ import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerato import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { MIN_VISUALIZATION_HEIGHT_TABLE_REPEATER_FLEXIBLE_LAYOUT } from "../constants.js"; + import { PluggableRepeater } from "./PluggableRepeater.js"; export class RepeaterDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx index 926fb1abd4b..a6e226da495 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableSankeyChart } from "./PluggableSankeyChart.js"; export class SankeyChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx index 95342dddab5..2043a7d6db7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx @@ -26,6 +26,7 @@ import { removeSort } from "../../../utils/sort.js"; import { setScatterPlotUiConfig } from "../../../utils/uiConfigHelpers/scatterPlotUiConfigHelper.js"; import { ScatterPlotConfigurationPanel } from "../../configurationPanels/ScatterPlotConfigurationPanel.js"; import { PluggableBaseChart } from "../baseChart/PluggableBaseChart.js"; + import { transformBuckets } from "./bucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts index 5f8cd880243..d454459b3f5 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts @@ -19,6 +19,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableScatterPlot } from "./PluggableScatterPlot.js"; export class ScatterPlotDescriptor extends BigChartDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx index 2bedd8bc105..7467b356c58 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx @@ -17,6 +17,7 @@ import { multipleMetricsNoCategoriesReferencePoint, } from "../../../tests/mocks/referencePointMocks.js"; import { AbstractPluggableVisualization } from "../AbstractPluggableVisualization.js"; + import { DummyVisConstruct } from "./visConstruct.fixture.js"; describe("AbstractPluggableVisualization", () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx index 118d0e4b5ca..f668fbc25b7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx @@ -51,6 +51,7 @@ import { } from "../../../tests/mocks/testMocks.js"; import { DEFAULT_LANGUAGE, DEFAULT_MESSAGES } from "../../../utils/translations.js"; import { PluggableColumnChart } from "../columnChart/PluggableColumnChart.js"; + import { expectedInsightDefinitionDrillToRegion, expectedInsightDefinitionWithStackByDrillToDepartment, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts index ade106e493b..3d1552fe127 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts @@ -17,6 +17,7 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; import { type IDrillDownDefinition } from "../../../interfaces/Visualization.js"; import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection } from "../drillDownUtil.js"; + import { insightDefinitionToInsight } from "./pluggableVisualizations.test.helpers.js"; import { reverseAndTrimIntersectionMock } from "./reverseAndTrimIntersectionMock.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts index 3f5e891393d..145e4537ef0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts @@ -25,6 +25,7 @@ import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection, } from "../drillDownUtil.js"; + import { PluggableTreemap } from "./PluggableTreemap.js"; export class TreemapDescriptor extends BigChartDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx index d046c591194..6e7d616a930 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx @@ -40,6 +40,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableTreemap } from "../PluggableTreemap.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts index 14197e6fb1b..dd680f8c585 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableWaterfallChart } from "./PluggableWaterfallChart.js"; export class WaterfallChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx index a7ab22cac41..e58ef240b40 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx @@ -41,6 +41,7 @@ import { } from "../../../utils/uiConfigHelpers/xirrUiConfigHelper.js"; import { UnsupportedConfigurationPanel } from "../../configurationPanels/UnsupportedConfigurationPanel.js"; import { AbstractPluggableVisualization } from "../AbstractPluggableVisualization.js"; + import { getXirrBuckets } from "./xirrBucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts index c70480ad719..74c2a2b47dd 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts @@ -21,6 +21,7 @@ import { } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convenience.js"; import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { MAX_VISUALIZATION_HEIGHT } from "../constants.js"; + import { PluggableXirr } from "./PluggableXirr.js"; export class XirrDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts b/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts index df4bc551b5f..df97537984a 100644 --- a/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts +++ b/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts @@ -3,6 +3,7 @@ import { CalculateAs } from "@gooddata/sdk-ui-charts"; import { type HeadlineControlProperties } from "../interfaces/ControlProperties.js"; + import { AXIS } from "./axis.js"; const CUSTOM_TOOLTIP_PROPERTIES = ["customTooltip"]; diff --git a/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts b/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts index 661ececf2fc..5ce564e198e 100644 --- a/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts +++ b/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts @@ -3,6 +3,7 @@ import { BucketNames, OverTimeComparisonTypes, VisualizationTypes } from "@gooddata/sdk-ui"; import { type IUiConfig } from "../interfaces/Visualization.js"; + import { ATTRIBUTE, DATE, FACT, GEO_ATTRIBUTE, METRIC } from "./bucket.js"; export const MAX_METRICS_COUNT = 40; diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts b/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts index 1b729d5691d..705d7709cb2 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts @@ -10,6 +10,7 @@ import { type IBucketUiConfig, type IExtendedReferencePoint, } from "../interfaces/Visualization.js"; + import { filterOutArithmeticMeasuresFromDerived, filterOutDerivedMeasures, diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts b/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts index c7370dd6920..ac414c9f37c 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts @@ -45,6 +45,7 @@ import { type IUiConfig, type IVisualizationProperties, } from "../interfaces/Visualization.js"; + import { getTranslation } from "./translations.js"; export function isDateFilter(filter: IBucketFilter | undefined): filter is IDateFilter { diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts b/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts index e5de5203656..b699ca4d5cb 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts @@ -19,6 +19,7 @@ import { type IFiltersBucketItem, type IReferencePoint, } from "../interfaces/Visualization.js"; + import { getAllAttributeItems, getAllItemsByType, diff --git a/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts b/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts index e374efd03b1..35249a2511d 100644 --- a/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts @@ -14,6 +14,7 @@ import { BucketNames, type IPushData } from "@gooddata/sdk-ui"; import { messages } from "../../locales.js"; import { type IMinMaxControlProps, type IMinMaxControlState } from "../interfaces/MinMaxControl.js"; + import { getMeasureGroupDimensionFromProperties } from "./propertiesHelper.js"; import { getTranslation } from "./translations.js"; diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts index 89df41ece86..e627a5b54c6 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts @@ -5,6 +5,7 @@ import { compact, groupBy, isEmpty, partition, sortBy, uniqBy } from "lodash-es" import { type IInsightDefinition, factoryNotationFor } from "@gooddata/sdk-model"; import { type IEmbeddingCodeConfig } from "../../interfaces/VisualizationDescriptor.js"; + import { normalizeInsight } from "./normalizeInsight.js"; import { type IAdditionalFactoryDefinition, diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts index a391ee4469e..edffa2566d9 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts @@ -26,6 +26,7 @@ import { DefaultLocale } from "@gooddata/sdk-ui"; import { removeUseless } from "../../removeUseless.js"; import { createSorts } from "../../sort.js"; import { type PropMeta } from "../types.js"; + import { type IInsightToPropConversion, bucketConversion, insightConversion } from "./convertor.js"; function namedSdkModelPropMetaFor(name: string, propType: PropMeta["cardinality"]): PropMeta { diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts index bc9f5669b08..94c0c967958 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts @@ -10,6 +10,7 @@ import { type PropsWithMeta, } from "../embeddingCodeGenerator/types.js"; import { removeUseless } from "../removeUseless.js"; + import { configForInsightView, localeForInsightView } from "./insightViewConfig.js"; const getInsightViewSpecification = ( diff --git a/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts b/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts index 74af42e01fe..da92fb7f02d 100644 --- a/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts +++ b/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts @@ -5,6 +5,7 @@ import { BucketNames } from "@gooddata/sdk-ui"; import { type GeoChartShapeType } from "@gooddata/sdk-ui-geo"; import { type IBucketOfFun } from "../interfaces/Visualization.js"; + import { getItemsCount } from "./bucketHelper.js"; function isPushpinIconShape(shapeType: GeoChartShapeType = "circle"): boolean { diff --git a/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts b/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts index 7dbd5e2b492..33e630a0075 100644 --- a/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts +++ b/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts @@ -2,6 +2,7 @@ import { METRIC } from "../constants/bucket.js"; import { type IExtendedReferencePoint } from "../interfaces/Visualization.js"; + import { getAllItemsByType } from "./bucketHelper.js"; export function cleanupKeyDriverAnalysisOnMetrics( diff --git a/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts b/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts index 857801e37fe..a1c63ae1925 100644 --- a/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts @@ -24,6 +24,7 @@ import { type IVisProps, type IVisualizationProperties, } from "../interfaces/Visualization.js"; + import { getAllMeasuresShowOnSecondaryAxis, getItemsCount, diff --git a/libs/sdk-ui-ext/src/internal/utils/sort.ts b/libs/sdk-ui-ext/src/internal/utils/sort.ts index a59578575f3..6a8253af67e 100644 --- a/libs/sdk-ui-ext/src/internal/utils/sort.ts +++ b/libs/sdk-ui-ext/src/internal/utils/sort.ts @@ -37,6 +37,7 @@ import { type IExtendedReferencePoint, type IVisualizationProperties, } from "../interfaces/Visualization.js"; + import { getTranslation } from "./translations.js"; export function getAttributeSortItem( diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts index f07067a6364..101a61a58d0 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts @@ -17,6 +17,7 @@ import { import { getItemsCount, getStackItems, getViewItems, setBucketTitles } from "../bucketHelper.js"; import { getMasterMeasuresCount, hasNoStacksWithDate } from "../bucketRules.js"; import { getTranslation } from "../translations.js"; + import { getBucketItemsWarningMessage } from "./baseChartUiConfigHelper.js"; // If you need to edit these icons diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts index b1c911d4df6..aa0a219971b 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts @@ -18,6 +18,7 @@ import { } from "../bucketRules.js"; import { hasColorMapping } from "../propertiesHelper.js"; import { getTranslation } from "../translations.js"; + import { getBucketItemsWarningMessage } from "./baseChartUiConfigHelper.js"; // If you need to edit these icons diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts index ce171cd28ac..9e45013f0bd 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts @@ -12,6 +12,7 @@ import { type IExtendedReferencePoint } from "../../interfaces/Visualization.js" import { getViewItems, setBucketTitles } from "../bucketHelper.js"; import { hasMoreThanOneMasterMeasure, hasNoMeasures, hasOneCategory } from "../bucketRules.js"; import { getTranslation } from "../translations.js"; + import { getBucketItemsWarningMessage } from "./baseChartUiConfigHelper.js"; // If you need to edit these icons diff --git a/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx b/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx index de0af18f996..e441d930728 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx @@ -5,6 +5,7 @@ import { FormattedMessage, defineMessages, useIntl } from "react-intl"; import { type INotification } from "@gooddata/sdk-model"; import { bem } from "../bem.js"; + import { Notification } from "./Notification.js"; /** diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx index 77caec6e04a..58684deacce 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx @@ -11,6 +11,7 @@ import { UiPagedVirtualList, useElementSize } from "@gooddata/sdk-ui-kit"; import { bem } from "../bem.js"; import { type INotificationComponentProps } from "../Notification/DefaultNotification.js"; import { type INotificationsPanelView } from "../types.js"; + import { type INotificationsListEmptyStateComponentProps } from "./DefaultNotificationsListEmptyState.js"; import { type INotificationsListErrorStateComponentProps } from "./DefaultNotificationsListErrorState.js"; import { type INotificationSkeletonItemComponentProps } from "./DefaultSkeletonItem.js"; diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx index 0e602978d98..a7cb499cb2f 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx @@ -12,6 +12,7 @@ import { type INotificationsListEmptyStateComponentProps } from "../Notification import { type INotificationsListErrorStateComponentProps } from "../NotificationsList/DefaultNotificationsListErrorState.js"; import { type INotificationSkeletonItemComponentProps } from "../NotificationsList/DefaultSkeletonItem.js"; import { type INotificationsPanelView } from "../types.js"; + import { type INotificationsPanelHeaderComponentProps } from "./DefaultNotificationsPanelHeader.js"; const { b } = bem("gd-ui-ext-notifications-panel"); diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx index cf0e4c62070..7bba7a671e1 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { UiIcon } from "@gooddata/sdk-ui-kit"; import { bem } from "../bem.js"; + import { NOTIFICATIONS_PANEL_ID } from "./DefaultNotificationsPanel.js"; const { b, e } = bem("gd-ui-ext-notifications-panel-button"); diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx index 8c878e1066b..18388818dfb 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx @@ -33,6 +33,7 @@ import { type INotificationSkeletonItemComponentProps, } from "../NotificationsList/DefaultSkeletonItem.js"; import { type INotificationsPanelView } from "../types.js"; + import { DefaultNotificationsPanel, type INotificationsPanelComponentProps, diff --git a/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx b/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx index cdc9dbe2309..14aefb6e92e 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx @@ -7,6 +7,7 @@ import { type INotification, isAlertNotification } from "@gooddata/sdk-model"; import { UnexpectedSdkError, useWorkspace } from "@gooddata/sdk-ui"; import { useOrganization } from "../@staging/OrganizationContext/OrganizationContext.js"; + import { useFetchNotifications } from "./useFetchNotifications.js"; type OrganizationStatus = "pending" | "loading" | "success" | "error"; diff --git a/libs/sdk-ui-filters/package.json b/libs/sdk-ui-filters/package.json index 24cfed9a92b..e6f7e89b45b 100644 --- a/libs/sdk-ui-filters/package.json +++ b/libs/sdk-ui-filters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-filters", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Filter Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx b/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx index 9dcc499d3f8..dd9689d0977 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type VisibilityMode } from "../shared/interfaces/index.js"; + import { AttributeFilterBase } from "./AttributeFilterBase.js"; import { AttributeFilterDropdownButton } from "./Components/DropdownButton/AttributeFilterDropdownButton.js"; import { type IAttributeFilterBaseProps } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx index baa6e559868..87613fa9d51 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx @@ -6,6 +6,7 @@ import { type IAttributeDisplayFormMetadataObject, type ObjRef, areObjRefsEqual import { Dropdown, DropdownList, type IAlignPoint } from "@gooddata/sdk-ui-kit"; import { ATTRIBUTE_DISPLAY_FORM_DROPDOWN_BODY_CLASS } from "../../../constants.js"; + import { AttributeDisplayFormDropdownButton } from "./AttributeDisplayFormDropdownButton.js"; import { AttributeDisplayFormSelectItem } from "./AttributeDisplayFormSelectItem.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx index 259fa7e27e6..e22ce1e34db 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx @@ -4,6 +4,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IAlignPoint } from "@gooddata/sdk-ui-kit"; import { useAttributeFilterContext } from "../../../Context/AttributeFilterContext.js"; + import { AttributeDisplayFormDropdown } from "./AttributeDisplayFormDropdown.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx index e448ff03aa6..e0767025fbe 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx @@ -13,6 +13,7 @@ import { ATTRIBUTE_FILTER_DROPDOWN_BODY_CLASS, DEFAULT_DROPDOWN_BODY_WIDTH } fro import { useAttributeFilterComponentsContext } from "../../Context/AttributeFilterComponentsContext.js"; import { useAttributeFilterContext } from "../../Context/AttributeFilterContext.js"; import { MAX_SELECTION_SIZE } from "../../hooks/constants.js"; + import { type IAttributeFilterDropdownBodyProps } from "./types.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx index 8de78305a6e..3ea30c24f99 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx @@ -11,6 +11,7 @@ import { ShortenedText, UiIcon } from "@gooddata/sdk-ui-kit"; import { useAttributeFilterComponentsContext } from "../../Context/AttributeFilterComponentsContext.js"; import { useAttributeFilterContext } from "../../Context/AttributeFilterContext.js"; import { type AttributeFilterSelectionType } from "../../selectionTypes.js"; + import { AttributeFilterDetailsBubble } from "./AttributeFilterDetailsBubble.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx index fc20aad9b5e..41b5b0daad6 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx @@ -18,6 +18,7 @@ import { simplifyText } from "@gooddata/util"; import { FilterButtonCustomIcon } from "../../../shared/components/internal/FilterButtonCustomIcon.js"; import { type IFilterButtonCustomIcon } from "../../../shared/interfaces/index.js"; + import { AttributeFilterButtonTooltip } from "./AttributeFilterButtonTooltip.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx index 3e77f419b9c..1577fda3675 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx @@ -14,6 +14,7 @@ import { BACKEND_PAGE_SIZE, MAX_SELECTION_SIZE } from "../../hooks/constants.js" import { useAttributeFilterDropdownHeader } from "../../hooks/useAttributeFilterDropdownHeader.js"; import { getElementKey, getElementPrimaryTitle, getElementTitle } from "../../utils.js"; import { AttributeFilterDropdownHeader } from "../Dropdown/AttributeFilterDropdownHeader.js"; + import { type IAttributeFilterElementsSelectProps } from "./types.js"; const ITEM_HEIGHT = 28; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx index 0c2dd834b6a..84e42710316 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx @@ -16,6 +16,7 @@ import { } from "@gooddata/sdk-ui-kit"; import { getElementPrimaryTitle, getElementTitle } from "../../utils.js"; + import { AttributeFilterElementsSelectItemTooltip } from "./AttributeFilterElementsSelectItemTooltip.js"; import { type IAttributeFilterElementsSelectItemProps } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx index 8829b396d8a..d97cc3f4653 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { Bubble, BubbleHoverTrigger } from "@gooddata/sdk-ui-kit"; import { ATTRIBUTE_FILTER_DROPDOWN_BUBBLE_CLASS } from "../../../constants.js"; + import { AttributeFilterEmptySearchResult } from "./AttributeFilterEmptySearchResult.js"; const ALIGN_POINTS = [{ align: "cr cl" }]; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx index c6b116113e9..9990bc3f1e1 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx @@ -9,6 +9,7 @@ import { useIntl } from "react-intl"; import { CustomizableCheckmark, useMediaQuery } from "@gooddata/sdk-ui-kit"; import { getElementPrimaryTitle, getElementTitle } from "../../utils.js"; + import { AttributeFilterElementsSelectItemTooltip } from "./AttributeFilterElementsSelectItemTooltip.js"; import { type IAttributeFilterElementsSelectItemProps } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx index f2e19b9442b..5acff5641ad 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx @@ -8,6 +8,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { Dropdown, type IAlignPoint, type IUiListboxItem, UiAutofocus } from "@gooddata/sdk-ui-kit"; import { type AttributeFilterSelectionType } from "../../selectionTypes.js"; + import { FilterMenuButton } from "./FilterMenuButton.js"; import { FilterMenuDropdownBody } from "./FilterMenuDropdownBody.js"; import { type IFilterMenuProps, type ILabelItemData, type ISelectionTypeItemData } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx index f4a2c1f712e..e904b31c087 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx @@ -11,6 +11,7 @@ import { Checkbox, Input, UiLink, isEnterKey, useIdPrefixed } from "@gooddata/sd import { useAttributeFilterDropdownHeader } from "../../hooks/useAttributeFilterDropdownHeader.js"; import { isAllOperator, isMatchOperator } from "../../textFilterOperatorUtils.js"; import { AttributeFilterDropdownHeader } from "../Dropdown/AttributeFilterDropdownHeader.js"; + import { ArbitraryValuesInput } from "./ArbitraryValuesInput.js"; import { ArbitraryValuesTooltip } from "./ArbitraryValuesTooltip.js"; import { TextFilterOperatorDropdown } from "./TextFilterOperatorDropdown.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts index 3a07aedcabc..f53e6dc689c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts @@ -7,6 +7,7 @@ import { type IntlShape, useIntl } from "react-intl"; import { createInvalidDatapoint, createInvalidNode, useValidationContextValue } from "@gooddata/sdk-ui"; import { MAX_SELECTION_SIZE } from "../../hooks/constants.js"; + import { type ITextFilterBodyProps } from "./types.js"; type ITextFilterBodyValidationParams = Pick< diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts index 5ee61f137d7..8d3c36cac13 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts @@ -14,6 +14,7 @@ import { type AttributeFilterTextSelectionType, } from "../selectionTypes.js"; import { type TextFilterOperator } from "../textFilterOperatorUtils.js"; + import { type ITextFilterState } from "./useTextFilterInnerController.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts index 4c61064366e..28370db1156 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts @@ -34,6 +34,7 @@ import { type OnApplyCallbackType, type OnChangeCallbackType, } from "../types.js"; + import { type AttributeFilterController } from "./types.js"; import { useElementsFilterController } from "./useElementsFilterController.js"; import { useFilterDetailRequestHandler } from "./useFilterDetailRequestHandler.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts index 989b741f58b..8be80decb3c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts @@ -8,6 +8,7 @@ import { filterObjRef } from "@gooddata/sdk-model"; import { type IMultiSelectAttributeFilterHandler } from "../../AttributeFilterHandler/types/attributeFilterHandler.js"; import { isLimitingAttributeFiltersEmpty } from "../../AttributeFilterHandler/utils.js"; + import { MAX_SELECTION_SIZE, PARENT_FILTERS_CORRELATION } from "./constants.js"; import { type AttributeFilterControllerData } from "./types.js"; import { useAttributeFilterHandlerState } from "./useAttributeFilterHandlerState.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts index 6db16e9a157..e9e4d4aad42 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts @@ -35,6 +35,7 @@ import { type GoodDataSdkError, UnexpectedSdkError } from "@gooddata/sdk-ui"; import { type IMultiSelectAttributeFilterHandler } from "../../AttributeFilterHandler/types/attributeFilterHandler.js"; import { type OnApplyCallbackType, type OnChangeCallbackType } from "../types.js"; import { isValidSingleSelectionFilter } from "../utils.js"; + import { DISPLAY_FORM_CHANGED_CORRELATION, IRRELEVANT_SELECTION, diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts index ef8fea98c20..9828e4dbf95 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts @@ -9,6 +9,7 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { type AsyncOperationStatus } from "../../AttributeFilterHandler/types/common.js"; import { type AttributeFilterAvailableSelectionType } from "../selectionTypes.js"; import { getAvailableTextSelectionTypes } from "../selectionTypeUtils.js"; + import { type TextFilterController } from "./types.js"; import { type ITextFilterState, useTextFilterInnerController } from "./useTextFilterInnerController.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts index b4ff38c14bd..44d1a543fb5 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts @@ -16,6 +16,7 @@ import { isArbitraryOperator, resolveValuesOnTextOperatorChange, } from "../textFilterOperatorUtils.js"; + import { MAX_SELECTION_SIZE } from "./constants.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/types.ts b/libs/sdk-ui-filters/src/AttributeFilter/types.ts index 6151c757ce4..d4de24f2c48 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/types.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/types.ts @@ -20,6 +20,7 @@ import { import { type IAlignPoint, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { type IFilterButtonCustomIcon } from "../shared/interfaces/index.js"; + import { type IAttributeFilterErrorProps } from "./Components/AttributeFilterError.js"; import { type IAttributeFilterLoadingProps } from "./Components/AttributeFilterLoading.js"; import { type IAttributeFilterDropdownActionsProps } from "./Components/Dropdown/AttributeFilterDropdownActions.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/utils.ts b/libs/sdk-ui-filters/src/AttributeFilter/utils.ts index ded77d14bc2..2b0a23a2315 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/utils.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/utils.ts @@ -20,6 +20,7 @@ import { import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import { getElementCacheKey } from "../AttributeFilterHandler/internal/redux/common/selectors.js"; + import { getSelectionTypeFromFilter } from "./selectionTypeUtils.js"; import { getOperatorFromFilter, getValuesFromFilter } from "./textFilterOperatorUtils.js"; import { getTextFilterStateText } from "./textFilterStateSummaryUtils.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts index 3620e7a0ec8..30cdfa09848 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts @@ -61,6 +61,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { newAttributeFilterCallbacks } from "./callbacks.js"; import { getElementsByKeys, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts index e25fa4f0bed..519c284f35c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts @@ -44,6 +44,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { selectInvertableCommittedSelection, selectInvertableWorkingSelection, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts index 15f542b16f5..922916ea8c0 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts @@ -53,6 +53,7 @@ import { type OnLoadNextElementsPageStartCallbackPayload, type OnLoadNextElementsPageSuccessCallbackPayload, } from "../types/elementsLoader.js"; + import { AttributeFilterReduxBridge } from "./bridge.js"; import { type AttributeFilterHandlerConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts index 5937c39f54e..5667e9b3d7b 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts @@ -9,6 +9,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { AttributeFilterLoader } from "./loader.js"; import { type AttributeFilterHandlerConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts index b8715115d34..7f4e00df75b 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts @@ -15,6 +15,7 @@ import { selectHiddenElementsAsAttributeElements, } from "../filter/filterSelectors.js"; import { selectAttribute } from "../loadAttribute/loadAttributeSelectors.js"; + import { selectStaticElements } from "./elementsSelectors.js"; import { loadElements } from "./loadElements.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts index 042429a3718..6082ca255d9 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts @@ -5,6 +5,7 @@ import { type IAttributeElement, type ObjRef } from "@gooddata/sdk-model"; import { type ILoadElementsOptions } from "../../../types/elementsLoader.js"; import { type IAttributeFilterHandlerStoreContext } from "../store/types.js"; + import { loadElementsFromBackend } from "./loadElementsFromBackend.js"; import { loadElementsFromStaticElements } from "./loadElementsFromStaticElements.js"; import { type IHiddenElementsInfo } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts index 672fce7e297..062e66c04cf 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts @@ -27,6 +27,7 @@ import { DataViewFacade, convertError } from "@gooddata/sdk-ui"; import { type ILoadElementsOptions } from "../../../types/elementsLoader.js"; import { type IAttributeFilterHandlerStoreContext } from "../store/types.js"; + import { InMemoryPaging } from "./InMemoryPaging.js"; import { type IHiddenElementsInfo } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts index de1cc2e9b88..f55802e6b16 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-model"; import { type ILoadElementsOptions } from "../../../types/elementsLoader.js"; + import { InMemoryPaging } from "./InMemoryPaging.js"; import { type IHiddenElementsInfo } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts index 3e23740705e..6ea5b9c3dee 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts @@ -15,6 +15,7 @@ import { import { selectHiddenElements } from "../filter/filterSelectors.js"; import { selectIsWorkingSelectionEmpty } from "../selection/selectionSelectors.js"; import { actions } from "../store/slice.js"; + import { initAttributeSaga } from "./initAttributeSaga.js"; import { initAttributeElementsPageSaga } from "./initElementsPageSaga.js"; import { initIrrelevantSelectionSaga } from "./initIrrelevantSelectionSaga.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts index 46b46284e2c..0a28d8713b0 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts @@ -18,6 +18,7 @@ import { selectOriginalFilter, } from "../filter/filterSelectors.js"; import { actions } from "../store/slice.js"; + import { loadAttributeByDisplayForm } from "./loadAttributeByDisplayForm.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts index 5b70779cc21..51ac2f5399c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts @@ -9,6 +9,7 @@ import { getAttributeFilterContext } from "../common/sagas.js"; import { elementsSaga } from "../elements/elementsSaga.js"; import { selectCacheId, selectLoadElementsOptions } from "../elements/elementsSelectors.js"; import { actions } from "../store/slice.js"; + import { loadLimitingAttributeFiltersAttributes } from "./loadLimitingAttributeFiltersAttributes.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts index ae3446c22d0..5a0cb253537 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts @@ -8,6 +8,7 @@ import { type GoodDataSdkError, convertError } from "@gooddata/sdk-ui"; import { elementsSaga } from "../elements/elementsSaga.js"; import { selectCacheId } from "../elements/elementsSelectors.js"; import { actions } from "../store/slice.js"; + import { selectHasNextPage, selectLoadNextElementsPageOptions } from "./loadNextElementsPageSelectors.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts index 46295cca961..c5bfae6c27a 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts @@ -4,6 +4,7 @@ import { type PayloadAction } from "@reduxjs/toolkit"; import { type AttributeElementKey } from "../../../types/common.js"; import { type AttributeFilterReducer } from "../store/state.js"; + import { selectCommittedSelection, selectIrrelevantCommittedSelection, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts index 6a8216af729..31a4dd94f3a 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts @@ -16,6 +16,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { AttributeFilterLoader } from "./loader.js"; import { type AttributeFilterHandlerConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts index 34d540e15cb..b1163e88b29 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts @@ -6,6 +6,7 @@ import { BadRequestSdkError } from "@gooddata/sdk-ui"; import { suppressConsole } from "@gooddata/util"; import { loadElements as mockLoadElements } from "../internal/redux/elements/loadElements.js"; + import { newTestAttributeFilterHandlerWithAttributeFilter, positiveAttributeFilterDefaultDF, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts index 5942f89686b..ffcabb54572 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts @@ -8,6 +8,7 @@ import { BadRequestSdkError } from "@gooddata/sdk-ui"; import { suppressConsole } from "@gooddata/util"; import { loadElements as mockLoadElements } from "../internal/redux/elements/loadElements.js"; + import { limitingAttributeFilters, limitingDateFilters, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts index 95e9735b3c7..0f071862e90 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts @@ -7,6 +7,7 @@ import { BadRequestSdkError } from "@gooddata/sdk-ui"; import { suppressConsole } from "@gooddata/util"; import { loadElements as mockLoadElements } from "../internal/redux/elements/loadElements.js"; + import { limitingAttributeFilters, limitingDateFilters, diff --git a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx index 0d1d2b4288e..9aa55209189 100644 --- a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx @@ -7,6 +7,7 @@ import { type WeekStart } from "@gooddata/sdk-model"; import { DateRangePicker } from "../DateRangePicker/DateRangePicker.js"; import { type IDateRange } from "../DateRangePicker/types.js"; import { type DateFilterOption, type IUiAbsoluteDateFilterForm } from "../interfaces/index.js"; + import { dateFilterValueToDateRange, dateRangeToDateFilterValue } from "./conversions.js"; /** diff --git a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx index 4b86233bf0c..6a9b732b021 100644 --- a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx @@ -15,6 +15,7 @@ import { type IUiAbsoluteDateFilterForm, } from "../interfaces/index.js"; import { ListItem } from "../ListItem/ListItem.js"; + import { AbsoluteDateFilterForm } from "./AbsoluteDateFilterForm.js"; const ITEM_CLASS_MOBILE = "gd-date-filter-item-mobile"; diff --git a/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx b/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx index 43759cd4ddc..ff88b035b48 100644 --- a/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type DateFilterOption, type IDateFilterOptionsByType } from "../interfaces/index.js"; + import { AllTimeFilterItem } from "./AllTimeFilterItem.js"; const ITEM_CLASS_MOBILE = "gd-date-filter-item-mobile"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx index 6b126dc3f61..e544b1fcc94 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx @@ -15,6 +15,7 @@ import { import { type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { type IFilterButtonCustomIcon, type VisibilityMode } from "../shared/interfaces/index.js"; + import { DEFAULT_DATE_FORMAT } from "./constants/Platform.js"; import { type IFilterConfigurationProps } from "./DateFilterBody/types.js"; import { type IDateFilterButtonProps } from "./DateFilterButton/DateFilterButton.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx index afafa2f8346..f3049f237d9 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx @@ -42,6 +42,7 @@ import { getFiscalTabsConfig, } from "../utils/presetFilterUtils.js"; import { VisibleScrollbar } from "../VisibleScrollbar/VisibleScrollbar.js"; + import { DateFilterBodyButton } from "./DateFilterBodyButton.js"; import { DateFilterBodyContentFiltered } from "./DateFilterBodyContentFiltered.js"; import { DateFilterConfigurationButton } from "./DateFilterConfigurationButton.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx index dfc6261c33b..1b16a553b4d 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx @@ -26,6 +26,7 @@ import { getFilteredPresets, getFiscalTabsConfig, } from "../utils/presetFilterUtils.js"; + import { AbsolutePresetFilterItems } from "./AbsolutePresetFilterItems.js"; import { CalendarTypeTabs } from "./CalendarTypeTabs.js"; import { RelativePresetFilterItems } from "./RelativePresetFilterItems.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx index 5ce4df09ecd..e6ed5cce99c 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx @@ -12,6 +12,7 @@ import { } from "../interfaces/index.js"; import { OtherPresetsSection } from "../Other/OtherPresetsSection.js"; import { type CalendarTabType } from "../utils/presetFilterUtils.js"; + import { AbsolutePresetFilterItems } from "./AbsolutePresetFilterItems.js"; import { CalendarTypeTabs } from "./CalendarTypeTabs.js"; import { RelativePresetFilterItems } from "./RelativePresetFilterItems.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx index 76d82b2e447..042c34d16de 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx @@ -30,6 +30,7 @@ import { type IUiRelativeDateFilterForm, } from "../interfaces/index.js"; import { RelativeDateFilterForm } from "../RelativeDateFilterForm/RelativeDateFilterForm.js"; + import { DateFilterFormNavigationWrapper } from "./DateFilterFormNavigationWrapper.js"; import { type DateFilterRoute } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx index 5620e79c255..0c020a7b4f9 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx @@ -25,6 +25,7 @@ import { Dropdown, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { MediaQueries } from "../constants/MediaQueries.js"; import { type IFilterButtonCustomIcon } from "../shared/interfaces/index.js"; + import { DATE_FILTER_ACTIVE_CALENDAR_TAB_ID, DATE_FILTER_CUSTOM_RELATIVE_ID, diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx index 66b35266135..c08c4886b16 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx @@ -22,6 +22,7 @@ import { import { isArrowKey, isEnterKey, useId } from "@gooddata/sdk-ui-kit"; import { convertPlatformDateStringToDate } from "../utils/DateConversions.js"; + import { DateRangePickerInputFieldBody } from "./DateRangePickerInputFieldBody.js"; import { InputErrorMessage } from "./InputErrorMessage.js"; import { type IDateInputErrorMessageTexts, type IInputAccessibilityConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx index c1c61dcfdc4..5fb7297c069 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx @@ -39,6 +39,7 @@ import { type WeekStart } from "@gooddata/sdk-model"; import { Overlay } from "@gooddata/sdk-ui-kit"; import { type DateRangePosition } from "../interfaces/index.js"; + import { type IDateRange } from "./types.js"; import { mergeDayPickerProps } from "./utils.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx index 1b3487b8e28..b28b86f61cf 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { type WeekStart } from "@gooddata/sdk-model"; import { type DateRangePosition } from "../interfaces/index.js"; + import { DayPicker } from "./DatePicker.js"; import { DateRangeHint } from "./DateRangeHint.js"; import { EndDateInputField } from "./EndDateInputField.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx index 8fff07b3d6a..dac7c4a30d5 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { DAY_END_TIME } from "../constants/Platform.js"; import { getLocalizedDateFormat } from "../utils/FormattingUtils.js"; + import { DateTimePicker, type IDateTimePickerAccessibilityConfig } from "./DateTimePicker.js"; import { DATE_INPUT_HINT_ID, diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx index f987af4d009..457cafd55bc 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { DAY_START_TIME } from "../constants/Platform.js"; import { getLocalizedDateFormat } from "../utils/FormattingUtils.js"; + import { DateTimePicker, type IDateTimePickerAccessibilityConfig } from "./DateTimePicker.js"; import { DATE_INPUT_HINT_ID, diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx index dfec069bfcb..5040531d479 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx @@ -8,6 +8,7 @@ import moment, { type Moment } from "moment/moment.js"; import { isArrowKey, isEnterKey, useId } from "@gooddata/sdk-ui-kit"; import { TIME_FORMAT } from "../constants/Platform.js"; + import { InputErrorMessage } from "./InputErrorMessage.js"; import { type IInputAccessibilityConfig, type ITime } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx index a9873c0ad5b..9c244eb4ba0 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx @@ -5,6 +5,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { DateRangePicker, type IDateRangePickerProps } from "../DateRangePicker.js"; import { type IDateRange } from "../types.js"; + import { IntlDecorator } from "./IntlDecorators.js"; const defaultDateFormat = "MM/dd/yyyy"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts index 31122df2146..f697c7495a4 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts @@ -5,6 +5,7 @@ import moment from "moment"; import { type DayPickerProps, type Matcher } from "react-day-picker"; import { platformDateFormat } from "../constants/Platform.js"; + import { type ITime } from "./types.js"; const mergeModifiers = ( diff --git a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx index 058fa059c99..74183fa049c 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx @@ -14,6 +14,7 @@ import { } from "../Select/ScrollableSelectMenu.js"; import { type ISelectItemOption } from "../Select/types.js"; import { getSelectableItems, itemToString } from "../Select/utils.js"; + import { type DynamicSelectItem, type DynamicSelectOption } from "./types.js"; import { findRelativeDateFilterOptionByValue } from "./utils.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx index 17cf6ae2200..8de6e72758b 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx @@ -14,6 +14,7 @@ import { } from "../Select/ScrollableSelectMenu.js"; import { type ISelectItemOption } from "../Select/types.js"; import { getSelectableItems, itemToString } from "../Select/utils.js"; + import { type DynamicSelectItem, type DynamicSelectOption } from "./types.js"; import { findRelativeDateFilterOptionByValue, findRelativeDateFilterOptionIndexByLabel } from "./utils.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts index ecf40cc7608..1474b3c406e 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts +++ b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts @@ -8,6 +8,7 @@ import { messages } from "../../locales.js"; import { granularityIntlCodes } from "../constants/i18n.js"; import { getSelectableItems } from "../Select/utils.js"; import { type IMessageTranslator } from "../utils/Translations/Translators.js"; + import { type DynamicSelectItem, type DynamicSelectOption } from "./types.js"; export const MINUTE: DateFilterGranularity = "GDC.time.minute"; diff --git a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx index 8ea1ea07bdb..25ab6580f99 100644 --- a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx @@ -7,6 +7,7 @@ import { type DateFilterGranularity } from "@gooddata/sdk-model"; import { DATE_FILTER_RELATIVE_GRANULARITY_TAB_ID } from "../accessibility/elementId.js"; import { type DateFilterOption, type IUiRelativeDateFilterForm } from "../interfaces/index.js"; import { RelativeRangePicker } from "../RelativeRangePicker/RelativeRangePicker.js"; + import { GranularityTabs } from "./GranularityTabs.js"; /** diff --git a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx index 2c0f5acaf55..01bfc4ba7a6 100644 --- a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx @@ -22,6 +22,7 @@ import { type IUiRelativeDateFilterForm, } from "../interfaces/index.js"; import { ListItem } from "../ListItem/ListItem.js"; + import { RelativeDateFilterForm } from "./RelativeDateFilterForm.js"; const ITEM_CLASS_MOBILE = "gd-date-filter-item-mobile"; diff --git a/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx b/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx index 858f9b1676c..92f12c31cfb 100644 --- a/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx @@ -3,6 +3,7 @@ import moment from "moment"; import { type IDateFilterOptionsByType } from "../interfaces/index.js"; + import { platformDateFormat } from "./Platform.js"; /** diff --git a/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx b/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx index e1bffd70217..7390d4687c8 100644 --- a/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx @@ -7,6 +7,7 @@ import { suppressConsole } from "@gooddata/util"; import { DEFAULT_DATE_FORMAT } from "../constants/Platform.js"; import { verifyDateFormat } from "../DateFilterCore.js"; import type { DateFilterOption, IDateFilterOptionsByType } from "../interfaces/index.js"; + import { AbsoluteForm } from "./AbsoluteForm.js"; import { clickAbsoluteFilter, diff --git a/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts b/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts index 1a75b8e7481..a6245a4e90e 100644 --- a/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts +++ b/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts @@ -16,6 +16,7 @@ import { isAbsoluteDateFilterOption, isRelativeDateFilterOption, } from "../interfaces/index.js"; + import { applyExcludeCurrentPeriod } from "./PeriodExclusion.js"; export const mapAbsoluteFilterToAfm = ( diff --git a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts index bd9e2a36987..9e6d6ff1e64 100644 --- a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts +++ b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts @@ -40,6 +40,7 @@ import { type IUiRelativeDateFilterForm, } from "../../interfaces/index.js"; import { convertPlatformDateStringToDate } from "../DateConversions.js"; + import { type IDateAndMessageTranslator, type IMessageTranslator } from "./Translators.js"; export const getTimeRange = (dateFrom: Date, dateTo: Date, splitter = "\u2013"): string => { diff --git a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts index bb5407f4e86..24cb60448f7 100644 --- a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts +++ b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts @@ -9,6 +9,7 @@ import { DEFAULT_DATE_FORMAT, DEFAULT_DATE_FORMAT_WITH_TIME } from "../../../con import { type IUiRelativeDateFilterForm } from "../../../interfaces/index.js"; import { getDateFilterRepresentation, getDateFilterTitleUsingTranslator } from "../DateFilterTitle.js"; import { type IDateAndMessageTranslator } from "../Translators.js"; + import { absoluteFormFilter, absoluteFormFilterOneDay, diff --git a/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx b/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx index dd74210f71a..875c96b347c 100644 --- a/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx +++ b/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx @@ -47,6 +47,7 @@ import { ATTRIBUTE_FILTER_DROPDOWN_BUBBLE_CLASS, } from "../AttributeFilter/constants.js"; import { FilterButtonCustomIcon } from "../shared/components/internal/FilterButtonCustomIcon.js"; + import { useFilterGroupStatus } from "./useFilterGroupStatus.js"; /** diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx index 967e1859ad1..cd8b7937b0c 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx @@ -8,6 +8,7 @@ import { type IMeasureMetadataObject } from "@gooddata/sdk-model"; import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; + import { useMeasureValueFilterDetails } from "./useMeasureValueFilterDetails.js"; /** diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx index 14aab3cd2c9..72674ef679b 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx @@ -14,6 +14,7 @@ import { createNumberJsFormatter, messages as sdkMessages } from "@gooddata/sdk- import { UiTooltip, formatNumberWithSeparators, shortenNumber } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; + import { getOperatorTranslationKey, getOperatorWithValueTranslationKey, diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx index cb511d9ffcb..c2ffe840bfa 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx @@ -12,6 +12,7 @@ import { import { withIntl } from "@gooddata/sdk-ui"; import { type IMeasureValueFilterProps, MeasureValueFilter } from "../MeasureValueFilter.js"; + import { MeasureValueFilterFragment as MVFDropdownFragment } from "./fragments/MeasureValueFilterDropdown.js"; // we cannot use factory here, it does not allow creating empty filters diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx index 1a09a22144b..e764ba9dc55 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx @@ -16,6 +16,7 @@ import { MeasureValueFilterDropdown, } from "../MeasureValueFilterDropdown.js"; import { type IWarningMessage } from "../typings.js"; + import { MeasureValueFilterFragment as MVFDropdownFragment } from "./fragments/MeasureValueFilterDropdown.js"; // we cannot use factory here, it does not allow creating empty filters diff --git a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx index f703b0f5c68..d2a4f8daa9e 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx @@ -9,6 +9,7 @@ import { type ObjRefInScope, areObjRefsEqual } from "@gooddata/sdk-model"; import { Bubble, BubbleHoverTrigger, Button } from "@gooddata/sdk-ui-kit"; import { type IAttributeDropdownItem, type ICustomGranularitySelection } from "../types.js"; + import { AttributeDropdownBody } from "./AttributeDropdownBody.js"; const getItemTitle = (selectedItem: IAttributeDropdownItem | undefined, intl: IntlShape): string => diff --git a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx index 9f3d0507b22..58ab5ee3467 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx @@ -1,9 +1,10 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { type ObjRefInScope, areObjRefsEqual, objRefToString } from "@gooddata/sdk-model"; import { Overlay } from "@gooddata/sdk-ui-kit"; import { type IAttributeDropdownItem, type ICustomGranularitySelection } from "../types.js"; + import { AllRecordsItem } from "./DropdownItems/AllRecordsItem.js"; import { AttributeItem } from "./DropdownItems/AttributeItem.js"; diff --git a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx index d3bdbbb3d48..9ae44fcd961 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx @@ -8,6 +8,7 @@ import { type ObjRefInScope, areObjRefsEqual } from "@gooddata/sdk-model"; import { Button } from "@gooddata/sdk-ui-kit"; import { type IMeasureDropdownItem } from "../types.js"; + import { MeasureDropdownBody } from "./MeasureDropdownBody.js"; interface IMeasureDropdownProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx index 9b196b8f7c9..95a8ed12a6c 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx @@ -4,6 +4,7 @@ import { type ObjRefInScope, areObjRefsEqual, objRefToString } from "@gooddata/s import { Overlay } from "@gooddata/sdk-ui-kit"; import { type IMeasureDropdownItem } from "../types.js"; + import { MeasureDropdownItem } from "./MeasureDropdownItem.js"; interface IMeasureDropdownBodyProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx index 576631ecf7d..875009964a8 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx @@ -10,6 +10,7 @@ import { Button } from "@gooddata/sdk-ui-kit"; import { messages } from "../../locales.js"; import { type IOperatorDropdownItem } from "../types.js"; + import { OperatorDropdownBody } from "./OperatorDropdownBody.js"; const operatorItems = [ diff --git a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx index 7a0368ec86e..43e93f93be3 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx @@ -6,6 +6,7 @@ import { type RankingFilterOperator } from "@gooddata/sdk-model"; import { Overlay } from "@gooddata/sdk-ui-kit"; import { type IOperatorDropdownItem } from "../types.js"; + import { OperatorDropdownItem } from "./OperatorDropdownItem.js"; interface IOperatorDropdownBodyComponentProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx b/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx index eeb0226518a..54910566257 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { type RankingFilterOperator } from "@gooddata/sdk-model"; import { messages } from "../locales.js"; + import { type IAttributeDropdownItem, type IMeasureDropdownItem } from "./types.js"; interface IPreviewProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx index 95275a2344c..03acf493068 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx @@ -3,6 +3,7 @@ import { useIntl } from "react-intl"; import { DynamicSelect } from "../../DateFilter/DynamicSelect/DynamicSelect.js"; + import { sanitizeCustomInput, sanitizeInput } from "./utils.js"; interface IValueDropdownProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx index 89cf3459446..75f7c8d8bff 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx @@ -6,6 +6,7 @@ import { describe, expect, it } from "vitest"; import { withIntl } from "@gooddata/sdk-ui"; import { type IRankingFilterProps, RankingFilter } from "../RankingFilter.js"; + import { attributeItems as mockAttributeItems, defaultFilter as mockDefaultFilter, diff --git a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx index 42aaaecf194..2be5d35c897 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx @@ -11,6 +11,7 @@ import { RankingFilterDropdown, prepareRankingFilterState, } from "../RankingFilterDropdown.js"; + import { RankingFilterDropdownFragment } from "./fragments/RankingFilterDropdown.js"; import { attribute1Ref as mockAttribute1Ref, diff --git a/libs/sdk-ui-gen-ai/package.json b/libs/sdk-ui-gen-ai/package.json index aed35a51e2f..27229fd4444 100644 --- a/libs/sdk-ui-gen-ai/package.json +++ b/libs/sdk-ui-gen-ai/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-gen-ai", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData GenAI SDK", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx b/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx index 678453c7b2a..52a11b348c4 100644 --- a/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx +++ b/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx @@ -10,6 +10,7 @@ import { ConfirmDialog } from "@gooddata/sdk-ui-kit"; import { type IChatConversationLocal } from "../model.js"; import { catalogItemsSelector } from "../store/chatWindow/chatWindowSelectors.js"; import { generateTemporaryTitle } from "../utils.js"; + import { collectReferences, replaceReferences } from "./completion/references.js"; const messages = defineMessages({ diff --git a/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx b/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx index 32327d2ded6..8eaefb9cc40 100644 --- a/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx +++ b/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx @@ -13,6 +13,7 @@ import { import { asyncProcessSelector, globalErrorSelector } from "../store/messages/messagesSelectors.js"; import { clearThreadAction, setGlobalErrorAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; + import { GlobalError } from "./GlobalError.js"; type ErrorBoundaryProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx index f0a74556b53..e47535b3244 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx @@ -13,6 +13,7 @@ import { IntlWrapper } from "../localization/IntlWrapper.js"; import { PermissionsProvider } from "../permissions/PermissionsContext.js"; import { usePermissions } from "../permissions/usePermissions.js"; import { type ChatEventHandler } from "../store/events.js"; + import { ConfigProvider, type LinkHandlerEvent } from "./ConfigContext.js"; import { CustomizationProvider } from "./CustomizationProvider.js"; import { GenAIChatWrapper } from "./GenAIChatWrapper.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx index a86c9a11e5e..7dad5ef4a81 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx @@ -22,6 +22,7 @@ import { conversationSelector, conversationsSelector } from "../store/messages/m import { deleteConversationAction, setCurrentConversationAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; import { generateTemporaryTitle } from "../utils.js"; + import { collectReferences, replaceReferences } from "./completion/references.js"; import { ConversationDeleteDialog } from "./ConversationDeleteDialog.js"; import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx index 49feb99c1da..b2c1dd679e3 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx @@ -16,6 +16,7 @@ import { isOpenSelector } from "../store/chatWindow/chatWindowSelectors.js"; import { setOpenAction } from "../store/chatWindow/chatWindowSlice.js"; import { type ChatEventHandler } from "../store/events.js"; import { getIsOpened } from "../store/localStorage.js"; + import { ConfigProvider, type LinkHandlerEvent } from "./ConfigContext.js"; import { CustomizationProvider } from "./CustomizationProvider.js"; import { GenAIChatOverlay } from "./GenAIChatOverlay.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx index bf7fa5015e2..95d7fabfd6c 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx @@ -10,6 +10,7 @@ import { setFullscreenAction, setHistoryAction } from "../store/chatWindow/chatW import { hasMessagesSelector } from "../store/messages/messagesSelectors.js"; import { clearThreadAction, startNewConversationAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; + import { HeaderIcon } from "./HeaderIcon.js"; import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx index aba34af0208..93a1dde011b 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx @@ -22,6 +22,7 @@ import { getSettingHref, getWorkspaceSettingHref, } from "../utils.js"; + import { useConfig } from "./ConfigContext.js"; import { useCustomization } from "./CustomizationProvider.js"; import { ErrorBoundary } from "./ErrorBoundary.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/Input.tsx b/libs/sdk-ui-gen-ai/src/components/Input.tsx index 19b635cd3ef..6ac858032bd 100644 --- a/libs/sdk-ui-gen-ai/src/components/Input.tsx +++ b/libs/sdk-ui-gen-ai/src/components/Input.tsx @@ -33,6 +33,7 @@ import { } from "../store/messages/messagesSelectors.js"; import { newMessageAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; + import { collectReferences } from "./completion/references.js"; import { useCompletion } from "./completion/useCompletion.js"; import { useHighlight } from "./highlight/useHighlight.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/Messages.tsx b/libs/sdk-ui-gen-ai/src/components/Messages.tsx index 910a70d55f3..50467a91931 100644 --- a/libs/sdk-ui-gen-ai/src/components/Messages.tsx +++ b/libs/sdk-ui-gen-ai/src/components/Messages.tsx @@ -17,6 +17,7 @@ import { messagesSelector, } from "../store/messages/messagesSelectors.js"; import { type RootState } from "../store/types.js"; + import { ChatSkeleton } from "./ChatSkeleton.js"; import { parseReferences } from "./completion/references.js"; import { useCustomization } from "./CustomizationProvider.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts b/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts index 6e1b2f6cfe2..f7d075f0052 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts @@ -6,6 +6,7 @@ import { type Node, type Parent } from "unist"; import { type TextContentObject } from "../../../model.js"; import { getReferenceRegex } from "../utils.js"; + import { type HtmlNode, type TextNode } from "./types.js"; export function rehypeReferences(references: TextContentObject[]) { diff --git a/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts b/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts index 0fe63f5620f..831027b9e09 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts @@ -3,6 +3,7 @@ import { type Node, type Parent, type Point } from "unist"; import { getReferenceRegex } from "../utils.js"; + import { type TextNode } from "./types.js"; export function remarkReferences() { diff --git a/libs/sdk-ui-gen-ai/src/components/completion/references.ts b/libs/sdk-ui-gen-ai/src/components/completion/references.ts index 5b0e8af1bde..04e4fbe0df0 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/references.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/references.ts @@ -7,6 +7,7 @@ import { type IChatConversationMultipartLocalPart, type TextContentObject, } from "../../model.js"; + import { getCatalogItemId, getCatalogItemTitle, getCatalogItemType } from "./utils.js"; export const REFERENCE_REGEX_PART = "[^{}\\/]+\\/[^{}]+"; diff --git a/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts b/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts index 57c35a2ad62..03eed4e0552 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts @@ -13,6 +13,7 @@ import { useSelector } from "react-redux"; import { type CatalogItem, type ICatalogDateAttribute } from "@gooddata/sdk-model"; import { catalogItemsSelector } from "../../store/chatWindow/chatWindowSelectors.js"; + import { type ICompletionItem, getCatalogItemId, getCompletionItemId, getOptions } from "./utils.js"; const WORD_REGEX = /\p{L}[\p{L}\p{N}_]*/u; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx index 5defc45f21d..915aaddfa36 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx @@ -5,6 +5,7 @@ import { useIntl } from "react-intl"; import { type IChatConversationLocalItem } from "../../model.js"; import { type IChatMessagesGroup } from "../utils/groupUtility.js"; + import { AssistantItemFeedback } from "./AssistantItemFeedback.js"; import { AssistantItemSuggestions } from "./AssistantItemSuggestions.js"; import { ReasoningIcon } from "./contents/ReasoningIcon.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx index 8a7baf9176b..df8caf6a125 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx @@ -9,6 +9,7 @@ import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import type { IChatConversationLocalItem } from "../../model.js"; import { setUserFeedback } from "../../store/messages/messagesSlice.js"; import { type IChatMessagesGroup } from "../utils/groupUtility.js"; + import { FeedbackPopup } from "./FeedbackPopup.js"; import { useUserFeedback } from "./useUserFeedback.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx b/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx index 79ade21150a..4f6b42b9f46 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx @@ -8,6 +8,7 @@ import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type AssistantMessage } from "../../model.js"; import { setUserFeedback } from "../../store/messages/messagesSlice.js"; + import { FeedbackPopup } from "./FeedbackPopup.js"; import { MessageContents } from "./MessageContents.js"; import { getAssistantMessageState } from "./messageState.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx index 2b71ce50315..456a2fa59b5 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx @@ -7,6 +7,7 @@ import { type IChatConversationMultipartLocalPart, } from "../../model.js"; import { loadWhatIfScenarios } from "../../whatIf/whatIfMapping.js"; + import { ConversationErrorContent } from "./conversationContents/ConversationErrorContent.js"; import { ConversationKdaContent } from "./conversationContents/ConversationKdaContent.js"; import { ConversationReasoningContent } from "./conversationContents/ConversationReasoningContent.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx index e8347079071..aca7f045e30 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx @@ -7,6 +7,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { type Contents } from "../../model.js"; import { settingsSelector } from "../../store/chatWindow/chatWindowSelectors.js"; + import { ChangeAnalysisContentsComponent } from "./contents/ChangeAnalysisContentsComponent.js"; import { ErrorContentsComponent } from "./contents/ErrorContents.js"; import { RoutingContentsComponent } from "./contents/RoutingContents.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx index 9f9fb840e85..5496036122d 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx @@ -4,6 +4,7 @@ import { useSelector } from "react-redux"; import { type Contents, type ReasoningContents, isReasoningContents } from "../../model.js"; import { settingsSelector } from "../../store/chatWindow/chatWindowSelectors.js"; + import { ReasoningContentsComponent } from "./contents/ReasoningContents.js"; import { type AssistantMessageState } from "./messageState.js"; import { ReasoningDropdown, getLastReasoningStepTitle } from "./ReasoningDropdown.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx index 1d4b3243ff3..c8e4daf02ca 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type IChatConversationLocalItem } from "../../model.js"; + import { ConversationItemContents } from "./ConversationItemContents.js"; import { getItemState } from "./itemState.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx b/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx index f1e3dcf61fe..0ba5bf62d7c 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type IChatConversationLocalItem } from "../../model.js"; + import { ConversationItemContents } from "./ConversationItemContents.js"; import { getItemState } from "./itemState.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx b/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx index 09eda234678..ee5538081c8 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type UserMessage } from "../../model.js"; + import { MessageContents } from "./MessageContents.js"; type UserMessageProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx index 7a64f248716..c6a24b4ce38 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx @@ -10,6 +10,7 @@ import { type ChangeAnalysisContents } from "../../../model.js"; import { settingsSelector } from "../../../store/chatWindow/chatWindowSelectors.js"; import { setKeyDriverAnalysisAction } from "../../../store/chatWindow/chatWindowSlice.js"; import { type RootState } from "../../../store/types.js"; + import { useKdaDefinition, useKdaInfo } from "./useKdaDefinition.js"; export type ChangeAnalysisContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx index 07f79a19c77..8a3d8c3b350 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type ErrorContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; export type ErrorContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx index edd1d28a17b..f26c9e6d32c 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx @@ -9,6 +9,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { type TextContentObject } from "../../../model.js"; import { rehypeReferences } from "../../completion/plugins/rehype-references.js"; import { remarkReferences } from "../../completion/plugins/remark-references.js"; + import { CustomHyperlink } from "./CustomHyperlink.js"; const componentMap: Components = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx index ea9da324a46..f8131be7e1e 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type RoutingContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; export type RoutingContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx index d62f3937ea3..139dd1b7151 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { useWorkspaceStrict } from "@gooddata/sdk-ui"; import { type SearchContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; import { replaceLinks } from "./replaceLinks.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx index 53d798c57a5..be7b98a31de 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx @@ -9,6 +9,7 @@ import { useWorkspaceStrict } from "@gooddata/sdk-ui"; import { UiIcon } from "@gooddata/sdk-ui-kit"; import { type SemanticSearchContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; import { replaceLinks } from "./replaceLinks.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx index 31a91a3d578..c00d71a0ed4 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type TextContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; export type TextContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx index a152380d79b..6ef47d13a58 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx @@ -95,6 +95,7 @@ import { mapVisualizationWhatIfToScenarios } from "../../../whatIf/whatIfMapping import { useConfig } from "../../ConfigContext.js"; import { convertIntersectionToAttributeFilters, mergeFilters } from "../../utils/intersectionUtils.js"; import { VisualizationErrorBoundary } from "../components/VisualizationErrorBoundary.js"; + import { DrillSelectDropdownMenu } from "./drill/DrillSelectDropdownMenu.js"; import { MarkdownComponent } from "./Markdown.js"; import { useExecution } from "./useExecution.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx index 43d57efd52a..4edadb94609 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx @@ -9,6 +9,7 @@ import { type IGenAIVisualization } from "@gooddata/sdk-model"; import { ConfirmDialog, Input, Typography } from "@gooddata/sdk-ui-kit"; import { saveVisualizationAction } from "../../../store/messages/messagesSlice.js"; + import { useVisualisationSaving } from "./hooks/useVisualisationSaving.js"; export type VisualizationSaveDialogProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx index 4b629550e21..b4896740204 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx @@ -14,6 +14,7 @@ import { setKeyDriverAnalysisAction } from "../../../store/chatWindow/chatWindow import { type RootState } from "../../../store/types.js"; import { collectReferences } from "../../completion/references.js"; import { MarkdownComponent } from "../contents/Markdown.js"; + import { useKdaDefinition, useKdaInfo } from "./useKdaDefinition.js"; export type ConversationKdaContentProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx index 6e07fafca36..2fb1de539f7 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx @@ -57,6 +57,7 @@ import { visualizationErrorAction, } from "../../../store/messages/messagesSlice.js"; import { getHeadlineComparison } from "../../../utils.js"; + import { useExecution } from "./useExecution.js"; const VIS_HEIGHT = 250; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx index 945f4207f69..eb8774ba21b 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx @@ -61,6 +61,7 @@ import { convertIntersectionToAttributeFilters, mergeFilters } from "../../utils import { VisualizationErrorBoundary } from "../components/VisualizationErrorBoundary.js"; import { DrillSelectDropdownMenu } from "../contents/drill/DrillSelectDropdownMenu.js"; import { MarkdownComponent } from "../contents/Markdown.js"; + import { ConversationVisualisation, type ConversationVisualisationProps, diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx index 798ab0594cd..ac08736e6ae 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import type { IChatConversationLocalItem, IChatConversationMultipartLocalPart } from "../../../model.js"; import { type IWhatIfDefinition } from "../../../whatIf/whatIfMapping.js"; + import { ConversationVisualizationContent } from "./ConversationVisualizationContent.js"; export type ConversationWhatIfContentProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts b/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts index 264d07c05d5..8191769ae65 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts +++ b/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts @@ -4,6 +4,7 @@ import { isChatConversationItem } from "@gooddata/sdk-backend-spi"; import { type AssistantMessage, type IChatConversationLocalItem } from "../../model.js"; import { type setUserFeedback } from "../../store/messages/messagesSlice.js"; + import { type IFeedbackData } from "./FeedbackPopup.js"; /** diff --git a/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx b/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx index ceedcdb2eb9..232bf6a0601 100644 --- a/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx +++ b/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx @@ -13,6 +13,7 @@ import { type IWorkspacePermissions } from "@gooddata/sdk-model"; import { useWorkspaceStrict } from "@gooddata/sdk-ui"; import { GlobalError } from "../components/GlobalError.js"; + import { useWorkspacePermissions } from "./useWorkspacePermissions.js"; import { emptyWorkspacePermissions } from "./utils.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts index 9ec7b3a5111..d5151a8cc18 100644 --- a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts +++ b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts @@ -13,6 +13,7 @@ import { import type { IKdaDefinition } from "@gooddata/sdk-ui-dashboard"; import { type RootState } from "../types.js"; + import { chatWindowSliceName } from "./chatWindowSlice.js"; const chatWindowSliceSelector = (state: RootState) => state[chatWindowSliceName]; diff --git a/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts b/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts index 35625f210d2..de7b6ff6a22 100644 --- a/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts +++ b/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts @@ -4,6 +4,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type IChatConversationLocal, type IChatConversationLocalItem, type Message } from "../../model.js"; import { type RootState } from "../types.js"; + import { messagesSliceName } from "./messagesSlice.js"; const messagesSliceSelector = (state: RootState) => state[messagesSliceName]; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts index 9ae1b02fd18..dd35c7e059f 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts @@ -14,6 +14,7 @@ import { setUserFeedback, setVerboseAction, } from "../messages/messagesSlice.js"; + import { loadCatalogItems } from "./loadCatalogItems.js"; import { loadColorPalette } from "./loadColorPalette.js"; import { loadSettings } from "./loadSettings.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts index 6af321b76d0..3b7c411cc72 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts @@ -32,6 +32,7 @@ import { loadThreadSuccessAction, restoreCachedMessagesAction, } from "../messages/messagesSlice.js"; + import { interactionsToMessages } from "./converters/interactionsToMessages.js"; import { convertToLocalContent } from "./converters/toLocalContent.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts index 9a90bb6446c..cb4212aaaf7 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts @@ -14,6 +14,7 @@ import { messagesSelector, } from "../messages/messagesSelectors.js"; import { setUserFeedbackError } from "../messages/messagesSlice.js"; + import { extractError } from "./utils.js"; /** diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts index 5dc7248427b..ed4d06b989e 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts @@ -55,6 +55,7 @@ import { type newMessageAction, setCurrentConversationAction, } from "../messages/messagesSlice.js"; + import { processContents } from "./converters/interactionsToMessages.js"; import { convertToLocalContent } from "./converters/toLocalContent.js"; import { convertMessageToChatConversation, extractError } from "./utils.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts index d3328dc651e..9b5ad4764f4 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts @@ -8,6 +8,7 @@ import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { type IChatConversationLocal, type Message, isVisualizationContents } from "../../model.js"; import { conversationSelector, messagesSelector } from "../messages/messagesSelectors.js"; import { saveVisualisationRenderStatusSuccessAction } from "../messages/messagesSlice.js"; + import { extractError } from "./utils.js"; /** diff --git a/libs/sdk-ui-geo/package.json b/libs/sdk-ui-geo/package.json index 7fd02699761..5dae3754179 100644 --- a/libs/sdk-ui-geo/package.json +++ b/libs/sdk-ui-geo/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-geo", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Geo Charts", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx index 06539692782..5dc282cdc56 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx @@ -35,6 +35,7 @@ import { import { type IGeoConfig, type IGeoData } from "../../GeoChart.js"; import type { IGeoLngLat } from "../../publicTypes/geoCommon.js"; + import { GeoChartLegendRenderer, type IGeoChartLegendRendererProps } from "./GeoChartLegendRenderer.js"; import { type IGeoChartRendererProps } from "./GeoChartRenderer.js"; import { isColorAssignmentItemChanged, isFluidLegendEnabled } from "./helpers/geoChart/common.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx index a9a8b790ea5..d44a8d4d6c4 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-ui-vis-commons"; import { type IAvailableLegends, type IGeoData } from "../../GeoChart.js"; + import { generateLegendColorData } from "./geoChartColor.js"; import { getAvailableLegends } from "./helpers/geoChart/data.js"; import { diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx index f62d4e86225..792c27dd9e5 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx @@ -21,6 +21,7 @@ import { } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoData, type IValidationResult } from "../../GeoChart.js"; + import { getColorStrategy } from "./colorStrategy/geoChart.js"; import { DEFAULT_DATA_POINTS_LIMIT } from "./constants/geoChart.js"; import { GeoChartInner, type IGeoChartInnerOptions, type IGeoChartInnerProps } from "./GeoChartInner.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx index a79935a59f9..d6fef5153e3 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx @@ -20,6 +20,7 @@ import { type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoConfig, type IGeoData } from "../../GeoChart.js"; import type { IGeoLngLat } from "../../publicTypes/geoCommon.js"; + import { DEFAULT_CLUSTER_LABELS_CONFIG, DEFAULT_CLUSTER_LAYER_NAME, diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx index 4b5fb802c6d..a6907836ba4 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx @@ -28,6 +28,7 @@ import { import { type IColorMapping } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoConfig } from "../../GeoChart.js"; + import { type IGeoChartInnerProps } from "./GeoChartInner.js"; import { isLocationSet } from "./helpers/geoChart/common.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts index d4b969ca7eb..d4eab04a3be 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts @@ -6,6 +6,7 @@ import { isAttributeDescriptor, isResultAttributeHeader } from "@gooddata/sdk-mo import { type IColorLegendItem, type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IPushpinColor } from "../../GeoChart.js"; + import { DEFAULT_PUSHPIN_BORDER_COLOR_VALUE, DEFAULT_PUSHPIN_COLOR_OPACITY, diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts index d2b1ce32fc3..8d75c35c9af 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts @@ -6,6 +6,7 @@ import type mapboxgl from "mapbox-gl"; import { BucketNames } from "@gooddata/sdk-ui"; import { type IGeoConfig, type IGeoData, type IGeoPointsConfig } from "../../GeoChart.js"; + import { DEFAULT_CLUSTER_FILTER, DEFAULT_CLUSTER_LABELS_CONFIG, diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts index f9ca3d17ccf..90014930159 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts @@ -4,6 +4,7 @@ import { type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoConfig, type IGeoData, type IGeoPointsConfig, type IPushpinColor } from "../../GeoChart.js"; import type { IGeoLngLat } from "../../publicTypes/geoCommon.js"; + import { DEFAULT_CLUSTER_MAX_ZOOM, DEFAULT_CLUSTER_RADIUS, diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts index c500e7c6258..226f4e90758 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts @@ -8,6 +8,7 @@ import { type ISeparators } from "@gooddata/sdk-model"; import { type IHeaderPredicate } from "@gooddata/sdk-ui"; import { type IGeoConfig, type IGeoTooltipItem } from "../../GeoChart.js"; + import { DEFAULT_PUSHPIN_COLOR_VALUE, NULL_TOOLTIP_VALUE } from "./constants/geoChart.js"; import { parseGeoProperties } from "./helpers/geoChart/data.js"; import { formatValueForTooltip, getTooltipContentWidth } from "./helpers/geoChart/format.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts index 65ef2708f26..c830dfeb1ec 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts @@ -12,6 +12,7 @@ import { import { BucketNames, type DataViewFacade, type IColorAssignment } from "@gooddata/sdk-ui"; import { type IGeoData, type IGeoPointsConfig } from "../../../../GeoChart.js"; + import { getResponsiveInfo } from "./responsive.js"; export function getGeoAttributeHeaderItems(dv: DataViewFacade, geoData: IGeoData): IResultHeader[][] { diff --git a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts index 782a7b9f302..89328f09c39 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts @@ -28,6 +28,7 @@ import { type IGeoSegmentItem, } from "../../../../GeoChart.js"; import type { IGeoLngLat } from "../../../../publicTypes/geoCommon.js"; + import { dataValueAsFloat, getFormatFromExecutionResponse, diff --git a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts index d6bb4fd6e1e..728a8bdb3bb 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-ui"; import { type IGeoData, type IGeoDrillEvent } from "../../../../GeoChart.js"; + import { type AttributeInfo, findGeoAttributesInDimension, parseGeoProperties } from "./data.js"; function getDrillIntersectionForGeoChart( diff --git a/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx b/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx index 615310a13f3..065bb0d3d55 100644 --- a/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx +++ b/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx @@ -17,6 +17,7 @@ import { useGeoChartData } from "../hooks/dataLoading/useGeoChartDataPipeline.js import { useCallbackOnChange } from "../hooks/utils/useCallbackOnChange.js"; import { type ILayerExecutionRecord } from "../types/props/geoChart/internal.js"; import { createGeoExportFunction } from "../utils/createGeoExportFunction.js"; + import { GeoChartProviders } from "./GeoChartProviders.js"; import { GeoErrorComponent } from "./GeoErrorComponent.js"; import { GeoLoadingComponent } from "./GeoLoadingComponent.js"; diff --git a/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx b/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx index 883d03c5367..94cfa2aad03 100644 --- a/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx +++ b/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx @@ -26,6 +26,7 @@ import { getMapCanvasRuntimeCapabilities, mapCanvasInstructionMessagesById, } from "../utils/mapCanvasAccessibility.js"; + import { GeoChartLegendOverlay } from "./multiLayerLegend/GeoChartLegendOverlay.js"; import { type LegendMessageFormatter, legendMessagesById } from "./multiLayerLegend/legendMessages.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx index a19fe41dcc7..abe04333b84 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx @@ -11,6 +11,7 @@ import { useLegendDetails } from "../../hooks/legend/useLegendDetails.js"; import { useMultiLayerLegend } from "../../hooks/legend/useMultiLayerLegend.js"; import type { IGeoChartConfig } from "../../types/config/unified.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; + import { type LegendMessageFormatter } from "./legendMessages.js"; import { MultiLayerLegendPanel } from "./MultiLayerLegendPanel.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx index fe5853dc695..eec869ad546 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx @@ -24,6 +24,7 @@ import { type ILegendGroup, isLegendColorCategoryItem, } from "../../types/legend/model.js"; + import { resolveLegendGroupTitle } from "./groupTitle.js"; /** diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx index 15b936db941..59aa44f854c 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx @@ -7,6 +7,7 @@ import { type ILegendGroup, isLegendColorScaleItem, } from "../../types/legend/model.js"; + import { resolveLegendGroupTitle } from "./groupTitle.js"; import { LegendGroupContainer } from "./LegendGroupContainer.js"; import { type LegendMessageFormatter } from "./legendMessages.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx index 752c30dc5d0..d04ca159b5b 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx @@ -7,6 +7,7 @@ import { type ILegendSizeAnchorItem, isLegendSizeAnchorItem, } from "../../types/legend/model.js"; + import { resolveLegendGroupTitle } from "./groupTitle.js"; import { LegendGroupContainer } from "./LegendGroupContainer.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx index a561355b837..dbbe323639f 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx @@ -20,6 +20,7 @@ import { type ILegendSection, isLegendColorCategoryItem, } from "../../types/legend/model.js"; + import { type LegendMessageFormatter } from "./legendMessages.js"; import { MultiLayerLegendSection } from "./MultiLayerLegendSection.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx index 17613217aaf..ee4b5dbb231 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx @@ -15,6 +15,7 @@ import cx from "classnames"; import { type ILegendGroup, type ILegendSection } from "../../types/legend/model.js"; import { prefersReducedMotion } from "../../utils/prefersReducedMotion.js"; + import { ChevronIcon } from "./ChevronIcon.js"; import { LayerToggleSwitch } from "./LayerToggleSwitch.js"; import { LegendGroupColor } from "./LegendGroupColor.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts index 2d23bd3b789..7bae6cc908a 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { type ILegendGroup } from "../../types/legend/model.js"; + import { type LegendMessageFormatter } from "./legendMessages.js"; /** diff --git a/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx b/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx index 71db0260f81..e579108f364 100644 --- a/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx +++ b/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx @@ -4,6 +4,7 @@ import { type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IAvailableLegends, type IGeoLegendItem } from "../types/common/legends.js"; import type { IGeoCommonData } from "../types/geoData/common.js"; + import { useGeoLayers } from "./GeoLayersContext.js"; export interface IGeoDataContext { diff --git a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts index e77c47cc51c..d9eaeba1743 100644 --- a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts +++ b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts @@ -18,6 +18,7 @@ import { getLayerAdapter } from "../../layers/registry/adapterRegistry.js"; import { type IGeoAdapterContext } from "../../layers/registry/adapterTypes.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; import { createExecutionsFingerprint, createLayersStructureFingerprint } from "../../utils/fingerprint.js"; + import { processSettledLayerResults } from "./processSettledLayerResults.js"; /** diff --git a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts index d3d44c435bb..12fa5f0c0b8 100644 --- a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts +++ b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts @@ -20,6 +20,7 @@ import type { IGeoChartConfig } from "../../types/config/unified.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; import { resolveLayerColorConfig } from "../../utils/color/resolveLayerColorConfig.js"; import { createDataViewsFingerprint, createLayersStructureFingerprint } from "../../utils/fingerprint.js"; + import { processSettledLayerResults } from "./processSettledLayerResults.js"; /** diff --git a/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts b/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts index 32ca140e2d6..1f4ad3154b2 100644 --- a/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts +++ b/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts @@ -9,6 +9,7 @@ import { useGeoLegend } from "../../context/GeoLegendContext.js"; import { useMapRuntime } from "../../context/MapRuntimeContext.js"; import { getLayerAdapter } from "../../layers/registry/adapterRegistry.js"; import { resolveLayerColorConfig } from "../../utils/color/resolveLayerColorConfig.js"; + import { useApplyLayerSegmentFiltering } from "./useApplyLayerSegmentFiltering.js"; import { useApplyLayerVisibility } from "./useApplyLayerVisibility.js"; import { useInitLayersToMap } from "./useInitLayersToMap.js"; diff --git a/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts b/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts index 476b444b978..d30924c1cdd 100644 --- a/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts +++ b/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts @@ -18,6 +18,7 @@ import { normalizeAttributeDescriptorLocalIdentifier } from "../../layers/common import { type IAvailableLegends } from "../../types/common/legends.js"; import { type GeoLayerType } from "../../types/layers/index.js"; import { compareAlphabetically } from "../../utils/alphabeticalSorting.js"; + import { hasGeoSegmentConflict } from "./geoSegmentConflict.js"; interface ILegendContext { diff --git a/libs/sdk-ui-geo/src/next/layers/area/adapter.ts b/libs/sdk-ui-geo/src/next/layers/area/adapter.ts index 2bebefacd20..32e4cf37a30 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/adapter.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/adapter.ts @@ -28,6 +28,7 @@ import { type IGeoAdapterContext, type IGeoLayerAdapter, } from "../registry/adapterTypes.js"; + import { deriveCollectionBoundingBox } from "./boundingBox.js"; import { getAreaColorStrategy } from "./coloring/colorStrategy.js"; import { transformAreaData } from "./data/transformation.js"; diff --git a/libs/sdk-ui-geo/src/next/layers/area/layers.ts b/libs/sdk-ui-geo/src/next/layers/area/layers.ts index 419f526c788..b687f9b17ed 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/layers.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/layers.ts @@ -11,6 +11,7 @@ import type { LineLayerSpecification, } from "../common/mapFacade.js"; import { EMPTY_SEGMENT_VALUE } from "../pushpin/constants.js"; + import { DEFAULT_AREA_LAYER_NAME, DEFAULT_AREA_OUTLINE_LAYER_NAME } from "./constants.js"; const SELECTION_OPACITY_EXPRESSION: ExpressionSpecification = [ diff --git a/libs/sdk-ui-geo/src/next/layers/area/operations.ts b/libs/sdk-ui-geo/src/next/layers/area/operations.ts index 6b937b2b9e1..d69b96fc3f4 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/operations.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/operations.ts @@ -5,6 +5,7 @@ import { applyStylePlan } from "../../map/styleReconciliation/reconcileStyle.js" import { type IGeoChartConfig } from "../../types/config/unified.js"; import { removeLayerIfExists, removeSourceIfExists } from "../common/layerOps.js"; import { type GeoJSONSourceSpecification, type IMapFacade } from "../common/mapFacade.js"; + import { createAreaFillLayer, createAreaOutlineLayer } from "./layers.js"; /** diff --git a/libs/sdk-ui-geo/src/next/layers/area/source.ts b/libs/sdk-ui-geo/src/next/layers/area/source.ts index 9ace3b851c8..9375cebb446 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/source.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/source.ts @@ -11,6 +11,7 @@ import type { GeoJSONSourceSpecification } from "../common/mapFacade.js"; import { getSelectedIntersections, isFeatureSelected } from "../common/selectionUtils.js"; import { EMPTY_SEGMENT_VALUE } from "../pushpin/constants.js"; import type { IAreaLayerOutput, IGeoAdapterContext } from "../registry/adapterTypes.js"; + import { getAreaColorStrategy } from "./coloring/colorStrategy.js"; import { getAreaAreaColors } from "./coloring/palette.js"; import { DEFAULT_AREA_FILL_COLOR } from "./constants.js"; diff --git a/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts b/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts index 79d7ebc68a4..6f0c34649df 100644 --- a/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts +++ b/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts @@ -7,6 +7,7 @@ import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import type { IGeoLayer } from "../../types/layers/index.js"; import { getLayerAdapter } from "../registry/adapterRegistry.js"; import type { IGeoAdapterContext } from "../registry/adapterTypes.js"; + import { createExecutionContextFromLayer } from "./layerContext.js"; /** diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts index 9f7e61b3a76..dcb5145f2bf 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts @@ -26,6 +26,7 @@ import { prepareExecutionWithGeoIcon } from "../execution/prepareGeoIconExecutio import { prepareExecutionWithTooltipText } from "../execution/prepareTooltipExecution.js"; import { resolveAttributeDisplayForms } from "../execution/resolveAttributeDisplayForms.js"; import type { IGeoAdapterContext, IGeoLayerAdapter, IPushpinLayerOutput } from "../registry/adapterTypes.js"; + import { isClusteringAllowed } from "./clustering/clustering.js"; import { getPushpinColorStrategy } from "./coloring/colorStrategy.js"; import { transformPushpinData } from "./data/transformation.js"; diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts index 1662b4cb39a..6a73921c4ee 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts @@ -12,6 +12,7 @@ import type { FilterSpecification, SymbolLayerSpecification, } from "../common/mapFacade.js"; + import { DEFAULT_CLUSTER_LAYER_NAME, DEFAULT_LAYER_NAME, diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts index 93f4bcd6269..fde0440d9ac 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts @@ -6,6 +6,7 @@ import { type IGeoChartConfig } from "../../types/config/unified.js"; import { type IPushpinGeoData } from "../../types/geoData/pushpin.js"; import { removeLayerIfExists, removeSourceIfExists } from "../common/layerOps.js"; import { type GeoJSONSourceSpecification, type IMapFacade } from "../common/mapFacade.js"; + import { isClusteringAllowed } from "./clustering/clustering.js"; import { createClusterLabels, diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts index 167ac6d3086..a0afbb2ebab 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts @@ -9,6 +9,7 @@ import { type IPushpinColor, type IPushpinGeoData } from "../../types/geoData/pu import { SELECTED_FEATURE_PROPERTY } from "../common/constants.js"; import type { GeoJSONSourceSpecification } from "../common/mapFacade.js"; import { getSelectedIntersections, isFeatureSelected } from "../common/selectionUtils.js"; + import { getPushpinColors } from "./coloring/palette.js"; import { DEFAULT_CLUSTER_MAX_ZOOM, diff --git a/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts b/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts index eb81dc4eb28..d73eb28a927 100644 --- a/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts +++ b/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts @@ -3,6 +3,7 @@ import type { GeoLayerType, IGeoLayer } from "../../types/layers/index.js"; import { areaAdapter } from "../area/adapter.js"; import { pushpinAdapter } from "../pushpin/adapter.js"; + import type { IGeoLayerAdapterByType } from "./adapterTypes.js"; /** diff --git a/libs/sdk-ui-geo/src/next/layers/registry/output.ts b/libs/sdk-ui-geo/src/next/layers/registry/output.ts index 086ccec86b2..1b679784696 100644 --- a/libs/sdk-ui-geo/src/next/layers/registry/output.ts +++ b/libs/sdk-ui-geo/src/next/layers/registry/output.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import type { IGeoLayerData } from "../../context/GeoLayersContext.js"; + import type { IGeoLayerOutput } from "./adapterTypes.js"; /** diff --git a/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts b/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts index fd0fc70ed8e..e049a3cadb1 100644 --- a/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts +++ b/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts @@ -13,6 +13,7 @@ import { type IGeoChartViewportNavigation } from "../../types/config/viewport.js import { type IMapOptions } from "../../types/map/provider.js"; import { type IMapLibreLocale } from "../../utils/mapLocale.js"; import { fetchMapStyle } from "../style/styleEndpoint.js"; + import { normalizeBoundsForShortestPath } from "./bounds.js"; import { DEFAULT_MAPLIBRE_OPTIONS, diff --git a/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts b/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts index 28112471545..9ba75ef746f 100644 --- a/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts +++ b/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import type { GeoJSONSourceSpecification, IMapFacade } from "../../layers/common/mapFacade.js"; + import type { IReconciliationLayerEntry, IReconciliationSourceEntry, diff --git a/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts b/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts index e65e46add43..e095a24a7c9 100644 --- a/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts +++ b/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts @@ -2,6 +2,7 @@ import { removeLayerIfExists, removeSourceIfExists } from "../../layers/common/layerOps.js"; import type { IMapFacade } from "../../layers/common/mapFacade.js"; + import type { IExistingResources, IStyleReconciliationPlan } from "./types.js"; /** diff --git a/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts b/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts index 53164ea8118..5d3ba889f06 100644 --- a/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts +++ b/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts @@ -6,6 +6,7 @@ import { type IMapViewport, type IPushpinMapConfig } from "../../types/map/provi import { isLngLatTupleBounds } from "../../utils/guards.js"; import { normalizeBoundsForShortestPath } from "../runtime/bounds.js"; import { DEFAULT_BOUNDS_PADDING } from "../runtime/mapConfig.js"; + import { getViewportOptions } from "./viewportPresets.js"; /** diff --git a/libs/sdk-ui-geo/src/next/types/config/areaChart.ts b/libs/sdk-ui-geo/src/next/types/config/areaChart.ts index 8897e720d4e..4fa48ec2883 100644 --- a/libs/sdk-ui-geo/src/next/types/config/areaChart.ts +++ b/libs/sdk-ui-geo/src/next/types/config/areaChart.ts @@ -7,6 +7,7 @@ import { type IColorMapping, type ICustomTooltipConfig } from "@gooddata/sdk-ui- import type { IGeoLngLat, IGeoLngLatBounds } from "../../../publicTypes/geoCommon.js"; import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import type { GeoBasemap } from "../map/basemap.js"; + import { type IGeoAreasConfig } from "./areas.js"; import { type IGeoChartLegendConfig } from "./legend.js"; import { type IGeoChartViewport } from "./viewport.js"; diff --git a/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts b/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts index 81bb283d5b7..26581b5ba5b 100644 --- a/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts +++ b/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts @@ -7,6 +7,7 @@ import { type IColorMapping, type ICustomTooltipConfig } from "@gooddata/sdk-ui- import type { IGeoLngLat, IGeoLngLatBounds } from "../../../publicTypes/geoCommon.js"; import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import type { GeoBasemap } from "../map/basemap.js"; + import { type IGeoChartLegendConfig } from "./legend.js"; import { type IGeoChartPointsConfig } from "./points.js"; import { type IGeoChartViewport } from "./viewport.js"; diff --git a/libs/sdk-ui-geo/src/next/types/config/unified.ts b/libs/sdk-ui-geo/src/next/types/config/unified.ts index 3660d09f648..99208ab2bab 100644 --- a/libs/sdk-ui-geo/src/next/types/config/unified.ts +++ b/libs/sdk-ui-geo/src/next/types/config/unified.ts @@ -7,6 +7,7 @@ import { type IColorMapping, type ICustomTooltipConfig } from "@gooddata/sdk-ui- import type { IGeoLngLat, IGeoLngLatBounds } from "../../../publicTypes/geoCommon.js"; import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import type { GeoBasemap } from "../map/basemap.js"; + import { type IGeoAreasConfig } from "./areas.js"; import { type IGeoChartLegendConfig } from "./legend.js"; import { type IGeoChartPointsConfig } from "./points.js"; diff --git a/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts b/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts index 9d82717b5f3..147f3da9ac3 100644 --- a/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts +++ b/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type IGeoLngLat } from "../common/coordinates.js"; + import { type IGeoAttributeItem, type IGeoCommonData, diff --git a/libs/sdk-ui-geo/src/next/types/legend/model.ts b/libs/sdk-ui-geo/src/next/types/legend/model.ts index a1003104547..26fc7ee1322 100644 --- a/libs/sdk-ui-geo/src/next/types/legend/model.ts +++ b/libs/sdk-ui-geo/src/next/types/legend/model.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type GeoLayerType } from "../layers/index.js"; + import { type LegendMessageId, type LegendMessageValues } from "./messages.js"; /** diff --git a/libs/sdk-ui-geo/src/next/types/map/provider.ts b/libs/sdk-ui-geo/src/next/types/map/provider.ts index fa5e5defbbc..8a2f9af39d1 100644 --- a/libs/sdk-ui-geo/src/next/types/map/provider.ts +++ b/libs/sdk-ui-geo/src/next/types/map/provider.ts @@ -4,6 +4,7 @@ import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import { type IGeoLngLat, type IGeoLngLatBounds } from "../common/coordinates.js"; import { type IGeoPushpinChartConfig } from "../config/pushpinChart.js"; import { type IGeoChartViewportNavigation } from "../config/viewport.js"; + import type { GeoBasemap } from "./basemap.js"; /** diff --git a/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts b/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts index 04d40fc2c5f..e1484edf028 100644 --- a/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts +++ b/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts @@ -16,6 +16,7 @@ import { type IInsightDefinition, type INullableFilter, type ISettings } from "@ import { type IDataVisualizationProps } from "@gooddata/sdk-ui"; import { type GeoLayerType, type IGeoLayer } from "../../layers/index.js"; + import { type IGeoChartProps } from "./public.js"; /** diff --git a/libs/sdk-ui-geo/src/next/utils/layerConversion.ts b/libs/sdk-ui-geo/src/next/utils/layerConversion.ts index e9a280333ad..2b8d1e67e84 100644 --- a/libs/sdk-ui-geo/src/next/utils/layerConversion.ts +++ b/libs/sdk-ui-geo/src/next/utils/layerConversion.ts @@ -30,6 +30,7 @@ import { type IGeoLayerPushpin, isGeoLayerPushpin, } from "../types/layers/index.js"; + import { isRecord } from "./guards.js"; import { registerHeaderPredicateKey } from "./predicateFingerprint.js"; diff --git a/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts b/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts index 14517b0f599..3a59c000ea7 100644 --- a/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts +++ b/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts @@ -11,6 +11,7 @@ import type { IPushpinGeoData } from "../../types/geoData/pushpin.js"; import { type ILegendModel, type ILegendSection } from "../../types/legend/model.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; import { resolveLayerColorConfig } from "../color/resolveLayerColorConfig.js"; + import { computeAreaLegend } from "./computeAreaLegend.js"; import { computePushpinLegend } from "./computePushpinLegend.js"; diff --git a/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts b/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts index 3b274c30c5c..c56eaad0a66 100644 --- a/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts +++ b/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts @@ -3,6 +3,7 @@ import type { IAvailableLegends, IGeoLegendItem } from "../../types/common/legends.js"; import type { IAreaGeoData } from "../../types/geoData/area.js"; import { type ILegendGroup, type ILegendSection } from "../../types/legend/model.js"; + import { computeColorScale } from "./computeColorScale.js"; import { ATTRIBUTE_ONLY_URI_PREFIX, diff --git a/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts b/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts index d0e24b8ab09..3ba0d9e94b5 100644 --- a/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts +++ b/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts @@ -9,6 +9,7 @@ import { type ILegendSection, type ILegendSizeAnchorItem, } from "../../types/legend/model.js"; + import { computeColorScale } from "./computeColorScale.js"; import { ATTRIBUTE_ONLY_URI_PREFIX, diff --git a/libs/sdk-ui-kit/package.json b/libs/sdk-ui-kit/package.json index 9147c218431..c177dabba21 100644 --- a/libs/sdk-ui-kit/package.json +++ b/libs/sdk-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-kit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - UI Building Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx index 2b779d556b7..aa791f0c343 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx @@ -9,6 +9,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IUiPagedVirtualListSkeletonItemProps } from "../../UiPagedVirtualList/UiPagedVirtualList.js"; import { UiSkeleton } from "../../UiSkeleton/UiSkeleton.js"; import { type IUiAsyncTableBulkAction, type IUiAsyncTableColumn } from "../types.js"; + import { COLUMN_PADDING, SKELETON_ITEM_HEIGHT } from "./constants.js"; import { getColumnWidths } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx index d8b89914adb..f785a01c592 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx @@ -9,6 +9,7 @@ import { IntlWrapper } from "@gooddata/sdk-ui"; import { b } from "../asyncTableBem.js"; import { type IUiAsyncTableProps } from "../types.js"; + import { CHECKBOX_COLUMN_WIDTH, ROW_HEIGHT_LARGE, ROW_HEIGHT_NORMAL, SCROLLBAR_WIDTH } from "./constants.js"; import { UiAsyncTableBody } from "./UiAsyncTableBody.js"; import { UiAsyncTableEmptyState } from "./UiAsyncTableEmptyState.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx index dbe51666552..df92d518bd5 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx @@ -8,6 +8,7 @@ import { isEnterKey } from "../../../utils/events.js"; import { makeGridKeyboardNavigation } from "../../@utils/keyboardNavigation.js"; import { UiPagedVirtualList } from "../../UiPagedVirtualList/UiPagedVirtualList.js"; import { type IUiAsyncTableBodyProps } from "../types.js"; + import { useSkeletonItem } from "./SkeletonItemFactory.js"; import { getCellId, getItemKey, getRowId } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx index 7688d109518..048bc3de971 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx @@ -11,6 +11,7 @@ import { UiAutofocus } from "../../UiFocusManager/UiAutofocus.js"; import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableBulkActionsProps } from "../types.js"; + import { ASYNC_TABLE_BULK_ACTIONS_BUTTON_ID, ASYNC_TABLE_BULK_ACTIONS_MENU_ID } from "./constants.js"; import { UiAsyncTableDropdownItem } from "./UiAsyncTableDropdownItem.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx index 0e224a51181..8ecd1819404 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx @@ -6,6 +6,7 @@ import { isActionKey } from "../../../utils/events.js"; import { UiCheckbox } from "../../UiCheckbox/UiCheckbox.js"; import { e } from "../asyncTableBem.js"; import { type UiAsyncTableCheckboxProps } from "../types.js"; + import { ASYNC_TABLE_SELECTED_COUNT_ID } from "./constants.js"; import { getColumnHeaderId, stopPropagationCallback } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx index 5ef691bd8ed..6650a8906ff 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx @@ -16,6 +16,7 @@ import { UiAutofocus } from "../../UiFocusManager/UiAutofocus.js"; import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableFilterOption, type IUiAsyncTableFilterProps } from "../types.js"; + import { FILTER_CHIP_MAX_WIDTH, FILTER_ITEMS_OFFSET, diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx index 1db1e71ce88..a7bc649083f 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx @@ -9,6 +9,7 @@ import { UiIcon } from "../../UiIcon/UiIcon.js"; import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableColumn, type IUiAsyncTableHeaderProps } from "../types.js"; + import { getColumnHeaderId, getColumnWidth } from "./utils.js"; const arrowIcon = ; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx index 22f0840a9e1..93e42c1755e 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx @@ -13,6 +13,7 @@ import { type IUiAsyncTableRowProps, type UiAsyncTableMenuRenderer, } from "../types.js"; + import { UiAsyncTableCheckbox } from "./UiAsyncTableCheckbox.js"; import { UiAsyncTableIconRenderer } from "./UiAsyncTableIconRenderer.js"; import { getCellId, getColumnWidth, getItemKey, getRowId, getRowLabelId } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx index ba34a8acb6c..704ddaeba23 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx @@ -13,6 +13,7 @@ import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableToolbarProps } from "../types.js"; import { useAsyncTableSearch } from "../useAsyncTableSearch.js"; + import { ASYNC_TABLE_FILTER_LABEL_ID, ASYNC_TABLE_SELECTED_COUNT_ID } from "./constants.js"; import { UiAsyncTableBulkActions } from "./UiAsyncTableBulkActions.js"; import { UiAsyncTableCheckbox } from "./UiAsyncTableCheckbox.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx index 14523a2e6ea..e099ef1c2a2 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx @@ -3,6 +3,7 @@ import { type ReactNode } from "react"; import { UiLink } from "../../UiLink/UiLink.js"; + import { stopPropagationCallback } from "./utils.js"; export function WithConditionalAnchor({ href, children }: { href?: string; children: ReactNode }) { diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts index 8832ee0df8a..f587359eff7 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts @@ -2,6 +2,7 @@ import { useElementSize } from "../../hooks/useElementSize.js"; import { type IUiAsyncTableColumnDefinitionResponsive } from "../types.js"; + import { CHECKBOX_COLUMN_WIDTH, SCROLLBAR_WIDTH } from "./constants.js"; import { computeProportionalWidth, getColumnWidth } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts index bfeb302fd4e..9686ea28970 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts @@ -5,6 +5,7 @@ import { type KeyboardEvent, type MouseEvent } from "react"; import { type ObjRef, objRefToString } from "@gooddata/sdk-model"; import { type IUiAsyncTableColumn, type IUiAsyncTableFilterOption } from "../types.js"; + import { ASYNC_TABLE_ID_PREFIX, CHECKBOX_COLUMN_WIDTH, diff --git a/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx b/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx index 89b386fa8d2..4d9332259ce 100644 --- a/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx @@ -2,6 +2,7 @@ import { bem } from "../@utils/bem.js"; import { UiIcon } from "../UiIcon/UiIcon.js"; + import { type IChipContentProps } from "./types.js"; const { e } = bem("gd-ui-kit-chip"); diff --git a/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx b/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx index 26603f9a451..07c095c719f 100644 --- a/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx @@ -2,6 +2,7 @@ import { bem } from "../@utils/bem.js"; import { UiIcon } from "../UiIcon/UiIcon.js"; + import { type IChipDeleteButtonProps } from "./types.js"; const { e } = bem("gd-ui-kit-chip"); diff --git a/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx b/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx index a277388eb0b..9bc7bc07165 100644 --- a/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx @@ -3,6 +3,7 @@ import { type CSSProperties, useLayoutEffect, useRef, useState } from "react"; import { bem } from "../@utils/bem.js"; + import { ChipContent } from "./ChipContent.js"; import { ChipDeleteButton } from "./ChipDeleteButton.js"; import { type IUiChipProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx b/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx index 82bea9471f0..ac26c5e776c 100644 --- a/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx @@ -12,6 +12,7 @@ import { UiAutofocus } from "../UiFocusManager/UiAutofocus.js"; import { UiFocusTrap } from "../UiFocusManager/UiFocusTrap.js"; import { UiReturnFocusOnUnmount } from "../UiFocusManager/UiReturnFocusOnUnmount.js"; import { UiIconButton } from "../UiIconButton/UiIconButton.js"; + import { useToggleDrawer } from "./hooks/useToggleDrawer.js"; import { type IUiDrawerProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx b/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx index a59092a8fda..8174712f866 100644 --- a/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx @@ -10,6 +10,7 @@ import { bem } from "../@utils/bem.js"; import { UiFloatingElement } from "../UiFloatingElement/UiFloatingElement.js"; import { UiFocusManager } from "../UiFocusManager/UiFocusManager.js"; import { resolveRef } from "../UiFocusManager/utils.js"; + import { type IUiDropdownBodyRenderProps, type IUiDropdownButtonRenderProps, diff --git a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx index 76f7b4fc6f5..e076085f761 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx @@ -12,6 +12,7 @@ import { useCloseOnEscape } from "../hooks/useCloseOnEscape.js"; import { useCloseOnMouseDrag } from "../hooks/useCloseOnMouseDrag.js"; import { FLOATING_ELEMENT_DATA_ATTR, useCloseOnOutsideClick } from "../hooks/useCloseOnOutsideClick.js"; import { useCloseOnParentScroll } from "../hooks/useCloseOnParentScroll.js"; + import { type IUiFloatingElementProps } from "./types.js"; import { useFloatingPosition } from "./useFloatingPosition.js"; import { getDimensionsFromRef, resolveAnchor } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts index 6ddf748a95a..46dd5617f59 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts +++ b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts @@ -16,6 +16,7 @@ import { } from "@floating-ui/react"; import { useOverlayZIndexWithRegister } from "../../Overlay/OverlayContext.js"; + import { type IUseFloatingPositionOptions, type IUseFloatingPositionResult } from "./types.js"; import { alignPointsToFallbackPlacements, alignPointsToPlacement, getOffsetFromAlignPoint } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts index 468888dd0a6..fdaa852937d 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts +++ b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts @@ -4,6 +4,7 @@ import { type OffsetOptions, type Placement, type VirtualElement } from "@floati import { type IRegion } from "../../typings/domUtilities.js"; import { elementRegion } from "../../utils/domUtilities.js"; + import { type IFloatingAnchor, type ILegacyAlignPoint } from "./types.js"; const ALIGN_POINT_MAP: Record = { diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx index a42b41a483c..bb7a7b868d5 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx @@ -12,6 +12,7 @@ import { } from "react"; import { getFocusableElements, isElementFocusable, isElementTextInput } from "../../utils/domUtilities.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; import { resolveRef } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx index b743bd37b8b..3a853158391 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx @@ -5,6 +5,7 @@ import { type ReactElement, type ReactNode, cloneElement, useCallback, useMemo, import { type NavigationDirection } from "../../typings/navigation.js"; import { getFocusableElements } from "../../utils/domUtilities.js"; import { makeKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; import { focusAndEnsureReachableElement, getNextFocusableElement } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx index 5ef95afb379..453aa1a6e5a 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx @@ -5,6 +5,7 @@ import { type ReactNode, type RefObject, useCallback, useMemo, useRef } from "re import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { getFocusableElements, isElementFocusable } from "../../utils/domUtilities.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; import { resolveRef } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx index 5d3706f80ee..8fb12e36e84 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx @@ -7,6 +7,7 @@ import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { type NavigationDirection } from "../../typings/navigation.js"; import { getFocusableElements } from "../../utils/domUtilities.js"; import { makeKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; /** diff --git a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx index 75be647398a..6d9611af35a 100644 --- a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx @@ -5,6 +5,7 @@ import { type AriaAttributes } from "react"; import { type BackgroundShape, type BackgroundType } from "../@types/background.js"; import { type IconType } from "../@types/icon.js"; import { type ThemeColor } from "../@types/themeColors.js"; + import { b } from "./iconBem.js"; import { iconPaths } from "./icons.js"; import { UiIconBackground } from "./UiIconBackground.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx index e87b0d22c99..d66e8f8953a 100644 --- a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx @@ -5,6 +5,7 @@ import { type ReactNode } from "react"; import { type ThemeColor } from "@gooddata/sdk-model"; import { type BackgroundShape, type BackgroundType } from "../@types/background.js"; + import { b } from "./iconBackgroundBem.js"; export function UiIconBackground({ diff --git a/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx b/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx index 89f4493baa6..0eb26914ef8 100644 --- a/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx @@ -5,6 +5,7 @@ import { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } fro import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { DefaultUiListboxInteractiveItemComponent } from "./defaults/DefaultUiListboxInteractiveItemComponent.js"; import { DefaultUiListboxStaticItemComponent } from "./defaults/DefaultUiListboxStaticItemComponent.js"; import { firstCharacterSearch } from "./defaults/firstCharacterSearch.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx b/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx index e9b24641a0a..cd36b588e74 100644 --- a/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx @@ -5,6 +5,7 @@ import { type KeyboardEvent, type ReactNode, type RefObject, useEffect, useMemo, import cx from "classnames"; import { UiAutofocus } from "../UiFocusManager/UiAutofocus.js"; + import { typedUiMenuContextStore } from "./context.js"; import { useCustomContentKeyNavigation, useKeyNavigation, useUiMenuContextValue } from "./hooks.js"; import { getContentItem, getSiblingItems } from "./itemUtils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx b/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx index c80a9a7f06d..575186c0096 100644 --- a/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx @@ -5,6 +5,7 @@ import { type ReactElement, memo, useCallback } from "react"; import { typedUiMenuContextStore } from "../../context.js"; import { e } from "../../menuBem.js"; import { type IUiMenuContentItem, type IUiMenuContentProps } from "../../types.js"; + import { DefaultUiMenuHeader } from "./DefaultUiMenuHeader.js"; /** diff --git a/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx b/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx index d085ac6b925..8c6b3c4f94b 100644 --- a/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx @@ -16,6 +16,7 @@ import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { isElementTextInput } from "../../utils/domUtilities.js"; import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { DefaultUiMenuContent } from "./components/defaults/DefaultUiMenuContent.js"; import { DefaultUiMenuContentItem, diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx b/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx index da61d36aca1..b4376d93f52 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx @@ -4,6 +4,7 @@ import { forwardRef } from "react"; import { bem } from "../@utils/bem.js"; import { UiTag as UiTagComponent } from "../UiTag/UiTag.js"; + import { type IUiTagDef } from "./types.js"; const { e } = bem("gd-ui-kit-tags"); diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx b/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx index 94a64d33af5..db1d8b8e080 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx @@ -16,6 +16,7 @@ import { } from "../UiCombobox/UiComboboxListItem.js"; import { UiComboboxPopup } from "../UiCombobox/UiComboboxPopup.js"; import { UiPopover } from "../UiPopover/UiPopover.js"; + import { useResponsiveTags } from "./hooks/useResponsiveTags.js"; import { useTagsInteractions } from "./interactions.js"; import { type IUiTagDef, type IUiTagsProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts b/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts index be38e9a3fa2..3f274a4b8b8 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts +++ b/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts @@ -3,6 +3,7 @@ import { type DependencyList, useLayoutEffect, useState } from "react"; import { type IUiTagDef } from "../types.js"; + import { useTagsElements } from "./useTagsElements.js"; const PADDING = 5; diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts b/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts index d9a498516a9..b0559185282 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts +++ b/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts @@ -3,6 +3,7 @@ import { type MutableRefObject, useCallback, useMemo, useRef, useState } from "react"; import { makeTabsKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { type IUiTagDef, type IUiTagsProps } from "./types.js"; type InteractionState = { diff --git a/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx b/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx index f3aabcb00b2..0ba19012548 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx @@ -19,6 +19,7 @@ import { ConditionalScopedThemeProvider, useIsScopeThemed, useTheme } from "@goo import { bem } from "../@utils/bem.js"; import { FLOATING_ELEMENT_DATA_ATTR } from "../hooks/useCloseOnOutsideClick.js"; import { useFloatingPosition } from "../UiFloatingElement/useFloatingPosition.js"; + import { ARROW_HEIGHT, ARROW_WIDTH, HIDE_DELAY, SHOW_DELAY } from "./constants.js"; import { type Dimensions, type IUiTooltipProps } from "./types.js"; import { diff --git a/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx b/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx index 50d40c31136..8e98d871c16 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx @@ -14,6 +14,7 @@ import { import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { DefaultUiTreeViewItemComponent } from "./defaults/DefaultUiTreeViewItemComponent.js"; import { type IUiLeveledTreeViewProps, diff --git a/libs/sdk-ui-kit/src/Bubble/Bubble.tsx b/libs/sdk-ui-kit/src/Bubble/Bubble.tsx index c666e85d21f..48c900e4675 100644 --- a/libs/sdk-ui-kit/src/Bubble/Bubble.tsx +++ b/libs/sdk-ui-kit/src/Bubble/Bubble.tsx @@ -9,6 +9,7 @@ import isReactEqual from "react-fast-compare"; import { ZoomAwareOverlay } from "../Overlay/ZoomAwareOverlay.js"; import { type OverlayPositionType } from "../typings/overlay.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { type ArrowDirections, type ArrowOffsets } from "./typings.js"; const ARROW_DIRECTIONS: ArrowDirections = { diff --git a/libs/sdk-ui-kit/src/Bubble/withBubble.tsx b/libs/sdk-ui-kit/src/Bubble/withBubble.tsx index 428ed6b379f..6f13407c9c1 100644 --- a/libs/sdk-ui-kit/src/Bubble/withBubble.tsx +++ b/libs/sdk-ui-kit/src/Bubble/withBubble.tsx @@ -5,6 +5,7 @@ import { type ComponentType, type ReactNode, forwardRef } from "react"; import { useIntl } from "react-intl"; import { type IAlignPoint } from "../typings/positioning.js"; + import { Bubble } from "./Bubble.js"; import { BubbleHoverTrigger } from "./BubbleHoverTrigger.js"; diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx index 6d1ff97446b..4fac8842e68 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx @@ -4,6 +4,7 @@ import { type KeyboardEvent, memo, useEffect, useId, useMemo, useRef } from "rea import { bem } from "../@ui/@utils/bem.js"; import { LoadingSpinner } from "../LoadingSpinner/LoadingSpinner.js"; + import { CatalogItemPickerFooter, CatalogItemPickerHeader, diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx index ced6ae462f5..7ab210e7bd5 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx @@ -19,6 +19,7 @@ import { UiListbox } from "../@ui/UiListbox/UiListbox.js"; import { UiSubmenuHeader } from "../@ui/UiSubmenuHeader/UiSubmenuHeader.js"; import { UiTooltip } from "../@ui/UiTooltip/UiTooltip.js"; import { Input } from "../Form/Input.js"; + import { type CatalogItemListboxItem, type ICatalogItemPickerListItemData } from "./listboxItemBuilders.js"; import { testIds } from "./messages.js"; import { type CatalogItemPickerType } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx b/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx index 9b71f8510e5..5425fafec99 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx @@ -3,6 +3,7 @@ import { bem } from "../@ui/@utils/bem.js"; import { type IUiListboxItem } from "../@ui/UiListbox/types.js"; import { LoadingSpinner } from "../LoadingSpinner/LoadingSpinner.js"; + import { type ICatalogItemPickerItem } from "./types.js"; const { e } = bem("gd-ui-kit-catalog-item-picker"); diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts b/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts index 5a16474f3eb..e964c548c83 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts @@ -3,6 +3,7 @@ import { type Dispatch, type SetStateAction, useCallback, useEffect, useMemo } from "react"; import { type IUiListboxInteractiveItem } from "../@ui/UiListbox/types.js"; + import { type CatalogItemListboxItem, type ICatalogItemPickerListItemData } from "./listboxItemBuilders.js"; import { type CatalogItemPickerSelectionMode, diff --git a/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx b/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx index 733487468e3..c3ff893841c 100644 --- a/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx +++ b/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx @@ -9,6 +9,7 @@ import { type ISortItem } from "@gooddata/sdk-model"; import { IntlWrapper } from "@gooddata/sdk-ui"; import { Button } from "../Button/Button.js"; + import { ChartSortingDropdown } from "./ChartSortingDropdown.js"; import { ChartSortingDropdownBody } from "./ChartSortingDropdownBody.js"; import { type IAvailableSortsGroup, type IBucketItemDescriptors } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx b/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx index 137bd2ae08c..52ac014aa58 100644 --- a/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx +++ b/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { type ColorFormats } from "tinycolor2"; import { Button } from "../Button/Button.js"; + import { ColorPickerMatrix } from "./components/ColorPickerMatrix.js"; import { ColorsPreview } from "./components/ColorsPreview.js"; import { HexColorInput } from "./components/HexColorInput.js"; diff --git a/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx b/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx index ed630123ef3..8510ad31665 100644 --- a/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx +++ b/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx @@ -15,6 +15,7 @@ import { type ArrowOffsets } from "../Bubble/typings.js"; import { useMediaQuery } from "../responsive/useMediaQuery.js"; import { RichText } from "../RichText/RichText.js"; import { ZOOM_THRESHOLD, useIsZoomed } from "../ZoomContext/ZoomContext.js"; + import { EllipsisText } from "./EllipsisText.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx b/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx index 6ccd4518aa4..44928fcc80f 100644 --- a/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx @@ -3,6 +3,7 @@ import { Button } from "../Button/Button.js"; import { Message } from "../Messages/Message.js"; import { useId } from "../utils/useId.js"; + import { Dialog } from "./Dialog.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx b/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx index 41c7cd37b72..48dc34a9945 100644 --- a/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx @@ -3,6 +3,7 @@ import { memo } from "react"; import { Overlay } from "../Overlay/Overlay.js"; + import { ConfirmDialogBase } from "./ConfirmDialogBase.js"; import { type IConfirmDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx index 307bd4334f0..e8842af90c3 100644 --- a/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx @@ -10,6 +10,7 @@ import { Button } from "../Button/Button.js"; import { LoadingSpinner } from "../LoadingSpinner/LoadingSpinner.js"; import { Typography } from "../Typography/Typography.js"; import { useId } from "../utils/useId.js"; + import { DialogBase } from "./DialogBase.js"; import { CONFIRM_DIALOG_BASE_ID } from "./elementId.js"; import { type IConfirmDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/Dialog.tsx b/libs/sdk-ui-kit/src/Dialog/Dialog.tsx index c6fa66d5f1e..cd782dbea7e 100644 --- a/libs/sdk-ui-kit/src/Dialog/Dialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/Dialog.tsx @@ -3,6 +3,7 @@ import { memo } from "react"; import { Overlay } from "../Overlay/Overlay.js"; + import { DialogBase } from "./DialogBase.js"; import { type IDialogProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx index 63b6794db23..462faaa1d9d 100644 --- a/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx @@ -8,6 +8,7 @@ import { UiFocusManager } from "../@ui/UiFocusManager/UiFocusManager.js"; import { defaultFocusCheckFn } from "../@ui/UiFocusManager/utils.js"; import { ScreenReaderToast } from "../Messages/toasts/ToastsCenter.js"; import { isElementSubmitButton, isElementTextInput } from "../utils/domUtilities.js"; + import { DialogCloseButton } from "./DialogCloseButton.js"; import { type IDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx b/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx index 34396e38b3e..dffd9561eb6 100644 --- a/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx +++ b/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { IntlWrapper } from "@gooddata/sdk-ui"; import { Button } from "../Button/Button.js"; + import { type IDialogCloseButtonProps } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx b/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx index faa3fb7d14d..70c6397c858 100644 --- a/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx +++ b/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx @@ -9,6 +9,7 @@ import { simplifyText } from "@gooddata/util"; import { Bubble } from "../../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../../Bubble/BubbleHoverTrigger.js"; import { ShortenedText } from "../../ShortenedText/ShortenedText.js"; + import { type IDialogListItemComponentProps } from "./typings.js"; const ICON_TOOLTIP_ALIGN_POINTS = [ diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx index 427fcc1a232..4a6d5d03bd7 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx @@ -9,6 +9,7 @@ import { useIntl } from "react-intl"; import { dialogEmbedTabLabels, dialogHeadlineLabels } from "../../../locales.js"; import { type ITab, Tabs } from "../../../Tabs/Tabs.js"; import { ConfirmDialogBase } from "../../ConfirmDialogBase.js"; + import { CompleteListPropsMessage } from "./components/CompleteListPropsMessage.js"; import { EmbedInsightContent } from "./components/EmbedInsightContent.js"; import { diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx index 7a9817d474b..2c1d0fd6974 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx @@ -5,6 +5,7 @@ import { useCallback } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { type IReactOptions, type UnitsType } from "../types.js"; + import { HeightSetting } from "./HeightSetting.js"; import { ToggleSwitch } from "./ToggleSwitch.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx index a28251bce9f..8a24c6efdd0 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx @@ -6,6 +6,7 @@ import { FormattedMessage } from "react-intl"; import { dialogChangeMessageLabels } from "../../../../locales.js"; import { type InsightCodeType } from "../types.js"; + import { ComponentTypeItem } from "./ComponentTypeItem.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx index 80f0c252fd8..79521833ec3 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx @@ -3,6 +3,7 @@ import { useMemo } from "react"; import { type EmbedOptionsType, type IReactOptions, type IWebComponentsOptions } from "../types.js"; + import { EmbedInsightCodeArea } from "./CodeArea.js"; import { PrepareEnvMessage } from "./PrepareEnvMessage.js"; import { ReactOptions } from "./ReactOptions.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx index da4f19d86d2..c7ad00e1c96 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx @@ -8,6 +8,7 @@ import { DropdownList } from "../../../../Dropdown/DropdownList.js"; import { SingleSelectListItem } from "../../../../List/ListItem.js"; import { getDefaultHeightForEmbedCodeByUnit } from "../../utils.js"; import { DEFAULT_UNIT, UNITS, type UnitsType } from "../types.js"; + import { NumericInput } from "./NumericInput.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx index 785a1f77c1f..ff14972e357 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx @@ -12,6 +12,7 @@ import { DropdownList } from "../../../../Dropdown/DropdownList.js"; import { SingleSelectListItem } from "../../../../List/ListItem.js"; import { dialogChangeMessageLabels } from "../../../../locales.js"; import { DEFAULT_LOCALE } from "../types.js"; + import { ToggleSwitch } from "./ToggleSwitch.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx index 63228e0b8b9..1260bbfa7f0 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx @@ -3,6 +3,7 @@ import { useCallback } from "react"; import { type CodeLanguageType, type IReactOptions, type InsightCodeType } from "../types.js"; + import { CodeLanguageSelect } from "./CodeLanguageSelect.js"; import { CodeOptions } from "./CodeOptions.js"; import { ComponentTypeSelect } from "./ComponentTypeSelect.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx index 0a78258b066..5bbda33124d 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx @@ -8,6 +8,7 @@ import { type ILocale } from "@gooddata/sdk-ui"; import { dialogChangeMessageLabels } from "../../../../locales.js"; import { type IWebComponentsOptions, type UnitsType } from "../types.js"; + import { HeightSetting } from "./HeightSetting.js"; import { LocaleSetting } from "./LocaleSetting.js"; import { ToggleSwitch } from "./ToggleSwitch.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx b/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx index 8f286e25e32..f6293f57e37 100644 --- a/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx @@ -4,6 +4,7 @@ import { memo } from "react"; import { Overlay } from "../Overlay/Overlay.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { ExportDialogBase } from "./ExportDialogBase.js"; import { type IExportDialogProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx index c8f4b1ac08f..ab9f28f902f 100644 --- a/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx @@ -8,6 +8,7 @@ import { usePropState } from "@gooddata/sdk-ui"; import { Checkbox } from "../Form/Checkbox.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { ConfirmDialogBase } from "./ConfirmDialogBase.js"; import { type IExportDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx b/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx index 74d14d42a65..fa3ed54a413 100644 --- a/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx @@ -13,6 +13,7 @@ import { DropdownButton } from "../Dropdown/DropdownButton.js"; import { Checkbox } from "../Form/Checkbox.js"; import { Overlay } from "../Overlay/Overlay.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { ConfirmDialogBase } from "./ConfirmDialogBase.js"; import { type IExportTabularPdfDialogProps, type PageOrientation, type PageSize } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx b/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx index 7b1916918b0..0c0ecc10e28 100644 --- a/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx @@ -3,6 +3,7 @@ import { HubspotProvider } from "@aaronhayes/react-use-hubspot-form"; import { useId } from "../utils/useId.js"; + import { Dialog } from "./Dialog.js"; import { HubspotConversionTouchPointDialogBase, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx index bc07d492a2a..90691377c90 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { BackButton } from "../../BackButton.js"; import { ConfirmDialogBase } from "../../ConfirmDialogBase.js"; import { ContentDivider } from "../../ContentDivider.js"; + import { AddGranteeContent } from "./AddGranteeContent.js"; import { type IAddGranteeBaseProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx index ef9a82e3c28..5c7371e8aa1 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, useIntl } from "react-intl"; import { UiTooltip } from "../../../@ui/UiTooltip/UiTooltip.js"; import { useIdPrefixed } from "../../../utils/useId.js"; + import { type IAddUserOrGroupButton } from "./types.js"; import { ADD_GRANTEE_ID } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx index 020b92c76be..78818b10c11 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx @@ -13,6 +13,7 @@ import { import { LoadingMask } from "../../../LoadingMask/LoadingMask.js"; import { Typography } from "../../../Typography/Typography.js"; + import { type ISelectErrorOption, type ISelectOption, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx index 9ac1e1adc56..11d4054c7c5 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx @@ -12,6 +12,7 @@ import { type ShareDialogInteractionGranteeData, type ShareDialogInteractionType, } from "../types.js"; + import { type GranteeItem, isGranularGrantee, isGranularGranteeUser } from "./types.js"; import { getGranularPermissionFromUserPermissions, getIsGranteeCurrentUser } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx index 71f521bedb8..d7b74fc8ba3 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx @@ -3,6 +3,7 @@ import { createContext, useContext } from "react"; import { type IShareDialogLabels } from "../types.js"; + import { type IComponentLabelsProviderProps } from "./types.js"; const defaultLabels: IShareDialogLabels = { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx index d75182e15ba..8eb959d24ac 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx @@ -4,6 +4,7 @@ import { FormattedMessage } from "react-intl"; import { Bubble } from "../../../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../../../Bubble/BubbleHoverTrigger.js"; + import { useComponentLabelsContext } from "./ComponentLabelsContext.js"; import { type DialogModeType } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx index 9ca217fbceb..0555a481776 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx @@ -8,6 +8,7 @@ import { invariant } from "ts-invariant"; import { Button } from "../../../Button/Button.js"; import { useIdPrefixed } from "../../../utils/useId.js"; + import { GranteeGroupIcon, GranteeOwnerRemoveIcon, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx index 7d875f53104..d217416f969 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx @@ -15,6 +15,7 @@ import { type IGranularGranteeGroup, } from "../types.js"; import { getGranteeItemTestId, getGranteeLabel } from "../utils.js"; + import { GranularPermissionsDropdownWithBubble } from "./GranularPermissionsDropdown.js"; import { getGranteePossibilities } from "./permissionsLogic.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx index 7fa1d8568d1..91e5607a519 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx @@ -10,6 +10,7 @@ import { useShareDialogInteraction } from "../ComponentInteractionContext.js"; import { GranteeUserIcon } from "../GranteeIcons.js"; import { type DialogModeType, type GranteeItem, type IGranularGranteeUser } from "../types.js"; import { getGranteeItemTestId, getGranteeLabel } from "../utils.js"; + import { GranularPermissionsDropdownWithBubble } from "./GranularPermissionsDropdown.js"; import { getGranteePossibilities } from "./permissionsLogic.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx index c03da4c69c0..b04af4cf59d 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx @@ -18,6 +18,7 @@ import { type IGranularGrantee, } from "../types.js"; import { getGranularGranteeClassNameId } from "../utils.js"; + import { GranularPermissionsDropdownBody } from "./GranularPermissionsDropdownBody.js"; interface IGranularPermissionsDropdownProps { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx index c51f5573dcd..2b49ae1a57b 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx @@ -20,6 +20,7 @@ import { type IGranteePermissionsPossibilities, type IGranularGrantee, } from "../types.js"; + import { GranularPermissionSelectItemWithBubble } from "./GranularPermissionItem.js"; interface IGranularPermissionsDropdownBodyProps { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx index 78f48efa752..07eccb46448 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx @@ -4,6 +4,7 @@ import { useCallback, useEffect, useRef } from "react"; import { Overlay } from "../../../Overlay/Overlay.js"; import { type IAlignPoint } from "../../../typings/positioning.js"; + import { AddGranteeBase } from "./AddGranteeBase.js"; import { useShareDialogInteraction } from "./ComponentInteractionContext.js"; import { ShareGranteeBase } from "./ShareGranteeBase.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx index e611a081f1b..972d1495ab6 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { ConfirmDialogBase } from "../../ConfirmDialogBase.js"; import { ContentDivider } from "../../ContentDivider.js"; + import { AdminInformationMessage } from "./AdminInformationMessage.js"; import { SharedObjectLockControl } from "./SharedObjectLockControl.js"; import { SharedObjectUnderLenientControl } from "./SharedObjectUnderLenientControl.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx index 5f6ed1dd19f..ce285884b34 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { Typography } from "../../../Typography/Typography.js"; + import { AddUserOrGroupButton } from "./AddGranteeButton.js"; import { GranteeList } from "./GranteeList.js"; import { GranteeListLoading } from "./GranteeListLoading.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx index 7089c977763..850e759d323 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx @@ -7,6 +7,7 @@ import { compressForUrl } from "@gooddata/sdk-ui"; import { Input } from "../../../Form/Input.js"; import { Typography } from "../../../Typography/Typography.js"; import { isCopyKey } from "../../../utils/events.js"; + import { type IShareLinkProps } from "./types.js"; import { SHARE_LINK_HEADLINE_ID, SHARE_LINK_HELPER_TEXT_ID } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx index 9d8da4a499c..63c325052e1 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx @@ -16,6 +16,7 @@ import { BackendProvider, WorkspaceProvider, withIntl } from "@gooddata/sdk-ui"; import { mapWorkspaceUserToGrantee } from "../../shareDialogMappers.js"; import { AddGranteeSelect } from "../AddGranteeSelect.js"; import { type IAddGranteeSelectProps } from "../types.js"; + import { availableUserAccessGrantee, availableUserGroupAccessGrantee, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts index 96067920e42..2763a2f4977 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts @@ -9,6 +9,7 @@ import { idRef } from "@gooddata/sdk-model"; import { type IGranularGranteeUser, type IShareDialogBaseProps } from "../types.js"; import { useShareDialogBase } from "../useShareDialogBase.js"; + import { defaultUser, granularGranteeGroup, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts index 403e0e768d5..37c29f5e7ed 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts @@ -14,6 +14,7 @@ import { notInArrayFilter, sortGranteesByName, } from "../utils.js"; + import { current, granularRule, groupAll, owner, user } from "./GranteeMock.js"; describe("utils", () => { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts index 8950d0e416a..f2f2e0ce603 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts @@ -7,6 +7,7 @@ import { isEqual } from "lodash-es"; import { areObjRefsEqual } from "@gooddata/sdk-model"; import { mapShareStatusToGroupAll } from "../shareDialogMappers.js"; + import { useGetAccessList } from "./backend/useGetAccessList.js"; import { useShareDialogInteraction } from "./ComponentInteractionContext.js"; import { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts index c97d22fe101..eb04a25460d 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts @@ -15,6 +15,7 @@ import { import { simplifyText } from "@gooddata/util"; import { type CurrentUserPermissions } from "../types.js"; + import { type GranteeItem, type IGranteeGroupAll, diff --git a/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx b/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx index 004d43170a5..bf4db639bb2 100644 --- a/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx @@ -13,6 +13,7 @@ import { Typography } from "../../Typography/Typography.js"; import { useId } from "../../utils/useId.js"; import { Dialog } from "../Dialog.js"; import { type IDialogBaseProps } from "../typings.js"; + import { BubbleHeaderSeparator } from "./BubbleHeaderSeparator.js"; import { StylingEditorDialogFooter, diff --git a/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx b/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx index 21c21069305..843ec3440f8 100644 --- a/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx +++ b/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx @@ -25,6 +25,7 @@ import { useMediaQuery } from "../responsive/useMediaQuery.js"; import { type OverlayPositionType } from "../typings/overlay.js"; import { type IAlignPoint } from "../typings/positioning.js"; import { useId } from "../utils/useId.js"; + import { DropdownButtonKeyboardWrapper } from "./DropdownButtonKeyboardWrapper.js"; const SCROLLBAR_SELECTOR = ".fixedDataTableLayout_main .ScrollbarLayout_main"; diff --git a/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx b/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx index 08a0cf45845..79416bd9983 100644 --- a/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx +++ b/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx @@ -29,6 +29,7 @@ import { NoData } from "../NoData/NoData.js"; import { type ITab } from "../Tabs/Tabs.js"; import { type IAccessibilityConfigBase } from "../typings/accessibility.js"; import { isTypingKey } from "../utils/events.js"; + import { DropdownTabs } from "./DropdownTabs.js"; /** diff --git a/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx b/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx index 78e6383677e..d0f0cb1a5b9 100644 --- a/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx +++ b/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx @@ -10,6 +10,7 @@ import { type IDropdownButtonRenderProps, type IDropdownProps, } from "../Dropdown.js"; + import { componentMock } from "./testUtils.js"; const bodyMock = componentMock(); diff --git a/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx b/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx index 1ecab890b02..1db5a8aeb10 100644 --- a/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx +++ b/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx @@ -21,6 +21,7 @@ import { v4 as uuid } from "uuid"; import { Overlay } from "../Overlay/Overlay.js"; import { ENUM_KEY_CODE } from "../typings/utilities.js"; + import { type IEditableLabelProps } from "./typings.js"; // There are known compatibility issues between CommonJS (CJS) and ECMAScript modules (ESM). diff --git a/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx b/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx index ebd69d7e4ef..792b4e92604 100644 --- a/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx +++ b/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx @@ -13,6 +13,7 @@ import { import { useFileInput } from "../hooks/useFileInput.js"; import { parseAcceptedTypes } from "../parseAcceptedTypes.js"; import { FileValidationErrorCode, type IFileValidationResult } from "../types.js"; + import { b } from "./fileDropzoneBem.js"; type DragState = "idle" | "valid" | "invalid"; diff --git a/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx b/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx index adf0a9d9f09..961c8bd5260 100644 --- a/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx +++ b/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx @@ -6,6 +6,7 @@ import { type IntlShape, defineMessages, useIntl } from "react-intl"; import { UiButton } from "../../@ui/UiButton/UiButton.js"; import { type IUploadActionCallbacks, type IUploadFileItem, UploadItemStatus } from "../types.js"; + import { b, e } from "./uploadFileListBem.js"; /** diff --git a/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx b/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx index 46d9d096b45..b952b372055 100644 --- a/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx +++ b/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx @@ -6,6 +6,7 @@ import { UiIcon } from "../../@ui/UiIcon/UiIcon.js"; import { Dialog } from "../../Dialog/Dialog.js"; import { useIdPrefixed } from "../../utils/useId.js"; import { UploadItemStatus } from "../types.js"; + import { b, e } from "./uploadStatusDialogBem.js"; /** diff --git a/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts b/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts index 767a86cd663..c8b8314255b 100644 --- a/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts +++ b/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts @@ -3,6 +3,7 @@ import { type Dispatch, type SetStateAction, useCallback, useState } from "react"; import { type IFileRejection, type IFileValidationResult, type IFileValidationRules } from "../types.js"; + import { validateFile } from "./validateFile.js"; /** diff --git a/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx b/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx index b572233c779..2df9a4966c3 100644 --- a/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx +++ b/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx @@ -14,6 +14,7 @@ import cx from "classnames"; import { pickBy, throttle } from "lodash-es"; import { elementRegion } from "../utils/domUtilities.js"; + import { type IFlexDimensionsProps, type IFlexDimensionsState } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Form/InputPure.tsx b/libs/sdk-ui-kit/src/Form/InputPure.tsx index 35dca572fa0..5f37ea36b5b 100644 --- a/libs/sdk-ui-kit/src/Form/InputPure.tsx +++ b/libs/sdk-ui-kit/src/Form/InputPure.tsx @@ -18,6 +18,7 @@ import { UiIconButton } from "../@ui/UiIconButton/UiIconButton.js"; import { type IAccessibilityConfigBase } from "../typings/accessibility.js"; import { type IDomNative, type IDomNativeProps } from "../typings/domNative.js"; import { ENUM_KEY_CODE } from "../typings/utilities.js"; + import { runAutofocus } from "./focus.js"; /** diff --git a/libs/sdk-ui-kit/src/Header/Header.tsx b/libs/sdk-ui-kit/src/Header/Header.tsx index bfc93cafd9a..cd5a4bceb6f 100644 --- a/libs/sdk-ui-kit/src/Header/Header.tsx +++ b/libs/sdk-ui-kit/src/Header/Header.tsx @@ -14,6 +14,7 @@ import { Icon } from "../Icon/Icon.js"; import { Overlay } from "../Overlay/Overlay.js"; import { Typography } from "../Typography/Typography.js"; import { removeFromDom } from "../utils/domUtilities.js"; + import { addCssToStylesheet } from "./addCssToStylesheet.js"; import { getItemActiveColor, diff --git a/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx b/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx index 13b7e543b96..215fb93ab11 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx @@ -10,6 +10,7 @@ import { Button } from "../Button/Button.js"; import { Overlay } from "../Overlay/Overlay.js"; import { isActionKey } from "../utils/events.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { type IHeaderAccountProps, type IHeaderMenuItem } from "./typings.js"; export function HeaderAccount({ diff --git a/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx b/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx index 2fcec58b52d..5fa38277f89 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx @@ -7,6 +7,7 @@ import { v4 as uuid } from "uuid"; import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { Button } from "../Button/Button.js"; + import { type IHeaderMenuItem } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx b/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx index 8434227184d..289e1a0603c 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx @@ -8,6 +8,7 @@ import { UiFocusManager } from "../@ui/UiFocusManager/UiFocusManager.js"; import { Button } from "../Button/Button.js"; import { Overlay } from "../Overlay/Overlay.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { useHeaderSearch } from "./headerSearchContext.js"; export type HeaderSearchProps = PropsWithChildren<{ diff --git a/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx b/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx index d7f630ea435..2b51fe5ca38 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx @@ -9,6 +9,7 @@ import { UiSkeleton } from "../@ui/UiSkeleton/UiSkeleton.js"; import { Dropdown } from "../Dropdown/Dropdown.js"; import { DropdownList } from "../Dropdown/DropdownList.js"; import { NoData } from "../NoData/NoData.js"; + import { HeaderWorkspacePickerButton, type IHeaderWorkspacePickerButtonAccessibilityConfig, diff --git a/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts b/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts index c24329647ae..d1e3e382657 100644 --- a/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts +++ b/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts @@ -5,6 +5,7 @@ import { defineMessage } from "react-intl"; import { type ISettings } from "@gooddata/sdk-model"; import { generateSupportUrl } from "../utils/featureFlags.js"; + import { type IHeaderMenuItem, type TUTMContent } from "./typings.js"; const HEADER_HELP_MENU_ITEM_ID_DOCUMENTATION = defineMessage({ id: "gs.header.documentation" }).id; diff --git a/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts b/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts index 531e354eb70..96174a80330 100644 --- a/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts +++ b/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts @@ -5,6 +5,7 @@ import { defineMessage } from "react-intl"; import { type ISettings, type IWorkspacePermissions } from "@gooddata/sdk-model"; import { isFreemiumEdition } from "../utils/featureFlags.js"; + import { type IHeaderMenuItem } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts b/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts index 41c4b1ec52b..72229a042f7 100644 --- a/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts @@ -5,6 +5,7 @@ import { beforeAll, describe, expect, it } from "vitest"; import { activateHeaderMenuItems } from "../activateHeaderMenuItems.js"; import { HEADER_ITEM_ID_KPIS_NEW, generateHeaderMenuItemsGroups } from "../generateHeaderMenuItemsGroups.js"; import { type IHeaderMenuItem } from "../typings.js"; + import { getAccountMenuFeatureFlagsMock, getWorkspacePermissionsMock } from "./mock.js"; describe("activateHeaderMenuItems", () => { diff --git a/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts b/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts index 8be52f98d5c..edfc7c6c7c1 100644 --- a/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { generateHeaderAccountMenuItems } from "../generateHeaderAccountMenuItems.js"; + import { getWorkspacePermissionsMock } from "./mock.js"; describe("generateHeaderAccountMenuItems", () => { diff --git a/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts b/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts index da89d47550d..9ef4f54c7c7 100644 --- a/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { generateHeaderHelpMenuItems } from "../generateHeaderHelpMenuItems.js"; + import { getHelpMenuFeatureFlagsMock } from "./mock.js"; describe("generateHeaderHelpMenuItems", () => { diff --git a/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts b/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts index e92ac7f8033..ea0cc575436 100644 --- a/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { generateHeaderMenuItemsGroups } from "../generateHeaderMenuItemsGroups.js"; + import { getAccountMenuFeatureFlagsMock, getWorkspacePermissionsMock } from "./mock.js"; describe("generateHeaderMenuItemsGroups", () => { diff --git a/libs/sdk-ui-kit/src/List/AsyncList.tsx b/libs/sdk-ui-kit/src/List/AsyncList.tsx index 5f999c2f2b1..96ee8404226 100644 --- a/libs/sdk-ui-kit/src/List/AsyncList.tsx +++ b/libs/sdk-ui-kit/src/List/AsyncList.tsx @@ -7,6 +7,7 @@ import { defaultImport } from "default-import"; import ReactContentLoader from "react-content-loader"; import { LoadingMask } from "../LoadingMask/LoadingMask.js"; + import { type IRenderListItemProps, List } from "./List.js"; // There are known compatibility issues between CommonJS (CJS) and ECMAScript modules (ESM). diff --git a/libs/sdk-ui-kit/src/List/InsightListItem.tsx b/libs/sdk-ui-kit/src/List/InsightListItem.tsx index 1b47b995201..b7f09617d84 100644 --- a/libs/sdk-ui-kit/src/List/InsightListItem.tsx +++ b/libs/sdk-ui-kit/src/List/InsightListItem.tsx @@ -13,6 +13,7 @@ import { Button } from "../Button/Button.js"; import { DESCRIPTION_PANEL_ARROW_OFFSETS, DescriptionPanel } from "../DescriptionPanel/DescriptionPanel.js"; import { ShortenedText } from "../ShortenedText/ShortenedText.js"; import { getDateTimeConfig } from "../utils/dateTimeConfig.js"; + import { InsightListItemDate } from "./InsightListItemDate.js"; const VISUALIZATION_TYPE_UNKNOWN = "unknown"; diff --git a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx index ddc5a998b73..0637856dd6c 100644 --- a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx +++ b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx @@ -11,6 +11,7 @@ import { ErrorComponent } from "@gooddata/sdk-ui"; import { LoadingMask } from "../../LoadingMask/LoadingMask.js"; import { AsyncList } from "../AsyncList.js"; import { type IRenderListItemProps } from "../List.js"; + import { InvertableSelectAllCheckbox } from "./InvertableSelectAllCheckbox.js"; import { InvertableSelectItem } from "./InvertableSelectItem.js"; import { InvertableSelectNoResultsMatch } from "./InvertableSelectNoResultsMatch.js"; diff --git a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx index f8032c747b8..cfb9d92e23d 100644 --- a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx +++ b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx @@ -31,6 +31,7 @@ import { } from "../../@ui/UiSearchResultsAnnouncement/UiSearchResultsAnnouncement.js"; import { LoadingMask } from "../../LoadingMask/LoadingMask.js"; import { isEnterKey, isEscapeKey, isSpaceKey } from "../../utils/events.js"; + import { type IInvertableSelectRenderErrorProps, type IInvertableSelectRenderLoadingProps, diff --git a/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx b/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx index ddac30c1420..0b2e857d01d 100644 --- a/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx +++ b/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx @@ -8,6 +8,7 @@ import { FormattedMessage, type WrappedComponentProps, injectIntl } from "react- import { Input } from "../Form/Input.js"; import { Message } from "../Messages/Message.js"; + import { guidFor } from "./guid.js"; import { LegacyMultiSelectListWithIntl } from "./LegacyMultiSelectList.js"; import { LegacyMultiSelectListItem } from "./LegacyMultiSelectListItem.js"; diff --git a/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx b/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx index cd968ca47c4..65dfb21816d 100644 --- a/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx +++ b/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { Button } from "../Button/Button.js"; import { FlexDimensions } from "../FlexDimensions/FlexDimensions.js"; + import { guidFor } from "./guid.js"; import { LegacyList } from "./LegacyList.js"; import { LegacyListItem } from "./LegacyListItem.js"; diff --git a/libs/sdk-ui-kit/src/List/MultiSelectList.tsx b/libs/sdk-ui-kit/src/List/MultiSelectList.tsx index 9afc6704c47..2c4631edd8b 100644 --- a/libs/sdk-ui-kit/src/List/MultiSelectList.tsx +++ b/libs/sdk-ui-kit/src/List/MultiSelectList.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { Button } from "../Button/Button.js"; import { FlexDimensions } from "../FlexDimensions/FlexDimensions.js"; + import { List } from "./List.js"; /** diff --git a/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx b/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx index 63fb96acd35..adf66df9e5e 100644 --- a/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx +++ b/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx @@ -7,6 +7,7 @@ import { describe, expect, it, vi } from "vitest"; import { withIntl } from "@gooddata/sdk-ui"; import { type ILegacyMultiSelectListProps, LegacyMultiSelectListWithIntl } from "../LegacyMultiSelectList.js"; + import { customMessages } from "./customDictionary.js"; describe("LegacyMultiSelectList", () => { diff --git a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx index b7683bc7ac9..7199fa04f40 100644 --- a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx +++ b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx @@ -4,6 +4,7 @@ import { type ReactElement, type ReactNode, useCallback, useRef } from "react"; import { MenuPosition } from "../positioning/MenuPosition.js"; import { OutsideClickHandler } from "../utils/OutsideClickHandler.js"; + import { type IMenuOpenedBySharedProps } from "./MenuOpenedBySharedProps.js"; export function MenuOpenedByClick(props: IMenuOpenedBySharedProps): ReactElement { diff --git a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx index b3f09215f11..371ec6b504c 100644 --- a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx +++ b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx @@ -3,6 +3,7 @@ import { useCallback, useEffect, useRef } from "react"; import { MenuPosition } from "../positioning/MenuPosition.js"; + import { type IMenuOpenedBySharedProps } from "./MenuOpenedBySharedProps.js"; export function MenuOpenedByHover({ diff --git a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx index c6da547447e..4e9059cd46a 100644 --- a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx +++ b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx @@ -3,6 +3,7 @@ import { type ElementType, type ReactNode, useMemo } from "react"; import { type IMenuPositionConfig, type OnOpenedChange, type OpenAction } from "../MenuSharedTypes.js"; + import { MenuOpenedByClick } from "./MenuOpenedByClick.js"; import { MenuOpenedByHover } from "./MenuOpenedByHover.js"; diff --git a/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx b/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx index 6dbbffc9a13..ba96a80dd4c 100644 --- a/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx +++ b/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx @@ -4,6 +4,7 @@ import { Fragment, type ReactNode, useCallback, useMemo, useRef, useState } from import { type IMenuPositionConfig } from "../MenuSharedTypes.js"; import { RenderChildrenInPortal } from "../utils/RenderChildrenInPortal.js"; + import { PositionedMenuContent } from "./PositionedMenuContent.js"; export interface IMenuPositionProps extends IMenuPositionConfig { diff --git a/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx b/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx index f83618f886e..e7627bd795f 100644 --- a/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx +++ b/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx @@ -3,6 +3,7 @@ import { type ReactNode, useCallback, useEffect, useRef, useState } from "react"; import { type IMenuPositionConfig } from "../MenuSharedTypes.js"; + import { calculateMenuPosition, getElementDimensions, diff --git a/libs/sdk-ui-kit/src/Messages/Message.tsx b/libs/sdk-ui-kit/src/Messages/Message.tsx index a5807ec9d21..7b5460e160a 100644 --- a/libs/sdk-ui-kit/src/Messages/Message.tsx +++ b/libs/sdk-ui-kit/src/Messages/Message.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { Button } from "../Button/Button.js"; + import { type IMessageProps } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx b/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx index 0e1d6fa9d5a..72537940ead 100644 --- a/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx +++ b/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx @@ -5,6 +5,7 @@ import { useCallback, useEffect, useMemo, useRef } from "react"; import { useAutoupdateRef, usePrevious } from "@gooddata/sdk-ui"; import { type IMessage } from "../typings.js"; + import { ToastsCenterContext } from "./context.js"; import { ToastsCenterContextProvider } from "./ToastsCenter.js"; diff --git a/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx b/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx index 66db1c6efed..d2cb9a86fe1 100644 --- a/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx +++ b/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx @@ -6,6 +6,7 @@ import { useIntl } from "react-intl"; import { Overlay } from "../../Overlay/Overlay.js"; import { type IMessage } from "../typings.js"; + import { ToastsCenterContext, useToastsCenterValue } from "./context.js"; import { ToastMessageList } from "./ToastsCenterMessage.js"; diff --git a/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts b/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts index cb8fefed3ef..b9a502698eb 100644 --- a/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts +++ b/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts @@ -3,6 +3,7 @@ import { type MessageDescriptor, useIntl } from "react-intl"; import { type IMessage, type IMessageDefinition, type MessageType } from "../typings.js"; + import { ToastsCenterContext } from "./context.js"; /** diff --git a/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx b/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx index e104a0c0752..17ddfb75098 100644 --- a/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx +++ b/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx @@ -10,6 +10,7 @@ import { useTheme } from "@gooddata/sdk-ui-theme-provider"; import { Button } from "../Button/Button.js"; import { Icon } from "../Icon/Icon.js"; import { Typography } from "../Typography/Typography.js"; + import { Overlay } from "./Overlay.js"; /** diff --git a/libs/sdk-ui-kit/src/Overlay/Overlay.tsx b/libs/sdk-ui-kit/src/Overlay/Overlay.tsx index 14b350d58b5..db3417335bf 100644 --- a/libs/sdk-ui-kit/src/Overlay/Overlay.tsx +++ b/libs/sdk-ui-kit/src/Overlay/Overlay.tsx @@ -21,6 +21,7 @@ import { elementRegion, isFixedPosition } from "../utils/domUtilities.js"; import { GOODSTRAP_DRAG_EVENT } from "../utils/drag.js"; import { DEFAULT_ALIGN_POINTS, getOptimalAlignment, getOverlayStyles } from "../utils/overlay.js"; import { GOODSTRAP_SCROLLED_EVENT } from "../utils/scroll.js"; + import { OverlayContext } from "./OverlayContext.js"; import { type IOverlayProps, type IOverlayState } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx b/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx index e5ff421f2f9..b232743ebd3 100644 --- a/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx +++ b/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { ZoomProvider } from "../ZoomContext/ZoomContext.js"; + import { Overlay } from "./Overlay.js"; import { type IOverlayProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx b/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx index 6b41763af94..98b9c7d9326 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx +++ b/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx @@ -17,6 +17,7 @@ import { Datepicker, parseDate } from "../Datepicker/Datepicker.js"; import { Timepicker } from "../Timepicker/Timepicker.js"; import { normalizeTime } from "../Timepicker/utils/timeUtilities.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { DEFAULT_DROPDOWN_ZINDEX, TIME_ANCHOR } from "./constants.js"; interface IDateTimeProps { diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx b/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx index f3de8276e1d..45787eb9975 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx +++ b/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { type WeekStart } from "@gooddata/sdk-model"; import { useIdPrefixed } from "../utils/useId.js"; + import { RECURRENCE_TYPES } from "./constants.js"; import { CronExpression } from "./CronExpression.js"; import { CronExpressionSuggestion } from "./CronExpressionSuggestion.js"; diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx b/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx index e15f6cc2d13..2ec62ed14b3 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx +++ b/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx @@ -9,6 +9,7 @@ import { UiListbox } from "../@ui/UiListbox/UiListbox.js"; import { Dropdown } from "../Dropdown/Dropdown.js"; import { DropdownButton } from "../Dropdown/DropdownButton.js"; import { SingleSelectListItem } from "../List/ListItem.js"; + import { DEFAULT_DROPDOWN_ALIGN_POINTS, DEFAULT_DROPDOWN_WIDTH, diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts b/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts index 6a968659c2a..e88401ccbfa 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts +++ b/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type WeekStart } from "@gooddata/sdk-model"; import { RECURRENCE_TYPES } from "../constants.js"; + import { simpleRecurrenceTypeMappingFn } from "./simpleRecurrenceTypeMappingFn.js"; describe("simpleRecurrenceTypeMappingFn", () => { diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts b/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts index 6ef57e09873..360c48a9518 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts +++ b/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts @@ -6,6 +6,7 @@ import { type WeekStart } from "@gooddata/sdk-model"; import { createIntlMock } from "@gooddata/sdk-ui"; import { RECURRENCE_TYPES } from "../constants.js"; + import { constructCronExpression, isLastOccurrenceOfWeekdayInMonth, diff --git a/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx b/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx index a13fc308a59..fae6cd435e9 100644 --- a/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx +++ b/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx @@ -9,6 +9,7 @@ import { IntlWrapper } from "@gooddata/sdk-ui"; import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { type IRichTextProps, RichText } from "./RichText.js"; const alignPoints: IAlignPoint[] = [{ align: "bc tc" }, { align: "tc bc" }]; diff --git a/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts b/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts index 3a80f2c3283..4019e9e5e0e 100644 --- a/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts +++ b/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts @@ -5,6 +5,7 @@ import { useMemo } from "react"; import { type IExecutionConfig, type IFilter } from "@gooddata/sdk-model"; import { collectReferences } from "../helpers/references.js"; + import { useEvaluatedMetricsAndAttributes } from "./useEvaluatedMetricsAndAttributes.js"; export function useEvaluatedReferences( diff --git a/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts b/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts index 2a6f1cd556d..71504c309d6 100644 --- a/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts +++ b/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts @@ -10,6 +10,7 @@ import { type ISeparators, type IdentifierRef, areObjRefsEqual } from "@gooddata import { createReference } from "../helpers/references.js"; import { type EvaluatedMetric } from "../hooks/useEvaluatedMetricsAndAttributes.js"; + import { type HtmlNode, REFERENCE_REGEX_MATCH, REFERENCE_REGEX_SPLIT, type TextNode } from "./types.js"; export function rehypeReferences(intl: IntlShape, metrics?: EvaluatedMetric[], separators?: ISeparators) { diff --git a/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx b/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx index 1556b5f07e0..b1a2432cfda 100644 --- a/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx +++ b/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx @@ -11,6 +11,7 @@ import { } from "react"; import { handleOnScrollEvent } from "../utils/scroll.js"; + import { ScrollContext, type isElementInvisibleType } from "./ScrollContext.js"; /** diff --git a/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx b/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx index 49abbb3d722..21ec18d34f7 100644 --- a/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx +++ b/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { Button } from "../Button/Button.js"; + import { type ActionType, type ISettingItem } from "./typings.js"; const DEFAULT_ALIGN_POINT_TITLE_TOOLTIP = [{ align: "cr cl" }, { align: "bl tl" }, { align: "bc tc" }]; diff --git a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx index 6ddeafb58f5..db6dd834799 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx @@ -12,6 +12,7 @@ import { type IStylingPickerItem, type StylingPickerItemContent, } from "../../Dialog/StylingEditorDialog/StylingEditorDialog.js"; + import { StylingSettingList } from "./StylingSettingList.js"; import { StylingSettingListItem } from "./StylingSettingListItem.js"; diff --git a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx index 6da2d603953..e289aaf6926 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx @@ -9,6 +9,7 @@ import { type IStylingPickerItem, type StylingPickerItemContent, } from "../../Dialog/StylingEditorDialog/StylingEditorDialog.js"; + import { StylingSettingListItem } from "./StylingSettingListItem.js"; interface IStylingSettingListProps { diff --git a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx index b83567a31b5..6d9b2f28105 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx @@ -23,6 +23,7 @@ import { Header } from "../Header.js"; import { Separator } from "../Separator.js"; import { SettingWidget } from "../SettingWidget.js"; import { Title } from "../Title.js"; + import { StylingSettingBody } from "./StylingSettingBody.js"; /** diff --git a/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx b/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx index 029f3bacb16..31f08ba192d 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx @@ -6,6 +6,7 @@ import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { type ArrowOffset } from "../Bubble/typings.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { ALIGN_POINTS, ARROW_OFFSETS } from "./constants.js"; /** diff --git a/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx b/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx index fd846f59dd7..ce036070c48 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx @@ -12,6 +12,7 @@ import { type IStylingSettingWidgetProps, StylingSettingWidget, } from "../StylingSettingWidget/StylingSettingWidget.js"; + import { customItemsMock, defaultItemMock } from "./mocks.js"; vi.mock("../../responsive/useMediaQuery.js", () => ({ diff --git a/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts b/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts index 95f3c1be988..d5d0086c480 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts +++ b/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { getColorsPreviewFromTheme } from "../StylingSettingWidget/utils.js"; + import { customItemsMock, fullyDefinedThemeMock } from "./mocks.js"; describe("getColorsPreviewFromTheme", () => { diff --git a/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx b/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx index c985bfb1860..dd860e4b073 100644 --- a/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx +++ b/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx @@ -22,6 +22,7 @@ import { Dropdown } from "../Dropdown/Dropdown.js"; import { DropdownButton } from "../Dropdown/DropdownButton.js"; import { SingleSelectListItem } from "../List/ListItem.js"; import { type OverlayPositionType } from "../typings/overlay.js"; + import { type SelectedTime } from "./typings.js"; import { HOURS_IN_DAY, TIME_ANCHOR, formatTime, normalizeTime, updateTime } from "./utils/timeUtilities.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx index 44d7e88c3fc..878fa2367ce 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx @@ -16,6 +16,7 @@ import { useIntl } from "react-intl"; import { type ISeparators, IntlWrapper } from "@gooddata/sdk-ui"; import { type IPositioning } from "../typings/positioning.js"; + import { CustomFormatDialog } from "./customFormatDialog/CustomFormatDialog.js"; import { PresetsDropdown } from "./presetsDropdown/PresetsDropdown.js"; import { type IFormatPreset, type IFormatTemplate, type IToggleButtonProps, PresetType } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx index 47dc19e94e3..2ac9523e660 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx @@ -11,6 +11,7 @@ import { Overlay } from "../../Overlay/Overlay.js"; import { type IPositioning, SnapPoint } from "../../typings/positioning.js"; import { positioningToAlignPoints } from "../../utils/positioning.js"; import { type IFormatTemplate } from "../typings.js"; + import { DocumentationLink } from "./DocumentationLink.js"; import { FormatInputWithIntl } from "./FormatInput.js"; import { Preview } from "./previewSection/Preview.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx index b40e9af2688..9fd7418342e 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx @@ -9,6 +9,7 @@ import { type ISeparators } from "@gooddata/sdk-ui"; import { SyntaxHighlightingInput } from "../../syntaxHighlightingInput/SyntaxHighlightingInput.js"; import { type IFormatTemplate } from "../typings.js"; + import { FormatTemplatesDropdown } from "./formatTemplatesDropdown/FormatTemplatesDropdown.js"; type LanguageState = { diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx index 2a33aca535b..92e7f451ca7 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx @@ -6,6 +6,7 @@ import { type ISeparators } from "@gooddata/sdk-ui"; import { Overlay } from "../../../Overlay/Overlay.js"; import { type IFormatTemplate } from "../../typings.js"; + import { DropdownItem } from "./DropdownItem.js"; import { DropdownToggleButton } from "./DropdownToggleButton.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx index 7f8c9448ce0..932ced02311 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx @@ -8,6 +8,7 @@ import { type ISeparators } from "@gooddata/sdk-ui"; import { InputWithNumberFormat } from "../../../Form/InputWithNumberFormat.js"; import { FormattedPreview } from "../shared/FormattedPreview.js"; + import { ExtendedPreview } from "./ExtendedPreview.js"; const DEFAULT_PREVIEW_VALUE = -1234.5678; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx index 23e1e62020a..4f9c90686ed 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx @@ -10,6 +10,7 @@ import { Overlay } from "../../Overlay/Overlay.js"; import { type IPositioning, SnapPoint } from "../../typings/positioning.js"; import { positioningToAlignPoints } from "../../utils/positioning.js"; import { type IFormatPreset } from "../typings.js"; + import { PresetsDropdownItem } from "./PresetsDropdownItem.js"; interface IMeasureNumberFormatDropdownOwnProps { diff --git a/libs/sdk-ui-kit/src/utils/overlay.ts b/libs/sdk-ui-kit/src/utils/overlay.ts index 20837fcee6b..5c16cdeb7e0 100644 --- a/libs/sdk-ui-kit/src/utils/overlay.ts +++ b/libs/sdk-ui-kit/src/utils/overlay.ts @@ -10,6 +10,7 @@ import { type IOptimalAlignment, } from "../typings/overlay.js"; import { type IAlignPoint, type IOffset } from "../typings/positioning.js"; + import { elementRegion } from "./domUtilities.js"; const ALIGN_RATIOS_X: Record = { diff --git a/libs/sdk-ui-loaders/package.json b/libs/sdk-ui-loaders/package.json index e19ede8228d..a8a321943e3 100644 --- a/libs/sdk-ui-loaders/package.json +++ b/libs/sdk-ui-loaders/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-loaders", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK Runtime Component Loaders", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts index 155af313cd4..7e4ba885369 100644 --- a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts +++ b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts @@ -10,6 +10,7 @@ import { type LoadedPlugin, type ModuleFederationIntegration, } from "../types.js"; + import { dynamicDashboardBeforeLoad, dynamicDashboardEngineLoader, diff --git a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts index 8bd47cac01f..1356f4ae984 100644 --- a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts +++ b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts @@ -13,6 +13,7 @@ import { } from "@gooddata/sdk-ui-dashboard"; import { type LoadedPlugin, type ModuleFederationIntegration } from "../types.js"; + import { determineDashboardEngine } from "./determineDashboardEngine.js"; interface IEntryPoint { diff --git a/libs/sdk-ui-pivot/package.json b/libs/sdk-ui-pivot/package.json index 9db866a75a7..29d447bc4f0 100644 --- a/libs/sdk-ui-pivot/package.json +++ b/libs/sdk-ui-pivot/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pivot", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Pivot Table", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-pivot/src/impl/base/agUtils.ts b/libs/sdk-ui-pivot/src/impl/base/agUtils.ts index aee390d9359..276b5377b01 100644 --- a/libs/sdk-ui-pivot/src/impl/base/agUtils.ts +++ b/libs/sdk-ui-pivot/src/impl/base/agUtils.ts @@ -4,6 +4,7 @@ import { type ColDef, type Column, type ColumnResizedEvent } from "ag-grid-commu import { ColumnEventSourceType } from "../../columnWidths.js"; import { agColId } from "../structure/tableDescriptorTypes.js"; + import { COLUMN_SUBTOTAL, COLUMN_TOTAL, MEASURE_COLUMN } from "./constants.js"; /* diff --git a/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts b/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts index 31651beef6d..3af2a3e7387 100644 --- a/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts +++ b/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts @@ -13,6 +13,7 @@ import { type IGridRow } from "../data/resultTypes.js"; import { isCellDrillable } from "../drilling/cellDrillabilityPredicate.js"; import { isRootCol, isSeriesCol } from "../structure/tableDescriptorTypes.js"; import { type TableFacade } from "../tableFacade.js"; + import { getCellClassNames, getColumnTotalOrSubTotalInfo } from "./cellUtils.js"; export type CellClassProvider = (cellClassParams: CellClassParams) => string; diff --git a/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts b/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts index 86ec728ed2f..38da611bfb9 100644 --- a/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts +++ b/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts @@ -11,6 +11,7 @@ import { type MeasureGroupDimension, } from "../../publicTypes.js"; import { type ICorePivotTableState } from "../../tableState.js"; + import { checkIsColumnAutoresizeEnabled, checkIsGrowToFitEnabled, diff --git a/libs/sdk-ui-pivot/src/impl/data/dataSource.ts b/libs/sdk-ui-pivot/src/impl/data/dataSource.ts index 80522e13c43..a51a93fb438 100644 --- a/libs/sdk-ui-pivot/src/impl/data/dataSource.ts +++ b/libs/sdk-ui-pivot/src/impl/data/dataSource.ts @@ -22,6 +22,7 @@ import { type ColumnHeadersPosition } from "../../publicTypes.js"; import { COLS_PER_PAGE } from "../base/constants.js"; import { type OnExecutionTransformed, type OnTransformedExecutionFailed } from "../privateTypes.js"; import { TableDescriptor } from "../structure/tableDescriptor.js"; + import { areTotalsChanged, isInvalidGetRowsRequest } from "./dataSourceUtils.js"; import { createAgGridPage } from "./rowFactory.js"; import { GroupingProviderFactory, type IGroupingProvider } from "./rowGroupingProvider.js"; diff --git a/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts b/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts index eb17ba239c6..c65f3ee3238 100644 --- a/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts +++ b/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts @@ -6,6 +6,7 @@ import { isEqual } from "lodash-es"; import { type IDimension } from "@gooddata/sdk-model"; import { COLUMN_SUBTOTAL, COLUMN_TOTAL, ROW_SUBTOTAL, ROW_TOTAL } from "../base/constants.js"; + import { type IGridTotalsRow } from "./resultTypes.js"; export function areTotalsChanged(gridApi: GridApi | undefined, newTotals: IGridTotalsRow[] | null): boolean { diff --git a/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts b/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts index 9da2ed679fe..e440838dde8 100644 --- a/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts @@ -37,6 +37,7 @@ import { type ISliceMeasureCol, isSeriesCol, } from "../structure/tableDescriptorTypes.js"; + import { getSubtotalStyles } from "./dataSourceUtils.js"; import { type IAgGridPage, type IGridRow, type IGridTotalsRow } from "./resultTypes.js"; diff --git a/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts b/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts index 06a6b7ff9bc..dd57888562f 100644 --- a/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts +++ b/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { GroupingProviderFactory, type IGroupingProvider } from "../rowGroupingProvider.js"; + import { noAttributesTwoMeasures, oneAttributeTwoMeasures, diff --git a/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts b/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts index 72947eccb77..02dc89336ed 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts @@ -10,6 +10,7 @@ import { import { type ColumnHeadersPosition } from "../../publicTypes.js"; import { type IGridRow } from "../data/resultTypes.js"; import { type AnyCol } from "../structure/tableDescriptorTypes.js"; + import { createDrillHeaders } from "./colDrillHeadersFactory.js"; export function isCellDrillable( diff --git a/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts b/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts index 32efa6cab6a..36d50a62667 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts @@ -18,6 +18,7 @@ import { isSeriesCol, isSliceCol, } from "../structure/tableDescriptorTypes.js"; + import { createDataColLeafHeaders, createMixedValuesColHeaders, diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts index 3f2881f2d96..c1f152558ba 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts @@ -7,6 +7,7 @@ import { ReferenceData } from "@gooddata/reference-workspace"; import { type IGridRow } from "../../data/resultTypes.js"; import { type AnyCol } from "../../structure/tableDescriptorTypes.js"; import { createDrillHeaders } from "../colDrillHeadersFactory.js"; + import { TwoMeasuresWithTwoRowAndTwoColumnAttributesDescriptor, createTestRow } from "./drilling.fixture.js"; describe("createDrillHeaders", () => { diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts index f4f6462ef99..18a21ad54e9 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts @@ -7,6 +7,7 @@ import { ReferenceData } from "@gooddata/reference-workspace"; import { type IGridRow } from "../../data/resultTypes.js"; import { type AnyCol } from "../../structure/tableDescriptorTypes.js"; import { createDrillIntersection } from "../drillIntersectionFactory.js"; + import { TwoMeasuresWithTwoRowAndTwoColumnAttributesDescriptor, createTestRow } from "./drilling.fixture.js"; describe("createDrillIntersection", () => { diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts index 5a6ce12e012..c2d64973363 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { getAvailableDrillTargets } from "../drillTargets.js"; + import { OneMeasureAndRepeatingRowAttributesOnDifferentPositions, TwoMeasuresWithTwoRowAndTwoColumnAttributes, diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts index ff83e468c39..faba142d111 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { ReferenceData } from "@gooddata/reference-workspace"; import { createDrilledRow } from "../drilledRowFactory.js"; + import { TwoMeasuresWithTwoRowAndTwoColumnAttributesDescriptor, createTestRow } from "./drilling.fixture.js"; describe("createDrilledRow", () => { diff --git a/libs/sdk-ui-pivot/src/impl/gridOptions.ts b/libs/sdk-ui-pivot/src/impl/gridOptions.ts index 9b5c35f9419..4ea2571660a 100644 --- a/libs/sdk-ui-pivot/src/impl/gridOptions.ts +++ b/libs/sdk-ui-pivot/src/impl/gridOptions.ts @@ -3,6 +3,7 @@ import { type FocusGridInnerElementParams } from "ag-grid-community"; import { type ICorePivotTableProps } from "../publicTypes.js"; + import { COLUMN_ATTRIBUTE_COLUMN, COLUMN_SUBTOTAL, diff --git a/libs/sdk-ui-pivot/src/impl/privateTypes.ts b/libs/sdk-ui-pivot/src/impl/privateTypes.ts index ceb1992d38a..ab42e2a51a4 100644 --- a/libs/sdk-ui-pivot/src/impl/privateTypes.ts +++ b/libs/sdk-ui-pivot/src/impl/privateTypes.ts @@ -33,6 +33,7 @@ import { type IMenu, type MeasureGroupDimension, } from "../publicTypes.js"; + import { type IScrollPosition } from "./stickyRowHandler.js"; export interface IMenuAggregationClickConfig { diff --git a/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts b/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts index ede8e8fdd38..ceff91a5ab3 100644 --- a/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts +++ b/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts @@ -27,6 +27,7 @@ import { getMaxWidthCached, getUpdatedColumnDefs, } from "../columnSizing.js"; + import { ColumnOnlyResultDescriptor, SingleMeasureWithRowAttributeDescriptor, diff --git a/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts b/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts index 21bad778c6b..15dad51f662 100644 --- a/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts +++ b/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts @@ -14,6 +14,7 @@ import { } from "../../../columnWidths.js"; import { TableDescriptor } from "../../structure/tableDescriptor.js"; import { MANUALLY_SIZED_MAX_WIDTH, updateColumnDefinitionsWithWidths } from "../columnSizing.js"; + import { TwoMeasuresWithRowAttribute, TwoMeasuresWithTwoRowAndTwoColumnAttributes, diff --git a/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts b/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts index 99f383df6af..a49c704417e 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts @@ -20,6 +20,7 @@ import { ROW_ATTRIBUTE_COLUMN, ROW_MEASURE_COLUMN, } from "../base/constants.js"; + import { attributeSortMatcher, measureSortMatcher } from "./colSortItemMatching.js"; import { ColumnTotalGroupHeader } from "./headers/ColumnTotalGroupHeader.js"; import { diff --git a/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts b/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts index cf2edb8eb73..7a55799b8ba 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts @@ -8,6 +8,7 @@ import { isResultTotalHeader } from "@gooddata/sdk-model"; import { type ICorePivotTableProps } from "../../publicTypes.js"; import { COLUMN_ATTRIBUTE_COLUMN, COLUMN_SUBTOTAL, COLUMN_TOTAL } from "../base/constants.js"; import { type TableFacade } from "../tableFacade.js"; + import { type TableDescriptor } from "./tableDescriptor.js"; import { type AnyCol, diff --git a/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts b/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts index c44efb4ef6f..128a5de21e3 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts @@ -12,6 +12,7 @@ import { cellClassFactory } from "../cell/cellClass.js"; import { createCellRenderer } from "../cell/cellRenderer.js"; import { getMeasureCellFormattedValue, getMeasureCellStyle } from "../cell/cellUtils.js"; import { type TableFacade } from "../tableFacade.js"; + import { headerClassFactory } from "./colDefHeaderClass.js"; import { ColumnTotalHeader } from "./headers/ColumnTotalHeader.js"; import { MixedValuesColumnHeader } from "./headers/MixedValuesColumnHeader.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts b/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts index feb0a6344f9..b9ab6d0aeea 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts @@ -17,6 +17,7 @@ import { type IMeasureColumnLocator, type ITotalColumnLocator, } from "../../columnWidths.js"; + import { type LeafDataCol, type TransposedMeasureDataCol, isScopeCol } from "./tableDescriptorTypes.js"; function createAttributeLocator( diff --git a/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts b/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts index d12c93f60c1..ea043268688 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts @@ -10,6 +10,7 @@ import { isMeasureColumnLocator, isTotalColumnLocator, } from "../../columnWidths.js"; + import { colMeasureLocalId } from "./colAccessors.js"; import { type DataCol, diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx index 946b1640159..6eaed59e8d6 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx @@ -37,6 +37,7 @@ import { isSliceCol, isSliceMeasureCol, } from "../tableDescriptorTypes.js"; + import { getAttributeDescriptorsLocalId, getTotalsForAttributeHeader, diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx index 9e43a34e246..7a5d2d7e0ca 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx @@ -10,6 +10,7 @@ import { ItemsWrapper, SubMenu } from "@gooddata/sdk-ui-kit"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; import { tableHasColumnAttributes, tableHasRowAttributes } from "../../utils.js"; + import { type IColumnTotal } from "./aggregationsMenuTypes.js"; import { AggregationsSubMenuItems } from "./AggregationsSubMenuItems.js"; import { ColumnsHeaderIcon } from "./subMenuIcons/ColumnsIcon.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx index 0212eca16ca..6a01fb982ca 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx @@ -14,6 +14,7 @@ import { import { Header, Item } from "@gooddata/sdk-ui-kit"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; + import { isTotalEnabledForSubMenuAttribute } from "./aggregationsMenuHelper.js"; import { type IColumnTotal } from "./aggregationsMenuTypes.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx index eed1d3cc186..8750d41bbf9 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx @@ -4,6 +4,7 @@ import { type IHeaderGroupParams } from "ag-grid-community"; import { type IMenu } from "../../../publicTypes.js"; import { agColId } from "../tableDescriptorTypes.js"; + import { ALIGN_LEFT, HeaderCell, type ICommonHeaderParams } from "./HeaderCell.js"; export interface IProps extends ICommonHeaderParams, IHeaderGroupParams { diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx index d4dfff52e6f..cd2a222168c 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx @@ -16,6 +16,7 @@ import { isSliceCol, isSliceMeasureCol, } from "../tableDescriptorTypes.js"; + import { ALIGN_LEFT, ALIGN_RIGHT, HeaderCell, type ICommonHeaderParams } from "./HeaderCell.js"; export interface IColumnHeaderProps extends ICommonHeaderParams, IHeaderParams { diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx index 132be62d90a..9b0a5d515c6 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx @@ -6,6 +6,7 @@ import { type IHeaderParams } from "ag-grid-community"; import { type IMenu } from "../../../publicTypes.js"; import { isEmptyScopeCol, isSliceCol } from "../tableDescriptorTypes.js"; + import { ALIGN_LEFT, ALIGN_RIGHT, HeaderCell, type ICommonHeaderParams } from "./HeaderCell.js"; export interface IColumnHeaderProps extends ICommonHeaderParams, IHeaderParams { diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx index 3d2ba9ff840..798a0431140 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx @@ -12,6 +12,7 @@ import { type IMenu } from "../../../publicTypes.js"; import { AVAILABLE_TOTALS, HEADER_LABEL_CLASS } from "../../base/constants.js"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; import { type TableDescriptor } from "../tableDescriptor.js"; + import { AggregationsMenu } from "./AggregationsMenu.js"; export type AlignPositions = "left" | "right" | "center"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts b/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts index ab6eb83d6e4..8b2b504b1c1 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts @@ -11,6 +11,7 @@ import { import { AVAILABLE_TOTALS } from "../../base/constants.js"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; + import { type IColumnTotal } from "./aggregationsMenuTypes.js"; function getTotalsForMeasureAndType(totals: ITotal[], type: TotalType, measureLocalIdentifier: string) { diff --git a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts index dd0e2b7be53..e86ca35b4fc 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts @@ -20,6 +20,7 @@ import { type ISliceMeasureColumnWidthItem, } from "../../columnWidths.js"; import { type IPivotTableConfig } from "../../publicTypes.js"; + import { searchForLocatorMatch, searchForTransposedLocatorMatch } from "./colLocatorMatching.js"; import { createSortItemForCol } from "./colSortItemFactory.js"; import { createHeadersAndColDefs } from "./tableDescriptorFactory.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts index fc16b5e1126..40795fd7b2c 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts @@ -15,6 +15,7 @@ import { type DataViewFacade, getTotalInfo } from "@gooddata/sdk-ui"; import { type IPivotTableConfig } from "../../publicTypes.js"; import { getDataViewSeriesDescriptors } from "../utils.js"; + import { createColDefsFromTableDescriptor } from "./colDefFactory.js"; import { type AnyCol, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts index 210d2f4db6b..3b841c0ba77 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { createColumnLocator, createTransposedColumnLocator } from "../colLocatorFactory.js"; import { TableDescriptor } from "../tableDescriptor.js"; import { type IScopeCol } from "../tableDescriptorTypes.js"; + import { MultipleMeasuresAndNoColumnsWithMetricsInRows, SingleMeasureWithRowAttribute, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts index d554e6c7fa1..b74a3ec965e 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts @@ -12,6 +12,7 @@ import { } from "../../../columnWidths.js"; import { searchForLocatorMatch, searchForTransposedLocatorMatch } from "../colLocatorMatching.js"; import { createHeadersAndColDefs } from "../tableDescriptorFactory.js"; + import { MultipleMeasuresAndNoColumnsWithMetricsInRows, SingleColumn, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts index bde6e05192a..899ed108b1a 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { createSortItemForCol } from "../colSortItemFactory.js"; import { TableDescriptor } from "../tableDescriptor.js"; + import { SingleMeasureWithColumnAttribute, SingleMeasureWithRowAttribute, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts index 08278a56911..b19a0c6733b 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts @@ -7,6 +7,7 @@ import { ReferenceMd } from "@gooddata/reference-workspace"; import { newWidthForAttributeColumn } from "../../../columnWidths.js"; import { TableDescriptor } from "../tableDescriptor.js"; import { type IScopeCol, type ISeriesCol } from "../tableDescriptorTypes.js"; + import { SingleAttribute, SingleColumn, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts index e3e9a9ecf50..3320fe11fa5 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts @@ -6,6 +6,7 @@ import { describe, expect, it } from "vitest"; import { type DataViewFacade } from "@gooddata/sdk-ui"; import { createHeadersAndColDefs } from "../tableDescriptorFactory.js"; + import { SingleAttribute, SingleColumn, diff --git a/libs/sdk-ui-pivot/src/impl/tableFacade.ts b/libs/sdk-ui-pivot/src/impl/tableFacade.ts index 41984b6b37c..06801ee88f6 100644 --- a/libs/sdk-ui-pivot/src/impl/tableFacade.ts +++ b/libs/sdk-ui-pivot/src/impl/tableFacade.ts @@ -16,6 +16,7 @@ import { import { type IResizedColumns, UIClick } from "../columnWidths.js"; import { type ICorePivotTableProps, type IPivotTableConfig } from "../publicTypes.js"; + import { getHeaderHeight } from "./base/agApiWrapper.js"; import { setColumnMaxWidth, setColumnMaxWidthIf } from "./base/agColumnWrapper.js"; import { agColIds, isMeasureColumn, isMeasureOrAnyColumnTotal } from "./base/agUtils.js"; diff --git a/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts b/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts index e201cb26e4d..59ce178a956 100644 --- a/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts +++ b/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts @@ -12,6 +12,7 @@ import { import { DataViewFacade, convertError } from "@gooddata/sdk-ui"; import { type ICorePivotTableProps } from "../publicTypes.js"; + import { COLS_PER_PAGE } from "./base/constants.js"; import { getAvailableDrillTargets } from "./drilling/drillTargets.js"; import { diff --git a/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx b/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx index db0fea91b7e..aead44b5d5b 100644 --- a/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx +++ b/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx @@ -4,6 +4,7 @@ import { type CSSProperties, type ReactNode, useMemo } from "react"; import { useTableReady } from "../context/TableReadyContext.js"; import { useInitialAutoResizeVisibility } from "../hooks/resizing/useInitialAutoResizeVisibility.js"; + import { LoadingComponent } from "./LoadingComponent.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx b/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx index 5ae90ee7ca3..e7550be3e0f 100644 --- a/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx @@ -19,6 +19,7 @@ import { getPivotCellTestIdPropsFromCellTypes, } from "../../testing/dataTestIdGenerators.js"; import { type CellTypes } from "../../types/cellRendering.js"; + import { ImageCell } from "./ImageCell.js"; const IMAGE_LABEL_TYPE: AttributeDisplayFormType = "GDC.image"; diff --git a/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx index 9d5d023f395..b22534c6941 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx @@ -13,6 +13,7 @@ import { getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js"; import { type AgGridColumnDef, type AgGridHeaderParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { SortIndicator } from "./SortIndicator.js"; diff --git a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx index f1af457de68..6e289f3c485 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx @@ -6,6 +6,7 @@ import { e } from "../../features/styling/bem.js"; import { useHeaderCellAriaLabel } from "../../hooks/header/useHeaderCellAriaLabel.js"; import { useHeaderMenu } from "../../hooks/header/useHeaderMenu.js"; import { type AgGridHeaderParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx index 7fa4485be94..d07e2de9579 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx @@ -4,6 +4,7 @@ import { useState } from "react"; import { e } from "../../features/styling/bem.js"; import { useHeaderMenu } from "../../hooks/header/useHeaderMenu.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx index 19c02d9d5c8..ee7a5c706b5 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx @@ -22,6 +22,7 @@ import { type ISortingMenuItem, type ITextWrappingMenuItem, } from "../../../types/menu.js"; + import { type AggregationsMenuItemData, HeaderInteractiveItem, diff --git a/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx index dd3f1ecfa1c..042d02216cf 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx @@ -15,6 +15,7 @@ import { type AgGridColumnDef, type AgGridHeaderParams, } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { getColumnMeasureIdentifier, diff --git a/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx index 460c200178e..bfd4fcc6239 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx @@ -17,6 +17,7 @@ import { getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js"; import { type AgGridColumnDef, type AgGridHeaderParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { SortIndicator } from "./SortIndicator.js"; import { diff --git a/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx index a6e82d16d9f..6a7651936da 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx @@ -19,6 +19,7 @@ import { getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js"; import { type AgGridColumnGroupDef, type AgGridHeaderGroupParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { getColumnScope, getPivotAttributeDescriptors, isValueColumnDef } from "./utils/common.js"; diff --git a/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts b/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts index b9beee81740..1fc972a1c8e 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts +++ b/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts @@ -18,6 +18,7 @@ import { type IAggregationsSubMenuItem, type IMenu, } from "../../../types/menu.js"; + import { getPreviousAttributeHeaderName } from "./common.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx b/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx index dc5588605d1..9eaa5b07c54 100644 --- a/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx +++ b/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { useInitialProp } from "@gooddata/sdk-ui/internal"; import { dataViewToColDefs } from "../features/data/dataViewToColDefs.js"; + import { useDrillableItemsRef } from "./DrillableItemsRefContext.js"; import { useInitialExecution } from "./InitialExecutionContext.js"; import { usePivotTableProps } from "./PivotTablePropsContext.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts b/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts index 23d823459ce..732590f8d55 100644 --- a/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts @@ -4,6 +4,7 @@ import { type IAttribute, type ITotal, bucketSetTotals } from "@gooddata/sdk-mod import { addTotalsToDimension } from "../data/executionDefinition/dimensions.js"; import { type IPivotTableExecutionDefinition } from "../data/executionDefinition/types.js"; + import { orderTotals } from "./ordering.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts b/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts index e63ada3af28..985d4cf6b3f 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts @@ -7,6 +7,7 @@ import { type ITableAttributeColumnDefinition } from "@gooddata/sdk-ui"; import { AttributeCell } from "../../components/Cell/AttributeCell.js"; import { type AgGridColumnDef } from "../../types/agGrid.js"; import { HEADER_CELL_CLASSNAME } from "../styling/bem.js"; + import { extractIntlFormattedValue } from "./shared.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/columns/colId.ts b/libs/sdk-ui-pivot/src/next/features/columns/colId.ts index 8b6675b5549..677704230de 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/colId.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/colId.ts @@ -4,6 +4,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { AG_GRID_PIVOT_RESULT_FIELD_SEPARATOR } from "../../constants/agGridDefaultProps.js"; import { type ColumnHeadersPosition } from "../../types/transposition.js"; + import { columnDefinitionToColDefIdentifiers } from "./colDefIdentifiers.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts b/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts index b93aeb42168..6320649c133 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts @@ -11,6 +11,7 @@ import { createAttributeHeaderColDef } from "../transposition/attributeHeaderCol import { createMeasureGroupHeaderColDef } from "../transposition/measureGroupHeaderColDef.js"; import { createMeasureGroupValueColDef } from "../transposition/measureGroupValueColDef.js"; import { createTotalHeaderColDef } from "../transposition/totalHeaderColDef.js"; + import { createAttributeColDef } from "./attributeColDef.js"; import { columnDefinitionToColId } from "./colId.js"; import { createMeasureColDef } from "./measureColDef.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts b/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts index de5cb6b3b11..17a2b94f6c1 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts @@ -11,6 +11,7 @@ import { MetricCell } from "../../components/Cell/MetricCell.js"; import { type AgGridColumnDef } from "../../types/agGrid.js"; import { getMeasureCellStyle } from "../styling/cell.js"; import { getHeaderCellClassName } from "../styling/headerCell.js"; + import { extractFormattedValue } from "./shared.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts b/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts index 43bbaf2ff32..02bb840bf74 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts @@ -13,6 +13,7 @@ import { type MeasureGroupDimension } from "../../types/transposition.js"; import { applyTotalsToExecutionDef } from "../aggregations/applyTotalsToExecutionDef.js"; import { applySortByToExecutionDef } from "../sorting/applySortByToExecutionDef.js"; import { applyTranspositionToExecutionDef } from "../transposition/applyTranspositionToExecutionDef.js"; + import { applyAttributesToExecutionDef } from "./executionDefinition/attributes.js"; import { DEFAULT_PIVOT_TABLE_EXECUTION_DEFINITION } from "./executionDefinition/constants.js"; import { applyExecConfigToExecutionDef } from "./executionDefinition/execConfig.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts b/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts index cb502e4b4b9..63b65db94ae 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts @@ -29,6 +29,7 @@ import { type ColumnHeadersPosition } from "../../types/transposition.js"; import { handleExportReady } from "../exports/exports.js"; import { getSortModel } from "../sorting/agGridSortingApi.js"; import { sortModelToSortItems } from "../sorting/sortModelToSortItems.js"; + import { agGridSetLoading } from "./agGridLoadingApi.js"; import { dataViewToRowData } from "./dataViewToRowData.js"; import { loadDataView } from "./loadDataView.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts b/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts index e6baab770df..b5f7dc037a3 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts @@ -17,6 +17,7 @@ import { columnDefinitionToColId } from "../columns/colId.js"; import { createColDef } from "../columns/createColDef.js"; import { columnDefsToPivotGroups } from "../pivoting/columnDefsToPivotGroups.js"; import { applyTextWrappingToGroupDef } from "../textWrapping/applyTextWrappingToGroupDef.js"; + import { getTableData } from "./valueFormatter.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts b/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts index 9a95f64833d..103d4173a08 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts @@ -7,6 +7,7 @@ import { type GrandTotalsPosition } from "../../types/grandTotalsPosition.js"; import { type AgGridRowData } from "../../types/internal.js"; import { type ColumnHeadersPosition } from "../../types/transposition.js"; import { columnDefinitionToColId } from "../columns/colId.js"; + import { getTableData } from "./valueFormatter.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts b/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts index e4b7152ba1f..32102074013 100644 --- a/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts +++ b/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts @@ -13,6 +13,7 @@ import { isAgGridColumnGroupDef, } from "../../types/agGrid.js"; import { type AgGridRowData } from "../../types/internal.js"; + import { extractAllColumnMappingHeaders, extractMappingHeadersUpToPosition, diff --git a/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts b/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts index 1f8813b618b..00e36565289 100644 --- a/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts +++ b/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts @@ -11,6 +11,7 @@ import { import { type AgGridColumnDef, type AgGridColumnGroupDef } from "../../types/agGrid.js"; import { type AgGridRowData } from "../../types/internal.js"; + import { extractAllColumnMappingHeaders, extractAllRowMeasureMappingHeaders, diff --git a/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts b/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts index 087f24820b5..f2d38e5943b 100644 --- a/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts +++ b/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts @@ -15,6 +15,7 @@ import { type ColumnHeadersPosition } from "../../types/transposition.js"; import { columnDefinitionToColDefIdentifiers } from "../columns/colDefIdentifiers.js"; import { columnDefinitionToColId } from "../columns/colId.js"; import { getHeaderCellClassName } from "../styling/headerCell.js"; + import { columnDefinitionToHeaderNames } from "./columnDefinitionToHeaderNames.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts b/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts index 3359db07684..d198071bb49 100644 --- a/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts @@ -2,6 +2,7 @@ import { type AgGridColumnDef } from "../../types/agGrid.js"; import { type ColumnWidthItem } from "../../types/resizing.js"; + import { getColumnWidthItemForColumnDefinition } from "./getColumnWidthItemForColumnDefinition.js"; import { getColumnWidthItemValue } from "./getColumnWidthItemValue.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts index a0268efd523..353ce98e303 100644 --- a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts +++ b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts @@ -13,6 +13,7 @@ import { type ITableColumnDefinition, type ITableValueColumnDefinition } from "@ import { newAttributeColumnLocator } from "../../types/locators.js"; import { newWidthForAllColumnsForMeasure, setNewWidthForSelectedColumns } from "../../types/resizing.js"; + import { getColumnWidthItemForColumnDefinition } from "./getColumnWidthItemForColumnDefinition.js"; const ATTRIBUTE_IDENTIFIER = "region"; diff --git a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts index 0aeaf46a0a3..4f5b660f484 100644 --- a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts +++ b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts @@ -3,6 +3,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { type ColumnWidthItem } from "../../types/resizing.js"; + import { createColumnWidthItemForColumnDefinition, createWeakColumnWidthItemForColumnDefinition, diff --git a/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts b/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts index 6c0a691bdd0..f52eb387298 100644 --- a/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts @@ -3,6 +3,7 @@ import { type ISortItem, sortDirection } from "@gooddata/sdk-model"; import { type AgGridColumnDef } from "../../types/agGrid.js"; + import { getSortForColumnDefinition } from "./getSortForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts b/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts index 16d8cdfe1f3..ec239f4a003 100644 --- a/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts +++ b/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts @@ -7,6 +7,7 @@ import { type ISortItem, sortDirection } from "@gooddata/sdk-model"; import { type ColumnHeadersPosition } from "../../../publicTypes.js"; import { type ITableColumnDefinitionByColId } from "../../types/internal.js"; import { columnDefinitionToColId } from "../columns/colId.js"; + import { getSortForColumnDefinition } from "./getSortForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts b/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts index 17fe39fb341..e959c12e8b6 100644 --- a/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts +++ b/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts @@ -5,6 +5,7 @@ import { type SortModelItem } from "ag-grid-enterprise"; import { type ISortItem } from "@gooddata/sdk-model"; import { type ITableColumnDefinitionByColId } from "../../types/internal.js"; + import { createSortForColumnDefinition } from "./createSortForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/styling/cell.ts b/libs/sdk-ui-pivot/src/next/features/styling/cell.ts index adf6001ebe0..4868ce01aa5 100644 --- a/libs/sdk-ui-pivot/src/next/features/styling/cell.ts +++ b/libs/sdk-ui-pivot/src/next/features/styling/cell.ts @@ -36,6 +36,7 @@ import { type CellTypes } from "../../types/cellRendering.js"; import { type AgGridRowData } from "../../types/internal.js"; import { extractAttributeUri, getAttributeColIds, parentsMatch } from "../columns/shared.js"; import { isCellDrillable } from "../drilling/isDrillable.js"; + import { CELL_CLASSNAME, e } from "./bem.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts b/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts index 68c34e74c97..18006c604da 100644 --- a/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts +++ b/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui"; import { type AgGridRowData } from "../../types/internal.js"; + import { e } from "./bem.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts index f973e3b86fd..18f727bdd94 100644 --- a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts @@ -2,6 +2,7 @@ import { type AgGridColumnDef } from "../../types/agGrid.js"; import { type ITextWrapping } from "../../types/textWrapping.js"; + import { allowCellWrappingByColumnDefinition } from "./allowCellWrappingByColumnDefinition.js"; import { getColumnTextWrappingItemForColumnDefinition } from "./getColumnTextWrappingItemForColumnDefinition.js"; import { getPivotGroupTextWrappingItemForColumnDefinition } from "./getPivotGroupTextWrappingItemForColumnDefinition.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts index 3ca9931cec3..c0144254bbe 100644 --- a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts @@ -2,6 +2,7 @@ import { type AgGridColumnGroupDef } from "../../types/agGrid.js"; import { type ITextWrapping } from "../../types/textWrapping.js"; + import { getPivotGroupTextWrappingItemForColumnDefinition } from "./getPivotGroupTextWrappingItemForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts b/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts index 07d9b7b3a26..f17a84d0656 100644 --- a/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts +++ b/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts @@ -3,6 +3,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { type IColumnTextWrappingItem } from "../../types/textWrapping.js"; + import { createColumnTextWrappingItemForColumnDefinition } from "./createColumnTextWrappingItemForColumnDefinition.js"; import { isColumnTextWrappingItemMatch } from "./isColumnTextWrappingItemMatch.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts b/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts index e967abff664..a4283c35f2d 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts @@ -5,6 +5,7 @@ import { type MouseEvent } from "react"; import { type IAttributeDescriptor } from "@gooddata/sdk-model"; import { type AgGridHeaderGroupParams, type AgGridHeaderParams } from "../../types/agGrid.js"; + import { useHeaderDrilling } from "./useHeaderDrilling.js"; import { useHeaderMenuAggregations } from "./useHeaderMenuAggregations.js"; import { useHeaderMenuSorting } from "./useHeaderMenuSorting.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts b/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts index 3e56679e693..6cb34a8b24f 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts @@ -5,6 +5,7 @@ import { useCallback } from "react"; import { UnexpectedSdkError, useDebounce } from "@gooddata/sdk-ui"; import { type AgGridOnColumnResized, type AgGridProps } from "../../types/agGrid.js"; + import { useColumnSizingDefault } from "./useColumnSizingDefault.js"; import { useColumnSizingForAutoResize } from "./useColumnSizingForAutoResize.js"; import { useColumnSizingForFullHorizontalSpace } from "./useColumnSizingForFullHorizontalSpace.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts b/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts index d6df206660e..ef3e887b88a 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts @@ -7,6 +7,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { type AgGridOnColumnResized } from "../../types/agGrid.js"; import { type ColumnWidthItem, newWidthForAttributeColumn } from "../../types/resizing.js"; + import { useManualResize } from "./useManualResize.js"; const { usePivotTablePropsMock } = vi.hoisted(() => ({ diff --git a/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts b/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts index b8f1f5fe2b6..9c0a5c7e19d 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts @@ -8,6 +8,7 @@ import { type AgGridApi, type AgGridColumnDef } from "../../types/agGrid.js"; import { type ITextWrapping } from "../../types/textWrapping.js"; import { useGetAgGridColumns } from "../columns/useGetAgGridColumns.js"; import { useUpdateAgGridColumnDefs } from "../columns/useUpdateAgGridColumnDefs.js"; + import { useUpdateDefaultTextWrapping } from "./useUpdateDefaultTextWrapping.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts b/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts index 2977dd7362f..1930bedb120 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts @@ -9,6 +9,7 @@ import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import { usePivotTableProps } from "../context/PivotTablePropsContext.js"; import { useTableReady } from "../context/TableReadyContext.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { fixRowgroupRoles } from "./useAccessibilityProps.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts index 8e60271a299..117dbbe8483 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { AG_GRID_DEFAULT_PROPS } from "../constants/agGridDefaultProps.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { useColumnSizingProps } from "./resizing/useColumnSizingProps.js"; import { useVirtualColumnAutoResize } from "./resizing/useVirtualColumnAutoResize.js"; import { useAccessibilityModeProps } from "./useAccessibilityProps.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts index 157d6562e57..c5fae8cc27b 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts @@ -14,6 +14,7 @@ import { useRuntimeError } from "../context/RuntimeErrorContext.js"; import { createServerSideDataSource } from "../features/data/createServerSideDataSource.js"; import { getEffectivePageSize, isPaginationEnabled } from "../features/pagination/utils.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { useSetAgGridPivotResultColumns } from "./columns/useSetAgGridPivotResultColumns.js"; import { useInitSizingForEmptyData } from "./resizing/useInitSizingForEmptyData.js"; import { useGrandTotalRows } from "./useGrandTotalRows.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts index 1911e1c8747..18284bff5b1 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts @@ -8,6 +8,7 @@ import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import { type AgGridProps } from "../types/agGrid.js"; import { type AgGridRowData } from "../types/internal.js"; + import { useClearCellSelection } from "./useClearCellSelection.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts b/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts index 120797210c8..5b1ae3986fd 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts @@ -5,6 +5,7 @@ import { useCallback } from "react"; import { agGridSetGrandTotalRows } from "../features/aggregations/agGridAggregationsApi.js"; import { type AgGridApi } from "../types/agGrid.js"; import { type AgGridRowData } from "../types/internal.js"; + import { useAccessibilityConfigOverrides } from "./useAccessibilityProps.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts index 5d5756165a8..71ae3085387 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts @@ -35,6 +35,7 @@ import { type AgGridProps, } from "../types/agGrid.js"; import { type AgGridRowData } from "../types/internal.js"; + import { useSyncDrillableItems } from "./drilling/useSyncDrillableItems.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts index 4068538816a..66341d657b7 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts @@ -12,6 +12,7 @@ import { usePivotTableProps } from "../context/PivotTablePropsContext.js"; import { getSortModel } from "../features/sorting/agGridSortingApi.js"; import { sortModelToSortItems } from "../features/sorting/sortModelToSortItems.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { useSyncSort } from "./sorting/useSyncSort.js"; /** diff --git a/libs/sdk-ui-pluggable-application/package.json b/libs/sdk-ui-pluggable-application/package.json index 5a463e1a1a9..b06d64b2f5a 100644 --- a/libs/sdk-ui-pluggable-application/package.json +++ b/libs/sdk-ui-pluggable-application/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pluggable-application", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK React helpers for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-semantic-search/package.json b/libs/sdk-ui-semantic-search/package.json index 8a9453af9a0..f488900e258 100644 --- a/libs/sdk-ui-semantic-search/package.json +++ b/libs/sdk-ui-semantic-search/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-semantic-search", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK TypeScript & React skeleton", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx b/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx index 964d676be42..037ce49fd9a 100644 --- a/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx +++ b/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx @@ -12,6 +12,7 @@ import { type IUiTreeviewItemProps, UiIcon } from "@gooddata/sdk-ui-kit"; import { semanticSearchItemDate, semanticSearchItemTitle } from "../automation/testIds.js"; import { SearchItem } from "../SearchItem.js"; import { getAriaLabel } from "../utils/getAriaLabel.js"; + import { GroupResultCounter } from "./GroupResultCounter.js"; import { SearchItemDetails } from "./SearchItemDetails.js"; import { SearchItemIcon } from "./SearchItemIcon.js"; diff --git a/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx b/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx index f773a4d62cc..41e5c506193 100644 --- a/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx +++ b/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx @@ -3,6 +3,7 @@ import { FormattedMessage } from "react-intl"; import { semanticSearchNoResults } from "../automation/testIds.js"; + import { type IErrorMessageProps, getErrorMessage } from "./errorMessage.js"; export interface ISearchNoResults { diff --git a/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx b/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx index 38f4bce145b..e34aced3ee2 100644 --- a/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx +++ b/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx @@ -37,6 +37,7 @@ import { useSearchIds } from "../hooks/useSearchIds.js"; import { useSemanticSearch } from "../hooks/useSemanticSearch.js"; import { useSearchKeyboard } from "../hooks/usSearchKeyboard.js"; import { IntlWrapper } from "../localization/IntlWrapper.js"; + import { ALLOWED_RELATIONSHIP_TYPES_FOR_VIEWER } from "./allowedRelationshipTypes.js"; import { HistorySearchTreeView } from "./HistorySearchTreeView.js"; import { buildSemanticSearchTreeViewItems } from "./itemsBuilder.js"; diff --git a/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts b/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts index 802037d3210..5a576dcc5e1 100644 --- a/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts +++ b/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts @@ -7,6 +7,7 @@ import type { ISemanticSearchRelationship, ISemanticSearchResultItem } from "@go import { thresholdFilter } from "../filters/items.filters.js"; import { getUIPath } from "../utils/getUIPath.js"; import { getItemRelationships, isItemLocked, isRelationshipLocked } from "../utils/searchItem.js"; + import { type SearchTreeViewItem } from "./LeveledSearchTreeView.js"; type BuildSearchOverlayItemsProps = { diff --git a/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js b/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js index c4319841b53..a4728e7dd08 100644 --- a/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js +++ b/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js @@ -18,6 +18,7 @@ import { TIGER_FIXTURE_METADATA_EXTENSIONS, } from "../constant.js"; import { exportCatalogTiger } from "../export_catalog.js"; + import { retryOperation } from "./utils.js"; const childWSOutputFile = TIGER_CHILD_WORKSPACE_FIXTURE_CATALOG["goodsales"]; diff --git a/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js b/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js index 47903202dbb..8269ca13b3d 100644 --- a/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js +++ b/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js @@ -6,6 +6,7 @@ import fs from "fs"; import { deleteTigerWorkspace, log } from "@gooddata/fixtures"; import { TIGER_CHILD_WORKSPACE_FIXTURE_CATALOG } from "../constant.js"; + import { deleteVariableFromEnv } from "./delete_helper.js"; import { retryOperation } from "./utils.js"; import "../scripts/env.js"; diff --git a/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js b/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js index c54f91ccb5a..0a8bbb0fab9 100644 --- a/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js +++ b/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js @@ -6,6 +6,7 @@ import { exportTigerFixtureExtension, logLn } from "@gooddata/fixtures"; import { TIGER_FIXTURE_METADATA_EXTENSIONS } from "../constant.js"; import { exportCatalogTiger } from "../export_catalog.js"; + import { runOxfmtOnFile } from "./prettierUtils.js"; async function main() { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts index 66d79bbd21e..aa6eb9d0c84 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts @@ -4,6 +4,7 @@ import { type IBucketChartProps, type ILegendConfig } from "@gooddata/sdk-ui-cha import { type UnboundVisProps } from "../../../scenario.js"; import { type CustomizedScenario } from "../../../scenarioGroup.js"; + import { type IResponsiveSize } from "./responsiveScenarios.js"; export const legendResponsiveSizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx index 618dd07c670..91a2402ae96 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx @@ -4,6 +4,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartWithTwoMeasuresAndViewBy } from "./base.js"; export const axisCustomization = scenariosFor("AreaChart", AreaChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx index 6eddf01d8c1..cfabc49d5e3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx @@ -5,6 +5,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartWithTwoMeasuresAndViewBy } from "./base.js"; export const coloring = scenariosFor("AreaChart", AreaChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx index f3678e400da..1f5e2390e9d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { AreaChartWithLotArithmeticMeasuresAndViewBy, AreaChartWithManyDataPoints, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx index 6a9f1bce218..e665f362611 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx @@ -4,6 +4,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartViewByDate, AreaChartWithTwoMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx index 77c03a9850a..5153010f7f9 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx @@ -4,6 +4,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartWithTwoMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("AreaChart", AreaChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts index 563579f7d74..5d480d7dedf 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts @@ -8,6 +8,7 @@ import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { axisRotationVariants } from "../_infra/axisRotationVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithArithmeticMeasuresAndViewBy, BarChartWithTwoMeasuresAndTwoViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx index cba3bab45fc..a08238dace5 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx @@ -10,6 +10,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { BarChartViewByDateAndPop, BarChartWithSingleMeasureViewByAndStackBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx index 194de808adb..cee89fb62ce 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BarChartWithLargeLegend, BarChartWithSingleMeasureAndViewByAndStackMultipleItems, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx index 6ba652eb3fb..88dc0897548 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx @@ -7,6 +7,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { AttributeElements } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithSingleMeasureAndTwoViewByAndStack, BarChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx index 547b1a37af2..cd418719abe 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx @@ -4,6 +4,7 @@ import { BarChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BarChartWithSingleMeasureViewByAndStackBy } from "./base.js"; const sizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts index 403d044b2e9..4eef6fa3973 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts @@ -6,6 +6,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithArithmeticMeasuresAndViewBy, BarChartWithTwoMeasuresAndTwoViewBy } from "./base.js"; export const reversedStacking = scenariosFor("BarChart", BarChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx index 8764505bf53..ef03bb70c5e 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx @@ -6,6 +6,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithArithmeticMeasuresAndViewBy, BarChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx index 3c2d9ca287e..a40c4b78bd3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx @@ -4,6 +4,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithSingleMeasureViewByAndStackBy } from "./base.js"; export const theming = scenariosFor("BarChart", BarChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts index ee8f944ebcc..ecf99216f14 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts @@ -5,6 +5,7 @@ import { BubbleChart, type IBubbleChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; const singleAxisNameConfig = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx index 731bf2a3a74..8d30bc1fad9 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; const colorsAndPalette = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx index 1861b9fbb21..5e4d3b4dca5 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; const legendScenarios = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx index 7b63afda468..fe686d0e9cc 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx @@ -4,6 +4,7 @@ import { BubbleChart, type IBubbleChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; export const singleSeries = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx index 5c884b93127..d0b3ebdacc3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx @@ -4,6 +4,7 @@ import { BubbleChart, type IBubbleChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; export const theming = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts index 2e9c273b75c..c69c221bc59 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts @@ -5,6 +5,7 @@ import { BulletChart, type IBulletChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const singleAxisNameConfig = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx index ce42df7df02..28159b55ab1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx @@ -9,6 +9,7 @@ import { BlackColor, CustomColorPalette, RedColor } from "../../_infra/colors.js import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx index 49f98880200..b51b7f22679 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const legendScenarios = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx index 6d81e3bcbf8..95f6d421cf9 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx @@ -5,6 +5,7 @@ import { BulletChart, type IBulletChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { AttributeElements } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BulletChartWithAllMeasuresAndTwoViewBy, BulletChartWithAllMeasuresAndViewBy } from "./base.js"; export const drilling = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx index 3a7accb9ab1..4d94030ad29 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx @@ -5,6 +5,7 @@ import { BulletChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const sizeVariantsSimple: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx index dc742ffce8a..a633ce966ee 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx @@ -4,6 +4,7 @@ import { BulletChart, type IBulletChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts index ec2873af9af..b7768f86c61 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts @@ -7,6 +7,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithArithmeticMeasuresAndViewBy, ColumnChartWithTwoMeasuresAndTwoViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx index f767a727cc3..5491dbbad0b 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx @@ -10,6 +10,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { ColumnChartViewByDateAndPop, ColumnChartWithSingleMeasureViewByAndStackBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx index ee2359d1a17..78986767595 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { ColumnChartWithSingleMeasureAndViewByAndStackMultipleItems, ColumnChartWithTwoMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx index cb74b0bc06a..6c1cd427ca1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx @@ -7,6 +7,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { AttributeElements } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithSingleMeasureAndTwoViewByAndStack, ColumnChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx index d906dd59eaa..d0c33fa4fc1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx @@ -5,6 +5,7 @@ import { ColumnChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { ColumnChartWithArithmeticMeasuresAndViewBy } from "./base.js"; const sizeVariantsSimple: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx index b14796d2aae..be4f5a42538 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx @@ -6,6 +6,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithArithmeticMeasuresAndViewBy, ColumnChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx index 016f9b7412c..c8a077f3de8 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx @@ -4,6 +4,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithTwoMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("ColumnChart", ColumnChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts index bf251dcf371..763e3066a80 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts @@ -2,6 +2,7 @@ import { type UnboundVisProps, type VisProps } from "../../../scenario.js"; import { type CustomizedScenario } from "../../../scenarioGroup.js"; + import { type ComboChartTypes } from "./base.js"; const AllExplicitCombinations: ComboChartTypes[][] = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx index e3d5b813419..bba1625f3e6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx @@ -5,6 +5,7 @@ import { ComboChart, type IComboChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { comboVariants } from "./_variants.js"; import { ComboChartWithArithmeticMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx index c702a30590a..a3867745ad8 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, WonMeasurePredicate } from "../../_infra/predic import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { ComboChartWithArithmeticMeasuresAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("ComboChart", ComboChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx index ee4d7e404c1..254a42538cc 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx @@ -15,6 +15,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { ComboChartViewByDate, ComboChartWithManyDataPoints, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx index f294bc9e369..746c8690d5d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx @@ -4,6 +4,7 @@ import { ComboChart, type IComboChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ComboChartWithArithmeticMeasuresAndViewBy, ComboChartWithManyPrimaryAndSecondaryMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx index 44032c507e5..872ae94b490 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx @@ -4,6 +4,7 @@ import { ComboChart, type IComboChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ComboChartWithArithmeticMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("ComboChart", ComboChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx index 9796df5fc25..e80d66016d1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { DependencyWheelChartWithMeasureAttributeFromAndTo } from "./base.js"; const colorsAndPalette = scenariosFor( diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx index 39a3cf64750..d5a3d2243e2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendForceEnabledCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { DependencyWheelChartWithMeasureAndAttributeFrom, DependencyWheelChartWithMeasureAttributeFromAndTo, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx index 0da79cf1ea3..1a4c26b8a24 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx @@ -4,6 +4,7 @@ import { DependencyWheelChart, type IDependencyWheelChartProps } from "@gooddata import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { DependencyWheelChartWithMeasureAttributeFromAndTo } from "./base.js"; export const theming = scenariosFor("DependencyWheelChart", DependencyWheelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx index 6322d2e53c8..148a05c20b7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { DonutChartWithSingleMeasureAndViewBy, DonutChartWithTwoMeasures } from "./base.js"; const colorsAndPalette = scenariosFor("DonutChart", DonutChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx index b637946d31d..fae43a3e9b2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { DonutChartWithSingleMeasureAndViewBy, DonutChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("DonutChart", DonutChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx index 72b11a275fa..de163a4fc35 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx @@ -4,6 +4,7 @@ import { DonutChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { DonutChartWithSingleMeasureAndViewBy } from "./base.js"; const sizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx index 2d0a9474229..c37c1a68e9a 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx @@ -4,6 +4,7 @@ import { DonutChart, type IDonutChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { DonutChartWithSingleMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("DonutChart", DonutChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx index 90afcb8b7d2..e7be62d06bc 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { FunnelChartWithArithmeticMeasures, FunnelChartWithMeasureAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("FunnelChart", FunnelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx index ea5ef888fa4..7cfb12acfa7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx @@ -18,6 +18,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { FunnelChartWithMeasureAndViewBy, FunnelChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("FunnelChart", FunnelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx index 75e9a237169..2e5af2207e6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx @@ -4,6 +4,7 @@ import { FunnelChart, type IFunnelChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { FunnelChartWithMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("FunnelChart", FunnelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx index 2cb41b42ee9..95090954cf6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx @@ -6,6 +6,7 @@ import { Headline, type IHeadlineProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { GermanNumberFormat } from "../../_infra/formatting.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeadlinePositiveComparisonMeasures, comparisonDisabled, comparisonEnabled } from "./comparison.js"; export const HeadlineWithTwoMeasures = { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx index 81048ac223d..441954ce9d1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx @@ -10,6 +10,7 @@ import { WonMeasurePredicate, } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeadlinePositiveComparisonMeasures, comparisonDisabled, comparisonEnabled } from "./comparison.js"; export const drilling = scenariosFor("Headline", Headline) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx index b43d6ef8c13..b703016d97e 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx @@ -5,6 +5,7 @@ import { Heatmap, type IHeatmapProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeatmapWithMeasureRowsAndColumns } from "./base.js"; export const axisCustomization = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx index 3f1f1f80389..0fc409e5f83 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { HeatmapWithMeasureRowsAndColumns } from "./base.js"; const colorsAndPalette = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx index 78b926b4ba9..b29183f9f5d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx @@ -8,6 +8,7 @@ import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { legendResponsiveVariants } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { HeatmapWithMeasureRowsAndColumns } from "./base.js"; const legendScenarios = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx index c348e3fe9c6..9eeb64d7798 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx @@ -4,6 +4,7 @@ import { Heatmap, type IHeatmapProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeatmapWithMeasureRowsAndColumns, HeatmapWithNullDataPoints } from "./base.js"; export const theming = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts index 315178d59c0..4592a9de543 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts @@ -7,6 +7,7 @@ import { type ILineChartProps, LineChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { LineChartTwoMeasuresWithTrendyBy, LineChartWithArithmeticMeasuresAndViewBy } from "./base.js"; const axisConfig = scenariosFor("LineChart", LineChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx index 9e2549f22ee..a3e95fbc827 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { LineChartTwoMeasuresWithTrendyBy } from "./base.js"; const colorsAndPalette = scenariosFor("LineChart", LineChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx index dd373ed7dfe..26981c88f36 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx @@ -14,6 +14,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { LineChartTwoMeasuresWithTrendyBy, LineChartViewByDate, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx index 9b54c80982e..72cdc029ad6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx @@ -5,6 +5,7 @@ import { LineChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { LineChartTwoMeasuresWithTrendyBy } from "./base.js"; const sizeVariantsSimple: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx index 756144a3f60..bbb497ef7a6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx @@ -4,6 +4,7 @@ import { type ILineChartProps, LineChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { LineChartTwoMeasuresWithTrendyBy } from "./base.js"; export const theming = scenariosFor("LineChart", LineChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx index 0f7296ef7e3..1b2399be330 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { PieChartWithSingleMeasureAndViewBy, PieChartWithTwoMeasures } from "./base.js"; const colorsAndPalette = scenariosFor("PieChart", PieChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx index 3f727842fa0..b37cd9b6162 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { PieChartWithSingleMeasureAndViewBy, PieChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("PieChart", PieChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx index 166c5a29fa4..fe7f0fbcb34 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx @@ -4,6 +4,7 @@ import { PieChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { PieChartWithSingleMeasureAndViewBy } from "./base.js"; const sizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx index 8a6c9f149ea..a63529d7f25 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx @@ -4,6 +4,7 @@ import { type IPieChartProps, PieChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { PieChartWithSingleMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("PieChart", PieChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx index a5ac965a8c6..a26354a6d73 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { PyramidChartWithArithmeticMeasures, PyramidChartWithMeasureAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("PyramidChart", PyramidChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx index cb28613fe4b..3705605e46d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { PyramidChartWithMeasureAndViewBy, PyramidChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("PyramidChart", PyramidChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx index 113a873a73e..55c0c798a1b 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx @@ -4,6 +4,7 @@ import { type IPyramidChartProps, PyramidChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { PyramidChartWithMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("PyramidChart", PyramidChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx index 86185fc2a3e..338def1d549 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx @@ -5,6 +5,7 @@ import { type IRepeaterProps, Repeater } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { RepeaterWithOneAttributeAndInlineVisualisation } from "./base.js"; const colorsAndPalette = scenariosFor("Repeater", Repeater) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx index 6013d7de8c0..a2778472e78 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx @@ -5,6 +5,7 @@ import { type IRepeaterProps, Repeater } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { canvasCustomizer } from "../_infra/canvasVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { RepeaterWithOneAttributeAndInlineVisualisation } from "./base.js"; const canvasScenarios = scenariosFor("Repeater", Repeater) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx index 7af92ca150e..64a7b8a6ff8 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx @@ -4,6 +4,7 @@ import { type IRepeaterProps, Repeater } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { RepeaterWithOneAttributeAndInlineVisualisation } from "./base.js"; export const theming = scenariosFor("Repeater", Repeater) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx index 20a036fb7b8..063a27a228d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { SankeyChartWithMeasureAttributeFromAndTo } from "./base.js"; const colorsAndPalette = scenariosFor("SankeyChart", SankeyChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx index 49ac8cdcb23..1776c993543 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendForceEnabledCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { SankeyChartWithMeasureAndAttributeFrom, SankeyChartWithMeasureAttributeFromAndTo } from "./base.js"; const legendScenarios = scenariosFor("SankeyChart", SankeyChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx index 5d4c47e563a..abdade5a8d2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx @@ -4,6 +4,7 @@ import { type ISankeyChartProps, SankeyChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { SankeyChartWithMeasureAttributeFromAndTo } from "./base.js"; export const theming = scenariosFor("SankeyChart", SankeyChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts index 2bb41a501bc..5df10608525 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts @@ -5,6 +5,7 @@ import { type IScatterPlotProps, ScatterPlot } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ScatterPlotWithMeasuresAndAttribute } from "./base.js"; const axisConfig = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx index 17657938eac..e7c80fe168f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { ScatterPlotWithMeasuresAndAttribute, ScatterPlotWithMeasuresAttributeAndSegmentBy } from "./base.js"; const colorsAndPalette = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx index cb52c157601..ae625a76cd7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx @@ -5,6 +5,7 @@ import { type IScatterPlotProps, ScatterPlot } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { dataLabelCustomizer } from "../_infra/dataLabelVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ScatterPlotWithMeasuresAndAttribute } from "./base.js"; const dataLabelScenarios = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx index d4681cd191f..c537b102c78 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx @@ -4,6 +4,7 @@ import { type IScatterPlotProps, ScatterPlot } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ScatterPlotWithMeasuresAndAttribute } from "./base.js"; export const theming = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx index c9afb54fe46..31bc28473fd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { TreemapWithMeasureViewByAndSegmentBy } from "./base.js"; const colorsAndPalette = scenariosFor("Treemap", Treemap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx index 9b5396f98c4..b64f28918e2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { TreemapWithMeasureViewByAndSegmentBy } from "./base.js"; const legendScenarios = scenariosFor("Treemap", Treemap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx index 50d112ab541..d98325826e2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx @@ -4,6 +4,7 @@ import { type ITreemapProps, Treemap } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { TreemapWithMeasureViewByAndSegmentBy } from "./base.js"; export const theming = scenariosFor("Treemap", Treemap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx index 6c022d17f84..7e1e1586c7f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx @@ -8,6 +8,7 @@ import { scenariosFor } from "../../../scenarioGroup.js"; import { BlackColor, CustomColorPalette, CustomPaletteColor, RedColor } from "../../_infra/colors.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { WaterfallChartWithMultiMeasures, WaterfallChartWithSingleMeasureAndViewBy } from "./base.js"; const TotalPredicate = (header: IMappingHeader) => { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx index 071133e9069..885cbb189cb 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendForceEnabledCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { WaterfallChartWithMultiMeasures, WaterfallChartWithSingleMeasureAndViewBy } from "./base.js"; const legendScenarios = scenariosFor("WaterfallChart", WaterfallChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx index f7b6a62fa11..9c9ca3ffd5d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx @@ -4,6 +4,7 @@ import { type IWaterfallChartProps, WaterfallChart } from "@gooddata/sdk-ui-char import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { WaterfallChartWithMultiMeasures, WaterfallChartWithSingleMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("WaterfallChart", WaterfallChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx index 86cc57e7519..17f01b809f3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx @@ -16,6 +16,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoCountryArea = modifyAttribute(ReferenceMd.Country.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx index a5003c6391f..d5d28e6032a 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx @@ -5,6 +5,7 @@ import { GeoPushpinChart, type IGeoPushpinChartProps } from "@gooddata/sdk-ui-ge import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const geoVisualTestConfig = { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx index 73b3b86b724..02e07eef2e3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx @@ -21,6 +21,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoStateArea = modifyAttribute(ReferenceMd.State.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx index 33e40dab7b7..95b44328645 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx @@ -12,6 +12,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const legendPositions: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx index 906fd732db0..30acf7e69cd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx @@ -7,6 +7,7 @@ import { GeoChart, type IGeoChartProps, createAreaLayer, createPushpinLayer } fr import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoStateArea = modifyAttribute(ReferenceMd.State.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx index d23716fd9b0..be4c948fb07 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx @@ -11,6 +11,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoArea = modifyAttribute(ReferenceMd.Country.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx index ae8c1fd817a..5be2fa0d693 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx @@ -4,6 +4,7 @@ import { requestPages } from "@gooddata/mock-handling"; import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleColumn, PivotTableWithSingleMeasureAndTwoRowsAndCols, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx index 9ca2fc398bf..ec1e712aec7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx @@ -7,6 +7,7 @@ import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; import { GermanNumberFormat } from "../_infra/formatting.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols } from "./base.js"; import { PivotTableWithSingleMeasureAndGrandTotal, PivotTableWithTwoMeasuresAndTotals } from "./totals.js"; diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx index 8115db5d6f2..4928dc61161 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx @@ -12,6 +12,7 @@ import { SalesRepPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithTwoMeasuresAndThreeRowsAndTwoCols } from "./base.js"; export const drilling = scenariosFor("PivotTable", PivotTable) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx index 8222028153f..c96cf9ed617 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui-pivot"; import { copyWithModifiedProps, scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx index fb07ef21789..95e2b5741b4 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx @@ -5,6 +5,7 @@ import { newAttributeSort, newMeasureSort } from "@gooddata/sdk-model"; import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx index 2a9f79660aa..9585401d94b 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx @@ -4,6 +4,7 @@ import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols } from "./base.js"; export const theming = scenariosFor("PivotTable", PivotTable) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx index e51c37d6e74..b6e9a812bdd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx @@ -11,6 +11,7 @@ import { import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWighSingleMeasureAndSingleRowColAttr, PivotTableWighTwoMeasureAndSingleRowColAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx index 222eeadcebc..f0862fee97c 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx @@ -14,6 +14,7 @@ import { RegionPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithMeasuresAndColumnOnly, PivotTableWithMeasuresAndColumnsOnly, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx index de661a06e74..efd8e2f6f8f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx @@ -4,6 +4,7 @@ import { requestPages } from "@gooddata/mock-handling"; import { type IPivotTableNextProps, PivotTableNext } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleColumn, PivotTableWithSingleMeasureAndTwoRowsAndCols, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx index 6c5a49dd818..d8ef2c4120e 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx @@ -9,6 +9,7 @@ import { } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithTwoMeasuresAndSingleRowAttr, PivotTableWithTwoMeasuresAndTwoRowsAndCols, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx index dd042496a9f..7516f76b605 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx @@ -12,6 +12,7 @@ import { SalesRepPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithTwoMeasuresAndThreeRowsAndTwoCols } from "./base.js"; export const drilling = scenariosFor("PivotTableNext", PivotTableNext) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx index 4b0737e2b34..8e3451d9acd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui-pivot/next"; import { copyWithModifiedProps, scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx index 10edacb9ad7..f6a90b5609f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx @@ -5,6 +5,7 @@ import { newAttributeSort, newMeasureSort } from "@gooddata/sdk-model"; import { type IPivotTableNextProps, PivotTableNext } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx index 1f8f8eb1b58..40f87a47264 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx @@ -11,6 +11,7 @@ import { import { type IPivotTableNextProps, PivotTableNext } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWighSingleMeasureAndSingleRowColAttr, PivotTableWighTwoMeasureAndSingleRowColAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx index 49ed8c6cc66..54ea4076ccb 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx @@ -14,6 +14,7 @@ import { RegionPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithMeasuresAndColumnOnly, PivotTableWithMeasuresAndColumnsOnly, diff --git a/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx b/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx index bb6c97c5117..eb763264ebf 100644 --- a/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx +++ b/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx @@ -7,6 +7,7 @@ import { isNoDataError } from "@gooddata/sdk-backend-spi"; import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { type IScenario, type VisProps } from "../../src/index.js"; + import { type ChartInteractions, backendWithCapturing } from "./backendWithCapturing.js"; function errorHandler(error: GoodDataSdkError) { diff --git a/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx b/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx index aa7fbb1c497..edbbfd11c38 100644 --- a/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx +++ b/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-ui-ext/internal"; import { type IScenario } from "../../src/index.js"; + import { type ChartInteractions, backendWithCapturing } from "./backendWithCapturing.js"; function createVisualizationClass(insight: IInsightDefinition): IVisualizationClass { diff --git a/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx b/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx index 3b76ee985a1..5f1e29e3b34 100644 --- a/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx +++ b/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx @@ -14,6 +14,7 @@ import { type ChartInteractions } from "../_infra/backendWithCapturing.js"; import { createInsightDefinitionForChart } from "../_infra/insightFactory.js"; import { mountChartAndCaptureNormalized } from "../_infra/render.js"; import { mountInsight } from "../_infra/renderPlugVis.js"; + import { storeDirectoryFor } from "./store.js"; import { readJsonSync, writeAsJsonSync } from "./utils.js"; diff --git a/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile b/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile index 739e63a3f20..29042d188e2 100644 --- a/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile +++ b/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Build the Go app -FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.2-alpine AS builder +FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.3-alpine AS builder WORKDIR /app # Copy Go module files and download dependencies diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx index 93a7b3ca242..83a312e06aa 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx @@ -1,6 +1,7 @@ // (C) 2007-2026 GoodData Corporation import { type IStoryParameters } from "../../_infra/backstopScenario.js"; + import { DialogComponent, dialogContentLoadingState, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx index c43306180d4..d5ea6acd004 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx @@ -2,6 +2,7 @@ import { type IStoryParameters } from "../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../themeWrapper.js"; + import { DialogComponent, dialogContentLoadingState, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx index 22cbae13b7b..62b196c9d63 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx @@ -6,6 +6,7 @@ import { Bubble, BubbleFocusTrigger, BubbleHoverTrigger, Button } from "@gooddat import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; const alignOptions = ["tl", "tc", "tr", "cl", "cc", "cr", "bl", "bc", "br"]; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx index 15edd0db5aa..dec3ca9b483 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx @@ -9,6 +9,7 @@ import { ChartSortingDialog, type IBucketItemDescriptors } from "@gooddata/sdk-u import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { multipleAttributesMultipleMetricsSortConfig, singleAttributeSortConfig, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx index 7638cdf6592..55ab8a67258 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx @@ -18,6 +18,7 @@ import { type IStoryParameters, } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; const DialogExamples = memo(function DialogExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx index 13938bead6b..2a8b8b1d432 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx @@ -8,6 +8,7 @@ import { DialogList } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { itemsMock as items } from "./itemsMock.js"; function Wrapper({ children }: { children?: ReactNode }) { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx index bfd883000d7..1a38f2e2405 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx @@ -12,6 +12,7 @@ import { State, } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { itemsMock as items } from "./itemsMock.js"; import "./styles.scss"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx index 2e702ce3ff4..b4ee0f5c03b 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx @@ -8,6 +8,7 @@ import { CodeArea } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { code } from "./CodeMock.js"; function AreaWrapper({ children }: { children?: ReactNode }) { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx index 1d8f1aa8fd3..f802910e6f9 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx @@ -13,6 +13,7 @@ import { State, } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { code } from "./CodeMock.js"; function EmbedInsightDialogBaseExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx index e461862bfcb..44314061eda 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx @@ -17,6 +17,7 @@ import { import "@gooddata/sdk-ui-kit/styles/css/main.css"; import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { custom, gd } from "./logos.js"; import "./styles.scss"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx index 382c93da070..463a373a5b2 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx @@ -9,6 +9,7 @@ import { LegacyInvertableList, LegacySingleSelectList } from "@gooddata/sdk-ui-k import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; interface IItem { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx index 31649092ea2..6853b392456 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx @@ -4,6 +4,7 @@ import { Header, Item, ItemsWrapper, Separator } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; function ListExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx index e515b9e2fdd..59861d68b0c 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx @@ -15,6 +15,7 @@ import { import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./NestedMenu.scss"; function NestedMenuExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx index 8baf3b307ef..3811fc56944 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx @@ -9,6 +9,7 @@ import { RichText } from "@gooddata/sdk-ui-kit"; import "@gooddata/sdk-ui-kit/styles/css/main.css"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; const placeholder = `# Heading diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx index 17077c19731..ed7e4284dcc 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx @@ -16,6 +16,7 @@ import { AddGranteeBase, ComponentLabelsProvider, type IAffectedSharedObject } f import { BrowserAlias, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { useResetFocus } from "../../../utils/useResetFocus.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { current, defaultUser, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx index af9bb2b8607..d5e7a574e10 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx @@ -14,6 +14,7 @@ import { import "@gooddata/sdk-ui-kit/styles/css/main.css"; import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { current, currentAndOwen, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx index d93bfe0d429..544eed7153e 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx @@ -13,6 +13,7 @@ import { Button, ComponentLabelsProvider, ShareDialogBase } from "@gooddata/sdk- import { type IStoryParameters } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { defaultUser, defaultUserPermissions, owner } from "./GranteeMock.js"; import { LabelsMock } from "./LabelsMock.js"; import "@gooddata/sdk-ui-kit/styles/css/main.css"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx index 324f2599b42..9cac113c3ee 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx @@ -14,6 +14,7 @@ import { import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { defaultUserPermissions, grantees, inactiveUser, owner } from "./GranteeMock.js"; import { LabelsMock } from "./LabelsMock.js"; import "@gooddata/sdk-ui-kit/styles/css/main.css"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx index 7328fb9510f..7f643b34f76 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx @@ -4,6 +4,7 @@ import { ShortenedText } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./ShortenedText.css"; function ShortenedTextExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx index cb8b4988391..988163c2eb2 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx @@ -13,6 +13,7 @@ import { import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { customThemeItems } from "./itemsMock.js"; const emptyMessage = () => ( diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx index bd2ae394ca5..2303852385c 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx @@ -12,6 +12,7 @@ import { indigoDarkTheme, redLightTheme } from "@gooddata/sdk-ui-theme-provider/ import { type IStoryParameters, State } from "../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../themeWrapper.js"; + import tooltipImage from "./assets/tooltip-image.png"; const propCombination = propCombinationsFor({} as IUiTooltipProps); diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx index 219eda43d88..8eadb11cea7 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx @@ -38,6 +38,7 @@ import { createElementCountResolver, } from "../../_infra/ScreenshotReadyWrapper.js"; import { getTheme, wrapWithTheme } from "../themeWrapper.js"; + import "./insightStories.css"; const DefaultSettings: ISettings = { diff --git a/libs/sdk-ui-theme-provider/package.json b/libs/sdk-ui-theme-provider/package.json index be584fd66e8..a75f996aa73 100644 --- a/libs/sdk-ui-theme-provider/package.json +++ b/libs/sdk-ui-theme-provider/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-theme-provider", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Theme provider", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx b/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx index d22d9665971..5249146cdf7 100644 --- a/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx +++ b/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx @@ -7,6 +7,7 @@ import { type ITheme } from "@gooddata/sdk-model"; import { useBackend, useWorkspace } from "@gooddata/sdk-ui"; import { clearCssProperties, setCssProperties } from "../cssProperties.js"; + import { ThemeContextProvider, type ThemeStatus } from "./Context.js"; import { isDarkTheme } from "./isDarkTheme.js"; import { prepareTheme } from "./prepareTheme.js"; diff --git a/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx b/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx index 3a9828ed56a..64a973f0e83 100644 --- a/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx +++ b/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx @@ -7,6 +7,7 @@ import { type ITheme } from "@gooddata/sdk-model"; import { useBackend, useWorkspace } from "@gooddata/sdk-ui"; import { clearCssProperties, setCssProperties } from "../cssProperties.js"; + import { ThemeContextProvider, type ThemeStatus } from "./Context.js"; import { isDarkTheme } from "./isDarkTheme.js"; import { prepareTheme } from "./prepareTheme.js"; diff --git a/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts b/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts index 289644dbee5..077754bfaee 100644 --- a/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts +++ b/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts @@ -9,6 +9,7 @@ import { type ThemeInconsistentCssVariable, type ThemeInternalCssVariable, } from "../types.js"; + import { type CssVariableUsage } from "./types.js"; import { groupByUnique } from "./utils.js"; diff --git a/libs/sdk-ui-vis-commons/package.json b/libs/sdk-ui-vis-commons/package.json index ad96982c614..ff0291f2e59 100644 --- a/libs/sdk-ui-vis-commons/package.json +++ b/libs/sdk-ui-vis-commons/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-vis-commons", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - common functionality for different types of visualizations", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts b/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts index c8ee1f9ad05..8dd6cda850c 100644 --- a/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts +++ b/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts @@ -11,6 +11,7 @@ import { recordedDataFacade } from "../../../testUtils/recordings.js"; import { AttributeColorStrategy } from "../attribute.js"; import { getRgbString } from "../color.js"; import { type IColorMapping } from "../types.js"; + import { getColorsFromStrategy } from "./helper.js"; const RgbPalette: IColorPalette = [ diff --git a/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx b/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx index 989d74080f4..61268e65756 100644 --- a/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx @@ -5,6 +5,7 @@ import { type ReactNode, memo, useState } from "react"; import cx from "classnames"; import { type ChartFillType } from "../coloring/types.js"; + import { calculateFluidLegend } from "./helpers.js"; import { LegendList } from "./LegendList.js"; import { LegendSeries } from "./LegendSeries.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/Legend.tsx b/libs/sdk-ui-vis-commons/src/legend/Legend.tsx index 3fbe0189a4c..337bcafd856 100644 --- a/libs/sdk-ui-vis-commons/src/legend/Legend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/Legend.tsx @@ -10,6 +10,7 @@ import ReactMeasure, { type Rect } from "react-measure"; import { type ITranslationsComponentProps, IntlTranslationsProvider, IntlWrapper } from "@gooddata/sdk-ui"; import { type ChartFillType } from "../coloring/types.js"; + import { FluidLegend } from "./FluidLegend.js"; import { HeatmapLegend } from "./HeatmapLegend.js"; import { type ButtonsOrientationType } from "./Paging.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx b/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx index b2e2a21d864..e9417d5bcc0 100644 --- a/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { useIdPrefixed } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; + import { type ILegendGroup } from "./types.js"; export function LegendGroup({ diff --git a/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx b/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx index 7a47cc913bb..a25805e8b67 100644 --- a/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx @@ -12,6 +12,7 @@ import { withTheme } from "@gooddata/sdk-ui-theme-provider"; import { getDarkerColor, isPatternObject } from "../coloring/color.js"; import { PatternFill } from "../coloring/PatternFill.js"; import { type ChartFillType, type IPatternObject } from "../coloring/types.js"; + import { LegendSeriesContextStore, useItemVisibility } from "./context.js"; import { type ISeriesItemMetric } from "./types.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx b/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx index b9742016396..c4983b93b4b 100644 --- a/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx @@ -3,6 +3,7 @@ import { type ReactElement, memo, useRef } from "react"; import { type ChartFillType } from "../coloring/types.js"; + import { LegendSeriesContextStore } from "./context.js"; import { groupSeries } from "./helpers.js"; import { LegendGroup } from "./LegendGroup.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx b/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx index e536dc01ea8..e1d92dbcad2 100644 --- a/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx @@ -9,6 +9,7 @@ import { useIdPrefixed } from "@gooddata/sdk-ui-kit"; import { type ChartFillType } from "../../coloring/types.js"; import { StaticLegend } from "../StaticLegend.js"; import { type ISeriesItem, type ItemBorderRadiusPredicate } from "../types.js"; + import { LegendDialog } from "./LegendDialog.js"; import { RowLegend } from "./RowLegend.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx b/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx index 0a41b2a68af..9d52a55d851 100644 --- a/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx @@ -5,6 +5,7 @@ import { type ReactElement, type ReactNode, memo, useCallback, useState } from " import cx from "classnames"; import { type ChartFillType } from "../coloring/types.js"; + import { ITEM_HEIGHT, STATIC_PAGING_HEIGHT, calculateStaticLegend } from "./helpers.js"; import { LegendLabelItem } from "./LegendLabelItem.js"; import { LegendList } from "./LegendList.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/helpers.ts b/libs/sdk-ui-vis-commons/src/legend/helpers.ts index ceee8cf9ddf..9b8af4faabc 100644 --- a/libs/sdk-ui-vis-commons/src/legend/helpers.ts +++ b/libs/sdk-ui-vis-commons/src/legend/helpers.ts @@ -6,6 +6,7 @@ import { ClientFormatterFacade } from "@gooddata/number-formatter"; import { type ITheme } from "@gooddata/sdk-model"; import { parseRGBString } from "../coloring/color.js"; + import { LEFT, RIGHT } from "./PositionTypes.js"; import { type IColorLegendItem, diff --git a/libs/sdk-ui-web-components/Dockerfile b/libs/sdk-ui-web-components/Dockerfile index 107dd6d1fb3..b54d9552567 100644 --- a/libs/sdk-ui-web-components/Dockerfile +++ b/libs/sdk-ui-web-components/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Build the Go app -FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.2-alpine AS builder +FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.3-alpine AS builder WORKDIR /app # Copy Go module files and download dependencies diff --git a/libs/sdk-ui/package.json b/libs/sdk-ui/package.json index b0321e7ce8a..3a5378e28fc 100644 --- a/libs/sdk-ui/package.json +++ b/libs/sdk-ui/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Core", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui/src/base/errors/errorHandling.ts b/libs/sdk-ui/src/base/errors/errorHandling.ts index 16ecb82baf6..bb549ca401e 100644 --- a/libs/sdk-ui/src/base/errors/errorHandling.ts +++ b/libs/sdk-ui/src/base/errors/errorHandling.ts @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-backend-spi"; import { isCancelError } from "../react/CancelablePromise.js"; + import { BadRequestSdkError, CancelledSdkError, diff --git a/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts b/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts index b5fcb0583ab..4dfb2b365fe 100644 --- a/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts +++ b/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts @@ -1,6 +1,7 @@ // (C) 2007-2026 GoodData Corporation import { type DataViewFacade } from "../results/facade.js"; + import { type IMappingHeader } from "./MappingHeader.js"; /** diff --git a/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts b/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts index 6480e69d584..ad3deb88fe2 100644 --- a/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts +++ b/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts @@ -23,6 +23,7 @@ import { } from "@gooddata/sdk-model"; import { type DataViewFacade } from "../results/facade.js"; + import { type IHeaderPredicate, type IHeaderPredicateContext } from "./HeaderPredicate.js"; import { type IMappingHeader, diff --git a/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts b/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts index 4a310b30c03..3edceac70c1 100644 --- a/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts +++ b/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts @@ -15,6 +15,7 @@ import { objRefMatch, uriMatch, } from "../HeaderPredicateFactory.js"; + import { attributeDescriptor, attributeHeaderItem, diff --git a/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts b/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts index db356bd8cc3..d60fead195a 100644 --- a/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts +++ b/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts @@ -10,6 +10,7 @@ import { convertDrillableItemsToPredicates, isSomeHeaderPredicateMatched } from import { type IHeaderPredicate } from "../HeaderPredicate.js"; import { identifierMatch, uriMatch } from "../HeaderPredicateFactory.js"; import { type IMappingHeader } from "../MappingHeader.js"; + import { context, measureDescriptors } from "./HeaderPredicateFactory.fixtures.js"; const emptyFacade = DataViewFacade.for(dummyDataView(newDefForBuckets("testWorkspace", []))); diff --git a/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts b/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts index 4f275a58493..ae5cfc1fd0f 100644 --- a/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts +++ b/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts @@ -15,6 +15,7 @@ import { getMappingHeaderUri, hasMappingHeaderFormattedName, } from "../MappingHeader.js"; + import { attributeDescriptor, attributeHeaderItem, diff --git a/libs/sdk-ui/src/base/localization/TranslationsProvider.ts b/libs/sdk-ui/src/base/localization/TranslationsProvider.ts index 0741384e414..d5d2d326d71 100644 --- a/libs/sdk-ui/src/base/localization/TranslationsProvider.ts +++ b/libs/sdk-ui/src/base/localization/TranslationsProvider.ts @@ -5,6 +5,7 @@ import { memo } from "react"; import { type IntlShape, type WrappedComponentProps, injectIntl } from "react-intl"; import { messages } from "../../locales.js"; + import { emptyHeaderTitleFromIntl } from "./intlUtils.js"; /** diff --git a/libs/sdk-ui/src/base/localization/intlUtils.tsx b/libs/sdk-ui/src/base/localization/intlUtils.tsx index fd56f0b06e3..026fc3866a6 100644 --- a/libs/sdk-ui/src/base/localization/intlUtils.tsx +++ b/libs/sdk-ui/src/base/localization/intlUtils.tsx @@ -14,6 +14,7 @@ import { IntlProvider, type IntlShape, createIntl } from "react-intl"; import type { IntlConfig } from "react-intl/src/types.js"; import { wrapDisplayName } from "../react/wrapDisplayName.js"; + import { DefaultLocale, type ILocale, isLocale } from "./Locale.js"; import { DEFAULT_MESSAGES, type ITranslations, resolveMessages } from "./messagesMap.js"; diff --git a/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts b/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts index eecb23bec7f..4239e1b59aa 100644 --- a/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts +++ b/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts @@ -5,6 +5,7 @@ import { type MessageDescriptor } from "react-intl"; import { messages } from "../../locales.js"; import { getTranslation } from "../localization/IntlStore.js"; import { type ILocale } from "../localization/Locale.js"; + import { type IArithmeticMeasureTitleProps, type IMeasureTitleProps } from "./MeasureTitle.js"; /** diff --git a/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts b/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts index 0b7dab03b10..14935885b2d 100644 --- a/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts +++ b/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts @@ -24,6 +24,7 @@ import { shortenText } from "@gooddata/util"; import { type OverTimeComparisonType, OverTimeComparisonTypes } from "../interfaces/OverTimeComparison.js"; import { type ILocale } from "../localization/Locale.js"; import { type ITranslations, resolveMessages } from "../localization/messagesMap.js"; + import { ArithmeticMeasureTitleFactory } from "./ArithmeticMeasureTitleFactory.js"; import { DerivedMeasureTitleSuffixFactory } from "./DerivedMeasureTitleSuffixFactory.js"; import { type IMeasureTitleProps } from "./MeasureTitle.js"; diff --git a/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx b/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx index d424c98bafd..12e00e53dbb 100644 --- a/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx +++ b/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx @@ -15,6 +15,7 @@ import { useCancelablePromise, } from "../useCancelablePromise.js"; import { WorkspaceProvider, useWorkspace } from "../WorkspaceContext.js"; + import { type IClientWorkspaceIdentifiers, type IClientWorkspaceStatus } from "./interfaces.js"; import { resolveLCMWorkspaceIdentifiers } from "./resolveLCMWorkspaceIdentifiers.js"; diff --git a/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx b/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx index 31563b535cd..ae614f21856 100644 --- a/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx +++ b/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx @@ -32,6 +32,7 @@ import { DataViewFacade } from "../../results/facade.js"; import { type IExportFunction, type ILoadingState } from "../../vis/Events.js"; import { createExportErrorFunction, createExportFunction } from "../../vis/export.js"; import { type IDataVisualizationProps } from "../../vis/VisualizationProps.js"; + import { getAvailableDrillTargets } from "./availableDrillTargets.js"; interface IDataViewLoadState { diff --git a/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts b/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts index 0fad355f02f..219af5ae48f 100644 --- a/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts +++ b/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { CancelError, makeCancelable } from "../CancelablePromise.js"; + import { createDummyPromise } from "./toolkit.js"; describe("CancelablePromise", () => { diff --git a/libs/sdk-ui/src/base/react/useCancelablePromise.ts b/libs/sdk-ui/src/base/react/useCancelablePromise.ts index e6f74ed410c..e7dfcd61ec5 100644 --- a/libs/sdk-ui/src/base/react/useCancelablePromise.ts +++ b/libs/sdk-ui/src/base/react/useCancelablePromise.ts @@ -3,6 +3,7 @@ import { type DependencyList, useEffect, useState } from "react"; import { UnexpectedSdkError } from "../errors/GoodDataSdkError.js"; + import { makeCancelable } from "./CancelablePromise.js"; import { safeSerialize } from "./safeSerialize.js"; diff --git a/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts b/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts index da98488f573..a08617b08ef 100644 --- a/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts +++ b/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { UnexpectedSdkError } from "../errors/GoodDataSdkError.js"; + import { type UseCancelablePromiseState, type UseCancelablePromiseStatus } from "./useCancelablePromise.js"; /** diff --git a/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx b/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx index 1e29c8f3ae2..ae2d398c567 100644 --- a/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx +++ b/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx @@ -6,6 +6,7 @@ import { v4 as uuid } from "uuid"; import { createContextStore } from "../contextStore.js"; import { useAutoupdateRef } from "../useAutoupdateRef.js"; + import { type IChildRegistration, type IInvalidDatapoint, diff --git a/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts b/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts index 6c92b4d4f80..b960add51ea 100644 --- a/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts +++ b/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts @@ -24,6 +24,7 @@ import { type IDataSlice, } from "../dataAccess.js"; import { type DataAccessConfig } from "../dataAccessConfig.js"; + import { type DataAccessDigest, createDataAccessDigest } from "./dataAccessDigest.js"; import { LazyInitArray } from "./lazyInitArray.js"; import { getTotalInfo, measureFormat, measureName } from "./utils.js"; diff --git a/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts b/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts index 239e35e10a1..e352773ce56 100644 --- a/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts +++ b/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts @@ -20,6 +20,7 @@ import { import { type DataAccessConfig, DefaultDataAccessConfig } from "../dataAccessConfig.js"; import { dataViewToTableData } from "../tableData/dataViewToTableData.js"; import { type ITableData } from "../tableData/interfaces/index.js"; + import { DataAccessImpl } from "./dataAccessImpl.js"; class FilteredIterator implements Iterator { diff --git a/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts b/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts index ace6387145c..813f96d7a41 100644 --- a/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts +++ b/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts @@ -1,9 +1,10 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type IDataView } from "@gooddata/sdk-backend-spi"; import { type DataValue } from "@gooddata/sdk-model"; import { type DataAccessConfig } from "../dataAccessConfig.js"; + import { type ITableData } from "./interfaces/index.js"; import { type IMappingOptions } from "./interfaces/mappingOptions.js"; import { collectBucketsInfo } from "./mapping/collect/collectBucketsInfo.js"; diff --git a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts index 87024ec86d4..93de3c6fdaa 100644 --- a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts +++ b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts @@ -10,6 +10,7 @@ import { type ITableDataMeasureScope, type ITableDataMeasureTotalScope, } from "../../interfaces/scope.js"; + import { type IBucketsInfo } from "./collectBucketsInfo.js"; import { type IDescriptorsInfo } from "./collectDescriptorsInfo.js"; import { type IHeadersInfo } from "./collectHeadersInfo.js"; diff --git a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts index 0f5fc133d4e..7f3227314b8 100644 --- a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts +++ b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts @@ -3,6 +3,7 @@ import { type IAttributeDescriptor, type IMeasureDescriptor } from "@gooddata/sdk-model"; import { type ITableGrandTotalRowDefinition, type ITableRowDefinition } from "../../interfaces/rows.js"; + import { type IDescriptorsInfo } from "./collectDescriptorsInfo.js"; import { type IHeadersInfo } from "./collectHeadersInfo.js"; import { type IMeasureDimensionInfo } from "./collectMeasureDimensionMeta.js"; diff --git a/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts b/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts index 8d1317d3b4a..93a3bc10014 100644 --- a/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts +++ b/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts @@ -5,6 +5,7 @@ import { type ITableDataValue } from "../interfaces/cells.js"; import { type ITableColumnDefinition } from "../interfaces/columns.js"; import { type IMappingOptions } from "../interfaces/mappingOptions.js"; import { type ITableRowDefinition } from "../interfaces/rows.js"; + import { mapGrandTotalRowAttributeColumn } from "./grandTotalRow/attribute.js"; import { mapGrandTotalRowGrandTotalColumn } from "./grandTotalRow/grandTotal.js"; import { mapGrandTotalRowMeasureGroupHeaderColumn } from "./grandTotalRow/measureGroupHeader.js"; diff --git a/libs/sdk-ui/src/base/vis/DrillEvents.ts b/libs/sdk-ui/src/base/vis/DrillEvents.ts index 1740d9eba0d..17375cdfef4 100644 --- a/libs/sdk-ui/src/base/vis/DrillEvents.ts +++ b/libs/sdk-ui/src/base/vis/DrillEvents.ts @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-model"; import { type IHeaderPredicate, isHeaderPredicate } from "../headerMatching/HeaderPredicate.js"; + import { type ChartElementType, type ChartType, diff --git a/libs/sdk-ui/src/base/vis/VisualizationProps.ts b/libs/sdk-ui/src/base/vis/VisualizationProps.ts index ac8e5e7349e..2365a4d1779 100644 --- a/libs/sdk-ui/src/base/vis/VisualizationProps.ts +++ b/libs/sdk-ui/src/base/vis/VisualizationProps.ts @@ -11,6 +11,7 @@ import { import { type IErrorProps } from "../react/ErrorComponent.js"; import { type ILoadingProps } from "../react/LoadingComponent.js"; + import { type ExplicitDrill, type OnFiredDrillEvent } from "./DrillEvents.js"; import { type IPushData, diff --git a/libs/sdk-ui/src/base/vis/drilling.ts b/libs/sdk-ui/src/base/vis/drilling.ts index 403389a569d..2dce647a9b1 100644 --- a/libs/sdk-ui/src/base/vis/drilling.ts +++ b/libs/sdk-ui/src/base/vis/drilling.ts @@ -12,6 +12,7 @@ import { type IHeaderPredicate } from "../headerMatching/HeaderPredicate.js"; import { identifierMatch, uriMatch } from "../headerMatching/HeaderPredicateFactory.js"; import { type IMappingHeader } from "../headerMatching/MappingHeader.js"; import { type DataViewFacade } from "../results/facade.js"; + import { type ExplicitDrill, type IDrillEvent, diff --git a/libs/sdk-ui/src/base/vis/export.ts b/libs/sdk-ui/src/base/vis/export.ts index be1d084901c..a97fa233dae 100644 --- a/libs/sdk-ui/src/base/vis/export.ts +++ b/libs/sdk-ui/src/base/vis/export.ts @@ -3,6 +3,7 @@ import { type IExecutionResult, type IExportConfig, type IExportResult } from "@gooddata/sdk-backend-spi"; import { type GoodDataSdkError } from "../errors/GoodDataSdkError.js"; + import { type IExportFunction, type IExtendedExportConfig } from "./Events.js"; const escapeFileName = (str: string) => str?.replace(/[/?<>\\:*|"]/g, ""); diff --git a/libs/sdk-ui/src/base/vis/geoDataExport.ts b/libs/sdk-ui/src/base/vis/geoDataExport.ts index baf0ef4d6b3..8ceca1873be 100644 --- a/libs/sdk-ui/src/base/vis/geoDataExport.ts +++ b/libs/sdk-ui/src/base/vis/geoDataExport.ts @@ -30,6 +30,7 @@ import { } from "@gooddata/sdk-model"; import { BucketNames } from "../constants/bucketNames.js"; + import { isGeoVisualizationUsingNewEngine } from "./isGeoVisualizationUsingNewEngine.js"; import { VisualizationTypes } from "./visualizationTypes.js"; diff --git a/libs/sdk-ui/src/base/vis/geoExportNormalization.ts b/libs/sdk-ui/src/base/vis/geoExportNormalization.ts index 225fa889597..df0adcadfaf 100644 --- a/libs/sdk-ui/src/base/vis/geoExportNormalization.ts +++ b/libs/sdk-ui/src/base/vis/geoExportNormalization.ts @@ -24,6 +24,7 @@ import { } from "@gooddata/sdk-model"; import { BucketNames } from "../constants/bucketNames.js"; + import { VisualizationTypes } from "./visualizationTypes.js"; const TOOLTIP_TEXT_ATTRIBUTE_LOCAL_ID = "tooltipText_df"; diff --git a/libs/sdk-ui/src/execution/DataViewLoader.tsx b/libs/sdk-ui/src/execution/DataViewLoader.tsx index 238095df3ee..a857494952d 100644 --- a/libs/sdk-ui/src/execution/DataViewLoader.tsx +++ b/libs/sdk-ui/src/execution/DataViewLoader.tsx @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-model"; import { DataViewFacade } from "../base/results/facade.js"; + import { createExecution } from "./createExecution.js"; import { type DataViewWindow } from "./withExecutionLoading.js"; diff --git a/libs/sdk-ui/src/execution/Execute.tsx b/libs/sdk-ui/src/execution/Execute.tsx index b36cf7e187e..1d1b816a394 100644 --- a/libs/sdk-ui/src/execution/Execute.tsx +++ b/libs/sdk-ui/src/execution/Execute.tsx @@ -23,6 +23,7 @@ import { } from "../base/react/placeholders/aliases.js"; import { useResolveValuesWithPlaceholders } from "../base/react/placeholders/hooks.js"; import { withContexts } from "../base/react/withContexts.js"; + import { createExecution } from "./createExecution.js"; import { type IExecuteErrorComponent, type IExecuteLoadingComponent } from "./interfaces.js"; import { withExecution } from "./withExecution.js"; diff --git a/libs/sdk-ui/src/execution/ExecuteInsight.tsx b/libs/sdk-ui/src/execution/ExecuteInsight.tsx index bb0d2720cb3..5b73a93ceb9 100644 --- a/libs/sdk-ui/src/execution/ExecuteInsight.tsx +++ b/libs/sdk-ui/src/execution/ExecuteInsight.tsx @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-model"; import { withContexts } from "../base/react/withContexts.js"; + import { type IExecuteErrorComponent, type IExecuteLoadingComponent } from "./interfaces.js"; import { withExecution } from "./withExecution.js"; import { diff --git a/libs/sdk-ui/src/execution/useExecutionDataView.ts b/libs/sdk-ui/src/execution/useExecutionDataView.ts index 2882f3bfa23..a59ac3f9fbb 100644 --- a/libs/sdk-ui/src/execution/useExecutionDataView.ts +++ b/libs/sdk-ui/src/execution/useExecutionDataView.ts @@ -24,6 +24,7 @@ import { } from "../base/react/useCancelablePromise.js"; import { useWorkspaceStrict } from "../base/react/WorkspaceContext.js"; import { DataViewFacade } from "../base/results/facade.js"; + import { createExecution } from "./createExecution.js"; import { type DataViewWindow } from "./withExecutionLoading.js"; diff --git a/libs/sdk-ui/src/execution/useInsightDataView.ts b/libs/sdk-ui/src/execution/useInsightDataView.ts index da7adbe2db0..3ad0c79faea 100644 --- a/libs/sdk-ui/src/execution/useInsightDataView.ts +++ b/libs/sdk-ui/src/execution/useInsightDataView.ts @@ -23,6 +23,7 @@ import { } from "../base/react/useCancelablePromiseUtils.js"; import { useWorkspaceStrict } from "../base/react/WorkspaceContext.js"; import { type DataViewFacade } from "../base/results/facade.js"; + import { useExecutionDataView } from "./useExecutionDataView.js"; import { useInsight } from "./useInsight.js"; import { type DataViewWindow } from "./withExecutionLoading.js"; diff --git a/libs/sdk-ui/src/execution/withExecution.ts b/libs/sdk-ui/src/execution/withExecution.ts index cacccee9885..b2287734576 100644 --- a/libs/sdk-ui/src/execution/withExecution.ts +++ b/libs/sdk-ui/src/execution/withExecution.ts @@ -5,6 +5,7 @@ import { type ComponentType } from "react"; import { type IPreparedExecution, isNoDataError } from "@gooddata/sdk-backend-spi"; import { DataViewFacade } from "../base/results/facade.js"; + import { type DataViewWindow, type IWithLoadingEvents, diff --git a/libs/sdk-ui/src/kpi/Kpi.tsx b/libs/sdk-ui/src/kpi/Kpi.tsx index 8d524fcb9fb..2cae874a0d8 100644 --- a/libs/sdk-ui/src/kpi/Kpi.tsx +++ b/libs/sdk-ui/src/kpi/Kpi.tsx @@ -15,6 +15,7 @@ import { withContexts } from "../base/react/withContexts.js"; import { type DataViewFacade } from "../base/results/facade.js"; import { type IRawExecuteProps, RawExecute } from "../execution/RawExecute.js"; import { type IWithLoadingEvents } from "../execution/withExecutionLoading.js"; + import { FormattedNumber } from "./FormattedNumber.js"; import { KpiError } from "./KpiError.js"; diff --git a/libs/util/package.json b/libs/util/package.json index 6615b3b858d..e95255ad450 100644 --- a/libs/util/package.json +++ b/libs/util/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/util", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Utility Functions", "license": "MIT", "author": "GoodData", diff --git a/tools/app-toolkit/package.json b/tools/app-toolkit/package.json index fae2c0a9a39..0250cbbae7d 100644 --- a/tools/app-toolkit/package.json +++ b/tools/app-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/app-toolkit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "CLI with useful tools for creating and maintaining GoodData web applications.", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/app-toolkit/src/initCmd/index.ts b/tools/app-toolkit/src/initCmd/index.ts index 9a4e731016b..804e7f8c66f 100644 --- a/tools/app-toolkit/src/initCmd/index.ts +++ b/tools/app-toolkit/src/initCmd/index.ts @@ -15,6 +15,7 @@ import { writeAsJsonSync, } from "../_base/utils.js"; import { getReactAppTemplateArchive } from "../react-app-template.js"; + import { type InitCmdActionConfig, getInitCmdActionConfig } from "./actionConfig.js"; import { type IFileReplacementSpec, replaceInFiles } from "./replaceInFiles.js"; diff --git a/tools/applink/src/base/test/sdkDepedencyGraph.test.ts b/tools/applink/src/base/test/sdkDepedencyGraph.test.ts index 3182fc99569..349f4643cb4 100644 --- a/tools/applink/src/base/test/sdkDepedencyGraph.test.ts +++ b/tools/applink/src/base/test/sdkDepedencyGraph.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { determinePackageBuildOrder } from "../dependencyGraph.js"; + import { TestSdkDependencyGraph } from "./sdkDependencyGraph.fixture.js"; describe("dependency graph", () => { diff --git a/tools/applink/src/devConsole/action.ts b/tools/applink/src/devConsole/action.ts index 6cc64827f21..38f5e48f849 100644 --- a/tools/applink/src/devConsole/action.ts +++ b/tools/applink/src/devConsole/action.ts @@ -3,6 +3,7 @@ import { getSourceDescriptor } from "../base/sourceDiscovery.js"; import { getTargetDescriptor } from "../base/targetDiscovery.js"; import { type SourceDescriptor, type TargetDependency, type TargetDescriptor } from "../base/types.js"; + import { GlobalEventBus, sourceInitialized, targetSelected } from "./events.js"; import { BuildScheduler } from "./pipeline/buildScheduler.js"; import { ChangeDetector } from "./pipeline/changeDetector.js"; diff --git a/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts b/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts index caeeffd6634..ffb37573b8d 100644 --- a/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts +++ b/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts @@ -10,6 +10,7 @@ import { targetSelected, } from "../../events.js"; import { BuildScheduler } from "../buildScheduler.js"; + import { EventCollector, MockBuilder, TestSourceDescriptor, TestTargetDescriptor } from "./fixture.js"; describe("BuildScheduler", () => { diff --git a/tools/applink/src/devConsole/pipeline/tests/fixture.ts b/tools/applink/src/devConsole/pipeline/tests/fixture.ts index 4b82d3e1515..8196320d963 100644 --- a/tools/applink/src/devConsole/pipeline/tests/fixture.ts +++ b/tools/applink/src/devConsole/pipeline/tests/fixture.ts @@ -9,6 +9,7 @@ import { type IEventListener, buildFinished, } from "../../events.js"; + import source from "./source.json" with { type: "json" }; import target from "./target.json" with { type: "json" }; diff --git a/tools/applink/src/devConsole/ui/appLog.ts b/tools/applink/src/devConsole/ui/appLog.ts index c4ec1a5e3f6..1a5798a28b5 100644 --- a/tools/applink/src/devConsole/ui/appLog.ts +++ b/tools/applink/src/devConsole/ui/appLog.ts @@ -9,6 +9,7 @@ import { type IEventListener, type Severity, } from "../events.js"; + import { AppPanel, type AppPanelOptions } from "./appPanel.js"; import { getTerminalSize } from "./utils.js"; diff --git a/tools/applink/src/devConsole/ui/buildOutput.ts b/tools/applink/src/devConsole/ui/buildOutput.ts index d36076121ba..c1c560a59b1 100644 --- a/tools/applink/src/devConsole/ui/buildOutput.ts +++ b/tools/applink/src/devConsole/ui/buildOutput.ts @@ -13,6 +13,7 @@ import { type IEventListener, buildOutputExited, } from "../events.js"; + import { AppPanel, type AppPanelOptions } from "./appPanel.js"; export class BuildOutput extends AppPanel implements IEventListener { diff --git a/tools/applink/src/devConsole/ui/packageList.ts b/tools/applink/src/devConsole/ui/packageList.ts index eb3cf9feddf..dfc37e1ae47 100644 --- a/tools/applink/src/devConsole/ui/packageList.ts +++ b/tools/applink/src/devConsole/ui/packageList.ts @@ -25,6 +25,7 @@ import { buildOutputRequested, packagesSelected, } from "../events.js"; + import { AppPanel, type AppPanelOptions } from "./appPanel.js"; import { ColorCodes } from "./colors.js"; diff --git a/tools/applink/src/devConsole/ui/ui.ts b/tools/applink/src/devConsole/ui/ui.ts index dc8b11a68d9..fb8f4187e54 100644 --- a/tools/applink/src/devConsole/ui/ui.ts +++ b/tools/applink/src/devConsole/ui/ui.ts @@ -13,6 +13,7 @@ import { autobuildToggled, packagesChanged, } from "../events.js"; + import { AppLog } from "./appLog.js"; import { AppMenu, type AppMenuItem } from "./appMenu.js"; import { BuildOutput } from "./buildOutput.js"; diff --git a/tools/catalog-export/package.json b/tools/catalog-export/package.json index c1e8fa50155..dd931bd9459 100644 --- a/tools/catalog-export/package.json +++ b/tools/catalog-export/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/catalog-export", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK Catalog Export tooling", "license": "MIT", "author": "GoodData", diff --git a/tools/catalog-export/src/loaders/tiger/index.ts b/tools/catalog-export/src/loaders/tiger/index.ts index 375a6717a3e..734aefd3747 100644 --- a/tools/catalog-export/src/loaders/tiger/index.ts +++ b/tools/catalog-export/src/loaders/tiger/index.ts @@ -16,6 +16,7 @@ import { } from "../../base/types.js"; import { logError, logInfo } from "../../cli/loggers.js"; import { type WorkspaceChoices, promptWorkspaceId } from "../../cli/prompts.js"; + import { createTigerClient } from "./tigerClient.js"; import { tigerLoad } from "./tigerLoad.js"; diff --git a/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts b/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts index 69c4e0534f6..730bb71aceb 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type Attribute, type Catalog, type Fact, type Metric } from "../../base/types.js"; + import { convertAttribute, createLabelMap } from "./tigerCommon.js"; function convertMetrics(metrics: JsonApiMetricOutList): Metric[] { diff --git a/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts b/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts index 937ed60a159..e7f041650d8 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts @@ -10,6 +10,7 @@ import { import { EntitiesApi_GetAllEntitiesAttributes } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type Attribute, type DateDataSet } from "../../base/types.js"; + import { type DatasetMap, type LabelMap, diff --git a/tools/catalog-export/src/loaders/tiger/tigerLoad.ts b/tools/catalog-export/src/loaders/tiger/tigerLoad.ts index 5a297a81f8f..6a1efdb3150 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerLoad.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerLoad.ts @@ -6,6 +6,7 @@ import { type ITigerClient } from "@gooddata/api-client-tiger"; import { CatalogExportError, type WorkspaceMetadata } from "../../base/types.js"; import { logError } from "../../cli/loggers.js"; + import { loadAnalyticalDashboards } from "./tigerAnalyticalDashboards.js"; import { loadCatalog } from "./tigerCatalog.js"; import { loadDateDataSets } from "./tigerDateDatasets.js"; diff --git a/tools/catalog-export/src/transform/toTypescript.ts b/tools/catalog-export/src/transform/toTypescript.ts index 3a45065f464..d4081142058 100644 --- a/tools/catalog-export/src/transform/toTypescript.ts +++ b/tools/catalog-export/src/transform/toTypescript.ts @@ -19,6 +19,7 @@ import { type Metric, type WorkspaceMetadata, } from "../base/types.js"; + import { type TakenNamesSet, createUniqueVariableName, stringToVariableName } from "./titles.js"; export type TypescriptOutput = { diff --git a/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json b/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json index 8e97240c255..9b21d536374 100644 --- a/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json +++ b/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json @@ -13,7 +13,8 @@ "external", "gooddata-group", "internal", - ["parent", "sibling", "index"], + "parent", + ["sibling", "index"], "unknown" ], "customGroups": [ diff --git a/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json b/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json index 8e97240c255..9b21d536374 100644 --- a/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json +++ b/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json @@ -13,7 +13,8 @@ "external", "gooddata-group", "internal", - ["parent", "sibling", "index"], + "parent", + ["sibling", "index"], "unknown" ], "customGroups": [ diff --git a/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx b/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx index 6a6438b8924..eb0f6233ea5 100644 --- a/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx +++ b/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-ui-loaders"; import { PluginFactory } from "../plugin/index.js"; + // this import will be renamed in plugin-toolkit import { PluginToolbar } from "./PluginToolbar.js"; diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json index b796cf462dd..f9cea44b5b4 100644 --- a/tools/eslint-config/package.json +++ b/tools/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/eslint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/eslint-config/scripts/build.ts b/tools/eslint-config/scripts/build.ts index c497d49a94e..2472f605e6d 100644 --- a/tools/eslint-config/scripts/build.ts +++ b/tools/eslint-config/scripts/build.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { commonConfigurations, v8Variants, v9Variants } from "../src/index.js"; + import { buildV8 } from "./build/v8.js"; import { buildV9 } from "./build/v9.js"; diff --git a/tools/eslint-config/scripts/build/v9.ts b/tools/eslint-config/scripts/build/v9.ts index defd77539f7..e756ef70dab 100644 --- a/tools/eslint-config/scripts/build/v9.ts +++ b/tools/eslint-config/scripts/build/v9.ts @@ -5,6 +5,7 @@ import { writeFileSync } from "fs"; import type { GlobalValue, IPackage } from "@gooddata/lint-config"; import type { GlobalsPreset, IConfigurationV9, IDualConfiguration } from "../../src/types.js"; + import { renderKey, renderValue } from "./renderPlugin.js"; // Track imports needed for generated JS diff --git a/tools/i18n-toolkit/package.json b/tools/i18n-toolkit/package.json index 4e501c16cc8..831c65e1384 100644 --- a/tools/i18n-toolkit/package.json +++ b/tools/i18n-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/i18n-toolkit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "Localization validator to validate localization complexity and intl and html format.", "license": "MIT", "author": "GoodData", diff --git a/tools/i18n-toolkit/src/validations/messagesUsage.ts b/tools/i18n-toolkit/src/validations/messagesUsage.ts index 4171c71b712..1291a371cb8 100644 --- a/tools/i18n-toolkit/src/validations/messagesUsage.ts +++ b/tools/i18n-toolkit/src/validations/messagesUsage.ts @@ -8,6 +8,7 @@ import fastGlob from "fast-glob"; import { DefaultLocale, type ToolkitConfigFile, type UsageResult } from "../data.js"; import { type LocalesStructure } from "../schema/localization.js"; import { done, fail, message, resultsInfo, skipped } from "../utils/console.js"; + import { checkTranslations } from "./usage/checkTranslations.js"; const { sync } = fastGlob; diff --git a/tools/lint-config/package.json b/tools/lint-config/package.json index b49a1b0d553..c921c22b042 100644 --- a/tools/lint-config/package.json +++ b/tools/lint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/lint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "Linter-agnostic shared rules for @gooddata/eslint-config and @gooddata/oxlint-config", "license": "MIT", "author": "GoodData", diff --git a/tools/mock-handling/package.json b/tools/mock-handling/package.json index eea7d3a32c1..3eb96090b4f 100644 --- a/tools/mock-handling/package.json +++ b/tools/mock-handling/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/mock-handling", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK Mock data capture and management tool", "license": "MIT", "author": "GoodData", diff --git a/tools/mock-handling/src/codegen/index.ts b/tools/mock-handling/src/codegen/index.ts index 630527cbb13..b6463f556c0 100644 --- a/tools/mock-handling/src/codegen/index.ts +++ b/tools/mock-handling/src/codegen/index.ts @@ -13,6 +13,7 @@ import { type DisplayFormRecording } from "../recordings/displayForms.js"; import { type ExecutionRecording } from "../recordings/execution.js"; import { type InsightRecording } from "../recordings/insights.js"; import { type VisClassesRecording } from "../recordings/visClasses.js"; + import { generateConstantsForCatalog } from "./catalog.js"; import { generateConstantsForCollectionItems } from "./collectionItems.js"; import { generateConstantsForDashboards } from "./dashboard.js"; diff --git a/tools/mock-handling/src/recordings/catalogRepository.ts b/tools/mock-handling/src/recordings/catalogRepository.ts index 7981d7864a8..6efead1022e 100644 --- a/tools/mock-handling/src/recordings/catalogRepository.ts +++ b/tools/mock-handling/src/recordings/catalogRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { CatalogDefinition, CatalogRecording } from "./catalog.js"; import { type IRecording, isNonNullRecording } from "./common.js"; diff --git a/tools/mock-handling/src/recordings/collectionItemsRepository.ts b/tools/mock-handling/src/recordings/collectionItemsRepository.ts index 24e12a23206..0d62b05193e 100644 --- a/tools/mock-handling/src/recordings/collectionItemsRepository.ts +++ b/tools/mock-handling/src/recordings/collectionItemsRepository.ts @@ -5,6 +5,7 @@ import path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { CollectionItemsRecording } from "./collectionItems.js"; import { type IRecording, isNonNullRecording } from "./common.js"; diff --git a/tools/mock-handling/src/recordings/dashboards.ts b/tools/mock-handling/src/recordings/dashboards.ts index 8c53172a6fa..cef35371ffb 100644 --- a/tools/mock-handling/src/recordings/dashboards.ts +++ b/tools/mock-handling/src/recordings/dashboards.ts @@ -10,6 +10,7 @@ import { DataRecorderError } from "../base/types.js"; import { createUniqueVariableNameForIdentifier } from "../base/variableNaming.js"; import { logError } from "../cli/loggers.js"; import { RecordingFiles } from "../interface.js"; + import { type IRecording, type RecordingIndexEntry, RecordingType, writeAsJsonSync } from "./common.js"; // diff --git a/tools/mock-handling/src/recordings/dashboardsRepository.ts b/tools/mock-handling/src/recordings/dashboardsRepository.ts index 566bb30287e..3d1f4faae25 100644 --- a/tools/mock-handling/src/recordings/dashboardsRepository.ts +++ b/tools/mock-handling/src/recordings/dashboardsRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { type IRecording, isNonNullRecording, readJsonSync } from "./common.js"; import { DashboardRecording } from "./dashboards.js"; import { DashboardsDefinition } from "./displayForms.js"; diff --git a/tools/mock-handling/src/recordings/displayForms.ts b/tools/mock-handling/src/recordings/displayForms.ts index e86afc15299..9f6e9feb259 100644 --- a/tools/mock-handling/src/recordings/displayForms.ts +++ b/tools/mock-handling/src/recordings/displayForms.ts @@ -9,6 +9,7 @@ import { type IAnalyticalBackend, type IElementsQuery } from "@gooddata/sdk-back import { type IAttributeDisplayFormMetadataObject, type IAttributeElement, idRef } from "@gooddata/sdk-model"; import { createUniqueVariableNameForIdentifier } from "../base/variableNaming.js"; + import { type IRecording, type RecordingIndexEntry, diff --git a/tools/mock-handling/src/recordings/displayFormsRepository.ts b/tools/mock-handling/src/recordings/displayFormsRepository.ts index 26ad0a676c9..39c68b7e775 100644 --- a/tools/mock-handling/src/recordings/displayFormsRepository.ts +++ b/tools/mock-handling/src/recordings/displayFormsRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { type IRecording, isNonNullRecording, readJsonSync } from "./common.js"; import { DisplayFormRecording, DisplayFormsDefinition } from "./displayForms.js"; diff --git a/tools/mock-handling/src/recordings/execution.ts b/tools/mock-handling/src/recordings/execution.ts index 9780485dba0..58c1e30f193 100644 --- a/tools/mock-handling/src/recordings/execution.ts +++ b/tools/mock-handling/src/recordings/execution.ts @@ -30,6 +30,7 @@ import { type RequestedWindow, type ScenarioDescriptor, } from "../interface.js"; + import { type IRecording, type RecordingIndexEntry, diff --git a/tools/mock-handling/src/recordings/executionRepository.ts b/tools/mock-handling/src/recordings/executionRepository.ts index 31f114e8e88..bff0ee9bf48 100644 --- a/tools/mock-handling/src/recordings/executionRepository.ts +++ b/tools/mock-handling/src/recordings/executionRepository.ts @@ -5,6 +5,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; import { RecordingFiles } from "../interface.js"; + import { type IRecording, isNonNullRecording } from "./common.js"; import { ExecutionRecording } from "./execution.js"; diff --git a/tools/mock-handling/src/recordings/insights.ts b/tools/mock-handling/src/recordings/insights.ts index 21e19ecfc43..3a9ff80579f 100644 --- a/tools/mock-handling/src/recordings/insights.ts +++ b/tools/mock-handling/src/recordings/insights.ts @@ -10,6 +10,7 @@ import { idRef } from "@gooddata/sdk-model"; import { createUniqueVariableNameForIdentifier } from "../base/variableNaming.js"; import { type InsightRecordingSpec, RecordingFiles } from "../interface.js"; + import { type IRecording, type RecordingIndexEntry, RecordingType, writeAsJsonSync } from "./common.js"; // diff --git a/tools/mock-handling/src/recordings/insightsRepository.ts b/tools/mock-handling/src/recordings/insightsRepository.ts index a9d5b61b3c9..b8b3a23383b 100644 --- a/tools/mock-handling/src/recordings/insightsRepository.ts +++ b/tools/mock-handling/src/recordings/insightsRepository.ts @@ -5,6 +5,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; import { RecordingFiles } from "../interface.js"; + import { type IRecording, isNonNullRecording, readJsonSync } from "./common.js"; import { InsightRecording } from "./insights.js"; diff --git a/tools/mock-handling/src/recordings/visClassesRepository.ts b/tools/mock-handling/src/recordings/visClassesRepository.ts index f1e30cbcb12..0df82ae4230 100644 --- a/tools/mock-handling/src/recordings/visClassesRepository.ts +++ b/tools/mock-handling/src/recordings/visClassesRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { type IRecording, isNonNullRecording } from "./common.js"; import { VisClassesDefinition, VisClassesRecording } from "./visClasses.js"; diff --git a/tools/oxlint-config/package.json b/tools/oxlint-config/package.json index 424acd077d8..093f609a13a 100644 --- a/tools/oxlint-config/package.json +++ b/tools/oxlint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/oxlint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/plugin-toolkit/package.json b/tools/plugin-toolkit/package.json index 8d31958523b..54c199b9e52 100644 --- a/tools/plugin-toolkit/package.json +++ b/tools/plugin-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/plugin-toolkit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Set of Tools for working with Plugins", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts b/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts index 0654448a278..db1dc8e664f 100644 --- a/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts +++ b/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../types.js"; + import { createHostnameValidator, validOrDie } from "./validators.js"; /** diff --git a/tools/plugin-toolkit/src/addPluginCmd/index.ts b/tools/plugin-toolkit/src/addPluginCmd/index.ts index 5944e119ddf..39f04beb127 100644 --- a/tools/plugin-toolkit/src/addPluginCmd/index.ts +++ b/tools/plugin-toolkit/src/addPluginCmd/index.ts @@ -7,6 +7,7 @@ import { type IDashboardPlugin } from "@gooddata/sdk-model"; import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type AddCmdActionConfig, getAddCmdActionConfig } from "./actionConfig.js"; function printAddConfigSummary({ diff --git a/tools/plugin-toolkit/src/initCmd/index.ts b/tools/plugin-toolkit/src/initCmd/index.ts index e7e4d007365..95d54de091f 100644 --- a/tools/plugin-toolkit/src/initCmd/index.ts +++ b/tools/plugin-toolkit/src/initCmd/index.ts @@ -16,6 +16,7 @@ import { writeAsJsonSync, } from "../_base/utils.js"; import { getDashboardPluginTemplateArchive } from "../dashboard-plugin-template.js"; + import { type InitCmdActionConfig, getInitCmdActionConfig } from "./actionConfig.js"; import { type IFileReplacementSpec, replaceInFiles } from "./replaceInFiles.js"; diff --git a/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts b/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts index 8b34bb7142d..cbf04a5cbb0 100644 --- a/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts +++ b/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts @@ -3,6 +3,7 @@ import { logInfo } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type InspectCmdActionConfig, getInspectCmdActionConfig } from "./actionConfig.js"; import { type InspectObjectFn } from "./types.js"; diff --git a/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts b/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts index 0e85dbe9154..6f1f33f52ae 100644 --- a/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts +++ b/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts @@ -7,6 +7,7 @@ import { isEmpty } from "lodash-es"; import { areObjRefsEqual, idRef } from "@gooddata/sdk-model"; import { type ActionOptions } from "../_base/types.js"; + import { type InspectCmdActionConfig } from "./actionConfig.js"; import { printObjectSummary } from "./output.js"; diff --git a/tools/plugin-toolkit/src/inspectCmds/types.ts b/tools/plugin-toolkit/src/inspectCmds/types.ts index 311a375a04b..83acf40033e 100644 --- a/tools/plugin-toolkit/src/inspectCmds/types.ts +++ b/tools/plugin-toolkit/src/inspectCmds/types.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type InspectCmdActionConfig } from "./actionConfig.js"; export type InspectObjectFn = (config: InspectCmdActionConfig, options: ActionOptions) => Promise; diff --git a/tools/plugin-toolkit/src/linkPluginCmd/index.ts b/tools/plugin-toolkit/src/linkPluginCmd/index.ts index 56ceb89b0b0..6727bdd701f 100644 --- a/tools/plugin-toolkit/src/linkPluginCmd/index.ts +++ b/tools/plugin-toolkit/src/linkPluginCmd/index.ts @@ -7,6 +7,7 @@ import { type IDashboard, type IDashboardDefinition, idRef } from "@gooddata/sdk import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type LinkCmdActionConfig, getLinkCmdActionConfig } from "./actionConfig.js"; function printUseConfigSummary({ diff --git a/tools/plugin-toolkit/src/listCmds/listCmdAction.ts b/tools/plugin-toolkit/src/listCmds/listCmdAction.ts index d39fd3f4e6d..3d47b3f75cc 100644 --- a/tools/plugin-toolkit/src/listCmds/listCmdAction.ts +++ b/tools/plugin-toolkit/src/listCmds/listCmdAction.ts @@ -5,6 +5,7 @@ import columnify from "columnify"; import { logInfo, logSuccess } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type ListCmdActionConfig, getListCmdActionConfig } from "./actionConfig.js"; import { type ListObjectsFn } from "./types.js"; diff --git a/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts b/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts index 4db41424a9e..15be38a7632 100644 --- a/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts +++ b/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type ListCmdActionConfig } from "./actionConfig.js"; import { type ListEntry } from "./types.js"; diff --git a/tools/plugin-toolkit/src/listCmds/listDashboards.ts b/tools/plugin-toolkit/src/listCmds/listDashboards.ts index 394e322b128..62fad64341e 100644 --- a/tools/plugin-toolkit/src/listCmds/listDashboards.ts +++ b/tools/plugin-toolkit/src/listCmds/listDashboards.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type ListCmdActionConfig } from "./actionConfig.js"; import { type ListEntry } from "./types.js"; diff --git a/tools/plugin-toolkit/src/listCmds/types.ts b/tools/plugin-toolkit/src/listCmds/types.ts index 28122220755..40da5b8095a 100644 --- a/tools/plugin-toolkit/src/listCmds/types.ts +++ b/tools/plugin-toolkit/src/listCmds/types.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type ListCmdActionConfig } from "./actionConfig.js"; export type ListEntry = { diff --git a/tools/plugin-toolkit/src/removeParamsCmd/index.ts b/tools/plugin-toolkit/src/removeParamsCmd/index.ts index ae9885fb8c9..e72f57c293f 100644 --- a/tools/plugin-toolkit/src/removeParamsCmd/index.ts +++ b/tools/plugin-toolkit/src/removeParamsCmd/index.ts @@ -8,6 +8,7 @@ import { type IDashboard, type IDashboardDefinition, areObjRefsEqual, idRef } fr import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type RemovePluginParamsCmdConfig, getRemovePluginParamsCmdConfig } from "./actionConfig.js"; function printUsedUpdatePluginParamsSummary({ diff --git a/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts b/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts index 8c84398f4c2..c7be266d69d 100644 --- a/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts +++ b/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts @@ -8,6 +8,7 @@ import { type IDashboardDefinition, areObjRefsEqual, idRef } from "@gooddata/sdk import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type UnlinkCmdActionConfig, getUnlinkCmdActionConfig } from "./actionConfig.js"; function printUnlinkConfigSummary({ hostname, workspace, dashboard, identifier }: UnlinkCmdActionConfig) { diff --git a/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts b/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts index 7f2f2596fc9..989a4d9642e 100644 --- a/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts +++ b/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts @@ -8,6 +8,7 @@ import { type IDashboard, type IDashboardDefinition, areObjRefsEqual, idRef } fr import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type UpdatePluginParamsCmdConfig, getUpdatePluginParamsCmdConfig } from "./actionConfig.js"; function printUsedUpdatePluginParamsSummary({ diff --git a/tools/reference-workspace/package.json b/tools/reference-workspace/package.json index d8d0ea16df1..ad4455abcde 100644 --- a/tools/reference-workspace/package.json +++ b/tools/reference-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/reference-workspace", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Reference Workspace for tests", "license": "MIT", "author": "GoodData", diff --git a/tools/stylelint-config/package.json b/tools/stylelint-config/package.json index 5238d91499f..7871c47b822 100644 --- a/tools/stylelint-config/package.json +++ b/tools/stylelint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/stylelint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData CSS Style Guide", "keywords": [ "config",