mirror repo (WIP)

Need to remove secrets before entire repo can be made public.
This commit is contained in:
Brandon Thomas
2025-09-18 22:55:03 -04:00
commit 0daf83dba9
8735 changed files with 2963896 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
{
"presets": [
[
"@nx/react/babel",
{
"runtime": "automatic",
"useBuiltIns": "usage"
}
]
],
"plugins": []
}
+7
View File
@@ -0,0 +1,7 @@
# @frontend/build-env
This library was generated with [Nx](https://nx.dev).
## Running unit tests
Run `nx test @frontend/build-env` to execute the unit tests via [Vitest](https://vitest.dev/).
+17
View File
@@ -0,0 +1,17 @@
{
"name": "@frontend/build-env",
"version": "0.0.1",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
"./package.json": "./package.json",
".": {
"development": "./src/index.ts",
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
}
}
}
+2
View File
@@ -0,0 +1,2 @@
export * from './lib/build-env';
@@ -0,0 +1,30 @@
import { BuildEnvType, GetBuildEnvType } from "./BuildEnvType";
export class BuildEnv {
private static instance: BuildEnv;
private readonly envType: BuildEnvType;
public static getInstance(): BuildEnv {
if (BuildEnv.instance !== undefined) {
return BuildEnv.instance;
}
const envType = GetBuildEnvType();
const instance = new BuildEnv(envType);
BuildEnv.instance = instance;
return instance;
}
public getType(): BuildEnvType {
return this.envType;
}
private constructor(envType: BuildEnvType) {
this.envType = envType;
}
}
export function GetBuildEnv() : BuildEnv {
return BuildEnv.getInstance();
}
@@ -0,0 +1,61 @@
/**
* This is cached whenever vite/remix launches or CI/CD bakes in constants.
* It's fed from an environment variable.
*/
export enum BuildEnvType {
Dev,
DevProxy,
Staging,
Production,
}
// Use CI/CD to replace this value with one of the BuildEnvType values.
const BUILD_ENV_TYPE = '%BUILD_ENV_TYPE_VALUE%';
// Attempt to read the environment type.
export function GetBuildEnvType() : BuildEnvType {
let maybeEnvType : BuildEnvType | undefined = undefined;
if (!BUILD_ENV_TYPE.startsWith("%") && !BUILD_ENV_TYPE.endsWith("%")) {
maybeEnvType = stringToEnvType(BUILD_ENV_TYPE);
if (maybeEnvType !== undefined) {
return maybeEnvType;
}
}
if (import.meta.env.BUILD_ENV_TYPE !== undefined) {
console.log(`Reading environment variable 'BUILD_ENV_TYPE' (= ${import.meta.env.BUILD_ENV_TYPE}) to determine build environment.`)
maybeEnvType = stringToEnvType(import.meta.env.BUILD_ENV_TYPE);
if (maybeEnvType !== undefined) {
return maybeEnvType;
}
}
if (import.meta.env.VITE_ENVIRONMENT_TYPE !== undefined) {
console.log(`Reading legacy environment variable 'VITE_ENVIRONMENT_TYPE' (= ${import.meta.env.VITE_ENVIRONMENT_TYPE}) to determine build environment.`)
maybeEnvType = stringToEnvType(import.meta.env.VITE_ENVIRONMENT_TYPE);
if (maybeEnvType !== undefined) {
return maybeEnvType;
}
}
// Always default to production.
return BuildEnvType.Production;
}
function stringToEnvType(str: string): BuildEnvType | undefined {
switch (str.toLocaleLowerCase()) {
case "dev":
case "development":
return BuildEnvType.Dev;
case "dev-proxy":
case "devproxy":
return BuildEnvType.DevProxy;
case "stage":
case "staging":
return BuildEnvType.Staging;
default:
return undefined;
}
}
+13
View File
@@ -0,0 +1,13 @@
{
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"extends": "../../tsconfig.base.json"
}
+45
View File
@@ -0,0 +1,45 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"types": [
"node",
"@nx/react/typings/cssmodule.d.ts",
"@nx/react/typings/image.d.ts",
"vite/client"
],
"rootDir": "src",
"jsx": "react-jsx",
"tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo"
},
"exclude": [
"out-tsc",
"dist",
"**/*.spec.ts",
"**/*.test.ts",
"**/*.spec.tsx",
"**/*.test.tsx",
"**/*.spec.js",
"**/*.test.js",
"**/*.spec.jsx",
"**/*.test.jsx",
"vite.config.ts",
"vite.config.mts",
"vitest.config.ts",
"vitest.config.mts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.test.tsx",
"src/**/*.spec.tsx",
"src/**/*.test.js",
"src/**/*.spec.js",
"src/**/*.test.jsx",
"src/**/*.spec.jsx"
],
"include": [
"src/**/*.js",
"src/**/*.jsx",
"src/**/*.ts",
"src/**/*.tsx"
]
}
@@ -0,0 +1,34 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "./out-tsc/vitest",
"types": [
"vitest/globals",
"vitest/importMeta",
"vite/client",
"node",
"vitest"
],
"jsx": "react-jsx"
},
"include": [
"vite.config.ts",
"vite.config.mts",
"vitest.config.ts",
"vitest.config.mts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.test.tsx",
"src/**/*.spec.tsx",
"src/**/*.test.js",
"src/**/*.spec.js",
"src/**/*.test.jsx",
"src/**/*.spec.jsx",
"src/**/*.d.ts"
],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}
+47
View File
@@ -0,0 +1,47 @@
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import dts from 'vite-plugin-dts';
import * as path from 'path';
export default defineConfig(() => ({
root: __dirname,
cacheDir: '../../node_modules/.vite/libs/build-env',
plugins: [react(), dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') }), ],
// Uncomment this if you are using workers.
// worker: {
// plugins: [ nxViteTsPaths() ],
// },
// Configuration for building your library.
// See: https://vitejs.dev/guide/build.html#library-mode
build: {
'emptyOutDir': true,
'transformMixedEsModules': true,
'entry': 'src/index.ts',
'name': '@frontend/build-env',
'fileName': 'index',
'formats': ['es' as const],
'external': ['react','react-dom','react/jsx-runtime'],
'lib': {
'entry': "src/index.ts",
'name': "@frontend/build-env",
'fileName': "index",
'formats': ['es' as const],
},
'rollupOptions': {"external":["'react'","'react-dom'","'react/jsx-runtime'"]},
'outDir': "./dist",
'reportCompressedSize': true,
'commonjsOptions': {"transformMixedEsModules":true},
},
test: {
'watch': false,
'globals': true,
'environment': "jsdom",
'include': ["src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
'reporters': ["default"],
'coverage': {
'reportsDirectory': './test-output/vitest/coverage',
'provider': 'v8' as const,
}
},
}));