mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Consolidate to use injectable instead of var for static file directory
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
parent
90c52a98b2
commit
d93080b4e5
@ -123,12 +123,6 @@ export const kubectlBinaryName = getBinaryName("kubectl");
|
|||||||
* @deprecated for being explicit side effect.
|
* @deprecated for being explicit side effect.
|
||||||
*/
|
*/
|
||||||
export const kubectlBinaryPath = lazyInitialized(() => path.join(baseBinariesDir.get(), kubectlBinaryName));
|
export const kubectlBinaryPath = lazyInitialized(() => path.join(baseBinariesDir.get(), kubectlBinaryName));
|
||||||
export const staticFilesDirectory = path.resolve(
|
|
||||||
!isProduction
|
|
||||||
? process.cwd()
|
|
||||||
: process.resourcesPath,
|
|
||||||
"static",
|
|
||||||
);
|
|
||||||
|
|
||||||
// Apis
|
// Apis
|
||||||
export const apiPrefix = "/api" as string; // local router apis
|
export const apiPrefix = "/api" as string; // local router apis
|
||||||
|
|||||||
@ -6,8 +6,8 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import getAbsolutePathInjectable from "../path/get-absolute-path.injectable";
|
import getAbsolutePathInjectable from "../path/get-absolute-path.injectable";
|
||||||
import lensResourcesDirInjectable from "./lens-resources-dir.injectable";
|
import lensResourcesDirInjectable from "./lens-resources-dir.injectable";
|
||||||
|
|
||||||
const staticDirInjectable = getInjectable({
|
const staticFilesDirectoryInjectable = getInjectable({
|
||||||
id: "static-dir",
|
id: "static-files-directory",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const getAbsolutePath = di.inject(getAbsolutePathInjectable);
|
const getAbsolutePath = di.inject(getAbsolutePathInjectable);
|
||||||
@ -17,4 +17,4 @@ const staticDirInjectable = getInjectable({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default staticDirInjectable;
|
export default staticFilesDirectoryInjectable;
|
||||||
@ -12,6 +12,7 @@ import extensionInstallationStateStoreInjectable from "../extension-installation
|
|||||||
import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable";
|
import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable";
|
||||||
import extensionPackageRootDirectoryInjectable from "../extension-installer/extension-package-root-directory/extension-package-root-directory.injectable";
|
import extensionPackageRootDirectoryInjectable from "../extension-installer/extension-package-root-directory/extension-package-root-directory.injectable";
|
||||||
import installExtensionsInjectable from "../extension-installer/install-extensions/install-extensions.injectable";
|
import installExtensionsInjectable from "../extension-installer/install-extensions/install-extensions.injectable";
|
||||||
|
import staticFilesDirectoryInjectable from "../../common/vars/static-files-directory.injectable";
|
||||||
|
|
||||||
const extensionDiscoveryInjectable = getInjectable({
|
const extensionDiscoveryInjectable = getInjectable({
|
||||||
id: "extension-discovery",
|
id: "extension-discovery",
|
||||||
@ -37,6 +38,8 @@ const extensionDiscoveryInjectable = getInjectable({
|
|||||||
extensionPackageRootDirectory: di.inject(
|
extensionPackageRootDirectory: di.inject(
|
||||||
extensionPackageRootDirectoryInjectable,
|
extensionPackageRootDirectoryInjectable,
|
||||||
),
|
),
|
||||||
|
|
||||||
|
staticFilesDirectory: di.inject(staticFilesDirectoryInjectable),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import logger from "../../main/logger";
|
|||||||
import type { ExtensionsStore } from "../extensions-store/extensions-store";
|
import type { ExtensionsStore } from "../extensions-store/extensions-store";
|
||||||
import type { ExtensionLoader } from "../extension-loader";
|
import type { ExtensionLoader } from "../extension-loader";
|
||||||
import type { LensExtensionId, LensExtensionManifest } from "../lens-extension";
|
import type { LensExtensionId, LensExtensionManifest } from "../lens-extension";
|
||||||
import { isProduction, staticFilesDirectory } from "../../common/vars";
|
import { isProduction } from "../../common/vars";
|
||||||
import type { ExtensionInstallationStateStore } from "../extension-installation-state-store/extension-installation-state-store";
|
import type { ExtensionInstallationStateStore } from "../extension-installation-state-store/extension-installation-state-store";
|
||||||
import type { PackageJson } from "type-fest";
|
import type { PackageJson } from "type-fest";
|
||||||
import { extensionDiscoveryStateChannel } from "../../common/ipc/extension-handling";
|
import { extensionDiscoveryStateChannel } from "../../common/ipc/extension-handling";
|
||||||
@ -34,6 +34,7 @@ interface Dependencies {
|
|||||||
installExtension: (name: string) => Promise<void>;
|
installExtension: (name: string) => Promise<void>;
|
||||||
installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>;
|
installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>;
|
||||||
extensionPackageRootDirectory: string;
|
extensionPackageRootDirectory: string;
|
||||||
|
staticFilesDirectory: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface InstalledExtension {
|
export interface InstalledExtension {
|
||||||
@ -112,7 +113,7 @@ export class ExtensionDiscovery {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get inTreeFolderPath(): string {
|
get inTreeFolderPath(): string {
|
||||||
return path.resolve(staticFilesDirectory, "../extensions");
|
return path.resolve(this.dependencies.staticFilesDirectory, "../extensions");
|
||||||
}
|
}
|
||||||
|
|
||||||
get nodeModulesPath(): string {
|
get nodeModulesPath(): string {
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import type { SupportedFileExtension } from "../router/router-content-types";
|
|||||||
import { contentTypes } from "../router/router-content-types";
|
import { contentTypes } from "../router/router-content-types";
|
||||||
import logger from "../logger";
|
import logger from "../logger";
|
||||||
import { routeInjectionToken } from "../router/router.injectable";
|
import { routeInjectionToken } from "../router/router.injectable";
|
||||||
import { appName, publicPath, staticFilesDirectory } from "../../common/vars";
|
import { appName, publicPath } from "../../common/vars";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import isDevelopmentInjectable from "../../common/vars/is-development.injectable";
|
import isDevelopmentInjectable from "../../common/vars/is-development.injectable";
|
||||||
import httpProxy from "http-proxy";
|
import httpProxy from "http-proxy";
|
||||||
@ -18,24 +18,25 @@ import getAbsolutePathInjectable from "../../common/path/get-absolute-path.injec
|
|||||||
import type { JoinPaths } from "../../common/path/join-paths.injectable";
|
import type { JoinPaths } from "../../common/path/join-paths.injectable";
|
||||||
import joinPathsInjectable from "../../common/path/join-paths.injectable";
|
import joinPathsInjectable from "../../common/path/join-paths.injectable";
|
||||||
import { webpackDevServerPort } from "../../../webpack/vars";
|
import { webpackDevServerPort } from "../../../webpack/vars";
|
||||||
|
import staticFilesDirectoryInjectable from "../../common/vars/static-files-directory.injectable";
|
||||||
|
|
||||||
interface ProductionDependencies {
|
interface ProductionDependencies {
|
||||||
readFileBuffer: (path: string) => Promise<Buffer>;
|
readFileBuffer: (path: string) => Promise<Buffer>;
|
||||||
getAbsolutePath: GetAbsolutePath;
|
getAbsolutePath: GetAbsolutePath;
|
||||||
joinPaths: JoinPaths;
|
joinPaths: JoinPaths;
|
||||||
|
staticFilesDirectory: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleStaticFileInProduction =
|
const handleStaticFileInProduction =
|
||||||
({ readFileBuffer, getAbsolutePath, joinPaths }: ProductionDependencies) =>
|
({ readFileBuffer, getAbsolutePath, joinPaths, staticFilesDirectory }: ProductionDependencies) =>
|
||||||
async ({ params }: LensApiRequest) => {
|
async ({ params }: LensApiRequest) => {
|
||||||
const staticPath = getAbsolutePath(staticFilesDirectory);
|
|
||||||
let filePath = params.path;
|
let filePath = params.path;
|
||||||
|
|
||||||
for (let retryCount = 0; retryCount < 5; retryCount += 1) {
|
for (let retryCount = 0; retryCount < 5; retryCount += 1) {
|
||||||
const asset = joinPaths(staticPath, filePath);
|
const asset = joinPaths(staticFilesDirectory, filePath);
|
||||||
const normalizedFilePath = getAbsolutePath(asset);
|
const normalizedFilePath = getAbsolutePath(asset);
|
||||||
|
|
||||||
if (!normalizedFilePath.startsWith(staticPath)) {
|
if (!normalizedFilePath.startsWith(staticFilesDirectory)) {
|
||||||
return { statusCode: 404 };
|
return { statusCode: 404 };
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,13 +90,14 @@ const staticFileRouteInjectable = getInjectable({
|
|||||||
const readFileBuffer = di.inject(readFileBufferInjectable);
|
const readFileBuffer = di.inject(readFileBufferInjectable);
|
||||||
const getAbsolutePath = di.inject(getAbsolutePathInjectable);
|
const getAbsolutePath = di.inject(getAbsolutePathInjectable);
|
||||||
const joinPaths = di.inject(joinPathsInjectable);
|
const joinPaths = di.inject(joinPathsInjectable);
|
||||||
|
const staticFilesDirectory = di.inject(staticFilesDirectoryInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
method: "get",
|
method: "get",
|
||||||
path: `/{path*}`,
|
path: `/{path*}`,
|
||||||
handler: isDevelopment
|
handler: isDevelopment
|
||||||
? handleStaticFileInDevelopment({ proxy: httpProxy.createProxy() })
|
? handleStaticFileInDevelopment({ proxy: httpProxy.createProxy() })
|
||||||
: handleStaticFileInProduction({ readFileBuffer, getAbsolutePath, joinPaths }),
|
: handleStaticFileInProduction({ readFileBuffer, getAbsolutePath, joinPaths, staticFilesDirectory }),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -5,19 +5,18 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token";
|
import { afterApplicationIsReadyInjectionToken } from "../after-application-is-ready-injection-token";
|
||||||
import registerFileProtocolInjectable from "../../../electron-app/features/register-file-protocol.injectable";
|
import registerFileProtocolInjectable from "../../../electron-app/features/register-file-protocol.injectable";
|
||||||
|
import staticFilesDirectoryInjectable from "../../../../common/vars/static-files-directory.injectable";
|
||||||
import staticDirInjectable from "../../../../common/vars/static-dir.injectable";
|
|
||||||
|
|
||||||
const setupFileProtocolInjectable = getInjectable({
|
const setupFileProtocolInjectable = getInjectable({
|
||||||
id: "setup-file-protocol",
|
id: "setup-file-protocol",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const registerFileProtocol = di.inject(registerFileProtocolInjectable);
|
const registerFileProtocol = di.inject(registerFileProtocolInjectable);
|
||||||
const staticDir = di.inject(staticDirInjectable);
|
const staticFilesDirectory = di.inject(staticFilesDirectoryInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
run: () => {
|
run: () => {
|
||||||
registerFileProtocol("static", staticDir);
|
registerFileProtocol("static", staticFilesDirectory);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@ -5,20 +5,21 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { hasCorrectExtension } from "./has-correct-extension";
|
import { hasCorrectExtension } from "./has-correct-extension";
|
||||||
import { staticFilesDirectory } from "../../../../common/vars";
|
|
||||||
import readFileInjectable from "../../../../common/fs/read-file.injectable";
|
import readFileInjectable from "../../../../common/fs/read-file.injectable";
|
||||||
import readDirInjectable from "../../../../common/fs/read-dir.injectable";
|
import readDirInjectable from "../../../../common/fs/read-dir.injectable";
|
||||||
import type { RawTemplates } from "./create-resource-templates.injectable";
|
import type { RawTemplates } from "./create-resource-templates.injectable";
|
||||||
import type { GetAbsolutePath } from "../../../../common/path/get-absolute-path.injectable";
|
import type { GetAbsolutePath } from "../../../../common/path/get-absolute-path.injectable";
|
||||||
import getAbsolutePathInjectable from "../../../../common/path/get-absolute-path.injectable";
|
import getAbsolutePathInjectable from "../../../../common/path/get-absolute-path.injectable";
|
||||||
|
import staticFilesDirectoryInjectable from "../../../../common/vars/static-files-directory.injectable";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
readDir: (dirPath: string) => Promise<string[]>;
|
readDir: (dirPath: string) => Promise<string[]>;
|
||||||
readFile: (filePath: string) => Promise<string>;
|
readFile: (filePath: string) => Promise<string>;
|
||||||
getAbsolutePath: GetAbsolutePath;
|
getAbsolutePath: GetAbsolutePath;
|
||||||
|
staticFilesDirectory: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getTemplates({ readDir, readFile, getAbsolutePath }: Dependencies) {
|
async function getTemplates({ readDir, readFile, getAbsolutePath, staticFilesDirectory }: Dependencies) {
|
||||||
const templatesFolder = getAbsolutePath(staticFilesDirectory, "../templates/create-resource");
|
const templatesFolder = getAbsolutePath(staticFilesDirectory, "../templates/create-resource");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,6 +44,7 @@ const lensCreateResourceTemplatesInjectable = getInjectable({
|
|||||||
readFile: di.inject(readFileInjectable),
|
readFile: di.inject(readFileInjectable),
|
||||||
readDir: di.inject(readDirInjectable),
|
readDir: di.inject(readDirInjectable),
|
||||||
getAbsolutePath: di.inject(getAbsolutePathInjectable),
|
getAbsolutePath: di.inject(getAbsolutePathInjectable),
|
||||||
|
staticFilesDirectory: di.inject(staticFilesDirectoryInjectable),
|
||||||
});
|
});
|
||||||
|
|
||||||
return ["lens", templates];
|
return ["lens", templates];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user