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.
69 lines
1.7 KiB
Markdown
69 lines
1.7 KiB
Markdown
<p align=center>
|
|
AssertionError and AssertionResult classes.
|
|
</p>
|
|
|
|
<p align=center>
|
|
<a href="https://github.com/chaijs/assertion-error/actions">
|
|
<img
|
|
alt="build:?"
|
|
src="https://github.com/chaijs/assertion-error/actions/workflows/nodejs.yml/badge.svg"
|
|
/>
|
|
</a><a href="https://www.npmjs.com/package/assertion-error">
|
|
<img
|
|
alt="downloads:?"
|
|
src="https://img.shields.io/npm/dm/assertion-error.svg"
|
|
/>
|
|
</a><a href="">
|
|
<img
|
|
alt="devDependencies:none"
|
|
src="https://img.shields.io/badge/dependencies-none-brightgreen"
|
|
/>
|
|
</a>
|
|
</p>
|
|
|
|
## What is AssertionError?
|
|
|
|
Assertion Error is a module that contains two classes: `AssertionError`, which
|
|
is an instance of an `Error`, and `AssertionResult` which is not an instance of
|
|
Error.
|
|
|
|
These can be useful for returning from a function - if the function "succeeds"
|
|
return an `AssertionResult` and if the function fails return (or throw) an
|
|
`AssertionError`.
|
|
|
|
Both `AssertionError` and `AssertionResult` implement the `Result` interface:
|
|
|
|
```typescript
|
|
interface Result {
|
|
name: "AssertionError" | "AssertionResult";
|
|
ok: boolean;
|
|
toJSON(...args: unknown[]): Record<string, unknown>;
|
|
}
|
|
```
|
|
|
|
So if a function returns `AssertionResult | AssertionError` it is easy to check
|
|
_which_ one is returned by checking either `.name` or `.ok`, or check
|
|
`instanceof Error`.
|
|
|
|
## Installation
|
|
|
|
### Node.js
|
|
|
|
`assertion-error` is available on [npm](http://npmjs.org).
|
|
|
|
```
|
|
$ npm install --save assertion-error
|
|
```
|
|
|
|
### Deno
|
|
|
|
`assertion_error` is available on
|
|
[Deno.land](https://deno.land/x/assertion_error)
|
|
|
|
```typescript
|
|
import {
|
|
AssertionError,
|
|
AssertionResult,
|
|
} from "https://deno.land/x/assertion_error@2.0.0/mod.ts";
|
|
```
|