Problem: the hexagonal refactor churns the backend tree for nine more phases; the UI delivery stack (web/ SPA, cmd/desktop Wails wrapper, compose/web image) must move to its own repo first so doc/layout rewrites land once on a backend-only tree. Change: - New repo git.hubris.network/dtoro/oikos-web (v0.33.0): web/, desktop/ (updateURL repointed to oikos-web releases), compose/, own CI (web + desktop jobs), own deploy script (CI-green gate, TOCTOU guard, version-tagged images, prune-to-3), own webhook receiver on :9798 + launchd unit, own compose project publishing the same 8091:80. - Cutover executed on mac-mini in order: oikos stack's web service stopped+removed, oikos-web project brought up on 8091; outer Caddy untouched (targets the published port) — serving + Authentik flow + /wails 404 quirk verified post-cutover. - Stripped from oikos: web/, cmd/desktop/, compose/web/, desktop CI workflow, ci.yml web job, Makefile ui/desktop/desktop-package/install targets, the compose web service, oikos-web from deploy.sh's fallback prune list; wails + go-keyring dropped from go.mod, vendor synced. - README / CONTRIBUTING / AGENTS.md / .agents dev+operations docs now point at the new repo; mbse + mascot design docs carry a path note. Risk: production SPA serving depends on the new pipeline now; rollback is versioned-image re-up of the old web service from a pre-split checkout (port 8091). Desktop builds installed before the split still check dtoro/oikos releases — one manual reinstall, noted in the oikos-web release notes. Verification: go vet, make test (race), make generate-check, golangci (no new findings; baseline down 400→365); post-cutover curls — localhost:8091 200, /wails/runtime.js 404, outer Caddy 302 Authentik.
119 lines
2.6 KiB
Markdown
119 lines
2.6 KiB
Markdown
# std-env
|
|
|
|
[](http://npmjs.com/package/std-env)
|
|
[](http://npmjs.com/package/std-env)
|
|
[](https://bundlephobia.com/result?p=std-env)
|
|
|
|
> Runtime agnostic JS utils
|
|
|
|
## Installation
|
|
|
|
```sh
|
|
# Using npm
|
|
npm i std-env
|
|
|
|
# Using pnpm
|
|
pnpm i std-env
|
|
|
|
# Using yarn
|
|
yarn add std-env
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
// ESM
|
|
import { env, isDevelopment, isProduction } from "std-env";
|
|
|
|
// CommonJS
|
|
const { env, isDevelopment, isProduction } = require("std-env");
|
|
```
|
|
|
|
## Flags
|
|
|
|
- `hasTTY`
|
|
- `hasWindow`
|
|
- `isDebug`
|
|
- `isDevelopment`
|
|
- `isLinux`
|
|
- `isMacOS`
|
|
- `isMinimal`
|
|
- `isProduction`
|
|
- `isTest`
|
|
- `isWindows`
|
|
- `platform`
|
|
- `isColorSupported`
|
|
- `nodeVersion`
|
|
- `nodeMajorVersion`
|
|
|
|
You can read more about how each flag works from [./src/flags.ts](./src/flags.ts).
|
|
|
|
## Provider Detection
|
|
|
|
`std-env` can automatically detect the current runtime provider based on environment variables.
|
|
|
|
You can use `isCI` and `platform` exports to detect it:
|
|
|
|
```ts
|
|
import { isCI, provider, providerInfo } from "std-env";
|
|
|
|
console.log({
|
|
isCI, // true
|
|
provider, // "github_actions"
|
|
providerInfo, // { name: "github_actions", isCI: true }
|
|
});
|
|
```
|
|
|
|
List of well known providers can be found from [./src/providers.ts](./src/providers.ts).
|
|
|
|
## Runtime Detection
|
|
|
|
`std-env` can automatically detect the current JavaScript runtime based on global variables, following the [WinterCG Runtime Keys proposal](https://runtime-keys.proposal.wintercg.org/):
|
|
|
|
```ts
|
|
import { runtime, runtimeInfo } from "std-env";
|
|
|
|
// "" | "node" | "deno" | "bun" | "workerd" ...
|
|
console.log(runtime);
|
|
|
|
// { name: "node" }
|
|
console.log(runtimeInfo);
|
|
```
|
|
|
|
You can also use individual named exports for each runtime detection:
|
|
|
|
> [!NOTE]
|
|
> When running code in Bun and Deno with Node.js compatibility mode, `isNode` flag will be also `true`, indicating running in a Node.js compatible runtime.
|
|
>
|
|
> Use `runtime === "node"` if you need strict check for Node.js runtime.
|
|
|
|
- `isNode`
|
|
- `isBun`
|
|
- `isDeno`
|
|
- `isNetlify`
|
|
- `isEdgeLight`
|
|
- `isWorkerd`
|
|
- `isFastly`
|
|
|
|
List of well known providers can be found from [./src/runtimes.ts](./src/runtimes.ts).
|
|
|
|
## Platform-Agnostic `env`
|
|
|
|
`std-env` provides a lightweight proxy to access environment variables in a platform agnostic way.
|
|
|
|
```ts
|
|
import { env } from "std-env";
|
|
```
|
|
|
|
## Platform-Agnostic `process`
|
|
|
|
`std-env` provides a lightweight proxy to access [`process`](https://nodejs.org/api/process.html) object in a platform agnostic way.
|
|
|
|
```ts
|
|
import { process } from "std-env";
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|