parent
f7b84982e3
commit
2acab99e5b
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no">
|
||||||
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
|
<link href="/manifest.json" rel="manifest">
|
||||||
|
<!--server-generated-meta-->
|
||||||
|
<script type="module" src="./soapbox/main.tsx"></script>
|
||||||
|
</head>
|
||||||
|
<body class="theme-mode-light no-reduce-motion">
|
||||||
|
<div id="soapbox" class="h-full">
|
||||||
|
<div class="loading-indicator-wrapper">
|
||||||
|
<div class="loading-indicator">
|
||||||
|
<div class="loading-indicator__container">
|
||||||
|
<div class="loading-indicator__figure"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<noscript>To use this website, please enable JavaScript.</noscript>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,45 @@
|
|||||||
|
/**
|
||||||
|
* Build config: configuration set at build time.
|
||||||
|
* @module soapbox/build-config
|
||||||
|
*/
|
||||||
|
|
||||||
|
// eslint-disable-next-line import/extensions
|
||||||
|
import trim from 'lodash/trim.js';
|
||||||
|
// eslint-disable-next-line import/extensions
|
||||||
|
import trimEnd from 'lodash/trimEnd.js';
|
||||||
|
|
||||||
|
const {
|
||||||
|
NODE_ENV,
|
||||||
|
BACKEND_URL,
|
||||||
|
FE_SUBDIRECTORY,
|
||||||
|
FE_BUILD_DIR,
|
||||||
|
FE_INSTANCE_SOURCE_DIR,
|
||||||
|
SENTRY_DSN,
|
||||||
|
} = process.env;
|
||||||
|
|
||||||
|
const sanitizeURL = (url: string | undefined = ''): string => {
|
||||||
|
try {
|
||||||
|
return trimEnd(new URL(url).toString(), '/');
|
||||||
|
} catch {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const sanitizeBasename = (path: string | undefined = ''): string => {
|
||||||
|
return `/${trim(path, '/')}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const sanitizePath = (path: string | undefined = ''): string => {
|
||||||
|
return trim(path, '/');
|
||||||
|
};
|
||||||
|
|
||||||
|
export default () => ({
|
||||||
|
data: {
|
||||||
|
NODE_ENV: NODE_ENV || 'development',
|
||||||
|
BACKEND_URL: sanitizeURL(BACKEND_URL),
|
||||||
|
FE_SUBDIRECTORY: sanitizeBasename(FE_SUBDIRECTORY),
|
||||||
|
FE_BUILD_DIR: sanitizePath(FE_BUILD_DIR) || 'static',
|
||||||
|
FE_INSTANCE_SOURCE_DIR: FE_INSTANCE_SOURCE_DIR || 'instance',
|
||||||
|
SENTRY_DSN,
|
||||||
|
},
|
||||||
|
});
|
@ -1,46 +0,0 @@
|
|||||||
// @preval
|
|
||||||
/**
|
|
||||||
* Build config: configuration set at build time.
|
|
||||||
* @module soapbox/build-config
|
|
||||||
*/
|
|
||||||
|
|
||||||
const trim = require('lodash/trim');
|
|
||||||
const trimEnd = require('lodash/trimEnd');
|
|
||||||
|
|
||||||
const {
|
|
||||||
NODE_ENV,
|
|
||||||
BACKEND_URL,
|
|
||||||
FE_SUBDIRECTORY,
|
|
||||||
FE_BUILD_DIR,
|
|
||||||
FE_INSTANCE_SOURCE_DIR,
|
|
||||||
SENTRY_DSN,
|
|
||||||
} = process.env;
|
|
||||||
|
|
||||||
const sanitizeURL = url => {
|
|
||||||
try {
|
|
||||||
return trimEnd(new URL(url).toString(), '/');
|
|
||||||
} catch {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const sanitizeBasename = path => {
|
|
||||||
return `/${trim(path, '/')}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
const sanitizePath = path => {
|
|
||||||
return trim(path, '/');
|
|
||||||
};
|
|
||||||
|
|
||||||
// JSON.parse/stringify is to emulate what @preval is doing and avoid any
|
|
||||||
// inconsistent behavior in dev mode
|
|
||||||
const sanitize = obj => JSON.parse(JSON.stringify(obj));
|
|
||||||
|
|
||||||
module.exports = sanitize({
|
|
||||||
NODE_ENV: NODE_ENV || 'development',
|
|
||||||
BACKEND_URL: sanitizeURL(BACKEND_URL),
|
|
||||||
FE_SUBDIRECTORY: sanitizeBasename(FE_SUBDIRECTORY),
|
|
||||||
FE_BUILD_DIR: sanitizePath(FE_BUILD_DIR) || 'static',
|
|
||||||
FE_INSTANCE_SOURCE_DIR: FE_INSTANCE_SOURCE_DIR || 'instance',
|
|
||||||
SENTRY_DSN,
|
|
||||||
});
|
|
@ -0,0 +1,18 @@
|
|||||||
|
// @ts-nocheck
|
||||||
|
const {
|
||||||
|
NODE_ENV,
|
||||||
|
BACKEND_URL,
|
||||||
|
FE_SUBDIRECTORY,
|
||||||
|
FE_BUILD_DIR,
|
||||||
|
FE_INSTANCE_SOURCE_DIR,
|
||||||
|
SENTRY_DSN,
|
||||||
|
} = import.meta.compileTime('./build-config-compiletime.ts');
|
||||||
|
|
||||||
|
export {
|
||||||
|
NODE_ENV,
|
||||||
|
BACKEND_URL,
|
||||||
|
FE_SUBDIRECTORY,
|
||||||
|
FE_BUILD_DIR,
|
||||||
|
FE_INSTANCE_SOURCE_DIR,
|
||||||
|
SENTRY_DSN,
|
||||||
|
};
|
@ -0,0 +1,3 @@
|
|||||||
|
const data: any = import.meta.compileTime('./code-compiletime.ts');
|
||||||
|
|
||||||
|
export default data;
|
@ -0,0 +1,45 @@
|
|||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
import react from '@vitejs/plugin-react';
|
||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import compileTime from 'vite-plugin-compile-time';
|
||||||
|
import { createHtmlPlugin } from 'vite-plugin-html';
|
||||||
|
import vitePluginRequire from 'vite-plugin-require';
|
||||||
|
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
root: 'app',
|
||||||
|
build: {
|
||||||
|
// Relative to the root
|
||||||
|
outDir: '../static',
|
||||||
|
assetsDir: 'packs',
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
// @ts-ignore
|
||||||
|
vitePluginRequire.default(),
|
||||||
|
createHtmlPlugin({
|
||||||
|
template: 'index.html',
|
||||||
|
}),
|
||||||
|
react({
|
||||||
|
// Use React plugin in all *.jsx and *.tsx files
|
||||||
|
include: '**/*.{jsx,tsx}',
|
||||||
|
// babel: {
|
||||||
|
// configFile: './babel.config.cjs',
|
||||||
|
// },
|
||||||
|
}),
|
||||||
|
compileTime(),
|
||||||
|
viteStaticCopy({
|
||||||
|
targets: [{
|
||||||
|
src: '../node_modules/twemoji/assets/svg/*',
|
||||||
|
dest: 'packs/emoji/',
|
||||||
|
}],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
resolve: {
|
||||||
|
alias: [
|
||||||
|
{ find: 'soapbox', replacement: path.resolve(__dirname, 'app', 'soapbox') },
|
||||||
|
{ find: 'assets', replacement: path.resolve(__dirname, 'app', 'assets') },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
assetsInclude: ['**/*.oga'],
|
||||||
|
});
|
Loading…
Reference in new issue