@webx-ui/module-audit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 webx-ui
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # @webx-ui/module-audit
2
+
3
+ The «Audit» section of the [WebX UI](https://github.com/webx-ui/webx-ui) admin panel: the
4
+ overview of the last run — health, counts by severity and group, what is new and what got fixed —
5
+ its findings, one row per check, each opening into its addresses — and the pages the last full
6
+ run crawled, with any field of the snapshot as a column, a filter on any field, a CSV export and
7
+ a card per page with its answer, its problems, its links in and out, the pictures, CSS and JS it
8
+ loads with what each answered, and its structured data with what the types lack.
9
+
10
+ The server half is the Composer package `webx-ui/module-audit`; the section appears in the
11
+ navigation when both are installed.
12
+
13
+ ```ts
14
+ import { createAdmin } from '@webx-ui/module-admin'
15
+ import { audit } from '@webx-ui/module-audit'
16
+ import '@webx-ui/module-audit/style.css'
17
+
18
+ createAdmin({ modules: [audit()] })
19
+ ```
20
+
21
+ Options: `path` (default `/audit`) and `settingsPath` (default `/settings` — the audit's settings
22
+ live on the «Audit» tab there).
23
+
24
+ ## License
25
+
26
+ MIT
@@ -0,0 +1,12 @@
1
+ import { AuditComparisonRow } from './types';
2
+ /**
3
+ * One check of a comparison opened: its new, fixed or persisting findings, fifty at a time —
4
+ * fixed ones as the earlier run stored them, the others from the later run.
5
+ */
6
+ type __VLS_Props = {
7
+ from: number;
8
+ to: number;
9
+ row: AuditComparisonRow;
10
+ };
11
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
12
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { AuditDetails } from './types';
2
+ /**
3
+ * The expansion of a finding, for every check alike (§4 of the spec): a summary line and, when
4
+ * the check gave one, a table whose cells are drawn by their type — an address opens, a code is
5
+ * coloured, a missing value is said in red, an editor link goes to the record in the panel.
6
+ */
7
+ type __VLS_Props = {
8
+ details: AuditDetails;
9
+ };
10
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
11
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import { AuditIssue } from './types';
2
+ /**
3
+ * The fix button's dialog (§8, decision 4): the fixes that can close one finding, each with what
4
+ * it would change — the records and fields with their counts, or a setting before and after —
5
+ * and "Apply" under each. Nothing changes until it is pressed; the finding then waits for the
6
+ * next run, which is the only thing that says it is gone.
7
+ */
8
+ type __VLS_Props = {
9
+ run: number;
10
+ issue: AuditIssue;
11
+ };
12
+ type __VLS_PublicProps = {
13
+ 'open'?: boolean;
14
+ } & __VLS_Props;
15
+ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
16
+ fixed: (fix: string) => any;
17
+ "update:open": (value: boolean) => any;
18
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
19
+ onFixed?: ((fix: string) => any) | undefined;
20
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
21
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
22
+ export default _default;
@@ -0,0 +1,21 @@
1
+ import { AuditIgnoreRule, AuditIssue } from './types';
2
+ /**
3
+ * «Hide» on a finding (decision 9): which addresses — this one, a mask of them, or the whole
4
+ * check — and why. While the mask is typed the dialog says how many findings of the last run it
5
+ * would hide; nothing is hidden until the button is pressed, and nothing is ever deleted.
6
+ */
7
+ type __VLS_Props = {
8
+ issue: AuditIssue;
9
+ title: string;
10
+ };
11
+ type __VLS_PublicProps = {
12
+ 'open'?: boolean;
13
+ } & __VLS_Props;
14
+ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
+ hidden: (rule: AuditIgnoreRule) => any;
16
+ "update:open": (value: boolean) => any;
17
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
18
+ onHidden?: ((rule: AuditIgnoreRule) => any) | undefined;
19
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
20
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
21
+ export default _default;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Where one host stands, under its row on «Outgoing»: the pages that link to it with the anchor
3
+ * and what it answered, and the fields of the database that hold it, with «Open in the editor».
4
+ * Fifty of each — enough to see the pattern, and the findings list the rest.
5
+ */
6
+ type __VLS_Props = {
7
+ host: string;
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
10
+ export default _default;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * «Outgoing» (§8): every host the site points at — in the pages of the last full run and in the
3
+ * fields of the database — by class, development stands on top and in red. A row opens into
4
+ * where the host stands: the pages with their anchors, the records with the field and the way to
5
+ * the editor.
6
+ */
7
+ type __VLS_Props = {
8
+ base: string;
9
+ };
10
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
11
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import { AuditIssueQuery } from './types';
2
+ /**
3
+ * The addresses of one check, under its row in the findings table: loaded when the row opens,
4
+ * fifty at a time. A check that has fixes gets a button on each address; the dialog shows what
5
+ * it would change before anything does. «Hide» asks for the reason; on the list of hidden ones
6
+ * each says why, and «Show again» removes the rule.
7
+ */
8
+ type __VLS_Props = {
9
+ run: number;
10
+ query: AuditIssueQuery;
11
+ fixable?: boolean;
12
+ /** The check's title, for the hiding dialog. */
13
+ title?: string;
14
+ };
15
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
16
+ changed: () => any;
17
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onChanged?: (() => any) | undefined;
19
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
20
+ export default _default;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The findings of the last finished run (§8): one row per check, worst first; a row opens into
3
+ * its addresses. «Hidden» in the state filter lists what the rules hide, each with its reason. The «?» beside a check says what was found, why it matters and how to fix it —
4
+ * the three texts every check carries.
5
+ */
6
+ type __VLS_Props = {
7
+ base: string;
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
10
+ export default _default;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The head of the section: its name, its views — the overview, the findings, the pages, the
3
+ * hosts the site points at and the runs — and the way to the section's own settings.
4
+ */
5
+ type __VLS_Props = {
6
+ base: string;
7
+ current: 'overview' | 'issues' | 'pages' | 'hosts' | 'runs' | 'settings';
8
+ /** A card around the slot — the tables want one, the overview draws its own. */
9
+ card?: boolean;
10
+ };
11
+ declare function __VLS_template(): {
12
+ attrs: Partial<{}>;
13
+ slots: Readonly<{
14
+ default?: () => unknown;
15
+ }> & {
16
+ default?: () => unknown;
17
+ };
18
+ refs: {};
19
+ rootEl: HTMLDivElement;
20
+ };
21
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
22
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
23
+ card: boolean;
24
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
25
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
26
+ export default _default;
27
+ type __VLS_WithTemplateSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The last run at a glance (§8): health, the counts by severity and by group, what is new and
3
+ * what got fixed since the run before, and the button that starts the next one. While a run is
4
+ * going the page asks for it every couple of seconds and shows the stage it is in.
5
+ */
6
+ type __VLS_Props = {
7
+ base: string;
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
10
+ export default _default;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * One page of the snapshot, sliding in from the right (§8): what it answered and what its head
3
+ * says, its findings, the links that lead in and out of it — with the answer of each own page
4
+ * and the class of each host — what it loads (pictures, CSS, JS) with what each answered, and
5
+ * its structured data with what the types lack.
6
+ *
7
+ * «Recheck» asks this one address again (a run of the `urls` scope) and says what of its findings
8
+ * in the last full run are fixed; «Export» downloads the page — snapshot, findings and links.
9
+ */
10
+ type __VLS_Props = {
11
+ run: number;
12
+ /** Where the section lives — the recheck's comparison opens on its runs. */
13
+ base?: string;
14
+ /** The page to show; null keeps the card closed. */
15
+ pageId: number | null;
16
+ /** Check ids and their titles in the reader's language, for the findings tab. */
17
+ titles: Record<string, string>;
18
+ };
19
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
20
+ close: () => any;
21
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
22
+ onClose?: (() => any) | undefined;
23
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
24
+ export default _default;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Every address the last full run crawled (§8, «Pages»): any field of the snapshot as a column,
3
+ * a filter on any of them, the list as CSV, and a row that opens the page's card.
4
+ */
5
+ type __VLS_Props = {
6
+ base: string;
7
+ };
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
9
+ export default _default;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The history (§8 «Runs»): every run kept, newest first, with its health and counts. Ticking a
3
+ * run compares it with the one it was analysed against; ticking two compares those two — by
4
+ * fingerprint (decision 8): what is new in the later one, what both have, what is gone. `?to=`
5
+ * opens on one run already ticked — the way the page card's recheck leads here.
6
+ */
7
+ type __VLS_Props = {
8
+ base: string;
9
+ };
10
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
11
+ export default _default;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The section's settings (§8): where the site is and which hosts are its stands, the limits of
3
+ * the crawl and the paths it leaves out, the thresholds, the nightly run and how much history
4
+ * to keep. The form is the screen the server describes (`audit.settings`), so a project patches
5
+ * a field in the way it does everywhere else; saving is this page's own.
6
+ */
7
+ type __VLS_Props = {
8
+ base: string;
9
+ };
10
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
11
+ export default _default;
package/dist/api.d.ts ADDED
@@ -0,0 +1,85 @@
1
+ import { AdminContext } from '@webx-ui/module-admin';
2
+ import { AuditCheckRow, AuditComparison, AuditComparisonKind, AuditFixOffer, AuditFixResult, AuditHosts, AuditHostClass, AuditIgnoreRule, AuditIssue, AuditIssueQuery, AuditLatest, AuditLinkRow, AuditPage, AuditPageCard, AuditPageQuery, AuditPageRow, AuditResourceRow, AuditResourceTab, AuditRun, AuditScope } from './types';
3
+ export interface AuditApi {
4
+ /** The run that is going, the last one that finished, and whether the queue can take one. */
5
+ latest(): Promise<AuditLatest>;
6
+ run(id: number): Promise<AuditRun>;
7
+ /** Every run, newest first — the history. */
8
+ runs(query?: {
9
+ page?: number;
10
+ per_page?: number;
11
+ }): Promise<AuditPage<AuditRun>>;
12
+ /**
13
+ * Queues a run; refused with 409 on a `sync` queue or while another one is going. A `urls` run
14
+ * is a recheck of the addresses given.
15
+ */
16
+ start(scope: AuditScope, urls?: string[]): Promise<AuditRun>;
17
+ cancel(id: number): Promise<AuditRun>;
18
+ /** The checks of a run that found something, worst first. */
19
+ checks(run: number, query?: AuditIssueQuery): Promise<AuditCheckRow[]>;
20
+ /** The findings of a run — of one check when `check` is given. */
21
+ issues(run: number, query?: AuditIssueQuery): Promise<AuditPage<AuditIssue>>;
22
+ /** The crawled pages of a run under the screen's filters. */
23
+ pages(run: number, query?: AuditPageQuery): Promise<AuditPage<AuditPageRow>>;
24
+ /** Where the browser downloads the same list as CSV, under the panel's session. */
25
+ pagesFile(run: number, query: AuditPageQuery, columns: string[]): string;
26
+ page(run: number, id: number): Promise<AuditPageCard>;
27
+ /** The links of a page: `out` — what it points at, `in` — what points at it. */
28
+ links(run: number, id: number, query?: {
29
+ direction?: 'in' | 'out';
30
+ kind?: string;
31
+ page?: number;
32
+ per_page?: number;
33
+ }): Promise<AuditPage<AuditLinkRow>>;
34
+ /** What a page loads, a tab of the card at a time. */
35
+ resources(run: number, id: number, query: {
36
+ tab: AuditResourceTab;
37
+ page?: number;
38
+ per_page?: number;
39
+ }): Promise<AuditPage<AuditResourceRow>>;
40
+ /** The fixes that can close a finding now, each with what it would change. */
41
+ fixes(run: number, issue: number): Promise<AuditFixOffer[]>;
42
+ /** Presses a fix — or, with `dryRun`, only asks again what it would change. */
43
+ fix(run: number, issue: number, fix: string, dryRun?: boolean): Promise<AuditFixResult>;
44
+ /** Where the browser downloads one page of a run — its snapshot, findings and links. */
45
+ pageFile(run: number, id: number): string;
46
+ /** Two runs by fingerprint; without `from`, `to` against the run it was analysed against. */
47
+ compare(to: number, from?: number | null): Promise<AuditComparison>;
48
+ /** The findings of one kind of a comparison, of one check when given. */
49
+ compareIssues(query: {
50
+ to: number;
51
+ from?: number | null;
52
+ kind: AuditComparisonKind;
53
+ check?: string;
54
+ page?: number;
55
+ per_page?: number;
56
+ }): Promise<AuditPage<AuditIssue>>;
57
+ /** Every host the site points at, by class — stands first; with `host`, where it stands. */
58
+ hosts(query?: {
59
+ class?: AuditHostClass | null;
60
+ search?: string;
61
+ host?: string;
62
+ }): Promise<AuditHosts>;
63
+ /** The hiding rules. */
64
+ ignores(): Promise<AuditIgnoreRule[]>;
65
+ /** Hides what a rule matches, with the reason. */
66
+ hide(rule: {
67
+ check: string;
68
+ pattern: string;
69
+ reason: string;
70
+ }): Promise<AuditIgnoreRule>;
71
+ /** How many findings of the last run a rule would hide — nothing is hidden. */
72
+ hidePreview(rule: {
73
+ check: string;
74
+ pattern: string;
75
+ }): Promise<number>;
76
+ /** Removes a rule: its findings count again. */
77
+ unhide(id: number): Promise<void>;
78
+ /** The section's settings, keyed as the screen names them. */
79
+ settings(): Promise<Record<string, unknown>>;
80
+ saveSettings(values: Record<string, unknown>): Promise<Record<string, unknown>>;
81
+ }
82
+ /** The query of the pages screen as the API reads it: `f[field]=op:value` for each filter. */
83
+ export declare function pageParams(query: AuditPageQuery): Record<string, string | number | undefined>;
84
+ /** Everything under `/audit`, below the panel's API path. */
85
+ export declare function createAuditApi(admin: AdminContext): AuditApi;
@@ -0,0 +1,15 @@
1
+ import { AuditFieldType, AuditFilterOp, AuditPageField } from './types';
2
+ /**
3
+ * The fields of the snapshot, as `PageColumns` lists them on the server: what the pages screen
4
+ * can show, filter on, sort by and export. Kept in the same order, so the column picker reads
5
+ * like the page's card — address and answer first, markup, then speed and links.
6
+ */
7
+ export declare const PAGE_FIELDS: Record<AuditPageField, AuditFieldType>;
8
+ export declare const DEFAULT_COLUMNS: AuditPageField[];
9
+ /** `h1` is read out of a JSON list: shown and exported, not filtered or sorted on. */
10
+ export declare const COMPUTED_FIELDS: AuditPageField[];
11
+ /** What can be asked of a field of each type. */
12
+ export declare const OPERATIONS: Record<AuditFieldType, AuditFilterOp[]>;
13
+ /** The operations that need a value typed beside them. */
14
+ export declare const WITH_VALUE: AuditFilterOp[];
15
+ export declare const SOURCES: readonly ["home", "sitemap", "registry", "link"];
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ /** Puts this package's English under the panel's dictionary, once per panel. */
2
+ export declare function useAuditMessages(): void;
@@ -0,0 +1,14 @@
1
+ export { audit, type AuditOptions } from './module';
2
+ export { createAuditApi, pageParams, type AuditApi } from './api';
3
+ export { auditMessages } from './messages';
4
+ export { default as WxAuditOverviewPage } from './AuditOverviewPage';
5
+ export { default as WxAuditIssuesPage } from './AuditIssuesPage';
6
+ export { default as WxAuditDetails } from './AuditDetails';
7
+ export { default as WxAuditPagesPage } from './AuditPagesPage';
8
+ export { default as WxAuditPageCard } from './AuditPageCard';
9
+ export { default as WxAuditHostsPage } from './AuditHostsPage';
10
+ export { default as WxAuditRunsPage } from './AuditRunsPage';
11
+ export { default as WxAuditSettingsPage } from './AuditSettingsPage';
12
+ export { default as WxAuditHideDialog } from './AuditHideDialog';
13
+ export { PAGE_FIELDS, DEFAULT_COLUMNS } from './fields';
14
+ export type { AuditCellType, AuditCheckRow, AuditComparison, AuditComparisonKind, AuditComparisonRow, AuditCounts, AuditDetails, AuditDetailsColumn, AuditFieldFilter, AuditFieldType, AuditFilterOp, AuditFixChange, AuditFixOffer, AuditFixResult, AuditHostClass, AuditHostField, AuditHostPage, AuditHostRow, AuditHosts, AuditIgnoreRule, AuditIssue, AuditIssueQuery, AuditJsonLdBlock, AuditLatest, AuditLinkRow, AuditPage, AuditPageCard, AuditPageField, AuditPageQuery, AuditPageRow, AuditPageSource, AuditResourceRow, AuditResourceTab, AuditRun, AuditRunStatus, AuditScope, AuditSeverity, AuditStage, } from './types';