2021-11-26 12:30:39 +00:00
|
|
|
import markdown from "@jackfranklin/rollup-plugin-markdown";
|
2021-09-07 21:25:38 +00:00
|
|
|
import babel from "@rollup/plugin-babel";
|
2021-11-02 13:53:52 +00:00
|
|
|
import commonjs from "@rollup/plugin-commonjs";
|
2021-11-04 21:34:48 +00:00
|
|
|
import { nodeResolve } from "@rollup/plugin-node-resolve";
|
2021-11-02 13:59:35 +00:00
|
|
|
import replace from "@rollup/plugin-replace";
|
2023-08-24 15:13:03 +00:00
|
|
|
import terser from "@rollup/plugin-terser";
|
2022-12-19 11:48:02 +00:00
|
|
|
import { cwd } from "process";
|
2021-09-21 09:31:37 +00:00
|
|
|
import copy from "rollup-plugin-copy";
|
|
|
|
import cssimport from "rollup-plugin-cssimport";
|
2021-04-03 16:20:17 +00:00
|
|
|
|
2022-12-25 12:44:09 +00:00
|
|
|
// https://github.com/d3/d3-interpolate/issues/58
|
2023-06-13 11:45:38 +00:00
|
|
|
const IGNORED_WARNINGS = /Circular dependency(.*d3-[interpolate|selection])|(.*@lit\/localize.*)/;
|
2022-12-25 12:44:09 +00:00
|
|
|
|
2021-08-03 15:52:21 +00:00
|
|
|
const extensions = [".js", ".jsx", ".ts", ".tsx"];
|
2020-11-23 10:50:38 +00:00
|
|
|
|
2021-11-26 13:18:51 +00:00
|
|
|
export const resources = [
|
2021-08-03 15:52:21 +00:00
|
|
|
{
|
|
|
|
src: "node_modules/@patternfly/patternfly/patternfly.min.css",
|
|
|
|
dest: "dist/",
|
|
|
|
},
|
2023-03-09 22:17:53 +00:00
|
|
|
{ src: "src/common/styles/*", dest: "dist/" },
|
2022-02-14 19:04:57 +00:00
|
|
|
{ src: "src/custom.css", dest: "dist/" },
|
2021-03-17 20:20:47 +00:00
|
|
|
|
2021-08-03 15:52:21 +00:00
|
|
|
{
|
|
|
|
src: "node_modules/@patternfly/patternfly/assets/*",
|
|
|
|
dest: "dist/assets/",
|
|
|
|
},
|
2020-11-24 10:50:49 +00:00
|
|
|
{ src: "src/assets/*", dest: "dist/assets" },
|
2020-12-12 20:49:00 +00:00
|
|
|
{ src: "./icons/*", dest: "dist/assets/icons" },
|
2020-11-23 15:55:58 +00:00
|
|
|
];
|
2021-03-18 19:35:12 +00:00
|
|
|
|
2021-03-17 16:11:39 +00:00
|
|
|
// eslint-disable-next-line no-undef
|
2021-11-26 13:18:51 +00:00
|
|
|
export const isProdBuild = process.env.NODE_ENV === "production";
|
2021-10-14 17:49:31 +00:00
|
|
|
// eslint-disable-next-line no-undef
|
2021-11-26 13:18:51 +00:00
|
|
|
export const apiBasePath = process.env.AK_API_BASE_PATH || "";
|
2021-11-10 16:54:50 +00:00
|
|
|
|
2021-03-17 16:11:39 +00:00
|
|
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
2021-11-26 13:18:51 +00:00
|
|
|
export function manualChunks(id) {
|
2021-11-26 12:30:39 +00:00
|
|
|
if (id.endsWith(".md")) {
|
|
|
|
return "docs";
|
|
|
|
}
|
2021-08-23 09:11:18 +00:00
|
|
|
if (id.includes("@goauthentik/api")) {
|
|
|
|
return "api";
|
|
|
|
}
|
2021-04-03 17:26:43 +00:00
|
|
|
if (id.includes("locales")) {
|
|
|
|
const parts = id.split("/");
|
|
|
|
const file = parts[parts.length - 1];
|
|
|
|
return "locale-" + file.replace(".ts", "");
|
|
|
|
}
|
2021-03-17 16:11:39 +00:00
|
|
|
if (id.includes("node_modules")) {
|
2021-03-17 18:49:08 +00:00
|
|
|
if (id.includes("codemirror")) {
|
|
|
|
return "vendor-cm";
|
|
|
|
}
|
2021-03-17 16:11:39 +00:00
|
|
|
return "vendor";
|
|
|
|
}
|
|
|
|
}
|
2020-10-04 11:01:55 +00:00
|
|
|
|
2022-05-14 15:07:37 +00:00
|
|
|
export const defaultOptions = {
|
|
|
|
plugins: [
|
|
|
|
cssimport(),
|
|
|
|
markdown(),
|
|
|
|
nodeResolve({ extensions, browser: true }),
|
|
|
|
commonjs(),
|
|
|
|
babel({
|
|
|
|
extensions,
|
|
|
|
babelHelpers: "runtime",
|
|
|
|
include: ["src/**/*"],
|
|
|
|
}),
|
2022-07-04 19:10:16 +00:00
|
|
|
replace({
|
|
|
|
"process.env.NODE_ENV": JSON.stringify(isProdBuild ? "production" : "development"),
|
2022-12-19 11:48:02 +00:00
|
|
|
"process.env.CWD": JSON.stringify(cwd()),
|
2022-07-04 19:10:16 +00:00
|
|
|
"process.env.AK_API_BASE_PATH": JSON.stringify(apiBasePath),
|
|
|
|
"preventAssignment": true,
|
|
|
|
}),
|
2022-05-14 15:07:37 +00:00
|
|
|
isProdBuild && terser(),
|
|
|
|
].filter((p) => p),
|
|
|
|
watch: {
|
|
|
|
clearScreen: false,
|
|
|
|
},
|
2022-09-14 22:05:21 +00:00
|
|
|
preserveEntrySignatures: "strict",
|
2022-05-14 15:07:37 +00:00
|
|
|
cache: true,
|
|
|
|
context: "window",
|
2022-12-25 12:44:09 +00:00
|
|
|
onwarn: function (warning, warn) {
|
2023-06-13 11:45:38 +00:00
|
|
|
if (IGNORED_WARNINGS.test(warning)) {
|
2022-12-25 12:44:09 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (warning.code === "UNRESOLVED_IMPORT") {
|
|
|
|
throw Object.assign(new Error(), warning);
|
|
|
|
}
|
|
|
|
warn(warning);
|
|
|
|
},
|
2022-05-14 15:07:37 +00:00
|
|
|
};
|
2021-11-10 16:54:50 +00:00
|
|
|
|
2021-11-26 13:18:51 +00:00
|
|
|
// Polyfills (imported first)
|
|
|
|
export const POLY = {
|
2022-09-14 22:05:21 +00:00
|
|
|
input: "./src/polyfill/poly.ts",
|
2021-11-26 13:18:51 +00:00
|
|
|
output: [
|
|
|
|
{
|
|
|
|
format: "iife",
|
|
|
|
file: "dist/poly.js",
|
|
|
|
sourcemap: true,
|
2021-04-01 17:55:32 +00:00
|
|
|
},
|
2021-11-26 13:18:51 +00:00
|
|
|
],
|
2022-04-07 19:06:18 +00:00
|
|
|
cache: true,
|
2021-11-26 13:18:51 +00:00
|
|
|
plugins: [
|
|
|
|
cssimport(),
|
|
|
|
nodeResolve({ browser: true }),
|
|
|
|
commonjs(),
|
|
|
|
isProdBuild && terser(),
|
|
|
|
copy({
|
|
|
|
targets: [...resources],
|
|
|
|
copyOnce: false,
|
|
|
|
}),
|
|
|
|
].filter((p) => p),
|
|
|
|
};
|
|
|
|
|
2023-03-17 22:10:19 +00:00
|
|
|
export const standalone = ["api-browser", "loading"].map((input) => {
|
|
|
|
return {
|
|
|
|
input: `./src/standalone/${input}`,
|
|
|
|
output: [
|
|
|
|
{
|
|
|
|
format: "es",
|
|
|
|
dir: `dist/standalone/${input}`,
|
|
|
|
sourcemap: true,
|
|
|
|
manualChunks: manualChunks,
|
|
|
|
},
|
|
|
|
],
|
|
|
|
...defaultOptions,
|
|
|
|
};
|
|
|
|
});
|
|
|
|
|
2021-11-26 13:18:51 +00:00
|
|
|
export default [
|
|
|
|
POLY,
|
2023-03-17 22:10:19 +00:00
|
|
|
// Standalone
|
|
|
|
...standalone,
|
2021-09-16 15:30:16 +00:00
|
|
|
// Flow interface
|
|
|
|
{
|
2022-09-14 22:05:21 +00:00
|
|
|
input: "./src/flow/FlowInterface.ts",
|
2021-09-16 15:30:16 +00:00
|
|
|
output: [
|
|
|
|
{
|
|
|
|
format: "es",
|
2021-11-10 16:54:50 +00:00
|
|
|
dir: "dist/flow",
|
2021-09-16 15:30:16 +00:00
|
|
|
sourcemap: true,
|
|
|
|
manualChunks: manualChunks,
|
|
|
|
},
|
|
|
|
],
|
2022-05-14 15:07:37 +00:00
|
|
|
...defaultOptions,
|
2021-09-16 15:30:16 +00:00
|
|
|
},
|
|
|
|
// Admin interface
|
2020-10-04 11:01:55 +00:00
|
|
|
{
|
web: refactor sidebar capabilities for categorical subsections
The project "Change Admin UI lists to have sublists per type" requires some initial changes to the
UI to facilitate this request. The AdminSidebar is the principle target of this project, and it is
embedded in the AdminInterface. To facilitate editing the AdminSidebar as an independent entity,
AdminInterface has been moved into its own folder and the AdminSidebar extracted as a standalone Web
Component. This removes, oh, about half the code from AdminInterface. A little cleanup with
`classMap` was also committed.
The rollup config was adjusted to find the new AdminInterface location.
The Sidebar uses the global `config: Config` object to check for Enterprise capabilities. Rather
than plumb all the way down through the Interface => AdminInterface -> AdminSidebar, I chose to make
provide an alternative way of reaching the `config` object, as a *context*. Other configuration
objects (Me, UiConfig, Tenant) interfaces will be contextualized as demand warrants.
Demand will warrant. Just not yet. <sup>1</sup>
The Sidebar has been refactored only slightly; the renderers are entirely the same as they were
prior to extraction. What has been changed is the source of information: when we retrieve the
current version we story *only* the information, and use type information to ensure that the version
we store is the version we care about. The same is true of `impersonation`; we care only about the
name of the person being impersonated being present, so we don't store anything else.
Fetches have been moved from `firstUpdated` to the constructor. No reason to have the sidebar
render twice if the network returns before the render is scheduled.
Because the path used to identify the user being impersonated has changed, the `str()` references in
the XLIFF files had to be adjusted. **This change is to a variable only and does not require
translation.**
---
<sup>1</sup> The code is littered with checks to `me()?`, `uiConfig?`, `config?`, etc. In the
*context* of being logged in as an administrator those should never be in doubt. I intend to make
our interfaces not have any doubt.
2023-11-07 22:13:20 +00:00
|
|
|
input: "./src/admin/AdminInterface/AdminInterface.ts",
|
2020-11-21 19:48:49 +00:00
|
|
|
output: [
|
|
|
|
{
|
|
|
|
format: "es",
|
2021-11-10 16:54:50 +00:00
|
|
|
dir: "dist/admin",
|
2020-11-21 19:48:49 +00:00
|
|
|
sourcemap: true,
|
2021-03-17 16:11:39 +00:00
|
|
|
manualChunks: manualChunks,
|
2020-11-21 19:48:49 +00:00
|
|
|
},
|
|
|
|
],
|
2022-05-14 15:07:37 +00:00
|
|
|
...defaultOptions,
|
2020-11-21 19:48:49 +00:00
|
|
|
},
|
2021-09-16 15:30:16 +00:00
|
|
|
// User interface
|
2021-02-17 22:52:49 +00:00
|
|
|
{
|
2022-09-14 22:05:21 +00:00
|
|
|
input: "./src/user/UserInterface.ts",
|
2021-02-17 22:52:49 +00:00
|
|
|
output: [
|
|
|
|
{
|
|
|
|
format: "es",
|
2021-11-10 16:54:50 +00:00
|
|
|
dir: "dist/user",
|
2021-02-17 22:52:49 +00:00
|
|
|
sourcemap: true,
|
2021-03-17 16:11:39 +00:00
|
|
|
manualChunks: manualChunks,
|
2021-02-17 22:52:49 +00:00
|
|
|
},
|
|
|
|
],
|
2022-05-14 15:07:37 +00:00
|
|
|
...defaultOptions,
|
2021-02-17 22:52:49 +00:00
|
|
|
},
|
2020-11-21 19:48:49 +00:00
|
|
|
];
|