web: add ESM to generated Client
https://github.com/OpenAPITools/openapi-generator/issues/8881 Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
ac47fc9295
commit
08f3294a1d
1
Makefile
1
Makefile
|
@ -45,6 +45,7 @@ gen-web:
|
||||||
-o /local/web-api \
|
-o /local/web-api \
|
||||||
--additional-properties=typescriptThreePlus=true,supportsES6=true,npmName=@goauthentik/api,npmVersion=${NPM_VERSION}
|
--additional-properties=typescriptThreePlus=true,supportsES6=true,npmName=@goauthentik/api,npmVersion=${NPM_VERSION}
|
||||||
mkdir -p web/node_modules/@goauthentik/api
|
mkdir -p web/node_modules/@goauthentik/api
|
||||||
|
python -m scripts.web_api_esm
|
||||||
cd web-api && npm i
|
cd web-api && npm i
|
||||||
\cp -rfv web-api/* web/node_modules/@goauthentik/api
|
\cp -rfv web-api/* web/node_modules/@goauthentik/api
|
||||||
|
|
||||||
|
|
29
scripts/web_api_esm.py
Normal file
29
scripts/web_api_esm.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
"""Enable ESM Modules for generated Web API"""
|
||||||
|
from json import loads, dumps
|
||||||
|
|
||||||
|
TSCONFIG_ESM = {
|
||||||
|
"compilerOptions": {
|
||||||
|
"declaration": True,
|
||||||
|
"target": "es6",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"outDir": "./dist/esm",
|
||||||
|
"typeRoots": [
|
||||||
|
"node_modules/@types"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"dist",
|
||||||
|
"node_modules"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
with open("web-api/package.json", encoding="utf-8") as _package:
|
||||||
|
package = loads(_package.read())
|
||||||
|
package["module"] = "./dist/esm/index.js"
|
||||||
|
package["sideEffects"] = False
|
||||||
|
package["scripts"]["build"] = "tsc && tsc --project tsconfig.esm.json"
|
||||||
|
|
||||||
|
open("web-api/package.json", "w+", encoding="utf-8").write(dumps(package))
|
||||||
|
open("web-api/tsconfig.esm.json", "w+", encoding="utf-8").write(dumps(TSCONFIG_ESM))
|
14
web/package-lock.json
generated
14
web/package-lock.json
generated
|
@ -15,7 +15,7 @@
|
||||||
"@babel/preset-env": "^7.15.0",
|
"@babel/preset-env": "^7.15.0",
|
||||||
"@babel/preset-typescript": "^7.15.0",
|
"@babel/preset-typescript": "^7.15.0",
|
||||||
"@fortawesome/fontawesome-free": "^5.15.4",
|
"@fortawesome/fontawesome-free": "^5.15.4",
|
||||||
"@goauthentik/api": "^1629704636.0.0",
|
"@goauthentik/api": "^2021.8.1-rc1-1629709535",
|
||||||
"@lingui/cli": "^3.10.2",
|
"@lingui/cli": "^3.10.2",
|
||||||
"@lingui/core": "^3.10.4",
|
"@lingui/core": "^3.10.4",
|
||||||
"@lingui/macro": "^3.10.2",
|
"@lingui/macro": "^3.10.2",
|
||||||
|
@ -1690,9 +1690,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@goauthentik/api": {
|
"node_modules/@goauthentik/api": {
|
||||||
"version": "1629704636.0.0",
|
"version": "2021.8.1-rc1-1629709535",
|
||||||
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-1629704636.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.8.1-rc1-1629709535.tgz",
|
||||||
"integrity": "sha512-rjUjp7Gbf/Tzw0hGPx2ig5InXa4bPqj4FkFnIEgR6T1w6jbHV+q2BghztVFDc2hK2ib2NnQUQp6LWIAcYLAdSw=="
|
"integrity": "sha512-rlOt63gF3ALGuRIn8RiWRT5cZ4JhKu9koCtdFA7FDOYYU9jWBJ3e/YlFLLOLQrL8Cyl2g553We98t0n8AyDOBQ=="
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.5.0",
|
"version": "0.5.0",
|
||||||
|
@ -9567,9 +9567,9 @@
|
||||||
"integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg=="
|
"integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg=="
|
||||||
},
|
},
|
||||||
"@goauthentik/api": {
|
"@goauthentik/api": {
|
||||||
"version": "1629704636.0.0",
|
"version": "2021.8.1-rc1-1629709535",
|
||||||
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-1629704636.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2021.8.1-rc1-1629709535.tgz",
|
||||||
"integrity": "sha512-rjUjp7Gbf/Tzw0hGPx2ig5InXa4bPqj4FkFnIEgR6T1w6jbHV+q2BghztVFDc2hK2ib2NnQUQp6LWIAcYLAdSw=="
|
"integrity": "sha512-rlOt63gF3ALGuRIn8RiWRT5cZ4JhKu9koCtdFA7FDOYYU9jWBJ3e/YlFLLOLQrL8Cyl2g553We98t0n8AyDOBQ=="
|
||||||
},
|
},
|
||||||
"@humanwhocodes/config-array": {
|
"@humanwhocodes/config-array": {
|
||||||
"version": "0.5.0",
|
"version": "0.5.0",
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
"@babel/preset-env": "^7.15.0",
|
"@babel/preset-env": "^7.15.0",
|
||||||
"@babel/preset-typescript": "^7.15.0",
|
"@babel/preset-typescript": "^7.15.0",
|
||||||
"@fortawesome/fontawesome-free": "^5.15.4",
|
"@fortawesome/fontawesome-free": "^5.15.4",
|
||||||
"@goauthentik/api": "^2021.8.1-rc1+1629705955",
|
"@goauthentik/api": "^2021.8.1-rc1-1629709535",
|
||||||
"@lingui/cli": "^3.10.2",
|
"@lingui/cli": "^3.10.2",
|
||||||
"@lingui/core": "^3.10.4",
|
"@lingui/core": "^3.10.4",
|
||||||
"@lingui/macro": "^3.10.2",
|
"@lingui/macro": "^3.10.2",
|
||||||
|
|
|
@ -6,7 +6,6 @@ import cssimport from "rollup-plugin-cssimport";
|
||||||
import copy from "rollup-plugin-copy";
|
import copy from "rollup-plugin-copy";
|
||||||
import babel from "@rollup/plugin-babel";
|
import babel from "@rollup/plugin-babel";
|
||||||
import replace from "@rollup/plugin-replace";
|
import replace from "@rollup/plugin-replace";
|
||||||
import * as authentik from "@goauthentik/api";
|
|
||||||
|
|
||||||
const extensions = [".js", ".jsx", ".ts", ".tsx"];
|
const extensions = [".js", ".jsx", ".ts", ".tsx"];
|
||||||
|
|
||||||
|
@ -47,6 +46,9 @@ const resources = [
|
||||||
const isProdBuild = process.env.NODE_ENV === "production";
|
const isProdBuild = process.env.NODE_ENV === "production";
|
||||||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||||||
function manualChunks(id) {
|
function manualChunks(id) {
|
||||||
|
if (id.includes("@goauthentik/api")) {
|
||||||
|
return "api";
|
||||||
|
}
|
||||||
if (id.includes("locales")) {
|
if (id.includes("locales")) {
|
||||||
const parts = id.split("/");
|
const parts = id.split("/");
|
||||||
const file = parts[parts.length - 1];
|
const file = parts[parts.length - 1];
|
||||||
|
@ -100,11 +102,7 @@ export default [
|
||||||
plugins: [
|
plugins: [
|
||||||
cssimport(),
|
cssimport(),
|
||||||
resolve({ extensions, browser: true }),
|
resolve({ extensions, browser: true }),
|
||||||
// Because the API Client uses star exports from typescript, we have to explicitly tell rollup
|
commonjs(),
|
||||||
// Which classes can be imported
|
|
||||||
commonjs({
|
|
||||||
namedExports: { "@goauthentik/api": Object.keys(authentik) },
|
|
||||||
}),
|
|
||||||
babel({
|
babel({
|
||||||
extensions,
|
extensions,
|
||||||
babelHelpers: "runtime",
|
babelHelpers: "runtime",
|
||||||
|
@ -136,11 +134,7 @@ export default [
|
||||||
plugins: [
|
plugins: [
|
||||||
cssimport(),
|
cssimport(),
|
||||||
resolve({ extensions, browser: true }),
|
resolve({ extensions, browser: true }),
|
||||||
// Because the API Client uses star exports from typescript, we have to explicitly tell rollup
|
commonjs(),
|
||||||
// Which classes can be imported
|
|
||||||
commonjs({
|
|
||||||
namedExports: { "@goauthentik/api": Object.keys(authentik) },
|
|
||||||
}),
|
|
||||||
babel({
|
babel({
|
||||||
extensions,
|
extensions,
|
||||||
babelHelpers: "runtime",
|
babelHelpers: "runtime",
|
||||||
|
|
Reference in a new issue