@resultsafe/core-fp-result 0.1.1 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ru.md +35 -23
- package/dist/README.ru.md +35 -23
- package/dist/docs/assets/logo.svg +68 -128
- package/dist/package.json +1 -1
- package/docs/assets/logo.svg +68 -128
- package/package.json +1 -1
package/README.ru.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# @resultsafe/core-fp-result
|
|
2
|
+
|
|
2
3
|
<a id="top"></a>
|
|
3
4
|
|
|
4
5
|
[](https://www.npmjs.com/package/@resultsafe/core-fp-result)
|
|
@@ -16,20 +17,32 @@ Rust-inspired Result-пакет для явных, композиционных
|
|
|
16
17
|
**Документация:** [API index](./docs/api/README.md) · [Modules](./docs/api/modules.md)
|
|
17
18
|
|
|
18
19
|
---
|
|
20
|
+
|
|
19
21
|
## Содержание
|
|
20
22
|
|
|
21
|
-
- [
|
|
22
|
-
- [
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
32
|
-
- [
|
|
23
|
+
- [@resultsafe/core-fp-result](#resultsafecore-fp-result)
|
|
24
|
+
- [Содержание](#содержание)
|
|
25
|
+
- [Зачем нужен этот пакет](#зачем-нужен-этот-пакет)
|
|
26
|
+
- [Контекст monorepo](#контекст-monorepo)
|
|
27
|
+
- [Ключевые возможности](#ключевые-возможности)
|
|
28
|
+
- [Пакет](#пакет)
|
|
29
|
+
- [`@resultsafe/core-fp-result`](#resultsafecore-fp-result-1)
|
|
30
|
+
- [Установка](#установка)
|
|
31
|
+
- [Пакет](#пакет-1)
|
|
32
|
+
- [Monorepo](#monorepo)
|
|
33
|
+
- [Быстрый старт](#быстрый-старт)
|
|
34
|
+
- [Базовый пример `Ok` / `Err`](#базовый-пример-ok--err)
|
|
35
|
+
- [Обзор основного API](#обзор-основного-api)
|
|
36
|
+
- [Constructors](#constructors)
|
|
37
|
+
- [Guards](#guards)
|
|
38
|
+
- [Methods](#methods)
|
|
39
|
+
- [Refiners](#refiners)
|
|
40
|
+
- [Type aliases](#type-aliases)
|
|
41
|
+
- [Форматы сборки и поставки](#форматы-сборки-и-поставки)
|
|
42
|
+
- [Структура monorepo и пакета](#структура-monorepo-и-пакета)
|
|
43
|
+
- [Когда использовать этот проект](#когда-использовать-этот-проект)
|
|
44
|
+
- [Ссылки на документацию](#ссылки-на-документацию)
|
|
45
|
+
- [License](#license)
|
|
33
46
|
|
|
34
47
|
---
|
|
35
48
|
|
|
@@ -111,11 +124,7 @@ pnpm install
|
|
|
111
124
|
Типичный Result flow начинается с явных конструкторов и затем компонуется через функции, а не через неявные пути исключений.
|
|
112
125
|
|
|
113
126
|
```ts
|
|
114
|
-
import {
|
|
115
|
-
Ok,
|
|
116
|
-
map,
|
|
117
|
-
unwrapOr,
|
|
118
|
-
} from "@resultsafe/core-fp-result";
|
|
127
|
+
import { Ok, map, unwrapOr } from '@resultsafe/core-fp-result';
|
|
119
128
|
|
|
120
129
|
const initial = Ok(21);
|
|
121
130
|
const doubled = map(initial, (value) => value * 2);
|
|
@@ -127,17 +136,19 @@ console.log(finalValue); // 42
|
|
|
127
136
|
### Базовый пример `Ok` / `Err`
|
|
128
137
|
|
|
129
138
|
```ts
|
|
130
|
-
import { Ok, Err, match } from
|
|
139
|
+
import { Ok, Err, match } from '@resultsafe/core-fp-result';
|
|
131
140
|
|
|
132
141
|
const parsePort = (input: string) => {
|
|
133
142
|
const port = Number(input);
|
|
134
|
-
return Number.isInteger(port) && port > 0
|
|
135
|
-
? Ok(port)
|
|
136
|
-
: Err("Invalid port");
|
|
143
|
+
return Number.isInteger(port) && port > 0 ? Ok(port) : Err('Invalid port');
|
|
137
144
|
};
|
|
138
145
|
|
|
139
|
-
const result = parsePort(
|
|
140
|
-
const message = match(
|
|
146
|
+
const result = parsePort('3000');
|
|
147
|
+
const message = match(
|
|
148
|
+
result,
|
|
149
|
+
(value) => `Port: ${value}`,
|
|
150
|
+
(error) => `Error: ${error}`,
|
|
151
|
+
);
|
|
141
152
|
|
|
142
153
|
console.log(message);
|
|
143
154
|
```
|
|
@@ -257,6 +268,7 @@ src/
|
|
|
257
268
|
- [Type aliases module](./docs/api/type-aliases/index.md)
|
|
258
269
|
|
|
259
270
|
---
|
|
271
|
+
|
|
260
272
|
Наверх: [@resultsafe/core-fp-result](#top)
|
|
261
273
|
|
|
262
274
|
---
|
package/dist/README.ru.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# @resultsafe/core-fp-result
|
|
2
|
+
|
|
2
3
|
<a id="top"></a>
|
|
3
4
|
|
|
4
5
|
[](https://www.npmjs.com/package/@resultsafe/core-fp-result)
|
|
@@ -16,20 +17,32 @@ Rust-inspired Result-пакет для явных, композиционных
|
|
|
16
17
|
**Документация:** [API index](./docs/api/README.md) · [Modules](./docs/api/modules.md)
|
|
17
18
|
|
|
18
19
|
---
|
|
20
|
+
|
|
19
21
|
## Содержание
|
|
20
22
|
|
|
21
|
-
- [
|
|
22
|
-
- [
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
32
|
-
- [
|
|
23
|
+
- [@resultsafe/core-fp-result](#resultsafecore-fp-result)
|
|
24
|
+
- [Содержание](#содержание)
|
|
25
|
+
- [Зачем нужен этот пакет](#зачем-нужен-этот-пакет)
|
|
26
|
+
- [Контекст monorepo](#контекст-monorepo)
|
|
27
|
+
- [Ключевые возможности](#ключевые-возможности)
|
|
28
|
+
- [Пакет](#пакет)
|
|
29
|
+
- [`@resultsafe/core-fp-result`](#resultsafecore-fp-result-1)
|
|
30
|
+
- [Установка](#установка)
|
|
31
|
+
- [Пакет](#пакет-1)
|
|
32
|
+
- [Monorepo](#monorepo)
|
|
33
|
+
- [Быстрый старт](#быстрый-старт)
|
|
34
|
+
- [Базовый пример `Ok` / `Err`](#базовый-пример-ok--err)
|
|
35
|
+
- [Обзор основного API](#обзор-основного-api)
|
|
36
|
+
- [Constructors](#constructors)
|
|
37
|
+
- [Guards](#guards)
|
|
38
|
+
- [Methods](#methods)
|
|
39
|
+
- [Refiners](#refiners)
|
|
40
|
+
- [Type aliases](#type-aliases)
|
|
41
|
+
- [Форматы сборки и поставки](#форматы-сборки-и-поставки)
|
|
42
|
+
- [Структура monorepo и пакета](#структура-monorepo-и-пакета)
|
|
43
|
+
- [Когда использовать этот проект](#когда-использовать-этот-проект)
|
|
44
|
+
- [Ссылки на документацию](#ссылки-на-документацию)
|
|
45
|
+
- [License](#license)
|
|
33
46
|
|
|
34
47
|
---
|
|
35
48
|
|
|
@@ -111,11 +124,7 @@ pnpm install
|
|
|
111
124
|
Типичный Result flow начинается с явных конструкторов и затем компонуется через функции, а не через неявные пути исключений.
|
|
112
125
|
|
|
113
126
|
```ts
|
|
114
|
-
import {
|
|
115
|
-
Ok,
|
|
116
|
-
map,
|
|
117
|
-
unwrapOr,
|
|
118
|
-
} from "@resultsafe/core-fp-result";
|
|
127
|
+
import { Ok, map, unwrapOr } from '@resultsafe/core-fp-result';
|
|
119
128
|
|
|
120
129
|
const initial = Ok(21);
|
|
121
130
|
const doubled = map(initial, (value) => value * 2);
|
|
@@ -127,17 +136,19 @@ console.log(finalValue); // 42
|
|
|
127
136
|
### Базовый пример `Ok` / `Err`
|
|
128
137
|
|
|
129
138
|
```ts
|
|
130
|
-
import { Ok, Err, match } from
|
|
139
|
+
import { Ok, Err, match } from '@resultsafe/core-fp-result';
|
|
131
140
|
|
|
132
141
|
const parsePort = (input: string) => {
|
|
133
142
|
const port = Number(input);
|
|
134
|
-
return Number.isInteger(port) && port > 0
|
|
135
|
-
? Ok(port)
|
|
136
|
-
: Err("Invalid port");
|
|
143
|
+
return Number.isInteger(port) && port > 0 ? Ok(port) : Err('Invalid port');
|
|
137
144
|
};
|
|
138
145
|
|
|
139
|
-
const result = parsePort(
|
|
140
|
-
const message = match(
|
|
146
|
+
const result = parsePort('3000');
|
|
147
|
+
const message = match(
|
|
148
|
+
result,
|
|
149
|
+
(value) => `Port: ${value}`,
|
|
150
|
+
(error) => `Error: ${error}`,
|
|
151
|
+
);
|
|
141
152
|
|
|
142
153
|
console.log(message);
|
|
143
154
|
```
|
|
@@ -257,6 +268,7 @@ src/
|
|
|
257
268
|
- [Type aliases module](./docs/api/type-aliases/index.md)
|
|
258
269
|
|
|
259
270
|
---
|
|
271
|
+
|
|
260
272
|
Наверх: [@resultsafe/core-fp-result](#top)
|
|
261
273
|
|
|
262
274
|
---
|
|
@@ -1,153 +1,93 @@
|
|
|
1
|
-
<svg width="100%" viewBox="0 0
|
|
1
|
+
<svg width="100%" viewBox="0 0 680 390" xmlns="http://www.w3.org/2000/svg" style="background:#ffffff;border-radius:12px">
|
|
2
2
|
<defs>
|
|
3
3
|
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></marker>
|
|
4
|
-
<clipPath id="
|
|
5
|
-
<mask id="imagine-text-gaps-
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<path
|
|
15
|
-
<
|
|
4
|
+
<clipPath id="shield"><path d="M340 14 L600 44 L600 190 Q600 296 340 356 Q80 296 80 190 L80 44 Z"/></clipPath>
|
|
5
|
+
<mask id="imagine-text-gaps-0cldyt" maskUnits="userSpaceOnUse"><rect x="0" y="0" width="680" height="390" fill="white"/><rect x="270.4906921386719" y="42.63523483276367" width="139.01861572265625" height="13.00137996673584" fill="black" rx="2"/><rect x="233.4303436279297" y="61.221954345703125" width="213.1393280029297" height="73.55609130859375" fill="black" rx="2"/><rect x="269.5253601074219" y="112.63249206542969" width="140.94931030273438" height="54.73503112792969" fill="black" rx="2"/><rect x="218" y="175.2718505859375" width="29.384986877441406" height="15.456297874450684" fill="black" rx="2"/><rect x="302" y="175.2718505859375" width="60.698638916015625" height="15.456297874450684" fill="black" rx="2"/><rect x="376.2344970703125" y="173.63523864746094" width="15.530981540679932" height="18.729525566101074" fill="black" rx="2"/><rect x="406" y="175.2718505859375" width="60.69861602783203" height="15.456297874450684" fill="black" rx="2"/><rect x="293.1283874511719" y="213.22607421875" width="93.95484924316406" height="19.547832489013672" fill="black" rx="2"/><rect x="192.6876983642578" y="269.04437255859375" width="41.80630874633789" height="17.911218643188477" fill="black" rx="2"/><rect x="442.20721435546875" y="269.04437255859375" width="47.585601806640625" height="17.911218643188477" fill="black" rx="2"/><rect x="194.43930053710938" y="299.8169250488281" width="291.1214294433594" height="14.637990951538086" fill="black" rx="2"/><rect x="245.2032012939453" y="328.49932861328125" width="26.096651077270508" height="13.00137710571289" fill="black" rx="2"/><rect x="298.8111877441406" y="328.49932861328125" width="34.377614974975586" height="13.00137710571289" fill="black" rx="2"/><rect x="359.5841064453125" y="328.49932861328125" width="22.519354820251465" height="13.00137710571289" fill="black" rx="2"/><rect x="415.40240478515625" y="328.49932861328125" width="21.701047897338867" height="13.00137710571289" fill="black" rx="2"/><rect x="180.66871643066406" y="357.36199951171875" width="318.6625671386719" height="17.09291172027588" fill="black" rx="2"/></mask></defs>
|
|
6
|
+
|
|
7
|
+
<!-- Shield background -->
|
|
8
|
+
<path d="M340 14 L600 44 L600 190 Q600 296 340 356 Q80 296 80 190 L80 44 Z" fill="#faf9f5" stroke="#d3d1c7" stroke-width="0.8" style="fill:rgb(250, 249, 245);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.8px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
9
|
+
|
|
10
|
+
<!-- Inner accent shield -->
|
|
11
|
+
<path d="M340 28 L582 54 L582 186 Q582 286 340 342 Q98 286 98 186 L98 54 Z" fill="none" stroke="#7F77DD" stroke-width="0.4" opacity="0.3" mask="url(#imagine-text-gaps-0cldyt)" style="fill:none;stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
12
|
+
|
|
13
|
+
<!-- Subtle diagonal texture -->
|
|
14
|
+
<g clip-path="url(#shield)" opacity="0.02" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.02;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
15
|
+
<line x1="-20" y1="0" x2="280" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
16
|
+
<line x1="80" y1="0" x2="380" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
17
|
+
<line x1="180" y1="0" x2="480" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
18
|
+
<line x1="280" y1="0" x2="580" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
19
|
+
<line x1="380" y1="0" x2="680" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
20
|
+
<line x1="480" y1="0" x2="780" y2="380" stroke="#2C2C2A" stroke-width="34" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
16
21
|
</g>
|
|
17
22
|
|
|
18
|
-
<!--
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
<!-- Big title -->
|
|
26
|
-
<text x="480" y="96" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-serif);font-size:60px;font-weight:500;letter-spacing:-1px;fill:rgb(250, 249, 245);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:60px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-primary)">Result<tspan fill="#7F77DD" style="fill:rgb(127, 119, 221);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:60px;font-weight:500;text-anchor:middle;dominant-baseline:central">Safe</tspan></text>
|
|
27
|
-
|
|
28
|
-
<!-- Thin rule under title -->
|
|
29
|
-
<line x1="300" y1="116" x2="660" y2="116" stroke="var(--color-text-primary)" stroke-width="0.5" opacity="0.1" mask="url(#imagine-text-gaps-e1f1yu)" style="fill:rgb(0, 0, 0);stroke:rgb(250, 249, 245);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
30
|
-
|
|
31
|
-
<!-- Centered subtitle -->
|
|
32
|
-
<text x="480" y="136" text-anchor="middle" style="font-family:var(--font-serif);font-size:14px;letter-spacing:0.3px;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:14px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="var(--color-text-secondary)">Rust-style Result<T, E> brought to TypeScript & JavaScript</text>
|
|
33
|
-
|
|
34
|
-
<!-- ====== LANGUAGE BRIDGE — centered ornamental ====== -->
|
|
35
|
-
|
|
36
|
-
<!-- Rust -->
|
|
37
|
-
<rect x="240" y="152" width="76" height="26" rx="13" fill="#D85A30" opacity="0.1" stroke="#D85A30" stroke-width="0.5" style="fill:rgb(216, 90, 48);stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
38
|
-
<circle cx="256" cy="165" r="4.5" fill="none" stroke="#D85A30" stroke-width="0.9" style="fill:none;stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.9px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
39
|
-
<circle cx="256" cy="165" r="2" fill="#D85A30" opacity="0.3" style="fill:rgb(216, 90, 48);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
40
|
-
<text x="268" y="165" dominant-baseline="central" style="font-family:var(--font-mono);font-size:11px;font-weight:500;fill:rgb(153, 60, 29);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="#993C1D">Rust</text>
|
|
41
|
-
|
|
42
|
-
<!-- Ornamental arrow -->
|
|
43
|
-
<line x1="324" y1="165" x2="354" y2="165" stroke="#7F77DD" stroke-width="1" opacity="0.4" style="fill:rgb(0, 0, 0);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.4;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
44
|
-
<circle cx="339" cy="165" r="2" fill="#7F77DD" opacity="0.3" style="fill:rgb(127, 119, 221);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
45
|
-
<line x1="354" y1="165" x2="370" y2="165" stroke="#7F77DD" stroke-width="1.2" marker-end="url(#arrow)" opacity="0.5" style="fill:rgb(0, 0, 0);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:1.2px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
46
|
-
|
|
47
|
-
<!-- TS -->
|
|
48
|
-
<rect x="378" y="152" width="106" height="26" rx="13" fill="#378ADD" opacity="0.1" stroke="#378ADD" stroke-width="0.5" style="fill:rgb(55, 138, 221);stroke:rgb(55, 138, 221);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
49
|
-
<text x="398" y="165" dominant-baseline="central" style="font-family:var(--font-mono);font-size:11px;font-weight:500;fill:rgb(24, 95, 165);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="#185FA5">TypeScript</text>
|
|
50
|
-
|
|
51
|
-
<!-- · -->
|
|
52
|
-
<text x="496" y="165" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-sans);font-size:14px;opacity:0.2;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.2;font-family:"Anthropic Sans", sans-serif;font-size:14px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-secondary)">·</text>
|
|
53
|
-
|
|
54
|
-
<!-- JS -->
|
|
55
|
-
<rect x="508" y="152" width="100" height="26" rx="13" fill="#EF9F27" opacity="0.1" stroke="#EF9F27" stroke-width="0.5" style="fill:rgb(239, 159, 39);stroke:rgb(239, 159, 39);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
56
|
-
<text x="528" y="165" dominant-baseline="central" style="font-family:var(--font-mono);font-size:11px;font-weight:500;fill:rgb(133, 79, 11);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="#854F0B">JavaScript</text>
|
|
57
|
-
|
|
58
|
-
<!-- Badges -->
|
|
59
|
-
<rect x="624" y="154" width="50" height="22" rx="11" fill="var(--color-background-primary)" stroke="var(--color-border-tertiary)" stroke-width="0.4" style="fill:rgb(48, 48, 46);stroke:rgba(222, 220, 209, 0.15);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
60
|
-
<text x="649" y="165" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;fill:rgb(156, 154, 146);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-tertiary)">0 deps</text>
|
|
61
|
-
|
|
62
|
-
<rect x="682" y="154" width="40" height="22" rx="11" fill="var(--color-background-primary)" stroke="var(--color-border-tertiary)" stroke-width="0.4" style="fill:rgb(48, 48, 46);stroke:rgba(222, 220, 209, 0.15);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
63
|
-
<text x="702" y="165" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;fill:rgb(156, 154, 146);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-tertiary)">MIT</text>
|
|
64
|
-
|
|
65
|
-
<!-- ====== MAIN RULE ====== -->
|
|
66
|
-
<line x1="40" y1="192" x2="920" y2="192" stroke="var(--color-text-primary)" stroke-width="0.5" opacity="0.1" style="fill:rgb(0, 0, 0);stroke:rgb(250, 249, 245);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
67
|
-
|
|
68
|
-
<!-- ====== 4-COLUMN LAYOUT ====== -->
|
|
69
|
-
|
|
70
|
-
<!-- COL 1: Ok / Err -->
|
|
71
|
-
<text x="140" y="210" text-anchor="middle" style="font-family:var(--font-serif);font-size:10px;letter-spacing:1.5px;opacity:0.35;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.35;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="var(--color-text-secondary)">RESULT TYPE</text>
|
|
72
|
-
|
|
73
|
-
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
74
|
-
<rect x="86" y="222" width="108" height="28" rx="7" stroke-width="0.5" style="fill:rgb(60, 52, 137);stroke:rgb(175, 169, 236);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
75
|
-
<text x="140" y="236" text-anchor="middle" dominant-baseline="central" style="font-size:12px;fill:rgb(206, 203, 246);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:12px;font-weight:500;text-anchor:middle;dominant-baseline:central">Result<T, E></text>
|
|
23
|
+
<!-- Decorative grid dots -->
|
|
24
|
+
<g opacity="0.06" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.06;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
25
|
+
<circle cx="150" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="168" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="186" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
26
|
+
<circle cx="494" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="512" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="530" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
27
|
+
<circle cx="150" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="168" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
28
|
+
<circle cx="512" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="530" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
76
29
|
</g>
|
|
77
30
|
|
|
78
|
-
|
|
79
|
-
<
|
|
80
|
-
|
|
81
|
-
<rect x="56" y="266" width="58" height="22" rx="11" fill="#1D9E75" opacity="0.15" stroke="#1D9E75" stroke-width="0.4" style="fill:rgb(29, 158, 117);stroke:rgb(29, 158, 117);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.15;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
82
|
-
<text x="85" y="277" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:10px;font-weight:500;fill:rgb(15, 110, 86);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#0F6E56">Ok<T></text>
|
|
83
|
-
|
|
84
|
-
<rect x="166" y="266" width="58" height="22" rx="11" fill="#E24B4A" opacity="0.15" stroke="#E24B4A" stroke-width="0.4" style="fill:rgb(226, 75, 74);stroke:rgb(226, 75, 74);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.15;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
85
|
-
<text x="195" y="277" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:10px;font-weight:500;fill:rgb(163, 45, 45);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#A32D2D">Err<E></text>
|
|
31
|
+
<!-- FROM RUST tagline -->
|
|
32
|
+
<text x="340" y="52" text-anchor="middle" style="font-family:ui-monospace,monospace;font-size:8px;letter-spacing:2.5px;opacity:0.4;fill:rgb(216, 90, 48);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.4;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="#D85A30">FROM RUST WITH LOVE</text>
|
|
86
33
|
|
|
87
|
-
<!--
|
|
88
|
-
<
|
|
34
|
+
<!-- RESULT -->
|
|
35
|
+
<text x="340" y="98" text-anchor="middle" dominant-baseline="central" style="font-family:system-ui,-apple-system,sans-serif;font-size:52px;font-weight:600;letter-spacing:5px;fill:rgb(127, 119, 221);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:system-ui, -apple-system, sans-serif;font-size:52px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#7F77DD">RESULT</text>
|
|
89
36
|
|
|
90
|
-
<!--
|
|
91
|
-
<text x="
|
|
37
|
+
<!-- SAFE -->
|
|
38
|
+
<text x="340" y="140" text-anchor="middle" dominant-baseline="central" style="font-family:system-ui,-apple-system,sans-serif;font-size:38px;font-weight:600;letter-spacing:12px;fill:rgb(29, 158, 117);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:system-ui, -apple-system, sans-serif;font-size:38px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#1D9E75">SAFE</text>
|
|
92
39
|
|
|
93
|
-
<!--
|
|
94
|
-
<
|
|
95
|
-
<text x="318" y="234" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;font-weight:500;fill:rgb(15, 110, 86);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#0F6E56">Ok(v)</text>
|
|
40
|
+
<!-- Divider -->
|
|
41
|
+
<line x1="200" y1="162" x2="480" y2="162" stroke="#d3d1c7" stroke-width="0.5" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
96
42
|
|
|
97
|
-
|
|
43
|
+
<!-- Language bridge -->
|
|
44
|
+
<rect x="196" y="172" width="62" height="22" rx="11" fill="#D85A30" opacity="0.1" stroke="#D85A30" stroke-width="0.4" style="fill:rgb(216, 90, 48);stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
45
|
+
<circle cx="210" cy="183" r="4" fill="none" stroke="#D85A30" stroke-width="0.8" style="fill:none;stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.8px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
46
|
+
<circle cx="210" cy="183" r="1.8" fill="#D85A30" opacity="0.3" style="fill:rgb(216, 90, 48);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
47
|
+
<text x="222" y="183" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:600;fill:rgb(153, 60, 29);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9.5px;font-weight:600;text-anchor:start;dominant-baseline:central" fill="#993C1D">Rust</text>
|
|
98
48
|
|
|
99
|
-
<
|
|
100
|
-
<text x="386" y="234" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;font-weight:500;fill:rgb(83, 74, 183);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#534AB7">.map</text>
|
|
49
|
+
<line x1="264" y1="183" x2="282" y2="183" stroke="#7F77DD" stroke-width="0.8" marker-end="url(#arrow)" opacity="0.45" style="fill:rgb(0, 0, 0);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:0.8px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.45;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
101
50
|
|
|
102
|
-
<
|
|
51
|
+
<rect x="290" y="172" width="86" height="22" rx="11" fill="#378ADD" opacity="0.1" stroke="#378ADD" stroke-width="0.4" style="fill:rgb(55, 138, 221);stroke:rgb(55, 138, 221);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
52
|
+
<text x="306" y="183" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:600;fill:rgb(24, 95, 165);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9.5px;font-weight:600;text-anchor:start;dominant-baseline:central" fill="#185FA5">TypeScript</text>
|
|
103
53
|
|
|
104
|
-
<
|
|
105
|
-
<text x="458" y="234" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;font-weight:500;fill:rgb(83, 74, 183);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#534AB7">.flatMap</text>
|
|
54
|
+
<text x="384" y="183" text-anchor="middle" dominant-baseline="central" style="font-family:system-ui,sans-serif;font-size:11px;opacity:0.2;fill:rgb(95, 94, 90);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.2;font-family:system-ui, sans-serif;font-size:11px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#5F5E5A">+</text>
|
|
106
55
|
|
|
107
|
-
<
|
|
56
|
+
<rect x="394" y="172" width="84" height="22" rx="11" fill="#EF9F27" opacity="0.1" stroke="#EF9F27" stroke-width="0.4" style="fill:rgb(239, 159, 39);stroke:rgb(239, 159, 39);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
57
|
+
<text x="410" y="183" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:600;fill:rgb(133, 79, 11);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9.5px;font-weight:600;text-anchor:start;dominant-baseline:central" fill="#854F0B">JavaScript</text>
|
|
108
58
|
|
|
109
|
-
|
|
110
|
-
<
|
|
59
|
+
<!-- Result node -->
|
|
60
|
+
<rect x="278" y="206" width="124" height="34" rx="8" fill="#EEEDFE" stroke="#AFA9EC" stroke-width="0.5" style="fill:rgb(238, 237, 254);stroke:rgb(175, 169, 236);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
61
|
+
<text x="340" y="223" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:13px;font-weight:600;fill:rgb(60, 52, 137);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:13px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#3C3489">Result<T, E></text>
|
|
111
62
|
|
|
112
|
-
<!--
|
|
113
|
-
<
|
|
114
|
-
<
|
|
63
|
+
<!-- Branch arrows -->
|
|
64
|
+
<line x1="308" y1="240" x2="240" y2="262" stroke="#1D9E75" stroke-width="1" marker-end="url(#arrow)" style="fill:rgb(0, 0, 0);stroke:rgb(29, 158, 117);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
65
|
+
<line x1="372" y1="240" x2="440" y2="262" stroke="#E24B4A" stroke-width="1" marker-end="url(#arrow)" style="fill:rgb(0, 0, 0);stroke:rgb(226, 75, 74);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
115
66
|
|
|
116
|
-
<!--
|
|
117
|
-
<
|
|
67
|
+
<!-- Ok pill -->
|
|
68
|
+
<rect x="172" y="264" width="84" height="28" rx="14" fill="#1D9E75" opacity="0.12" stroke="#1D9E75" stroke-width="0.5" style="fill:rgb(29, 158, 117);stroke:rgb(29, 158, 117);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.12;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
69
|
+
<text x="214" y="278" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:12px;font-weight:600;fill:rgb(15, 110, 86);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:12px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#0F6E56">Ok<T></text>
|
|
118
70
|
|
|
119
|
-
<!--
|
|
120
|
-
<
|
|
71
|
+
<!-- Err pill -->
|
|
72
|
+
<rect x="424" y="264" width="84" height="28" rx="14" fill="#E24B4A" opacity="0.12" stroke="#E24B4A" stroke-width="0.5" style="fill:rgb(226, 75, 74);stroke:rgb(226, 75, 74);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.12;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
73
|
+
<text x="466" y="278" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:12px;font-weight:600;fill:rgb(163, 45, 45);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:12px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#A32D2D">Err<E></text>
|
|
121
74
|
|
|
122
|
-
|
|
123
|
-
<
|
|
124
|
-
<text x="624" y="237" dominant-baseline="central" style="font-family:var(--font-mono);font-size:10px;font-weight:500;fill:rgb(250, 249, 245);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="var(--color-text-primary)">core-fp-result</text>
|
|
125
|
-
<circle cx="740" cy="237" r="3" fill="#1D9E75" opacity="0.6" style="fill:rgb(29, 158, 117);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.6;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
75
|
+
<!-- Methods -->
|
|
76
|
+
<text x="340" y="310" text-anchor="middle" style="font-family:ui-monospace,monospace;font-size:9px;opacity:0.3;letter-spacing:0.5px;fill:rgb(95, 94, 90);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="#5F5E5A">.map · .flatMap · .match · .unwrap · .tap · .recover</text>
|
|
126
77
|
|
|
127
|
-
|
|
128
|
-
<rect x="
|
|
129
|
-
<
|
|
130
|
-
<text x="624" y="267" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;fill:rgb(156, 154, 146);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:start;dominant-baseline:central" fill="var(--color-text-tertiary)">fp-option · fp-either</text>
|
|
131
|
-
</g>
|
|
132
|
-
|
|
133
|
-
<!-- COL SEPARATOR -->
|
|
134
|
-
<line x1="776" y1="200" x2="776" y2="290" stroke="var(--color-text-primary)" stroke-width="0.3" opacity="0.08" style="fill:rgb(0, 0, 0);stroke:rgb(250, 249, 245);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.08;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
135
|
-
|
|
136
|
-
<!-- COL 4: Features -->
|
|
137
|
-
<text x="868" y="210" text-anchor="middle" style="font-family:var(--font-serif);font-size:10px;letter-spacing:1.5px;opacity:0.35;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.35;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="var(--color-text-secondary)">FEATURES</text>
|
|
138
|
-
|
|
139
|
-
<g opacity="0.55" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.55;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
140
|
-
<circle cx="802" cy="232" r="2.5" fill="#1D9E75" opacity="0.6" style="fill:rgb(29, 158, 117);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.6;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
141
|
-
<text x="812" y="232" dominant-baseline="central" style="font-family:var(--font-sans);font-size:11px;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", sans-serif;font-size:11px;font-weight:400;text-anchor:start;dominant-baseline:central" fill="var(--color-text-secondary)">Exhaustive match</text>
|
|
78
|
+
<!-- Badges -->
|
|
79
|
+
<rect x="234" y="326" width="48" height="18" rx="9" fill="#7F77DD" opacity="0.1" stroke="#7F77DD" stroke-width="0.3" style="fill:rgb(127, 119, 221);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
80
|
+
<text x="258" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;font-weight:500;fill:rgb(83, 74, 183);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#534AB7">v1.0</text>
|
|
142
81
|
|
|
143
|
-
<
|
|
144
|
-
<text x="
|
|
82
|
+
<rect x="290" y="326" width="52" height="18" rx="9" fill="#ffffff" stroke="#d3d1c7" stroke-width="0.3" style="fill:rgb(255, 255, 255);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
83
|
+
<text x="316" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#888780">0 deps</text>
|
|
145
84
|
|
|
146
|
-
<
|
|
147
|
-
<text x="
|
|
85
|
+
<rect x="350" y="326" width="42" height="18" rx="9" fill="#ffffff" stroke="#d3d1c7" stroke-width="0.3" style="fill:rgb(255, 255, 255);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
86
|
+
<text x="371" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#888780">MIT</text>
|
|
148
87
|
|
|
149
|
-
<
|
|
150
|
-
<text x="
|
|
151
|
-
</g>
|
|
88
|
+
<rect x="400" y="326" width="52" height="18" rx="9" fill="#ffffff" stroke="#d3d1c7" stroke-width="0.3" style="fill:rgb(255, 255, 255);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
89
|
+
<text x="426" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#888780">ESM</text>
|
|
152
90
|
|
|
91
|
+
<!-- Bottom tagline -->
|
|
92
|
+
<text x="340" y="370" text-anchor="middle" style="font-family:system-ui,-apple-system,sans-serif;font-size:10px;letter-spacing:2px;opacity:0.2;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.2;font-family:system-ui, -apple-system, sans-serif;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="#888780">@resultsafe · type-safe functional error handling</text>
|
|
153
93
|
</svg>
|
package/dist/package.json
CHANGED
package/docs/assets/logo.svg
CHANGED
|
@@ -1,153 +1,93 @@
|
|
|
1
|
-
<svg width="100%" viewBox="0 0
|
|
1
|
+
<svg width="100%" viewBox="0 0 680 390" xmlns="http://www.w3.org/2000/svg" style="background:#ffffff;border-radius:12px">
|
|
2
2
|
<defs>
|
|
3
3
|
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></marker>
|
|
4
|
-
<clipPath id="
|
|
5
|
-
<mask id="imagine-text-gaps-
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<path
|
|
15
|
-
<
|
|
4
|
+
<clipPath id="shield"><path d="M340 14 L600 44 L600 190 Q600 296 340 356 Q80 296 80 190 L80 44 Z"/></clipPath>
|
|
5
|
+
<mask id="imagine-text-gaps-0cldyt" maskUnits="userSpaceOnUse"><rect x="0" y="0" width="680" height="390" fill="white"/><rect x="270.4906921386719" y="42.63523483276367" width="139.01861572265625" height="13.00137996673584" fill="black" rx="2"/><rect x="233.4303436279297" y="61.221954345703125" width="213.1393280029297" height="73.55609130859375" fill="black" rx="2"/><rect x="269.5253601074219" y="112.63249206542969" width="140.94931030273438" height="54.73503112792969" fill="black" rx="2"/><rect x="218" y="175.2718505859375" width="29.384986877441406" height="15.456297874450684" fill="black" rx="2"/><rect x="302" y="175.2718505859375" width="60.698638916015625" height="15.456297874450684" fill="black" rx="2"/><rect x="376.2344970703125" y="173.63523864746094" width="15.530981540679932" height="18.729525566101074" fill="black" rx="2"/><rect x="406" y="175.2718505859375" width="60.69861602783203" height="15.456297874450684" fill="black" rx="2"/><rect x="293.1283874511719" y="213.22607421875" width="93.95484924316406" height="19.547832489013672" fill="black" rx="2"/><rect x="192.6876983642578" y="269.04437255859375" width="41.80630874633789" height="17.911218643188477" fill="black" rx="2"/><rect x="442.20721435546875" y="269.04437255859375" width="47.585601806640625" height="17.911218643188477" fill="black" rx="2"/><rect x="194.43930053710938" y="299.8169250488281" width="291.1214294433594" height="14.637990951538086" fill="black" rx="2"/><rect x="245.2032012939453" y="328.49932861328125" width="26.096651077270508" height="13.00137710571289" fill="black" rx="2"/><rect x="298.8111877441406" y="328.49932861328125" width="34.377614974975586" height="13.00137710571289" fill="black" rx="2"/><rect x="359.5841064453125" y="328.49932861328125" width="22.519354820251465" height="13.00137710571289" fill="black" rx="2"/><rect x="415.40240478515625" y="328.49932861328125" width="21.701047897338867" height="13.00137710571289" fill="black" rx="2"/><rect x="180.66871643066406" y="357.36199951171875" width="318.6625671386719" height="17.09291172027588" fill="black" rx="2"/></mask></defs>
|
|
6
|
+
|
|
7
|
+
<!-- Shield background -->
|
|
8
|
+
<path d="M340 14 L600 44 L600 190 Q600 296 340 356 Q80 296 80 190 L80 44 Z" fill="#faf9f5" stroke="#d3d1c7" stroke-width="0.8" style="fill:rgb(250, 249, 245);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.8px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
9
|
+
|
|
10
|
+
<!-- Inner accent shield -->
|
|
11
|
+
<path d="M340 28 L582 54 L582 186 Q582 286 340 342 Q98 286 98 186 L98 54 Z" fill="none" stroke="#7F77DD" stroke-width="0.4" opacity="0.3" mask="url(#imagine-text-gaps-0cldyt)" style="fill:none;stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
12
|
+
|
|
13
|
+
<!-- Subtle diagonal texture -->
|
|
14
|
+
<g clip-path="url(#shield)" opacity="0.02" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.02;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
15
|
+
<line x1="-20" y1="0" x2="280" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
16
|
+
<line x1="80" y1="0" x2="380" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
17
|
+
<line x1="180" y1="0" x2="480" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
18
|
+
<line x1="280" y1="0" x2="580" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
19
|
+
<line x1="380" y1="0" x2="680" y2="380" stroke="#2C2C2A" stroke-width="34" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
20
|
+
<line x1="480" y1="0" x2="780" y2="380" stroke="#2C2C2A" stroke-width="34" style="fill:rgb(0, 0, 0);stroke:rgb(44, 44, 42);color:rgb(255, 255, 255);stroke-width:34px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
16
21
|
</g>
|
|
17
22
|
|
|
18
|
-
<!--
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
<!-- Big title -->
|
|
26
|
-
<text x="480" y="96" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-serif);font-size:60px;font-weight:500;letter-spacing:-1px;fill:rgb(250, 249, 245);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:60px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-primary)">Result<tspan fill="#7F77DD" style="fill:rgb(127, 119, 221);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:60px;font-weight:500;text-anchor:middle;dominant-baseline:central">Safe</tspan></text>
|
|
27
|
-
|
|
28
|
-
<!-- Thin rule under title -->
|
|
29
|
-
<line x1="300" y1="116" x2="660" y2="116" stroke="var(--color-text-primary)" stroke-width="0.5" opacity="0.1" mask="url(#imagine-text-gaps-e1f1yu)" style="fill:rgb(0, 0, 0);stroke:rgb(250, 249, 245);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
30
|
-
|
|
31
|
-
<!-- Centered subtitle -->
|
|
32
|
-
<text x="480" y="136" text-anchor="middle" style="font-family:var(--font-serif);font-size:14px;letter-spacing:0.3px;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:14px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="var(--color-text-secondary)">Rust-style Result<T, E> brought to TypeScript & JavaScript</text>
|
|
33
|
-
|
|
34
|
-
<!-- ====== LANGUAGE BRIDGE — centered ornamental ====== -->
|
|
35
|
-
|
|
36
|
-
<!-- Rust -->
|
|
37
|
-
<rect x="240" y="152" width="76" height="26" rx="13" fill="#D85A30" opacity="0.1" stroke="#D85A30" stroke-width="0.5" style="fill:rgb(216, 90, 48);stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
38
|
-
<circle cx="256" cy="165" r="4.5" fill="none" stroke="#D85A30" stroke-width="0.9" style="fill:none;stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.9px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
39
|
-
<circle cx="256" cy="165" r="2" fill="#D85A30" opacity="0.3" style="fill:rgb(216, 90, 48);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
40
|
-
<text x="268" y="165" dominant-baseline="central" style="font-family:var(--font-mono);font-size:11px;font-weight:500;fill:rgb(153, 60, 29);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="#993C1D">Rust</text>
|
|
41
|
-
|
|
42
|
-
<!-- Ornamental arrow -->
|
|
43
|
-
<line x1="324" y1="165" x2="354" y2="165" stroke="#7F77DD" stroke-width="1" opacity="0.4" style="fill:rgb(0, 0, 0);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.4;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
44
|
-
<circle cx="339" cy="165" r="2" fill="#7F77DD" opacity="0.3" style="fill:rgb(127, 119, 221);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
45
|
-
<line x1="354" y1="165" x2="370" y2="165" stroke="#7F77DD" stroke-width="1.2" marker-end="url(#arrow)" opacity="0.5" style="fill:rgb(0, 0, 0);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:1.2px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
46
|
-
|
|
47
|
-
<!-- TS -->
|
|
48
|
-
<rect x="378" y="152" width="106" height="26" rx="13" fill="#378ADD" opacity="0.1" stroke="#378ADD" stroke-width="0.5" style="fill:rgb(55, 138, 221);stroke:rgb(55, 138, 221);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
49
|
-
<text x="398" y="165" dominant-baseline="central" style="font-family:var(--font-mono);font-size:11px;font-weight:500;fill:rgb(24, 95, 165);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="#185FA5">TypeScript</text>
|
|
50
|
-
|
|
51
|
-
<!-- · -->
|
|
52
|
-
<text x="496" y="165" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-sans);font-size:14px;opacity:0.2;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.2;font-family:"Anthropic Sans", sans-serif;font-size:14px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-secondary)">·</text>
|
|
53
|
-
|
|
54
|
-
<!-- JS -->
|
|
55
|
-
<rect x="508" y="152" width="100" height="26" rx="13" fill="#EF9F27" opacity="0.1" stroke="#EF9F27" stroke-width="0.5" style="fill:rgb(239, 159, 39);stroke:rgb(239, 159, 39);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
56
|
-
<text x="528" y="165" dominant-baseline="central" style="font-family:var(--font-mono);font-size:11px;font-weight:500;fill:rgb(133, 79, 11);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="#854F0B">JavaScript</text>
|
|
57
|
-
|
|
58
|
-
<!-- Badges -->
|
|
59
|
-
<rect x="624" y="154" width="50" height="22" rx="11" fill="var(--color-background-primary)" stroke="var(--color-border-tertiary)" stroke-width="0.4" style="fill:rgb(48, 48, 46);stroke:rgba(222, 220, 209, 0.15);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
60
|
-
<text x="649" y="165" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;fill:rgb(156, 154, 146);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-tertiary)">0 deps</text>
|
|
61
|
-
|
|
62
|
-
<rect x="682" y="154" width="40" height="22" rx="11" fill="var(--color-background-primary)" stroke="var(--color-border-tertiary)" stroke-width="0.4" style="fill:rgb(48, 48, 46);stroke:rgba(222, 220, 209, 0.15);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
63
|
-
<text x="702" y="165" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;fill:rgb(156, 154, 146);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="var(--color-text-tertiary)">MIT</text>
|
|
64
|
-
|
|
65
|
-
<!-- ====== MAIN RULE ====== -->
|
|
66
|
-
<line x1="40" y1="192" x2="920" y2="192" stroke="var(--color-text-primary)" stroke-width="0.5" opacity="0.1" style="fill:rgb(0, 0, 0);stroke:rgb(250, 249, 245);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
67
|
-
|
|
68
|
-
<!-- ====== 4-COLUMN LAYOUT ====== -->
|
|
69
|
-
|
|
70
|
-
<!-- COL 1: Ok / Err -->
|
|
71
|
-
<text x="140" y="210" text-anchor="middle" style="font-family:var(--font-serif);font-size:10px;letter-spacing:1.5px;opacity:0.35;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.35;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="var(--color-text-secondary)">RESULT TYPE</text>
|
|
72
|
-
|
|
73
|
-
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
74
|
-
<rect x="86" y="222" width="108" height="28" rx="7" stroke-width="0.5" style="fill:rgb(60, 52, 137);stroke:rgb(175, 169, 236);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
75
|
-
<text x="140" y="236" text-anchor="middle" dominant-baseline="central" style="font-size:12px;fill:rgb(206, 203, 246);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:12px;font-weight:500;text-anchor:middle;dominant-baseline:central">Result<T, E></text>
|
|
23
|
+
<!-- Decorative grid dots -->
|
|
24
|
+
<g opacity="0.06" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.06;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
25
|
+
<circle cx="150" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="168" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="186" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
26
|
+
<circle cx="494" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="512" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="530" cy="68" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
27
|
+
<circle cx="150" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="168" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
28
|
+
<circle cx="512" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/><circle cx="530" cy="84" r="1.5" fill="#2C2C2A" style="fill:rgb(44, 44, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
76
29
|
</g>
|
|
77
30
|
|
|
78
|
-
|
|
79
|
-
<
|
|
80
|
-
|
|
81
|
-
<rect x="56" y="266" width="58" height="22" rx="11" fill="#1D9E75" opacity="0.15" stroke="#1D9E75" stroke-width="0.4" style="fill:rgb(29, 158, 117);stroke:rgb(29, 158, 117);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.15;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
82
|
-
<text x="85" y="277" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:10px;font-weight:500;fill:rgb(15, 110, 86);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#0F6E56">Ok<T></text>
|
|
83
|
-
|
|
84
|
-
<rect x="166" y="266" width="58" height="22" rx="11" fill="#E24B4A" opacity="0.15" stroke="#E24B4A" stroke-width="0.4" style="fill:rgb(226, 75, 74);stroke:rgb(226, 75, 74);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.15;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
85
|
-
<text x="195" y="277" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:10px;font-weight:500;fill:rgb(163, 45, 45);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#A32D2D">Err<E></text>
|
|
31
|
+
<!-- FROM RUST tagline -->
|
|
32
|
+
<text x="340" y="52" text-anchor="middle" style="font-family:ui-monospace,monospace;font-size:8px;letter-spacing:2.5px;opacity:0.4;fill:rgb(216, 90, 48);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.4;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="#D85A30">FROM RUST WITH LOVE</text>
|
|
86
33
|
|
|
87
|
-
<!--
|
|
88
|
-
<
|
|
34
|
+
<!-- RESULT -->
|
|
35
|
+
<text x="340" y="98" text-anchor="middle" dominant-baseline="central" style="font-family:system-ui,-apple-system,sans-serif;font-size:52px;font-weight:600;letter-spacing:5px;fill:rgb(127, 119, 221);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:system-ui, -apple-system, sans-serif;font-size:52px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#7F77DD">RESULT</text>
|
|
89
36
|
|
|
90
|
-
<!--
|
|
91
|
-
<text x="
|
|
37
|
+
<!-- SAFE -->
|
|
38
|
+
<text x="340" y="140" text-anchor="middle" dominant-baseline="central" style="font-family:system-ui,-apple-system,sans-serif;font-size:38px;font-weight:600;letter-spacing:12px;fill:rgb(29, 158, 117);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:system-ui, -apple-system, sans-serif;font-size:38px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#1D9E75">SAFE</text>
|
|
92
39
|
|
|
93
|
-
<!--
|
|
94
|
-
<
|
|
95
|
-
<text x="318" y="234" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;font-weight:500;fill:rgb(15, 110, 86);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#0F6E56">Ok(v)</text>
|
|
40
|
+
<!-- Divider -->
|
|
41
|
+
<line x1="200" y1="162" x2="480" y2="162" stroke="#d3d1c7" stroke-width="0.5" mask="url(#imagine-text-gaps-0cldyt)" style="fill:rgb(0, 0, 0);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
96
42
|
|
|
97
|
-
|
|
43
|
+
<!-- Language bridge -->
|
|
44
|
+
<rect x="196" y="172" width="62" height="22" rx="11" fill="#D85A30" opacity="0.1" stroke="#D85A30" stroke-width="0.4" style="fill:rgb(216, 90, 48);stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
45
|
+
<circle cx="210" cy="183" r="4" fill="none" stroke="#D85A30" stroke-width="0.8" style="fill:none;stroke:rgb(216, 90, 48);color:rgb(255, 255, 255);stroke-width:0.8px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
46
|
+
<circle cx="210" cy="183" r="1.8" fill="#D85A30" opacity="0.3" style="fill:rgb(216, 90, 48);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
47
|
+
<text x="222" y="183" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:600;fill:rgb(153, 60, 29);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9.5px;font-weight:600;text-anchor:start;dominant-baseline:central" fill="#993C1D">Rust</text>
|
|
98
48
|
|
|
99
|
-
<
|
|
100
|
-
<text x="386" y="234" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;font-weight:500;fill:rgb(83, 74, 183);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#534AB7">.map</text>
|
|
49
|
+
<line x1="264" y1="183" x2="282" y2="183" stroke="#7F77DD" stroke-width="0.8" marker-end="url(#arrow)" opacity="0.45" style="fill:rgb(0, 0, 0);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:0.8px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.45;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
101
50
|
|
|
102
|
-
<
|
|
51
|
+
<rect x="290" y="172" width="86" height="22" rx="11" fill="#378ADD" opacity="0.1" stroke="#378ADD" stroke-width="0.4" style="fill:rgb(55, 138, 221);stroke:rgb(55, 138, 221);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
52
|
+
<text x="306" y="183" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:600;fill:rgb(24, 95, 165);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9.5px;font-weight:600;text-anchor:start;dominant-baseline:central" fill="#185FA5">TypeScript</text>
|
|
103
53
|
|
|
104
|
-
<
|
|
105
|
-
<text x="458" y="234" text-anchor="middle" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;font-weight:500;fill:rgb(83, 74, 183);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#534AB7">.flatMap</text>
|
|
54
|
+
<text x="384" y="183" text-anchor="middle" dominant-baseline="central" style="font-family:system-ui,sans-serif;font-size:11px;opacity:0.2;fill:rgb(95, 94, 90);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.2;font-family:system-ui, sans-serif;font-size:11px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#5F5E5A">+</text>
|
|
106
55
|
|
|
107
|
-
<
|
|
56
|
+
<rect x="394" y="172" width="84" height="22" rx="11" fill="#EF9F27" opacity="0.1" stroke="#EF9F27" stroke-width="0.4" style="fill:rgb(239, 159, 39);stroke:rgb(239, 159, 39);color:rgb(255, 255, 255);stroke-width:0.4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
57
|
+
<text x="410" y="183" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:9.5px;font-weight:600;fill:rgb(133, 79, 11);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9.5px;font-weight:600;text-anchor:start;dominant-baseline:central" fill="#854F0B">JavaScript</text>
|
|
108
58
|
|
|
109
|
-
|
|
110
|
-
<
|
|
59
|
+
<!-- Result node -->
|
|
60
|
+
<rect x="278" y="206" width="124" height="34" rx="8" fill="#EEEDFE" stroke="#AFA9EC" stroke-width="0.5" style="fill:rgb(238, 237, 254);stroke:rgb(175, 169, 236);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
61
|
+
<text x="340" y="223" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:13px;font-weight:600;fill:rgb(60, 52, 137);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:13px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#3C3489">Result<T, E></text>
|
|
111
62
|
|
|
112
|
-
<!--
|
|
113
|
-
<
|
|
114
|
-
<
|
|
63
|
+
<!-- Branch arrows -->
|
|
64
|
+
<line x1="308" y1="240" x2="240" y2="262" stroke="#1D9E75" stroke-width="1" marker-end="url(#arrow)" style="fill:rgb(0, 0, 0);stroke:rgb(29, 158, 117);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
65
|
+
<line x1="372" y1="240" x2="440" y2="262" stroke="#E24B4A" stroke-width="1" marker-end="url(#arrow)" style="fill:rgb(0, 0, 0);stroke:rgb(226, 75, 74);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
115
66
|
|
|
116
|
-
<!--
|
|
117
|
-
<
|
|
67
|
+
<!-- Ok pill -->
|
|
68
|
+
<rect x="172" y="264" width="84" height="28" rx="14" fill="#1D9E75" opacity="0.12" stroke="#1D9E75" stroke-width="0.5" style="fill:rgb(29, 158, 117);stroke:rgb(29, 158, 117);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.12;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
69
|
+
<text x="214" y="278" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:12px;font-weight:600;fill:rgb(15, 110, 86);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:12px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#0F6E56">Ok<T></text>
|
|
118
70
|
|
|
119
|
-
<!--
|
|
120
|
-
<
|
|
71
|
+
<!-- Err pill -->
|
|
72
|
+
<rect x="424" y="264" width="84" height="28" rx="14" fill="#E24B4A" opacity="0.12" stroke="#E24B4A" stroke-width="0.5" style="fill:rgb(226, 75, 74);stroke:rgb(226, 75, 74);color:rgb(255, 255, 255);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.12;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
73
|
+
<text x="466" y="278" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:12px;font-weight:600;fill:rgb(163, 45, 45);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:12px;font-weight:600;text-anchor:middle;dominant-baseline:central" fill="#A32D2D">Err<E></text>
|
|
121
74
|
|
|
122
|
-
|
|
123
|
-
<
|
|
124
|
-
<text x="624" y="237" dominant-baseline="central" style="font-family:var(--font-mono);font-size:10px;font-weight:500;fill:rgb(250, 249, 245);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:start;dominant-baseline:central" fill="var(--color-text-primary)">core-fp-result</text>
|
|
125
|
-
<circle cx="740" cy="237" r="3" fill="#1D9E75" opacity="0.6" style="fill:rgb(29, 158, 117);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.6;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
75
|
+
<!-- Methods -->
|
|
76
|
+
<text x="340" y="310" text-anchor="middle" style="font-family:ui-monospace,monospace;font-size:9px;opacity:0.3;letter-spacing:0.5px;fill:rgb(95, 94, 90);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.3;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="#5F5E5A">.map · .flatMap · .match · .unwrap · .tap · .recover</text>
|
|
126
77
|
|
|
127
|
-
|
|
128
|
-
<rect x="
|
|
129
|
-
<
|
|
130
|
-
<text x="624" y="267" dominant-baseline="central" style="font-family:var(--font-mono);font-size:9px;fill:rgb(156, 154, 146);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:9px;font-weight:400;text-anchor:start;dominant-baseline:central" fill="var(--color-text-tertiary)">fp-option · fp-either</text>
|
|
131
|
-
</g>
|
|
132
|
-
|
|
133
|
-
<!-- COL SEPARATOR -->
|
|
134
|
-
<line x1="776" y1="200" x2="776" y2="290" stroke="var(--color-text-primary)" stroke-width="0.3" opacity="0.08" style="fill:rgb(0, 0, 0);stroke:rgb(250, 249, 245);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.08;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
135
|
-
|
|
136
|
-
<!-- COL 4: Features -->
|
|
137
|
-
<text x="868" y="210" text-anchor="middle" style="font-family:var(--font-serif);font-size:10px;letter-spacing:1.5px;opacity:0.35;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.35;font-family:"Anthropic Serif", Georgia, "Times New Roman", serif;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="var(--color-text-secondary)">FEATURES</text>
|
|
138
|
-
|
|
139
|
-
<g opacity="0.55" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.55;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
140
|
-
<circle cx="802" cy="232" r="2.5" fill="#1D9E75" opacity="0.6" style="fill:rgb(29, 158, 117);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.6;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
141
|
-
<text x="812" y="232" dominant-baseline="central" style="font-family:var(--font-sans);font-size:11px;fill:rgb(194, 192, 182);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", sans-serif;font-size:11px;font-weight:400;text-anchor:start;dominant-baseline:central" fill="var(--color-text-secondary)">Exhaustive match</text>
|
|
78
|
+
<!-- Badges -->
|
|
79
|
+
<rect x="234" y="326" width="48" height="18" rx="9" fill="#7F77DD" opacity="0.1" stroke="#7F77DD" stroke-width="0.3" style="fill:rgb(127, 119, 221);stroke:rgb(127, 119, 221);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
80
|
+
<text x="258" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;font-weight:500;fill:rgb(83, 74, 183);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:500;text-anchor:middle;dominant-baseline:central" fill="#534AB7">v1.0</text>
|
|
142
81
|
|
|
143
|
-
<
|
|
144
|
-
<text x="
|
|
82
|
+
<rect x="290" y="326" width="52" height="18" rx="9" fill="#ffffff" stroke="#d3d1c7" stroke-width="0.3" style="fill:rgb(255, 255, 255);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
83
|
+
<text x="316" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#888780">0 deps</text>
|
|
145
84
|
|
|
146
|
-
<
|
|
147
|
-
<text x="
|
|
85
|
+
<rect x="350" y="326" width="42" height="18" rx="9" fill="#ffffff" stroke="#d3d1c7" stroke-width="0.3" style="fill:rgb(255, 255, 255);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
86
|
+
<text x="371" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#888780">MIT</text>
|
|
148
87
|
|
|
149
|
-
<
|
|
150
|
-
<text x="
|
|
151
|
-
</g>
|
|
88
|
+
<rect x="400" y="326" width="52" height="18" rx="9" fill="#ffffff" stroke="#d3d1c7" stroke-width="0.3" style="fill:rgb(255, 255, 255);stroke:rgb(211, 209, 199);color:rgb(255, 255, 255);stroke-width:0.3px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
89
|
+
<text x="426" y="335" text-anchor="middle" dominant-baseline="central" style="font-family:ui-monospace,monospace;font-size:8px;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:8px;font-weight:400;text-anchor:middle;dominant-baseline:central" fill="#888780">ESM</text>
|
|
152
90
|
|
|
91
|
+
<!-- Bottom tagline -->
|
|
92
|
+
<text x="340" y="370" text-anchor="middle" style="font-family:system-ui,-apple-system,sans-serif;font-size:10px;letter-spacing:2px;opacity:0.2;fill:rgb(136, 135, 128);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.2;font-family:system-ui, -apple-system, sans-serif;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto" fill="#888780">@resultsafe · type-safe functional error handling</text>
|
|
153
93
|
</svg>
|