From dc1562a7de6b7f9a53e457dd1901f80b1d86918c Mon Sep 17 00:00:00 2001 From: "Jens L." Date: Mon, 30 Sep 2024 18:44:03 +0200 Subject: [PATCH 01/27] internal: restore /ping behaviour for embedded outpost (#11568) Signed-off-by: Jens Langhammer --- internal/outpost/proxyv2/proxyv2.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/outpost/proxyv2/proxyv2.go b/internal/outpost/proxyv2/proxyv2.go index cd01290385b6..9bc893b6c2f2 100644 --- a/internal/outpost/proxyv2/proxyv2.go +++ b/internal/outpost/proxyv2/proxyv2.go @@ -6,6 +6,7 @@ import ( "errors" "net" "net/http" + "strings" "sync" sentryhttp "github.com/getsentry/sentry-go/http" @@ -70,12 +71,20 @@ func NewProxyServer(ac *ak.APIController) *ProxyServer { } func (ps *ProxyServer) HandleHost(rw http.ResponseWriter, r *http.Request) bool { + // Always handle requests for outpost paths that should answer regardless of hostname + if strings.HasPrefix(r.URL.Path, "/outpost.goauthentik.io/ping") || + strings.HasPrefix(r.URL.Path, "/outpost.goauthentik.io/static") { + ps.mux.ServeHTTP(rw, r) + return true + } + // lookup app by hostname a, _ := ps.lookupApp(r) if a == nil { return false } + // check if the app should handle this URL, or is setup in proxy mode if a.ShouldHandleURL(r) || a.Mode() == api.PROXYMODE_PROXY { - a.ServeHTTP(rw, r) + ps.mux.ServeHTTP(rw, r) return true } return false From e7698d2c3398f7fa2a4b57789556337789ce3195 Mon Sep 17 00:00:00 2001 From: itsmesid <693151+arevindh@users.noreply.github.com> Date: Mon, 30 Sep 2024 22:32:42 +0530 Subject: [PATCH 02/27] web: add missing id attribute for button in ak-flow-input-password (#11413) Add missing id attribute to button in ak-flow-input-password Signed-off-by: itsmesid <693151+arevindh@users.noreply.github.com> --- web/src/flow/components/ak-flow-password-input.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/web/src/flow/components/ak-flow-password-input.ts b/web/src/flow/components/ak-flow-password-input.ts index 59c31a0699df..19e704fa29f6 100644 --- a/web/src/flow/components/ak-flow-password-input.ts +++ b/web/src/flow/components/ak-flow-password-input.ts @@ -161,6 +161,7 @@ export class InputPassword extends AKElement { ${this.renderInput()} ${this.allowShowPassword ? html` diff --git a/web/src/elements/EmptyState.test.ts b/web/src/elements/EmptyState.test.ts index ac0d68c5863d..86af2212a9bb 100644 --- a/web/src/elements/EmptyState.test.ts +++ b/web/src/elements/EmptyState.test.ts @@ -1,13 +1,13 @@ -import { ensureCSSStyleSheet } from "@goauthentik/elements/utils/ensureCSSStyleSheet.js"; import { $, expect } from "@wdio/globals"; import { msg } from "@lit/localize"; import { TemplateResult, html, render as litRender } from "lit"; -import AKGlobal from "@goauthentik/common/styles/authentik.css"; +import AKGlobal from "../common/styles/authentik.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import "./EmptyState.js"; +import { ensureCSSStyleSheet } from "./utils/ensureCSSStyleSheet.js"; const render = (body: TemplateResult) => { document.adoptedStyleSheets = [ diff --git a/web/src/elements/ak-table/TableColumn.ts b/web/src/elements/ak-table/TableColumn.ts new file mode 100644 index 000000000000..038c3f663068 --- /dev/null +++ b/web/src/elements/ak-table/TableColumn.ts @@ -0,0 +1,103 @@ +import { bound } from "@goauthentik/elements/decorators/bound"; + +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; + +// Because TableColumn isn't a component, it won't be the dispatch target and it won't have an +// identity beyond the host passed in, so we must include with the event a payload that identifies +// the source TableColumn in some way. +// +export class TableSortEvent extends Event { + static readonly eventName = "tablesort"; + public value: string; + constructor(value: string) { + super(TableSortEvent.eventName, { composed: true, bubbles: true }); + this.value = value; + } +} + +/** + * class TableColumn + * + * This is a helper class for rendering the contents of a table column header. + * + * ## Events + * + * - @fires tablesort: when the header is clicked, if the host is not undefined + * + */ +export class TableColumn { + /** + * The text to show in the column header + */ + value: string; + + /** + * If not undefined, the element that will first receive the `tablesort` event + */ + host?: HTMLElement; + + /** + * If not undefined, show the sort indicator, and indicate the sort state + */ + orderBy?: string; + + constructor(value: string, orderBy?: string, host?: HTMLElement) { + this.value = value; + this.orderBy = orderBy; + if (host) { + this.host = host; + } + } + + @bound + private onSort() { + if (this.host && this.orderBy) { + this.host.dispatchEvent(new TableSortEvent(this.orderBy)); + } + } + + private sortIndicator(orderBy: string) { + // prettier-ignore + switch(orderBy) { + case this.orderBy: return "fa-long-arrow-alt-down"; + case `-${this.orderBy}`: return "fa-long-arrow-alt-up"; + default: return "fa-arrows-alt-v"; + } + } + + private sortButton(orderBy: string) { + return html` `; + } + + public render(orderBy?: string) { + const isSelected = orderBy === this.orderBy || orderBy === `-${this.orderBy}`; + + const classes = { + "pf-c-table__sort": Boolean(this.host && this.orderBy), + "pf-m-selected": Boolean(this.host && isSelected), + }; + + return html` + ${orderBy && this.orderBy ? this.sortButton(orderBy) : html`${this.value}`} + `; + } +} + +declare global { + interface GlobalEventHandlersEventMap { + [TableSortEvent.eventName]: TableSortEvent; + } +} diff --git a/web/src/elements/ak-table/ak-select-table.ts b/web/src/elements/ak-table/ak-select-table.ts new file mode 100644 index 000000000000..2d86da904fe6 --- /dev/null +++ b/web/src/elements/ak-table/ak-select-table.ts @@ -0,0 +1,261 @@ +import { bound } from "@goauthentik/elements/decorators/bound"; + +import { msg } from "@lit/localize"; +import { PropertyValues, TemplateResult, html } from "lit"; +import { customElement, property, queryAll } from "lit/decorators.js"; +import { map } from "lit/directives/map.js"; + +import { type ISimpleTable, SimpleTable } from "./ak-simple-table"; +import type { TableRow } from "./types"; + +export interface ISelectTable extends ISimpleTable { + value: string; + radio: boolean; + valueSep: string; + selected: string[]; +} + +/** + * @element ak-select-table + * @class SelectTable + * + * Extends the SimpleTable with a select column, emitting a `change` event whenever the selected + * table updates. The `multiple` keyword creates a multi-select table. Sorting behavior resembles + * that of `SimpleTable`. + * + * Aside from overriding the `renderRow()` and `renderColumnHeaders()` methods to add the room + * for the checkbox, this is entirely an additive feature; the logic of `ak-simple-table` is + * otherwise completely preserved. + * + * Note that this implementation caches any values that it may have seen prior, but are not + * currently visible on the page. This preserves the selection collection in case the client wishes + * to implement pagination. + * + * ## Properties + * + * - @prop content (see types): The content to show. The simplest content is just `string[][]`, but + * see the types. + * + * - @prop columns (see types): The column headers for the table. Can be just a `string[]`, but see + * the types. + * + * - @attr (string, optional): The current column to order the content by. By convention, prefix + * with a `-` to indicate a reverse sort order. (See "Does not handle sorting" above). + * + * - @attr multiple (boolean): If true, this table is "multi-select" and a 'select all' checkbox will + * be available. + * + * - @attr value (string): If set, will set the value of the component. For multi-select, will split + * on the `valueSep` (see next entry). Get is the reverse: either the value of the component, + * or for multi-select, the value of the component `.join()`ed with the `valueSep` + * + * - @attr valueSep (string): For multi-select only, the (ideally one) characters which will separate + * values. + * + * - @prop selected (string[]): The values selected. Always an array, even for mult-select. When not + * multi-select, will have zero or one items only. + * + * ## Messages + * + * - `clear()`: Sets the `selected` collection to empty, erasing all values. + * + * ## Events + * + * - @fires tablesort (Custom): A table header has been clicked, requesting a sort event. See "Does + * not handle sorting" above. + * + * ## CSS Customizations + * + * - @part table: the `` element + * - @part column-header: the `` element for the column headers themselves + * - @part column-row: The `` element for the column headers + * - @part column-item: The `` element for a group header + * - @part group-row: The `` element for a group header + * - @part group-head: The `` element for a standard row + * - @part cell cell-{index}: The ``; + } + // The double `checked` there is not a typo. The first one ensures the input's DOM object + // receives the state; the second ensures the input tag on the page reflects the state + // accurately. See https://github.com/lit/lit-element/issues/601 + const checked = this.selected.includes(key); + return html``; + } + + // Without the `bound`, Lit's `map()` will pick up the parent class's `renderRow()`. This + // override makes room for the select checkbox. + @bound + public override renderRow(row: TableRow, _rowidx: number) { + return html` + ${this.renderCheckbox(row.key)} + ${map( + row.content, + (col, idx) => html``, + )} + `; + } + + renderAllOnThisPageCheckbox(): TemplateResult { + const checked = + this.selectedOnPage.length && this.selectedOnPage.length === this.valuesOnPage.length; + + const onInput = (ev: InputEvent) => { + const selected = [...this.selected]; + const values = this.valuesOnPage; + // The behavior preserves the `selected` elements that are not currently visible; its + // purpose is to preserve the complete value list locally in case clients want to + // implement pagination. To clear the entire list, call `clear()` on the component. + this.selected = (ev.target as HTMLInputElement).checked + ? // add to `selected` all values not already present + [...selected, ...values.filter((i) => !selected.includes(i))] + : // remove from `selected` all values present + this.selected.filter((i) => !values.includes(i)); + }; + + return html``; + } + + // This override makes room for the select checkbox. + public override renderColumnHeaders() { + return html` + ${this.multiple ? this.renderAllOnThisPageCheckbox() : html``} + ${map(this.icolumns, (col) => col.render(this.order))} + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-select-table": SelectTable; + } +} diff --git a/web/src/elements/ak-table/ak-simple-table.ts b/web/src/elements/ak-table/ak-simple-table.ts new file mode 100644 index 000000000000..5980878d49b9 --- /dev/null +++ b/web/src/elements/ak-table/ak-simple-table.ts @@ -0,0 +1,217 @@ +import { AKElement } from "@goauthentik/elements/Base.js"; +import { bound } from "@goauthentik/elements/decorators/bound"; +import { randomId } from "@goauthentik/elements/utils/randomId.js"; + +import { TemplateResult, css, html } from "lit"; +import { customElement, property } from "lit/decorators.js"; +import { map } from "lit/directives/map.js"; +import { repeat } from "lit/directives/repeat.js"; + +import PFTable from "@patternfly/patternfly/components/Table/table.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +import { TableColumn } from "./TableColumn.js"; +import type { Column, TableFlat, TableGroup, TableGrouped, TableRow } from "./types"; +import { convertContent } from "./utils"; + +export type RawContent = string | number | TemplateResult; +export type ContentType = RawContent[][] | TableRow[] | TableGrouped; + +export interface ISimpleTable { + columns: Column[]; + content: TableGrouped | TableFlat; + order?: string; +} + +/** + * @element ak-simple-table + * class Table + * + * Our simplest table. It takes a column definition and an array (rows) of array (one row) of + * TemplateResults, and it renders a table. If the column definition includes keys, the column will + * be rendered with a sort indicator. + * + * ## Does not handle sorting. + * + * ... that's _all_ this does. It is the responsibility of clients using this table to: + * + * - marshall their content into TemplateResults + * - catch the 'tablesort' event and send the table a new collection of rows sorted according to + * the client scheme. + * + * ## Properties + * + * - @prop content (see types): The content to show. The simplest content is just `string[][]`, but + * see the types. + * + * - @prop columns (see types): The column headers for the table. Can be just a `string[]`, but see + * the types. + * + * - @attr order (string, optional): The current column to order the content by. By convention, prefix + * with a `-` to indicate a reverse sort order. (See "Does not handle sorting" above). + * + * ## Events + * + * - @fires tablesort (Custom): A table header has been clicked, requesting a sort event. See "Does + * not handle sorting" above. + * + * ## CSS Customizations + * + * - @part table: the `
` element for each column header + * - @part column-text: The text `` of the column header + * - @part column-sort: The sort indicator `` of a column header, if activated + * - @part group-header: The `
` element for a group header + * - @part row: The `
` element for a single datum. Can be accessed via the index, + * which is zero-indexed + * - @part select-all-header: The `` element for the select-all checkbox, when _multiple_ + * - @part select-all-input: The `` element for the select-all checkbox, when _multiple_ + * - @part select-cell: The `` element for a select checkbox + * - @part select-input: The ` element for a select checkbox + * + * NOTE: The select-cell is *not* indexed. The `::part(cell-{idx})` remains indexed by zero; you + * cannot access the select-cell via `cell-0`; that would be the first data column. This is due to a + * limitation on the `part::` semantics. + * + */ + +@customElement("ak-select-table") +export class SelectTable extends SimpleTable { + // WARNING: This property and `set selected` must mirror each other perfectly. + @property({ type: String, attribute: true, reflect: true }) + public set value(value: string) { + this._value = value; + this._selected = value.split(this.valueSep).filter((v) => v.trim() !== ""); + } + + public get value() { + return this._value; + } + + private _value: string = ""; + + @property({ type: Boolean, attribute: true }) + multiple = false; + + @property({ type: String, attribute: true }) + valueSep = ";"; + + // WARNING: This property and `set value` must mirror each other perfectly. + @property({ attribute: false }) + public set selected(selected: string[]) { + this._selected = selected; + this._value = this._selected.toSorted().join(this.valueSep); + } + + @queryAll('input[data-ouia-component-role="select"]') + selectCheckboxesOnPage!: HTMLInputElement[]; + + public get selected() { + return this._selected; + } + + public json() { + return this._selected; + } + + private get valuesOnPage() { + return Array.from(this.selectCheckboxesOnPage).map((checkbox) => checkbox.value); + } + + private get checkedValuesOnPage() { + return Array.from(this.selectCheckboxesOnPage) + .filter((checkbox) => checkbox.checked) + .map((checkbox) => checkbox.value); + } + + private get selectedOnPage() { + return this.checkedValuesOnPage.filter((value) => this._selected.includes(value)); + } + + public clear() { + this.selected = []; + } + + private _selected: string[] = []; + + @bound + private onSelect(ev: InputEvent) { + ev.stopPropagation(); + const value = (ev.target as HTMLInputElement).value; + if (this.multiple) { + this.selected = this.selected.includes(value) + ? this.selected.filter((v) => v !== value) + : [...this.selected, value]; + } else { + this.selected = this.selected.includes(value) ? [] : [value]; + } + this.dispatchEvent(new Event("change")); + } + + protected override ouiaTypeDeclaration() { + this.setAttribute("data-ouia-component-type", "ak-select-table"); + } + + public override connectedCallback(): void { + super.connectedCallback(); + this.dataset.akControl = "true"; + } + + public override willUpdate(changed: PropertyValues) { + super.willUpdate(changed); + // Ensure the value attribute in the component reflects the current value after an update + // via onSelect() or other change to `this.selected`. Done here instead of in `updated` as + // changes here cannot trigger an update. See: + // https://lit.dev/docs/components/lifecycle/#willupdate + this.setAttribute("value", this._value); + } + + public renderCheckbox(key: string | undefined) { + if (key === undefined) { + return html` + +
${col}
+ +
` element + * - @part column-header: the `` element for the column headers themselves + * - @part column-row: The `` element for the column headers + * - @part column-item: The `` element for a group header + * - @part group-row: The `` element for a group header + * - @part group-head: The `` element for a standard row + * - @part cell cell-{index}: The ` + ${map( + row.content, + (col, idx) => html``, + )} + `; + } + + public renderRows(rows: TableRow[]) { + return html` + ${repeat(rows, (row) => row.key, this.renderRow)} + `; + } + + @bound + public renderRowGroup({ group, content }: TableGroup) { + return html` + + + + + ${this.renderRows(content)}`; + } + + @bound + public renderRowGroups(rowGroups: TableGroup[]) { + return html`${map(rowGroups, this.renderRowGroup)}`; + } + + public renderBody() { + // prettier-ignore + return this.content.kind === 'flat' + ? this.renderRows(this.content.content) + : this.renderRowGroups(this.content.content); + } + + public renderColumnHeaders() { + return html` + ${map(this.icolumns, (col) => col.render(this.order))} + `; + } + + public renderTable() { + return html` +
` element for each column header + * - @part column-text: The text `` of the column header + * - @part column-sort: The sort indicator `` of a column header, if activated + * - @part group-header: The `
` element for a group header + * - @part row: The `
` element for a single datum. Can be accessed via the index, + * which is zero-indexed + * + */ + +@customElement("ak-simple-table") +export class SimpleTable extends AKElement implements ISimpleTable { + static get styles() { + return [ + PFBase, + PFTable, + css` + .pf-c-table thead .pf-c-table__check { + min-width: 3rem; + } + .pf-c-table tbody .pf-c-table__check input { + margin-top: calc(var(--pf-c-table__check--input--MarginTop) + 1px); + } + .pf-c-toolbar__content { + row-gap: var(--pf-global--spacer--sm); + } + .pf-c-toolbar__item .pf-c-input-group { + padding: 0 var(--pf-global--spacer--sm); + } + `, + ]; + } + + @property({ type: String, attribute: true, reflect: true }) + order?: string; + + @property({ type: Array, attribute: false }) + columns: Column[] = []; + + @property({ type: Object, attribute: false }) + set content(content: ContentType) { + this._content = convertContent(content); + } + + get content(): TableGrouped | TableFlat { + return this._content; + } + + private _content: TableGrouped | TableFlat = { + kind: "flat", + content: [], + }; + + protected get icolumns(): TableColumn[] { + const hosted = (column: TableColumn) => { + column.host = this; + return column; + }; + + return this.columns.map((column) => + typeof column === "string" + ? hosted(new TableColumn(column)) + : Array.isArray(column) + ? hosted(new TableColumn(...column)) + : hosted(column), + ); + } + + protected ouiaTypeDeclaration() { + this.setAttribute("data-ouia-component-type", "ak-simple-table"); + } + + public override connectedCallback(): void { + super.connectedCallback(); + this.ouiaTypeDeclaration(); + this.setAttribute("data-ouia-component-id", this.getAttribute("id") || randomId()); + } + + public override performUpdate() { + this.removeAttribute("data-ouia-component-safe"); + super.performUpdate(); + } + + public renderRow(row: TableRow, _rownum: number) { + return html`
${col}
+ ${group} +
+ + ${this.renderColumnHeaders()} + + ${this.renderBody()} +
+ `; + } + + public render() { + return this.renderTable(); + } + + public override updated() { + this.setAttribute("data-ouia-component-safe", "true"); + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-simple-table": SimpleTable; + } +} diff --git a/web/src/elements/ak-table/stories/ak-select-table.stories.ts b/web/src/elements/ak-table/stories/ak-select-table.stories.ts new file mode 100644 index 000000000000..e14a9843cbdf --- /dev/null +++ b/web/src/elements/ak-table/stories/ak-select-table.stories.ts @@ -0,0 +1,138 @@ +import { Meta, StoryObj } from "@storybook/web-components"; +import { slug } from "github-slugger"; + +import { LitElement, TemplateResult, html } from "lit"; +import { customElement, property, state } from "lit/decorators.js"; + +import { TableSortEvent } from "../TableColumn.js"; +import "../ak-select-table.js"; +import { SelectTable } from "../ak-select-table.js"; +import { nutritionDbUSDA } from "./sample_nutrition_db.js"; + +const metadata: Meta = { + title: "Elements / Table / SelectTable", + component: "ak-select-table", + parameters: { + docs: { + description: { + component: "Our table with a select field", + }, + }, + }, + argTypes: { + content: { + type: "function", + description: "An array of arrays of items to show", + }, + columns: { + type: "function", + description: "An array of column headers", + }, + order: { + type: "string", + description: + "A key indicating which column to highlight as the current sort target, if any", + }, + }, +}; + +export default metadata; + +type Story = StoryObj; + +const container = (testItem: TemplateResult) => + html`
+ + ${testItem} +
`; + +const columns = ["Name", "Calories", "Protein", "Fiber", "Sugar"]; +const content = nutritionDbUSDA.map(({ name, calories, sugar, fiber, protein }) => ({ + key: slug(name), + content: [name, calories, protein, fiber, sugar].map((a) => html`${a}`), +})); + +export const Default: Story = { + render: () => + container( + html``, + ), +}; + +export const MultiSelect: Story = { + render: () => + container( + html``, + ), +}; + +type Ord = Record; + +@customElement("ak-select-table-test-sort") +export class SimpleTableSortTest extends LitElement { + @state() + order = "name"; + + @state() + sortDown = true; + + @property({ type: Boolean, attribute: true }) + multiple = false; + + columns = columns.map((a) => [a, a.toLowerCase()]); + + get content() { + const content = [...nutritionDbUSDA]; + + // Sort according to the key + const comparison = this.sortDown + ? (a: Ord, b: Ord) => (a[this.order] > b[this.order] ? -1 : 1) + : (a: Ord, b: Ord) => (a[this.order] > b[this.order] ? 1 : -1); + content.sort(comparison); + + // Return the content, processed to comply with the format expected by a selectable table. + return content.map(({ name, calories, sugar, fiber, protein }) => ({ + key: slug(name), + content: [name, calories, protein, fiber, sugar].map((a) => html`${a}`), + })); + } + + render() { + const onTableSort = (event: TableSortEvent) => { + if (event.value === this.order) { + this.sortDown = !this.sortDown; + return; + } + this.order = event.value; + }; + + const direction = this.sortDown ? "" : "-"; + + return html``; + } +} + +export const TableWithSorting: Story = { + render: () => container(html``), +}; + +export const MultiselectTableWithSorting: Story = { + render: () => container(html``), +}; diff --git a/web/src/elements/ak-table/stories/ak-simple-table.stories.ts b/web/src/elements/ak-table/stories/ak-simple-table.stories.ts new file mode 100644 index 000000000000..99a202f8d416 --- /dev/null +++ b/web/src/elements/ak-table/stories/ak-simple-table.stories.ts @@ -0,0 +1,147 @@ +import { Meta, StoryObj } from "@storybook/web-components"; +import { slug } from "github-slugger"; + +import { LitElement, TemplateResult, html } from "lit"; +import { customElement, state } from "lit/decorators.js"; + +import { TableSortEvent } from "../TableColumn.js"; +import "../ak-simple-table.js"; +import { SimpleTable } from "../ak-simple-table.js"; +import { KeyBy } from "../types"; +import type { TableRow } from "../types"; +import { convertContent } from "../utils.js"; +import { nutritionDbUSDA } from "./sample_nutrition_db.js"; + +const metadata: Meta = { + title: "Elements / Table / SimpleTable", + component: "ak-simple-table", + parameters: { + docs: { + description: { + component: "Our basic table", + }, + }, + }, + argTypes: { + content: { + type: "function", + description: "An array of arrays of items to show", + }, + columns: { + type: "function", + description: "An array of column headers", + }, + order: { + type: "string", + description: + "A key indicating which column to highlight as the current sort target, if any", + }, + }, +}; + +export default metadata; + +type Story = StoryObj; + +const container = (testItem: TemplateResult) => + html`
+ + ${testItem} +
`; + +const columns = ["Name", "Calories", "Protein", "Fiber", "Sugar"]; +const content = nutritionDbUSDA.map(({ name, calories, sugar, fiber, protein }) => [ + name, + calories, + protein, + fiber, + sugar, +]); + +export const Default: Story = { + render: () => + container( + html``, + ), +}; + +type Ord = Record; + +@customElement("ak-simple-table-test-sort") +export class SimpleTableSortTest extends LitElement { + @state() + order = "name"; + + @state() + sortDown = true; + + columns = columns.map((a) => [a, a.toLowerCase()]); + + get content() { + const content = [...nutritionDbUSDA]; + const comparison = this.sortDown + ? (a: Ord, b: Ord) => (a[this.order] < b[this.order] ? -1 : 1) + : (a: Ord, b: Ord) => (a[this.order] < b[this.order] ? 1 : -1); + content.sort(comparison); + return content.map(({ name, calories, sugar, fiber, protein }) => [ + name, + calories, + protein, + fiber, + sugar, + ]); + } + + render() { + const onTableSort = (event: TableSortEvent) => { + if (event.value === this.order) { + this.sortDown = !this.sortDown; + return; + } + this.order = event.value; + }; + + const direction = this.sortDown ? "" : "-"; + + return html``; + } +} + +export const TableWithSorting: Story = { + render: () => container(html``), +}; + +const rowContent: TableRow[] = nutritionDbUSDA.map(({ name, calories, sugar, fiber, protein }) => ({ + key: slug(name), + content: [name, calories, protein, fiber, sugar].map((a) => html`${a}`), +})); + +export const PreprocessedContent: Story = { + render: () => + container( + html``, + ), +}; + +const capitalize = (s = "") => `${s.substring(0, 1).toUpperCase()}${s.substring(1)}`; + +const groups = new Map(nutritionDbUSDA.map(({ name, group }) => [name, group])); +const groupFoods: KeyBy = (content) => capitalize(groups.get(content[0] as string)); +const groupedContent = convertContent(content, { groupBy: groupFoods }); + +export const GroupedTable: Story = { + render: () => + html``, +}; diff --git a/web/src/elements/ak-table/stories/sample_nutrition_db.ts b/web/src/elements/ak-table/stories/sample_nutrition_db.ts new file mode 100644 index 000000000000..2ddc33025913 --- /dev/null +++ b/web/src/elements/ak-table/stories/sample_nutrition_db.ts @@ -0,0 +1,213 @@ +// Taken from the https://fdc.nal.usda.gov/data-documentation.html database of "Foundational Foods." + +export const nutritionDbUSDA = [ + { + name: "Hummus", + calories: 229, + sugar: "0.34g", + fiber: "5.4g", + protein: "7.35g", + group: "processed", + }, + { + name: "Onion Rings, breaded", + calories: 288, + sugar: "4.5g", + fiber: "2.4g", + protein: "4.52g", + group: "processed", + }, + { + name: "Bread, white", + calories: 270, + sugar: "5.34g", + fiber: "2.3g", + protein: "9.43g", + group: "processed", + }, + { + name: "Sweet and Sour Pork, frozen", + calories: 260, + sugar: "10.3g", + fiber: "1g", + protein: "8.88g", + group: "processed", + }, + { + name: "Almonds", + calories: 620, + sugar: "4.17g", + fiber: "11g", + protein: "20.4g", + group: "organic", + }, + { + name: "Kale", + calories: 35, + sugar: "0.8g", + fiber: "4.1g", + protein: "2.92g", + group: "organic", + }, + { + name: "Pickles", + calories: 12, + sugar: "1.28g", + fiber: "1g", + protein: "0.48g", + group: "organic", + }, + { + name: "Kiwifruit", + calories: 58, + sugar: "8.99g", + fiber: "3g", + protein: "1.06g", + group: "organic", + }, + { + name: "Sunflower Seeds", + calories: 612, + sugar: "3.14g", + fiber: "10.3g", + protein: "21g", + group: "organic", + }, + + { + name: "Nectarines", + calories: 39, + sugar: "7.89g", + fiber: "1.5g", + protein: "1.06g", + group: "organic", + }, + { + name: "Oatmeal Cookies", + calories: 430, + sugar: "34.8g", + fiber: "3.3g", + protein: "5.79g", + group: "processed", + }, + { + name: "Carrots", + calories: 37, + sugar: "4.2g", + fiber: "3.2g", + protein: "0.81g", + group: "organic", + }, + { + name: "Figs", + calories: 249, + sugar: "47.9g", + fiber: "9.8g", + protein: "3.3g", + group: "organic", + }, + { + name: "Lettuce", + calories: 17, + sugar: "1.19g", + fiber: "1.8g", + protein: "1.24g", + group: "organic", + }, + { + name: "Cantaloupe", + calories: 34, + sugar: "7.88g", + fiber: "0.8g", + protein: "0.82g", + group: "organic", + }, + { + name: "Oranges", + calories: 47, + sugar: "8.57g", + fiber: "2g", + protein: "0.91g", + group: "organic", + }, + { + name: "Pears", + calories: 57, + sugar: "9.69g", + fiber: "3.1g", + protein: "0.38g", + group: "organic", + }, + { + name: "Broccoli", + calories: 31, + sugar: "1.4g", + fiber: "2.4g", + protein: "2.57g", + group: "organic", + }, + { + name: "Eggs", + calories: 148, + sugar: "0.2g", + fiber: "0g", + protein: "12.4g", + group: "organic", + }, + { + name: "Onions", + calories: 44, + sugar: "5.76g", + fiber: "2.2g", + protein: "0.94g", + group: "organic", + }, + { + name: "Bananas", + calories: 97, + sugar: "15.8g", + fiber: "1.7g", + protein: "0.74g", + group: "organic", + }, + { + name: "Apples", + calories: 64.7, + sugar: "13.3g", + fiber: "2.08g", + protein: "0.148g", + group: "organic", + }, + { + name: "Pineapple", + calories: 60.1, + sugar: "11.4g", + fiber: "0.935g", + protein: "0.461g", + group: "organic", + }, + { + name: "Snap Green Beans", + calories: 40, + sugar: "2.33g", + fiber: "3.01g", + protein: "1.97g", + group: "organic", + }, + { + name: "Beets", + calories: 44.6, + sugar: "5.1g", + fiber: "3.12g", + protein: "1.69g", + group: "organic", + }, + { + name: "Eggplant", + calories: 26.1, + sugar: "2.35g", + fiber: "2.45g", + protein: "0.852g", + group: "organic", + }, +]; diff --git a/web/src/elements/ak-table/tests/ak-select-table.test.ts b/web/src/elements/ak-table/tests/ak-select-table.test.ts new file mode 100644 index 000000000000..748309d61172 --- /dev/null +++ b/web/src/elements/ak-table/tests/ak-select-table.test.ts @@ -0,0 +1,143 @@ +import { $, browser } from "@wdio/globals"; +import { slug } from "github-slugger"; + +import { html, render } from "lit"; + +import "../ak-select-table.js"; +import { nutritionDbUSDA as unsortedNutritionDbUSDA } from "../stories/sample_nutrition_db.js"; + +type SortableRecord = Record; + +const dbSort = (a: SortableRecord, b: SortableRecord) => + a.name < b.name ? -1 : a.name > b.name ? 1 : 0; +const alphaSort = (a: string, b: string) => (a < b ? -1 : a > b ? 1 : 0); +const nutritionDbUSDA = unsortedNutritionDbUSDA.toSorted(dbSort); + +const columns = ["Name", "Calories", "Protein", "Fiber", "Sugar"]; +const content = nutritionDbUSDA.map(({ name, calories, sugar, fiber, protein }) => ({ + key: slug(name), + content: [name, calories, protein, fiber, sugar].map((a) => html`${a}`), +})); + +const item3 = nutritionDbUSDA[2]; + +describe("Select Table", () => { + let selecttable: WebdriverIO.Element; + let table: WebdriverIO.Element; + + beforeEach(async () => { + await render( + html` `, + document.body, + ); + // @ts-ignore + selecttable = await $("ak-select-table"); + table = await selecttable.$(">>>table"); + }); + + it("it should render a select table", async () => { + expect(table).toBeDisplayed(); + }); + + it("the table should have as many entries as the data source", async () => { + const rows = await table.$("tbody").$$("tr"); + expect(rows.length).toBe(content.length); + }); + + it(`the third item ought to have the name ${item3.name}`, async () => { + const rows = await table.$("tbody").$$("tr"); + const cells = await rows[2].$$("td"); + const cell1Text = await cells[1].getText(); + expect(cell1Text).toEqual(item3.name); + }); + + it("Selecting one item ought to result in the value of the table being set", async () => { + const rows = await table.$("tbody").$$("tr"); + const control = await rows[2].$$("td")[0].$("input"); + await control.click(); + expect(await selecttable.getValue()).toEqual(slug(item3.name)); + }); + + afterEach(async () => { + await browser.execute(() => { + document.body.querySelector("ak-select-table")?.remove(); + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + if (document.body["_$litPart$"]) { + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + delete document.body["_$litPart$"]; + } + }); + }); +}); + +describe("Multiselect Table", () => { + let selecttable: WebdriverIO.Element; + let table: WebdriverIO.Element; + + beforeEach(async () => { + await render( + html` + `, + document.body, + ); + // @ts-ignore + selecttable = await $("ak-select-table"); + // @ts-ignore + table = await selecttable.$(">>>table"); + }); + + it("it should render the select-all control", async () => { + const selall = await table.$("thead").$$("tr")[0].$$("td")[0]; + if (selall === undefined) { + throw new Error("Could not find table header"); + } + const input = await selall.$("input"); + expect(await input.getProperty("name")).toEqual("select-all-input"); + }); + + it("it should set the value when one input is clicked", async () => { + const input = await table.$("tbody").$$("tr")[2].$$("td")[0].$("input"); + await input.click(); + expect(await selecttable.getValue()).toEqual(slug(nutritionDbUSDA[2].name)); + }); + + it("it should select all when that control is clicked", async () => { + const selall = await table.$("thead").$$("tr")[0].$$("td")[0]; + if (selall === undefined) { + throw new Error("Could not find table header"); + } + const input = await selall.$("input"); + await input.click(); + const value = await selecttable.getValue(); + const values = value.split(";").toSorted(alphaSort).join(";"); + const expected = nutritionDbUSDA.map((a) => slug(a.name)).join(";"); + expect(values).toEqual(expected); + }); + + it("it should clear all when that control is clicked twice", async () => { + const selall = await table.$("thead").$$("tr")[0].$$("td")[0]; + if (selall === undefined) { + throw new Error("Could not find table header"); + } + const input = await selall.$("input"); + await input.click(); + const value = await selecttable.getValue(); + const values = value.split(";").toSorted(alphaSort).join(";"); + const expected = nutritionDbUSDA.map((a) => slug(a.name)).join(";"); + expect(values).toEqual(expected); + await input.click(); + const newvalue = await selecttable.getValue(); + expect(newvalue).toEqual(""); + }); + + afterEach(async () => { + await browser.execute(() => { + document.body.querySelector("ak-select-table")?.remove(); + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + if (document.body["_$litPart$"]) { + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + delete document.body["_$litPart$"]; + } + }); + }); +}); diff --git a/web/src/elements/ak-table/tests/ak-simple-table.test.ts b/web/src/elements/ak-table/tests/ak-simple-table.test.ts new file mode 100644 index 000000000000..35bb7265a6e2 --- /dev/null +++ b/web/src/elements/ak-table/tests/ak-simple-table.test.ts @@ -0,0 +1,46 @@ +import { $ } from "@wdio/globals"; +import { slug } from "github-slugger"; + +import { html, render } from "lit"; + +import "../ak-simple-table.js"; +import { nutritionDbUSDA } from "../stories/sample_nutrition_db.js"; + +const columns = ["Name", "Calories", "Protein", "Fiber", "Sugar"]; +const content = nutritionDbUSDA.map(({ name, calories, sugar, fiber, protein }) => ({ + key: slug(name), + content: [name, calories, protein, fiber, sugar].map((a) => html`${a}`), +})); + +describe("Simple Table", () => { + let table: WebdriverIO.Element; + + beforeEach(async () => { + await render( + html` `, + document.body, + ); + // @ts-ignore + table = await $("ak-simple-table").$(">>>table"); + }); + + it("it should render a simple table", async () => { + expect(table).toBeDisplayed(); + }); + + it("the table should have as many entries as the data source", async () => { + const rows = await table.$("tbody").$$("tr"); + expect(rows.length).toBe(content.length); + }); + + afterEach(async () => { + await browser.execute(() => { + document.body.querySelector("ak-simple-table")?.remove(); + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + if (document.body["_$litPart$"]) { + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + delete document.body["_$litPart$"]; + } + }); + }); +}); diff --git a/web/src/elements/ak-table/types.ts b/web/src/elements/ak-table/types.ts new file mode 100644 index 000000000000..de59ce838d07 --- /dev/null +++ b/web/src/elements/ak-table/types.ts @@ -0,0 +1,61 @@ +import { TemplateResult } from "lit"; + +import { TableColumn } from "./TableColumn"; + +// authentik's standard tables (ak-simple-table, ak-select-table) all take a variety of types, the +// simplest of which is just an array of tuples, one for each column, along with an tuple for +// the definition of the column itself. +// +// More complex types are defined below, including those for grouped content. In he "utils" +// collection with this element you can find the [`convertContent`](./utils.ts) function, which can +// be used to create grouped content by providing a `groupBy` function, as well as selectable +// content by providing a `keyBy` function. See the documentation for `convertContent`. + +/** + * - key (string, option): the value to return on "click", if the table is clickable / selectable + * - content (TemplateResult[]): The contents of the rows to be shown + */ +export type TableRow = { + key?: string; + content: TemplateResult[]; + // expansion?: () => TemplateResult; +}; + +/** + * For a collection of rows without groups + * + */ +export type TableFlat = { + kind: "flat"; + content: TableRow[]; +}; + +/** + * For a single grouped collection; the name of the group and the contents. + */ +export type TableGroup = { + kind: "group"; + group: string; + content: TableRow[]; +}; + +/** + * For a grouped collection, all of the groups. + */ +export type TableGrouped = { + kind: "groups"; + content: TableGroup[]; +}; + +/** + * For convenience, a table column can be defined either by the string defining its + * content, or by a pair of strings defining the content and the sort-by header + * used to indicate and control sortability. + */ +export type Column = TableColumn | string | [string, string?]; + +export type RawType = string | number | TemplateResult; +export type TableInputType = RawType[][] | TableRow[] | TableGrouped | TableFlat; +export type TableType = TableGrouped | TableFlat; + +export type KeyBy = (_: RawType[]) => string; diff --git a/web/src/elements/ak-table/utils.ts b/web/src/elements/ak-table/utils.ts new file mode 100644 index 000000000000..9611f84417d5 --- /dev/null +++ b/web/src/elements/ak-table/utils.ts @@ -0,0 +1,107 @@ +import { groupBy as groupByProcessor } from "@goauthentik/common/utils.js"; + +import { html } from "lit"; + +import { + KeyBy, + RawType, + TableFlat, + TableGrouped, + TableInputType, + TableRow, + TableType, +} from "./types"; + +// TypeScript was extremely specific about due diligence here. +export const isTableRows = (v: unknown): v is TableRow[] => + Array.isArray(v) && + v.length > 0 && + typeof v[0] === "object" && + v[0] !== null && + !("kind" in v[0]) && + "content" in v[0]; + +export const isTableGrouped = (v: unknown): v is TableGrouped => + typeof v === "object" && v !== null && "kind" in v && v.kind === "groups"; + +export const isTableFlat = (v: unknown): v is TableFlat => + typeof v === "object" && v !== null && "kind" in v && v.kind === "flat"; + +/** + * @func convertForTable + * + * Takes a variety of input types and streamlines them. Can't handle every contingency; be prepared + * to do conversions yourself as resources demand. Great for about 80% of use cases, though. + * + * - @param groupBy: If provided, for each item it must provide the group's name, by which the + * content will be grouped. The name is not a slug; it is what will be displayed. + * - @param keyBy: If provided, for each item it must provide a key for the item, which will be the + * value returned. + * + * For content that has already been grouped or converted into a single "flat" group, providing + * these functions will not do anything except generate a warning on the console. + */ + +export function convertContent( + content: TableInputType, + { groupBy, keyBy }: { groupBy?: KeyBy; keyBy?: KeyBy } = {}, +): TableType { + // TableGrouped + if (isTableGrouped(content)) { + if (groupBy || keyBy) { + console.warn("Passed processor function when content is already marked as grouped"); + } + return content; + } + + if (isTableFlat(content)) { + if (groupBy || keyBy) { + console.warn("Passed processor function when content is already marked as flat"); + } + return content; + } + + // TableRow[] + if (isTableRows(content)) { + if (groupBy) { + console.warn( + "Passed processor function when content is processed and can't be analyzed for grouping", + ); + } + return { + kind: "flat", + content: content, + }; + } + + // TableRow or Rawtype, but empty + if (Array.isArray(content) && content.length === 0) { + return { + kind: "flat", + content: [], + }; + } + + const templatizeAsNeeded = (rows: RawType[][]): TableRow[] => + rows.map((row) => ({ + ...(keyBy ? { key: keyBy(row) } : {}), + content: row.map((item) => (typeof item === "object" ? item : html`${item}`)), + })); + + if (groupBy) { + const groupedContent = groupByProcessor(content, groupBy); + return { + kind: "groups", + content: groupedContent.map(([group, rowsForGroup]) => ({ + kind: "group", + group, + content: templatizeAsNeeded(rowsForGroup), + })), + }; + } + + return { + kind: "flat", + content: templatizeAsNeeded(content), + }; +} diff --git a/web/src/elements/cards/tests/AggregateCard.test.ts b/web/src/elements/cards/tests/AggregateCard.test.ts index 6b39351de51c..e40f786710c4 100644 --- a/web/src/elements/cards/tests/AggregateCard.test.ts +++ b/web/src/elements/cards/tests/AggregateCard.test.ts @@ -1,11 +1,11 @@ -import { ensureCSSStyleSheet } from "@goauthentik/elements/utils/ensureCSSStyleSheet.js"; import { $, expect } from "@wdio/globals"; import { TemplateResult, html, render as litRender } from "lit"; -import AKGlobal from "@goauthentik/common/styles/authentik.css"; +import AKGlobal from "../../../common/styles/authentik.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; +import { ensureCSSStyleSheet } from "../../utils/ensureCSSStyleSheet.js"; import "../AggregateCard.js"; const render = (body: TemplateResult) => { diff --git a/web/src/elements/cards/tests/AggregatePromiseCard.test.ts b/web/src/elements/cards/tests/AggregatePromiseCard.test.ts index 271a97d09cc3..879ba4af2386 100644 --- a/web/src/elements/cards/tests/AggregatePromiseCard.test.ts +++ b/web/src/elements/cards/tests/AggregatePromiseCard.test.ts @@ -1,11 +1,11 @@ -import { ensureCSSStyleSheet } from "@goauthentik/elements/utils/ensureCSSStyleSheet.js"; import { $, expect } from "@wdio/globals"; import { TemplateResult, html, render as litRender } from "lit"; -import AKGlobal from "@goauthentik/common/styles/authentik.css"; +import AKGlobal from "../../../common/styles/authentik.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; +import { ensureCSSStyleSheet } from "../../utils/ensureCSSStyleSheet.js"; import "../AggregatePromiseCard.js"; const render = (body: TemplateResult) => { diff --git a/web/src/elements/cards/tests/QuickActionCard.test.ts b/web/src/elements/cards/tests/QuickActionCard.test.ts index 47beaa80d9ba..4e46ba9c7ccb 100644 --- a/web/src/elements/cards/tests/QuickActionCard.test.ts +++ b/web/src/elements/cards/tests/QuickActionCard.test.ts @@ -1,11 +1,11 @@ -import { ensureCSSStyleSheet } from "@goauthentik/elements/utils/ensureCSSStyleSheet.js"; import { $, expect } from "@wdio/globals"; import { TemplateResult, html, render as litRender } from "lit"; -import AKGlobal from "@goauthentik/common/styles/authentik.css"; +import AKGlobal from "../../../common/styles/authentik.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; +import { ensureCSSStyleSheet } from "../../utils/ensureCSSStyleSheet.js"; import { QuickAction } from "../QuickActionsCard.js"; import "../QuickActionsCard.js"; diff --git a/web/src/elements/forms/SearchSelect/tests/ak-search-select-view.test.ts b/web/src/elements/forms/SearchSelect/tests/ak-search-select-view.test.ts index b159ee06055e..ca78c8f438f5 100644 --- a/web/src/elements/forms/SearchSelect/tests/ak-search-select-view.test.ts +++ b/web/src/elements/forms/SearchSelect/tests/ak-search-select-view.test.ts @@ -97,12 +97,14 @@ describe("Search select: Test Input Field", () => { }); afterEach(async () => { - document.body.querySelector("#a-separate-component")?.remove(); - document.body.querySelector("ak-search-select-view")?.remove(); - // @ts-expect-error expression of type '"_$litPart$"' is added by Lit - if (document.body["_$litPart$"]) { + await browser.execute(() => { + document.body.querySelector("#a-separate-component")?.remove(); + document.body.querySelector("ak-search-select-view")?.remove(); // @ts-expect-error expression of type '"_$litPart$"' is added by Lit - delete document.body["_$litPart$"]; - } + if (document.body["_$litPart$"]) { + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + delete document.body["_$litPart$"]; + } + }); }); }); diff --git a/web/src/elements/forms/SearchSelect/tests/ak-search-select.test.ts b/web/src/elements/forms/SearchSelect/tests/ak-search-select.test.ts index d47f5d1de73c..26d1f4fb54e6 100644 --- a/web/src/elements/forms/SearchSelect/tests/ak-search-select.test.ts +++ b/web/src/elements/forms/SearchSelect/tests/ak-search-select.test.ts @@ -1,7 +1,4 @@ /* eslint-env jest */ -import { AKElement } from "@goauthentik/elements/Base"; -import { bound } from "@goauthentik/elements/decorators/bound.js"; -import { CustomListenerElement } from "@goauthentik/elements/utils/eventEmitter"; import { $, browser, expect } from "@wdio/globals"; import { slug } from "github-slugger"; @@ -9,6 +6,9 @@ import { html, render } from "lit"; import { customElement } from "lit/decorators.js"; import { property, query } from "lit/decorators.js"; +import { AKElement } from "../../../../elements/Base.js"; +import { bound } from "../../../../elements/decorators/bound.js"; +import { CustomListenerElement } from "../../../../elements/utils/eventEmitter"; import "../ak-search-select.js"; import { SearchSelect } from "../ak-search-select.js"; import { type ViewSample, sampleData } from "../stories/sampleData.js"; @@ -103,11 +103,13 @@ describe("Search select: event driven startup", () => { }); afterEach(async () => { - await document.body.querySelector("ak-mock-search-group")?.remove(); - // @ts-expect-error expression of type '"_$litPart$"' is added by Lit - if (document.body["_$litPart$"]) { + await browser.execute(() => { + document.body.querySelector("ak-mock-search-group")?.remove(); // @ts-expect-error expression of type '"_$litPart$"' is added by Lit - delete document.body["_$litPart$"]; - } + if (document.body["_$litPart$"]) { + // @ts-expect-error expression of type '"_$litPart$"' is added by Lit + delete document.body["_$litPart$"]; + } + }); }); }); diff --git a/web/tsconfig.base.json b/web/tsconfig.base.json index 24537be0b7a0..ff2f9c3ff9f2 100644 --- a/web/tsconfig.base.json +++ b/web/tsconfig.base.json @@ -6,6 +6,13 @@ "paths": { "@goauthentik/docs/*": ["../website/docs/*"] }, + "types": [ + "node", + "@wdio/mocha-framework", + "@wdio/types", + "expect-webdriverio", + "grecaptcha" + ], "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "experimentalDecorators": true, @@ -58,5 +65,5 @@ } ] }, - "exclude": ["./tests"] + "exclude": ["src/**/*.test.ts", "./tests"] } diff --git a/web/wdio.conf.ts b/web/wdio.conf.ts index e5fab5f1f082..0a0c1acbced7 100644 --- a/web/wdio.conf.ts +++ b/web/wdio.conf.ts @@ -7,9 +7,51 @@ import tsconfigPaths from "vite-tsconfig-paths"; const isProdBuild = process.env.NODE_ENV === "production"; const apiBasePath = process.env.AK_API_BASE_PATH || ""; const runHeadless = process.env.CI !== undefined; + +const testSafari = process.env.WDIO_TEST_SAFARI !== undefined; +const testFirefox = process.env.WDIO_TEST_FIREFOX !== undefined; +const skipChrome = process.env.WDIO_SKIP_CHROME !== undefined; + +const capabilities = []; + +const DEFAULT_MAX_INSTANCES = 10; + +if (!skipChrome) { + capabilities.push({ + // capabilities for local browser web tests + "browserName": "chrome", // or "firefox", "microsoftedge", "safari" + "goog:chromeOptions": { + args: [ + "disable-search-engine-choice-screen", + ...(runHeadless + ? [ + "headless", + "disable-gpu", + "no-sandbox", + "window-size=1280,672", + "browser-test", + ] + : []), + ], + }, + }); +} + +if (testSafari) { + capabilities.push({ + browserName: "safari", // or "firefox", "microsoftedge", "safari" + }); +} + +if (testFirefox) { + capabilities.push({ + browserName: "firefox", // or "firefox", "microsoftedge", "safari" + }); +} + const maxInstances = process.env.MAX_INSTANCES !== undefined - ? parseInt(process.env.MAX_INSTANCES, 10) + ? parseInt(process.env.MAX_INSTANCES, DEFAULT_MAX_INSTANCES) : runHeadless ? 10 : 1; @@ -23,8 +65,8 @@ export const config: WebdriverIO.Config = { runner: [ "browser", { - viteConfig: (config: UserConfig = { plugins: [] }) => ({ - ...config, + viteConfig: (userConfig: UserConfig = { plugins: [] }) => ({ + ...userConfig, plugins: [ litCss(), replace({ @@ -35,7 +77,7 @@ export const config: WebdriverIO.Config = { "process.env.AK_API_BASE_PATH": JSON.stringify(apiBasePath), "preventAssignment": true, }), - ...(config?.plugins ?? []), + ...(userConfig?.plugins ?? []), tsconfigPaths(), ], }), @@ -93,27 +135,7 @@ export const config: WebdriverIO.Config = { // Sauce Labs platform configurator - a great tool to configure your capabilities: // https://saucelabs.com/platform/platform-configurator // - capabilities: [ - { - // capabilities for local browser web tests - "browserName": "chrome", // or "firefox", "microsoftedge", "safari" - "goog:chromeOptions": { - args: [ - "disable-search-engine-choice-screen", - ...(runHeadless - ? [ - "headless", - "disable-gpu", - "no-sandbox", - "window-size=1280,672", - "browser-test", - ] - : []), - ], - }, - }, - ], - + capabilities, // // =================== // Test Configurations From 08a1bf1ca4a50d38bdd98a0811dc31368af9bdb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:02:46 +0200 Subject: [PATCH 21/27] core: bump google-api-python-client from 2.147.0 to 2.148.0 (#11631) Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.147.0 to 2.148.0. - [Release notes](https://github.com/googleapis/google-api-python-client/releases) - [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.147.0...v2.148.0) --- updated-dependencies: - dependency-name: google-api-python-client dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 773446699b1e..442ffeba8d43 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1771,13 +1771,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.147.0" +version = "2.148.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "google_api_python_client-2.147.0-py2.py3-none-any.whl", hash = "sha256:c6ecfa193c695baa41e84562d8f8f244fcd164419eca3fc9fd7565646668f9b2"}, - {file = "google_api_python_client-2.147.0.tar.gz", hash = "sha256:e864c2cf61d34c00f05278b8bdb72b93b6fa34f0de9ead51d20435f3b65f91be"}, + {file = "google_api_python_client-2.148.0-py2.py3-none-any.whl", hash = "sha256:cae8cbd0a9637d42d2e213c598e72427f8b879d6cf5a3dc448498aefad86e4b5"}, + {file = "google_api_python_client-2.148.0.tar.gz", hash = "sha256:c362581853582a0fec0b8a9f03a4067b4bbbb12720e5492095d166f67bb40320"}, ] [package.dependencies] From 1a094b2fe2ef86e43bba7223312adff09ee4ed2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:03:45 +0200 Subject: [PATCH 22/27] core: bump black from 24.8.0 to 24.10.0 (#11630) Bumps [black](https://github.com/psf/black) from 24.8.0 to 24.10.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.8.0...24.10.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/poetry.lock b/poetry.lock index 442ffeba8d43..360b4099f21b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -441,33 +441,33 @@ files = [ [[package]] name = "black" -version = "24.8.0" +version = "24.10.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, - {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, - {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, - {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, - {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, - {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, - {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, - {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, - {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, - {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, - {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, - {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, - {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, - {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, - {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, - {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, - {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, - {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, - {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, - {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, - {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, - {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, ] [package.dependencies] @@ -479,7 +479,7 @@ platformdirs = ">=2" [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.10)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] From 97b087291bfa34ed0d93968aff054a5608355d01 Mon Sep 17 00:00:00 2001 From: Marc 'risson' Schmitt Date: Tue, 8 Oct 2024 15:04:07 +0200 Subject: [PATCH 23/27] ci: require ci-web.build for merging (#11627) --- .github/workflows/ci-web.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci-web.yml b/.github/workflows/ci-web.yml index def138a63837..89e9bc536ede 100644 --- a/.github/workflows/ci-web.yml +++ b/.github/workflows/ci-web.yml @@ -44,15 +44,7 @@ jobs: - name: Lint working-directory: ${{ matrix.project }}/ run: npm run ${{ matrix.command }} - ci-web-mark: - needs: - - lint - runs-on: ubuntu-latest - steps: - - run: echo mark build: - needs: - - ci-web-mark runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -68,6 +60,13 @@ jobs: - name: build working-directory: web/ run: npm run build + ci-web-mark: + needs: + - build + - lint + runs-on: ubuntu-latest + steps: + - run: echo mark test: needs: - ci-web-mark From ddee02e055a82bb10504693200718424a17b52aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:06:42 +0200 Subject: [PATCH 24/27] core: bump ruff from 0.6.8 to 0.6.9 (#11626) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.8 to 0.6.9. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.6.8...0.6.9) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/poetry.lock b/poetry.lock index 360b4099f21b..c86c3ad68ffb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4210,29 +4210,29 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.6.8" +version = "0.6.9" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.6.8-py3-none-linux_armv6l.whl", hash = "sha256:77944bca110ff0a43b768f05a529fecd0706aac7bcce36d7f1eeb4cbfca5f0f2"}, - {file = "ruff-0.6.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:27b87e1801e786cd6ede4ada3faa5e254ce774de835e6723fd94551464c56b8c"}, - {file = "ruff-0.6.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd48f945da2a6334f1793d7f701725a76ba93bf3d73c36f6b21fb04d5338dcf5"}, - {file = "ruff-0.6.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:677e03c00f37c66cea033274295a983c7c546edea5043d0c798833adf4cf4c6f"}, - {file = "ruff-0.6.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f1476236b3eacfacfc0f66aa9e6cd39f2a624cb73ea99189556015f27c0bdeb"}, - {file = "ruff-0.6.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f5a2f17c7d32991169195d52a04c95b256378bbf0de8cb98478351eb70d526f"}, - {file = "ruff-0.6.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5fd0d4b7b1457c49e435ee1e437900ced9b35cb8dc5178921dfb7d98d65a08d0"}, - {file = "ruff-0.6.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8034b19b993e9601f2ddf2c517451e17a6ab5cdb1c13fdff50c1442a7171d87"}, - {file = "ruff-0.6.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cfb227b932ba8ef6e56c9f875d987973cd5e35bc5d05f5abf045af78ad8e098"}, - {file = "ruff-0.6.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef0411eccfc3909269fed47c61ffebdcb84a04504bafa6b6df9b85c27e813b0"}, - {file = "ruff-0.6.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:007dee844738c3d2e6c24ab5bc7d43c99ba3e1943bd2d95d598582e9c1b27750"}, - {file = "ruff-0.6.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ce60058d3cdd8490e5e5471ef086b3f1e90ab872b548814e35930e21d848c9ce"}, - {file = "ruff-0.6.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1085c455d1b3fdb8021ad534379c60353b81ba079712bce7a900e834859182fa"}, - {file = "ruff-0.6.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:70edf6a93b19481affd287d696d9e311388d808671bc209fb8907b46a8c3af44"}, - {file = "ruff-0.6.8-py3-none-win32.whl", hash = "sha256:792213f7be25316f9b46b854df80a77e0da87ec66691e8f012f887b4a671ab5a"}, - {file = "ruff-0.6.8-py3-none-win_amd64.whl", hash = "sha256:ec0517dc0f37cad14a5319ba7bba6e7e339d03fbf967a6d69b0907d61be7a263"}, - {file = "ruff-0.6.8-py3-none-win_arm64.whl", hash = "sha256:8d3bb2e3fbb9875172119021a13eed38849e762499e3cfde9588e4b4d70968dc"}, - {file = "ruff-0.6.8.tar.gz", hash = "sha256:a5bf44b1aa0adaf6d9d20f86162b34f7c593bfedabc51239953e446aefc8ce18"}, + {file = "ruff-0.6.9-py3-none-linux_armv6l.whl", hash = "sha256:064df58d84ccc0ac0fcd63bc3090b251d90e2a372558c0f057c3f75ed73e1ccd"}, + {file = "ruff-0.6.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:140d4b5c9f5fc7a7b074908a78ab8d384dd7f6510402267bc76c37195c02a7ec"}, + {file = "ruff-0.6.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53fd8ca5e82bdee8da7f506d7b03a261f24cd43d090ea9db9a1dc59d9313914c"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645d7d8761f915e48a00d4ecc3686969761df69fb561dd914a773c1a8266e14e"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eae02b700763e3847595b9d2891488989cac00214da7f845f4bcf2989007d577"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d5ccc9e58112441de8ad4b29dcb7a86dc25c5f770e3c06a9d57e0e5eba48829"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:417b81aa1c9b60b2f8edc463c58363075412866ae4e2b9ab0f690dc1e87ac1b5"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c866b631f5fbce896a74a6e4383407ba7507b815ccc52bcedabb6810fdb3ef7"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b118afbb3202f5911486ad52da86d1d52305b59e7ef2031cea3425142b97d6f"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67267654edc23c97335586774790cde402fb6bbdb3c2314f1fc087dee320bfa"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3ef0cc774b00fec123f635ce5c547dac263f6ee9fb9cc83437c5904183b55ceb"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:12edd2af0c60fa61ff31cefb90aef4288ac4d372b4962c2864aeea3a1a2460c0"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:55bb01caeaf3a60b2b2bba07308a02fca6ab56233302406ed5245180a05c5625"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:925d26471fa24b0ce5a6cdfab1bb526fb4159952385f386bdcc643813d472039"}, + {file = "ruff-0.6.9-py3-none-win32.whl", hash = "sha256:eb61ec9bdb2506cffd492e05ac40e5bc6284873aceb605503d8494180d6fc84d"}, + {file = "ruff-0.6.9-py3-none-win_amd64.whl", hash = "sha256:785d31851c1ae91f45b3d8fe23b8ae4b5170089021fbb42402d811135f0b7117"}, + {file = "ruff-0.6.9-py3-none-win_arm64.whl", hash = "sha256:a9641e31476d601f83cd602608739a0840e348bda93fec9f1ee816f8b6798b93"}, + {file = "ruff-0.6.9.tar.gz", hash = "sha256:b076ef717a8e5bc819514ee1d602bbdca5b4420ae13a9cf61a0c0a4f53a2baa2"}, ] [[package]] From 0110912ec33f632322a52cc82aa62d051be00c7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:08:17 +0200 Subject: [PATCH 25/27] website: bump docusaurus-plugin-openapi-docs from 4.0.1 to 4.1.0 in /website (#11625) website: bump docusaurus-plugin-openapi-docs in /website Bumps [docusaurus-plugin-openapi-docs](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/tree/HEAD/packages/docusaurus-plugin-openapi-docs) from 4.0.1 to 4.1.0. - [Release notes](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/releases) - [Changelog](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/commits/v4.1.0/packages/docusaurus-plugin-openapi-docs) --- updated-dependencies: - dependency-name: docusaurus-plugin-openapi-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 14 +++++++------- website/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index acf3ebe981eb..2692a9f0f599 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -18,7 +18,7 @@ "@mdx-js/react": "^3.0.1", "clsx": "^2.1.1", "disqus-react": "^1.1.5", - "docusaurus-plugin-openapi-docs": "^4.0.0", + "docusaurus-plugin-openapi-docs": "^4.1.0", "docusaurus-theme-openapi-docs": "^4.0.1", "postcss": "^8.4.47", "prism-react-renderer": "^2.4.0", @@ -7571,14 +7571,14 @@ } }, "node_modules/docusaurus-plugin-openapi-docs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-4.0.1.tgz", - "integrity": "sha512-ST0VLbRMTNz2O0NFIezWcF0dNYrGf34/oUmn3wH3hdMcStGQIOCEwD3JvuzyQ7WygjAR8md2kITHeRBRB2yhAA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-4.1.0.tgz", + "integrity": "sha512-QBoRDFlRGJBKNyHi+4+wuSUlVPF4KrFR5sNyEr/s4eoPPVpaViB/Fwh8DmWbVXvWopNZ0UR1nk1r3Kwls6Qg2Q==", "dependencies": { "@apidevtools/json-schema-ref-parser": "^11.5.4", - "@docusaurus/plugin-content-docs": "^3.0.1", - "@docusaurus/utils": "^3.0.1", - "@docusaurus/utils-validation": "^3.0.1", + "@docusaurus/plugin-content-docs": "^3.5.0", + "@docusaurus/utils": "^3.5.0", + "@docusaurus/utils-validation": "^3.5.0", "@redocly/openapi-core": "^1.10.5", "chalk": "^4.1.2", "clsx": "^1.1.1", diff --git a/website/package.json b/website/package.json index 68d7eb209713..223c0aeed602 100644 --- a/website/package.json +++ b/website/package.json @@ -26,7 +26,7 @@ "@mdx-js/react": "^3.0.1", "clsx": "^2.1.1", "disqus-react": "^1.1.5", - "docusaurus-plugin-openapi-docs": "^4.0.0", + "docusaurus-plugin-openapi-docs": "^4.1.0", "docusaurus-theme-openapi-docs": "^4.0.1", "postcss": "^8.4.47", "prism-react-renderer": "^2.4.0", From 6e04771e64e58e4019bcf5232d02b37a41f1f29e Mon Sep 17 00:00:00 2001 From: "authentik-automation[bot]" <135050075+authentik-automation[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:08:42 +0200 Subject: [PATCH 26/27] core, web: update translations (#11623) Co-authored-by: rissson <18313093+rissson@users.noreply.github.com> --- locale/zh-Hans/LC_MESSAGES/django.mo | Bin 70570 -> 70699 bytes web/xliff/de.xlf | 3 --- web/xliff/en.xlf | 3 --- web/xliff/es.xlf | 3 --- web/xliff/fr.xlf | 4 ---- web/xliff/ko.xlf | 3 --- web/xliff/nl.xlf | 3 --- web/xliff/pl.xlf | 3 --- web/xliff/pseudo-LOCALE.xlf | 4 ---- web/xliff/ru.xlf | 4 ---- web/xliff/tr.xlf | 3 --- web/xliff/zh-CN.xlf | 3 --- web/xliff/zh-Hans.xlf | 4 ---- web/xliff/zh-Hant.xlf | 3 --- web/xliff/zh_TW.xlf | 3 --- 15 files changed, 46 deletions(-) diff --git a/locale/zh-Hans/LC_MESSAGES/django.mo b/locale/zh-Hans/LC_MESSAGES/django.mo index 7ecaf7d80f29a792fcf6197906fb30e9bd99446d..f13125a50ca516391f4d356a6bc6e2f268c802b2 100644 GIT binary patch delta 14359 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 delta 14233 zcmYk?37k#!|Htt&jIoSm%wUW$W*7{E!Hi{WS;xL)-?uE0eaX&kB7|%gg@nq!$1gjP zR8qD?ipX9nkt`+u*ZY1y{U4o2U(fI7bH4YS@A)q0Ue$)R!Ryxq`!0nCFZ4L}XYjm& z7@W`Z)@Ag(JEfHMyt!39uLsV<$#@S_a8xztdR#|*31{K->Yi5!^VaaZPFMj);T&v( zAHHzf}JoA?!*#!9CPD?fIco#$6X)_bs`ZN1g|<~!q!*|JK{K8f*OImbzQqgsE+r* zW_S+6u~Pfa?Av|jN z>!=%Ms_$-?AN3%mQP+76b)7a?7zdz6?hW)MQCUbuJv)MQ-n)#`uxJB!fsLpkK8(82 z8O)3~kUo3ABGc=oH1xb&I1JS;9W??AFb3CRCOnEEc)TI=-<8T45(Th)Blo0DaX#@t z%#Y7dPn5s0>u4fs1nOe~_Q8030|O(3`rJ{}TKEBT;xBgoZ`8=-Zo>Gtq>|9Ybzm%N z7c9W6xD9oKy;upaqApmVshiUhNZ-5)sCJVu7+0fixB+#eJ*bg5iP`ZQYR&xaqoND< zW93Z1<(MysPBeFmE~SO%^(Q|PS+L$E)LMvp-VJpvREM5N-LM;KaSp;{T!~rmYh>Me z7g4(^j;F4OzV1|tQ(1^=xDPdipWrmSfV$8Nt=uA7h&sO!^#q4dBbM5lEsSk36nkJt z9Ec0?DC)_(v~eBokL9%gM^n)S*P@1MKStmgjKZ6!wGq_TEt-PJKVCe4WX7?mCr?M+ zU@ocy%Pd}p8HqncEy6vhwR0Y`aewb26@4H>J9i={>PgC=E|_YjnXOP4>W*6d6R{W` zMlHfys8yc5y}NEW>NtPY@?>$c?3`d~eSW~b&UcqWuyMvp8iCBqvD~97u z)OLGR^4WfW5I4F2)r61XJ-b`qa~8Uex(874u*V)ClxO?b9L1LwTbx z8NWn5k>1;ysvMXb3u9hPL0zvAYGit#Iy4oN@O>_t(){*xZdt$S$ysmKz>WMC(wqHayH$wSQ9V~@d7b) zm2oL*2+yE;o{@Qo!;&}>8)F|li0W9e9&WB%phloAYD!*2Ey~fTk(!E{3P0)rKSNf( z_lJ*)o~#&;qoHk%>Tx=1Di&J2-r@tO?Rv)YPf)uc=L_z0`B0xr#3-zZvDgvga4Z(a zC0GP~`=}J6@&l^jKUe?@^>R;E1vPgyQSG{7L7ZUu#TM_h_-oXfxo7#u7)hM3w=)T~ z*z038?f>>vd?fr>7b6&7cBI!HnNDvL>cte=*F9Mt)FLa1EE}&TYE3M~Ciok!z-ljg z-b?sB>VX>cbH5{AK#lkUET}v0r&6871&qf?-nT8V8fu%(L@m;HP;#;d*!v^RLaJ!%(Y6|9{reG85oqrs) z$SzT_wR5p0dVEL8ea8IHqoJYL5U*mDq_!Lz6iP8;l= zXg2Bs?^(PX*)ZN$*agcBVLEXJ@~ZF(4RwodEM_HMiW<>XLm7WP(E$<~%8M9>Pf@G1 z&@lHTwNR_M8)_Sk!DhG#wYdI57LymjQ^a8lOvIrWhD*(jsO#*<1UxsK@mJ-UHAvvG z!--R|1UA7;I1)8d<4_|p8MEUI%#ClNKDQ3_=G%wr*csH2|BPz?7&SE^Bi&RM^-)oS zx)^~iF%R}J$DxLL4(h_IP#4~Zp+S7FV`JjWFY{DbYLx5HZB&Q;!Zw(5w0p7jLfyxY zdC<3pN^>gvupEYtao=jyF_}0W>*EfrgMVRpd~U4!%{LUc5^u(R*nOPaz6DuGT6Duv z+ix63<3iL(ZbKHU&)Y*qLvs$b{jOnt%re0}abeUDr=ni1jWH*7GW%P83|1gN9X0p+ zu@>G!jbO=%&YBoa+!niP{|}?0p*?|J@CIsV>P~VW=z!|LVAM8y1qsiiID&g{M#*d5Rj!@N{>B z5~v$gw74#6M4rb&IM~j=Vfm$~k=c#e@NhcgugaH}IFIVURgA;?SQzuX>Uv%YwR#(% zI@HcxYHDLAyU$fZJ$Yl)NOYOZ&?zys0so{HW^{MSZ?D>hs+(7zbhq`i5C$%)bfLVws8= zaW?7#^HEQ*6*XliP#wL1YJUSu;;;A;=AY&|IvLfmd8mnY=#$6LtbhII|?hH*3Mv5N9Ur}*4wDhZN%)_ z|Hr6kNY7yjyp9^uoHN}vD~5W4rua5?M!i5Dp`IkqEbA!hhSgEm>xTN=K+KNgEk7NL z6EDJe?(glVqSbf>OX59iQ1A`c)4Hft-4k_#v8cISidsy&P*ZarL-8SI$BeVx;toT7 z7ZgFweMMCJs_4@NI#SUG$D%&?8tR=rAN7QrFf;DJ3b+re;_p}oOV4p5Fa*`nxmXt0 zVgjB=we#lk4G4AdDAt(A_&28#Jl_p{Yy6ma0_w$7%Wq%5sE&-ou9%Jy_yg)aaNo?b z!0n0{Od_9x>c|Tg&qs~$A#8>}FJSz0P^q%eeOWZXc;e}ph8wX6-op-T% z`%&$GM-6S>H{A#pKwUQh^?s>{nt}$XsqSR?0Y0ltv<7ofbNem^RyS&~U9|jTi}StZ z+9jhd*aCH<9#{{DqdvdWJd0X8_fZ|oyV#AKFP=&x5~(->UqwyHpO^{LmhgKHo0wx! zH(Z0ma2Mvs#HH>pr*$!kcpR$Z3sAdiE9!IKVg&w#tSO)O50(BTLfBgaaVS>Ai>Un^ zvCK_DLDW#!#9Y`5^WX@~i_=jzc*o9fvG^eBIwx@eev4Z$?H#67`~Lxz_9SjCXLSd$ z4pz7~*vl*3NLFA3=TYDi+3P=+oR4Uhn3*Dk`pp`ankv#xa-?C*p`8wjXK)9`IO`vE@d0qqC^( zmSq#ah%pt1<4G)vbvL_zkI)ZC5+B^m`0K?`feF#vk47!FYp5H9Z*}kb!Kfa8iPiBp ztbnDrxffMWtV%oqGviJS!-Lo#Phu{t$~^YM#+V&9f57dIr_s68JY(!D9Q|1-qL=P>b4!TFi%0YvwNM^AAx|5WJtyaept8iW($f8%)AvoNV!j zc!xOjfcvZ0Bh(s6Jm?nTY>X!U3Uz~@P&asJX8Xu>BnCAyO;GonfIjtbG8MgEiiWBm zYAC0mreGO{;VIN^_z}Bf(x>igb~b9HK0!_4UDT>B^qIR+l35M4SQ}y#4zqYB7AE%X zppro48`K5=!4NF@x$9{;vo7k%+o8_)!q)f_>hlLME8akLFWnH=LfvpMszWnyAa21o6zo z#q4;@Jcp^QKkpiq${2IP?eDgzA)1Dza6M`*d}H1;ADLNCy7mQ7H>hDY#xUacWVy4J+h!VS8_qPBqlR|7dDQ&Yyo37OGmONHr=8KK znSX7Y6cYKcIqH?#2VchJsFBHg#=TOTq1M1$)MEP<^~6`ryV#QWDYn2CU%Ovc%W*C7 zcQ^p2oONsK?pelPbD85C77Qk%de|K+;b<(0o3SRI$K06zocqz4i0VKsRL7cOK3s(1 zxXJto)$WYNmr-lvzRylPF*BccC-R`4FdCa)%X18SzM2bQ!fVY=kw-LQBO9a_WOqzi)YOHsNE28$zB|0M^yU>sQ1TW?0|^53x%#$I=?)^=Eqc!s$bs}tYB zDOmCbox{!82-9x5C!d2F(M31e|EjFB6Zff+0yK0 z4nTEq4C+m~4y)o>)b+w{Gyb`##NT$`()hi2bQ32uo88H)8k16;8>OwcnzcD*;_+2;Wv8WNN zZ8k)mZ-H7%T`)%bf3PYz3yb17lf@-%2 zwMdtnJ23Fy|30S@%!$*e9-lKWnb$Eh`8yW>fm+pnnKAd=lhrhvqS|-FGT0Mez&V%; z@0l6yGyi(UhTnH@yd>0IrQ)mD5+~x11zTWV9E|Gl6b#1|n2y^~?J7QWBiIHt zLY>WtsE#Z*H=4VBRym4#)1ARm_?P7q9=TOt0gIDwgL>les17VZ?TR(14t$Eb@eMP} zV|U|3v$9#w^tGg-x$lN?*vp)Pp~S1qZKx60k6I&V%nPU&&=u6XKl>9m)QwObc^x%k z8&K^&#r${=t7!j+{>5K9NTeY<(X02j`#+RYp1N%|9Ji8RjhegmG*$;Dn3GX+KLf+? zSMwR>CJuY%EP};|D`0u-gr&K^H;amfb~o0?%c!|Z@PY#WQ%MDkBOZi$!r7=N`U2bI zO-#d@K|z6U$JbC#x)0USo2aS!)eOqu;yjZ3dkL1PYBn=_m?JPB?WUT`P*btPJZ4@t z|3uv|dq!t0s^iHRgF{dw`3Cw5QTc$1_T?$m++4vL_yk8`YH(2C*Xt`5` zWikZ?Myw^aA?{}JcGO6Ggu3p}W^hPQV6n%91iA13G!l7e&;fOWLD(NhnwPL5al_0( zfj8MC)DuiIH)7xcP$P52d}#R`S%Lz81&c9DV_=(S@dX9`&!#jI%lP2i_&HY1>gF~$ zTacGKh<7!1B0re_=B~N^9Oq)L>~17hU`yh!uq(#p2nxJ#CLycbJAjMu5x$Ibat3+n zn8}yR&CN7yPT~kQ!H6*T!S1M$Sd6-GMtUQA;&XTqi{L+~sVp4stc6j;-LW8!MXjMl zn2ek3e4ooyVo5wfZI1#G?gOrjQ6LPiS(T%dyw)OWj!UD7C#_gl3q#tjk272OKfDH zCJd~*t`9p7&RwDup$tC-ew>rNDH|!QV=uG6WKu%V zV1LV`2>*&o!CLTvf2VxRKP)M-*bYAaKUx)}T;$9i;)m4#J%Wgr`8Op+=Ga8`9O*bR z1^lOyBC2$xHrd+#iFJsz@192;lkp4kV<_z?hsnK)v;8q;<9%bPy=g7gx-*4+=(V79 zpg!t9=X8D$@i&~CkClm2DX&xSOZkZUN1W4T*p{*xj$36vU%^(qKIX-a`sQkK7XTf(Sx>g<|;);M|{Ov zO~h-&^T|)9{7AjAwHw2^gXD(b0n2H7rcy79`*5A*Yni0I5dW!ik&U)kW)04=yXh=1 zr@;I4sh#hGHFbjHJ=(<+M_T)7)SvU0FP~6y1(|G=KgguhGK%_9+(JntR|4x%?)uZq zNBd5a(QyQqQ=V8nh1^xjCdxLh@FDqI)Q4k63V(A89K|^Ih?@Qj+qaa76diht&Z2%E zM^av--judF_FJ3(W#HYmm!K|XA}8V~TF!l};Rt_~ElXf&C*0I(;8%g~T^>Tcb2EIvll6ad$f9zq6 zOW_o9VfZ#B+&=sa^%9Su=%`P*W9P;PGW?7s?#*XDpy>FUxH@GV@jyy3>U^zou#Lj4 z(V{?ty-mE5GJ}#p*+|Jm>8&MnUu2B+mrv2`W0(49otfhk}t=3eSPRyMEx3e@|UR)U2y^} zI#C*v*^RqVzlaA=FHOs1)OS%|NPRKtr&?YA#0m+%DP-8)-fj4sqGJqYHDwMhb?8@y zpEd(I5XuemyNF&<*QG-e8iKiz1lve zd`<2)C7JR$WjE(f+J!zL){&pwB&#b9rSu~nZ@KxX9}gEOkEkbDo-lCm^iRvPV=tuv`Ae7+U*TLo>YJ$dqW&@UX_OPxU#95TX}ZY$*_!rI;%d>o#yz-Kd5r7??c+1=j==}rLYEZE$aC&jkrB!Dn-X;aylv#x3SzdJWlRc>_RC_ zo3Duvsi7S{`<%l3ly_+Nj?2~YjuK3_2JxJ{MLbU}IrfsjPOKk{FHqMHJsm66hB%l~ z%ik%9}@gbNu#tQK7rM-1MQaLzekdPS!zm-6wBlyJ;#4BwTW*D?UJlf zCC=8SzL{Jr%t}0$dPC}~sW-MytNA?gYw&$?Z%`@`e?_T8Za<|W^;xJR2j{y{^mDZY zPQtd7LGI@e%ZkST9`8|qlVCdy|2ScjhV?-r;MXs bgHoLOs_m~=T~d8}-_eH$Zf|$(Y}x+ Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/en.xlf b/web/xliff/en.xlf index bf4af3e4be18..13e83a42015b 100644 --- a/web/xliff/en.xlf +++ b/web/xliff/en.xlf @@ -6894,9 +6894,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/es.xlf b/web/xliff/es.xlf index 542b7ec05953..5463bc4edf61 100644 --- a/web/xliff/es.xlf +++ b/web/xliff/es.xlf @@ -6546,9 +6546,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/fr.xlf b/web/xliff/fr.xlf index 46ac24d74d75..49727e551289 100644 --- a/web/xliff/fr.xlf +++ b/web/xliff/fr.xlf @@ -8729,10 +8729,6 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti Search returned no results. La recherche n'a pas retourné de résultat. - - No messages found - Pas de message trouvé - Reputation score(s) Score(s) de réputation diff --git a/web/xliff/ko.xlf b/web/xliff/ko.xlf index d99b099b1c82..e3542126af23 100644 --- a/web/xliff/ko.xlf +++ b/web/xliff/ko.xlf @@ -8463,9 +8463,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/nl.xlf b/web/xliff/nl.xlf index 310d263003e0..89537703b64b 100644 --- a/web/xliff/nl.xlf +++ b/web/xliff/nl.xlf @@ -8309,9 +8309,6 @@ Bindingen naar groepen/gebruikers worden gecontroleerd tegen de gebruiker van de Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/pl.xlf b/web/xliff/pl.xlf index 4c3e900e8858..d079de6ad436 100644 --- a/web/xliff/pl.xlf +++ b/web/xliff/pl.xlf @@ -8728,9 +8728,6 @@ Powiązania z grupami/użytkownikami są sprawdzane względem użytkownika zdarz Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/pseudo-LOCALE.xlf b/web/xliff/pseudo-LOCALE.xlf index 35574e40a354..be2c53edf172 100644 --- a/web/xliff/pseudo-LOCALE.xlf +++ b/web/xliff/pseudo-LOCALE.xlf @@ -8677,10 +8677,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. Śēàŕćĥ ŕēţũŕńēď ńō ŕēśũĺţś. - - No messages found - Ńō ḿēśśàĝēś ƒōũńď - Reputation score(s) Ŕēƥũţàţĩōń śćōŕē(ś) diff --git a/web/xliff/ru.xlf b/web/xliff/ru.xlf index 32333768386d..2a50fa99e700 100644 --- a/web/xliff/ru.xlf +++ b/web/xliff/ru.xlf @@ -8732,10 +8732,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. Поиск не дал никаких результатов. - - No messages found - Сообщения не найдены - Reputation score(s) Оценка(и) репутации diff --git a/web/xliff/tr.xlf b/web/xliff/tr.xlf index 7c5f51ec75d7..42cf0e5b893d 100644 --- a/web/xliff/tr.xlf +++ b/web/xliff/tr.xlf @@ -6539,9 +6539,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/zh-CN.xlf b/web/xliff/zh-CN.xlf index 1db4c463c840..615ab3a59c12 100644 --- a/web/xliff/zh-CN.xlf +++ b/web/xliff/zh-CN.xlf @@ -5476,9 +5476,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/zh-Hans.xlf b/web/xliff/zh-Hans.xlf index c9faacb20aa1..16a35ff1efcd 100644 --- a/web/xliff/zh-Hans.xlf +++ b/web/xliff/zh-Hans.xlf @@ -8731,10 +8731,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. 搜索未返回结果。 - - No messages found - 未找到消息 - Reputation score(s) 信誉分数 diff --git a/web/xliff/zh-Hant.xlf b/web/xliff/zh-Hant.xlf index 6e3c554ee1f3..3ac470b654dc 100644 --- a/web/xliff/zh-Hant.xlf +++ b/web/xliff/zh-Hant.xlf @@ -6587,9 +6587,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. - - No messages found - Reputation score(s) diff --git a/web/xliff/zh_TW.xlf b/web/xliff/zh_TW.xlf index c93c55ef8175..f4da6cda4645 100644 --- a/web/xliff/zh_TW.xlf +++ b/web/xliff/zh_TW.xlf @@ -8424,9 +8424,6 @@ Bindings to groups/users are checked against the user of the event. Search returned no results. - - No messages found - Reputation score(s) From 72a904512c2ae452760158006d83dfe42dceef09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:17:08 +0200 Subject: [PATCH 27/27] website: bump docusaurus-theme-openapi-docs from 4.0.1 to 4.1.0 in /website (#11624) website: bump docusaurus-theme-openapi-docs in /website Bumps [docusaurus-theme-openapi-docs](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/tree/HEAD/packages/docusaurus-theme-openapi-docs) from 4.0.1 to 4.1.0. - [Release notes](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/releases) - [Changelog](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/commits/v4.1.0/packages/docusaurus-theme-openapi-docs) --- updated-dependencies: - dependency-name: docusaurus-theme-openapi-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 723 +++++++++++++++++++++++++++++++++++++- website/package.json | 2 +- 2 files changed, 706 insertions(+), 19 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index 2692a9f0f599..a64ab4c35194 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -19,7 +19,7 @@ "clsx": "^2.1.1", "disqus-react": "^1.1.5", "docusaurus-plugin-openapi-docs": "^4.1.0", - "docusaurus-theme-openapi-docs": "^4.0.1", + "docusaurus-theme-openapi-docs": "^4.1.0", "postcss": "^8.4.47", "prism-react-renderer": "^2.4.0", "react": "^18.3.1", @@ -7783,17 +7783,17 @@ } }, "node_modules/docusaurus-theme-openapi-docs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/docusaurus-theme-openapi-docs/-/docusaurus-theme-openapi-docs-4.0.1.tgz", - "integrity": "sha512-4HIzYm2Y+pPiqvFs2oSEghtSgamza3Az1nGgwAJ+dpowfdOUafsGnbWOkJoFWVncRNn8/2mYSwrbUuo1t0kVUQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/docusaurus-theme-openapi-docs/-/docusaurus-theme-openapi-docs-4.1.0.tgz", + "integrity": "sha512-KQ7zs82fTeGrK55VqPvHF9suPYecPhcpoTi0y68/HlCMjMnSl6RN+Q0eLbJr8WwM5r5o96QXObqAx8ot+Dc4BA==", "dependencies": { - "@docusaurus/theme-common": "^3.0.1", + "@docusaurus/theme-common": "^3.5.0", "@hookform/error-message": "^2.0.1", "@reduxjs/toolkit": "^1.7.1", "clsx": "^1.1.1", "copy-text-to-clipboard": "^3.1.0", "crypto-js": "^4.1.1", - "docusaurus-plugin-openapi-docs": "^4.0.1", + "docusaurus-plugin-openapi-docs": "^4.1.0", "docusaurus-plugin-sass": "^0.2.3", "file-saver": "^2.0.5", "lodash": "^4.17.20", @@ -7808,6 +7808,7 @@ "react-modal": "^3.15.1", "react-redux": "^7.2.0", "rehype-raw": "^6.1.1", + "remark-gfm": "3.0.1", "sass": "^1.58.1", "sass-loader": "^13.3.2", "webpack": "^5.61.0", @@ -7830,6 +7831,14 @@ "@types/unist": "^2" } }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/docusaurus-theme-openapi-docs/node_modules/@types/unist": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", @@ -7845,6 +7854,17 @@ "node": ">=6" } }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/docusaurus-theme-openapi-docs/node_modules/hast-util-from-parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", @@ -7945,20 +7965,687 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/docusaurus-theme-openapi-docs/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-find-and-replace": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", + "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/docusaurus-theme-openapi-docs/node_modules/rehype-raw": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz", - "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", - "license": "MIT", + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-raw": "^7.2.0", + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-gfm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", + "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-gfm-footnote": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", + "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-gfm-strikethrough": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", + "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-gfm-table": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", + "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-gfm-task-list-item": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", + "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-extension-gfm": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz", + "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-extension-gfm-autolink-literal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz", + "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-extension-gfm-footnote": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz", + "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-extension-gfm-strikethrough": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz", + "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-extension-gfm-table": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz", + "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-extension-gfm-tagfilter": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz", + "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-extension-gfm-task-list-item": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz", + "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/rehype-raw": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz", + "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-theme-openapi-docs/node_modules/remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", "unified": "^10.0.0" }, "funding": { diff --git a/website/package.json b/website/package.json index 223c0aeed602..7ae21f3a99b7 100644 --- a/website/package.json +++ b/website/package.json @@ -27,7 +27,7 @@ "clsx": "^2.1.1", "disqus-react": "^1.1.5", "docusaurus-plugin-openapi-docs": "^4.1.0", - "docusaurus-theme-openapi-docs": "^4.0.1", + "docusaurus-theme-openapi-docs": "^4.1.0", "postcss": "^8.4.47", "prism-react-renderer": "^2.4.0", "react": "^18.3.1",