@rip-lang/server 1.3.126 → 1.4.1

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.
Files changed (69) hide show
  1. package/{docs/READ_VALIDATORS.md → API.md} +41 -119
  2. package/CONFIG.md +408 -0
  3. package/README.md +246 -1109
  4. package/acme/crypto.rip +0 -2
  5. package/browse.rip +62 -0
  6. package/control/cli.rip +89 -34
  7. package/control/lifecycle.rip +67 -1
  8. package/control/manager.rip +250 -0
  9. package/control/mdns.rip +3 -0
  10. package/middleware.rip +1 -1
  11. package/package.json +14 -11
  12. package/server.rip +189 -673
  13. package/serving/config.rip +766 -0
  14. package/{edge → serving}/forwarding.rip +2 -2
  15. package/serving/logging.rip +101 -0
  16. package/{edge → serving}/metrics.rip +29 -1
  17. package/serving/proxy.rip +99 -0
  18. package/{edge → serving}/queue.rip +1 -1
  19. package/{edge → serving}/ratelimit.rip +1 -1
  20. package/{edge → serving}/realtime.rip +71 -2
  21. package/{edge → serving}/registry.rip +1 -1
  22. package/{edge → serving}/router.rip +3 -3
  23. package/{edge → serving}/runtime.rip +18 -16
  24. package/{edge → serving}/security.rip +1 -1
  25. package/serving/static.rip +393 -0
  26. package/{edge → serving}/tls.rip +3 -7
  27. package/{edge → serving}/upstream.rip +4 -4
  28. package/{edge → serving}/verify.rip +16 -16
  29. package/streams/{tls_clienthello.rip → clienthello.rip} +1 -1
  30. package/streams/config.rip +8 -8
  31. package/streams/index.rip +5 -5
  32. package/streams/router.rip +2 -2
  33. package/tests/acme.rip +1 -1
  34. package/tests/config.rip +215 -0
  35. package/tests/control.rip +1 -1
  36. package/tests/{runtime_entrypoints.rip → entrypoints.rip} +11 -7
  37. package/tests/extracted.rip +118 -0
  38. package/tests/helpers.rip +4 -4
  39. package/tests/metrics.rip +3 -3
  40. package/tests/proxy.rip +9 -8
  41. package/tests/read.rip +1 -1
  42. package/tests/realtime.rip +3 -3
  43. package/tests/registry.rip +4 -4
  44. package/tests/router.rip +27 -27
  45. package/tests/runner.rip +70 -0
  46. package/tests/security.rip +4 -4
  47. package/tests/servers.rip +102 -136
  48. package/tests/static.rip +2 -2
  49. package/tests/streams_clienthello.rip +2 -2
  50. package/tests/streams_index.rip +4 -4
  51. package/tests/streams_pipe.rip +1 -1
  52. package/tests/streams_router.rip +10 -10
  53. package/tests/streams_runtime.rip +4 -4
  54. package/tests/streams_upstream.rip +1 -1
  55. package/tests/upstream.rip +2 -2
  56. package/tests/verify.rip +18 -18
  57. package/tests/watchers.rip +4 -4
  58. package/default.rip +0 -435
  59. package/docs/edge/CONFIG_LIFECYCLE.md +0 -111
  60. package/docs/edge/CONTRACTS.md +0 -137
  61. package/docs/edge/EDGEFILE_CONTRACT.md +0 -282
  62. package/docs/edge/M0B_REVIEW_NOTES.md +0 -102
  63. package/docs/edge/SCHEDULER.md +0 -46
  64. package/docs/logo.png +0 -0
  65. package/docs/logo.svg +0 -13
  66. package/docs/social.png +0 -0
  67. package/edge/config.rip +0 -607
  68. package/edge/static.rip +0 -69
  69. package/tests/edgefile.rip +0 -165
@@ -1,282 +0,0 @@
1
- # Edgefile Contract
2
-
3
- This document defines the `Edgefile.rip` contract as implemented in
4
- `@rip-lang/server`.
5
-
6
- ## Host model detection
7
-
8
- The Edgefile supports two host models, auto-detected by key presence:
9
-
10
- - **Flat model** (`routes`/`sites`) -- routes listed at the top level with optional per-host site groups
11
- - **Host blocks** (`hosts`) -- per-domain blocks that own cert, root, routes, and passthrough
12
- `version` and `edge` are optional (default to `1` and `{}` respectively).
13
-
14
- ## Flat model shape
15
-
16
- ```coffee
17
- export default
18
- version: 1
19
- edge: ...
20
- upstreams: ...
21
- streamUpstreams: ...
22
- apps: ...
23
- routes: ...
24
- streams: ...
25
- sites: ...
26
- ```
27
-
28
- ## Server blocks shape
29
-
30
- ```coffee
31
- export default
32
- hosts: ...
33
- upstreams: ...
34
- apps: ...
35
- streamUpstreams: ...
36
- streams: ...
37
- ```
38
-
39
- ### `hosts`
40
-
41
- Per-domain server blocks, keyed by hostname (exact or wildcard).
42
-
43
- ```coffee
44
- hosts:
45
- '*.trusthealth.com':
46
- cert: '/ssl/trusthealth.com.crt'
47
- key: '/ssl/trusthealth.com.key'
48
- root: '/mnt/trusthealth/website'
49
- routes: [
50
- { path: '/*', static: '.', spa: true }
51
- ]
52
- ```
53
-
54
- Server block fields:
55
-
56
- - `passthrough?: string` -- raw TLS passthrough to `host:port` (no cert, no routes needed)
57
- - `cert?: string` -- TLS certificate path (must pair with `key`)
58
- - `key?: string` -- TLS private key path (must pair with `cert`)
59
- - `root?: string` -- default filesystem base; serves static files if no routes are defined
60
- - `spa?: boolean` -- server-level SPA fallback (used with root-only blocks)
61
- - `routes?: array` -- route objects (optional if `root` or `passthrough` is set)
62
- - `timeouts?: object` -- per-server timeout defaults
63
-
64
- Per-server `cert`/`key` enable SNI-based certificate selection via Bun's TLS
65
- array. `edge.cert` and `edge.key` remain the fallback TLS identity for
66
- unmatched hostnames. The TLS array is sorted by specificity: exact hosts first,
67
- then wildcards by label count, then the fallback entry.
68
-
69
- Routes inside a server block inherit the server hostname and must not specify
70
- `host`. Routes with `upstream` or `app` must reference known entries from the
71
- top-level `upstreams` or `apps` sections.
72
-
73
- Static routes support `static` (string path), `root` (overrides server root),
74
- and `spa` (boolean, serves `index.html` on miss for GET/HEAD with Accept
75
- text/html).
76
-
77
- Hosts not matching any server block or stream route fall through to the default
78
- app.
79
-
80
- ## Determinism policy
81
-
82
- - Config evaluation is synchronous.
83
- - Async operations are disallowed.
84
- - Network I/O is disallowed.
85
- - Validation errors must include a field path, message, and remediation hint.
86
- - With the same file contents, config evaluation must produce the same normalized shape.
87
-
88
- ## Top-level sections
89
-
90
- ### `version`
91
-
92
- - Optional. Defaults to `1`.
93
-
94
- ### `edge`
95
-
96
- Global edge settings. Optional (defaults to `{}`).
97
-
98
- Supported keys:
99
-
100
- - `acme: boolean`
101
- - `acmeDomains: string[]`
102
- - `cert: string`
103
- - `key: string`
104
- - `hsts: boolean`
105
- - `trustedProxies: string[]`
106
- - `timeouts: { connectMs, readMs }`
107
- - `verify: { requireHealthyUpstreams, requireReadyApps, includeUnroutedManagedApps, minHealthyTargetsPerUpstream }`
108
-
109
- ### `upstreams`
110
-
111
- Named reverse-proxy backends.
112
-
113
- ```coffee
114
- upstreams:
115
- app:
116
- targets: ['http://app.incusbr0:3000']
117
- healthCheck:
118
- path: '/health'
119
- intervalMs: 5000
120
- timeoutMs: 2000
121
- retry:
122
- attempts: 2
123
- retryOn: [502, 503, 504]
124
- timeouts:
125
- connectMs: 2000
126
- readMs: 30000
127
- ```
128
-
129
- ### `apps`
130
-
131
- Managed Rip applications with worker pools.
132
-
133
- ```coffee
134
- apps:
135
- admin:
136
- entry: './admin/index.rip'
137
- hosts: ['admin.example.com']
138
- workers: 2
139
- maxQueue: 512
140
- queueTimeoutMs: 30000
141
- readTimeoutMs: 30000
142
- env:
143
- ADMIN_MODE: '1'
144
- ```
145
-
146
- ### `streamUpstreams`
147
-
148
- Named raw TCP upstreams for Layer 4 passthrough.
149
-
150
- ```coffee
151
- streamUpstreams:
152
- incus:
153
- targets: ['127.0.0.1:8443']
154
- connectTimeoutMs: 5000 # optional, default 5000
155
- ```
156
-
157
- ### `routes`
158
-
159
- Declarative edge route objects.
160
-
161
- Each route must define exactly one action:
162
-
163
- - `upstream`
164
- - `app`
165
- - `static`
166
- - `redirect`
167
- - `headers`
168
-
169
- Common route fields:
170
-
171
- - `id?: string`
172
- - `host?: string` — exact host, wildcard host like `*.example.com`, or `*`
173
- - `path: string` — must start with `/`
174
- - `methods?: string[] | "*"`
175
- - `priority?: number`
176
- - `timeouts?: { connectMs, readMs }`
177
-
178
- Action-specific fields:
179
-
180
- - `upstream: string`
181
- - `app: string`
182
- - `static: string`
183
- - `redirect: { to: string, status: number }`
184
- - `headers: { set?: object, remove?: string[] }`
185
-
186
- WebSocket proxy routes use:
187
-
188
- - `websocket: true`
189
- - `upstream: string`
190
-
191
- ### `streams`
192
-
193
- Declarative Layer 4 stream routes.
194
-
195
- ```coffee
196
- streams: [
197
- { listen: 8443, sni: ['incus.example.com'], upstream: 'incus' }
198
- ]
199
- ```
200
-
201
- Supported fields:
202
-
203
- - `id?: string`
204
- - `listen: number`
205
- - `sni: string[]`
206
- - `upstream: string`
207
- - `timeouts?: { handshakeMs, idleMs, connectMs }`
208
-
209
- If a stream route listens on the active HTTPS port, Rip switches that port into
210
- a shared multiplexer mode:
211
-
212
- - the public port is owned by the Layer 4 listener
213
- - matching SNI traffic is passed through to the configured `streamUpstreams`
214
- - non-matching SNI, or TLS clients without SNI, fall through to Rip's internal
215
- HTTPS server and continue through the normal HTTP/WebSocket edge runtime
216
-
217
- ### `sites`
218
-
219
- Per-host route groups and policy overrides.
220
-
221
- ```coffee
222
- sites:
223
- 'admin.example.com':
224
- routes: [
225
- { path: '/*', app: 'admin' }
226
- ]
227
- ```
228
-
229
- ## Host/path precedence
230
-
231
- Route precedence is:
232
-
233
- 1. exact host
234
- 2. wildcard host
235
- 3. catch-all host
236
- 4. more specific path
237
- 5. lower explicit priority number
238
- 6. declaration order tie-break
239
-
240
- Wildcard hosts are single-label only:
241
-
242
- - `*.example.com` matches `api.example.com`
243
- - `*.example.com` does **not** match `a.b.example.com`
244
-
245
- ## Timeout inheritance
246
-
247
- Timeout resolution is:
248
-
249
- 1. route-level `timeouts`
250
- 2. site-level `timeouts`
251
- 3. edge-level `timeouts`
252
- 4. server defaults
253
-
254
- ## Verification policy
255
-
256
- `edge.verify` tunes post-activate verification:
257
-
258
- - `requireHealthyUpstreams: boolean`
259
- - `requireReadyApps: boolean`
260
- - `includeUnroutedManagedApps: boolean`
261
- - `minHealthyTargetsPerUpstream: number`
262
-
263
- These settings affect staged activation, post-activate verification, and rollback.
264
-
265
- ## Reload semantics
266
-
267
- - Every reload trigger runs the same lifecycle.
268
- - Invalid config never replaces the active config.
269
- - A new edge runtime is staged, activated atomically, then verified.
270
- - Failed verification causes automatic rollback to the previous runtime.
271
- - Retired runtimes drain in-flight HTTP and websocket proxy traffic before cleanup.
272
-
273
- ## v1 TLS implications
274
-
275
- Based on `packages/server/spikes/tls/FINDINGS.md`:
276
-
277
- - v1 does not assume dynamic per-SNI cert switching.
278
- - v1 does not assume in-process cert hot reload.
279
- - v1 uses graceful restart for cert activation.
280
- - v1 ACME prioritizes HTTP-01.
281
- - ACME HTTP-01 cannot issue wildcard certificates. Wildcard TLS requires manual
282
- `cert` + `key`.
@@ -1,102 +0,0 @@
1
- # M0b Review Notes
2
-
3
- Status: Maintained
4
-
5
- ## Accepted decisions
6
-
7
- - Single project architecture with two runtime roles:
8
- - EdgeControlPlane
9
- - AppDataPlane
10
- - Direct request path remains `client -> ingress -> worker` (no relay hop).
11
- - v1 scheduler: least-inflight with deterministic tie-break.
12
- - Config apply lifecycle is atomic (`parse -> validate -> normalize -> stage -> activate/rollback`).
13
- - Deterministic config evaluation (no async/network I/O).
14
- - v1 TLS posture reflects M0a findings:
15
- - HTTP-01 prioritized for reliable v1 ACME
16
- - TLS-ALPN-01 treated as beta/deferred
17
- - graceful restart cert activation path
18
-
19
- ## Deferred / future decisions
20
-
21
- - Dynamic SNI cert selection when Bun API supports it reliably
22
- - In-process cert hot reload without restart
23
- - DNS-01 provider integrations
24
- - HTTP/2 and gRPC production posture
25
-
26
- ## Open items for next review pass
27
-
28
- - Expand end-to-end websocket proxy coverage beyond the current package tests
29
- - Decide whether staged rollout policy should gain additional operator tuning beyond `edge.verify`
30
- - Confirm retention policy expectations for reload history and retired runtime visibility in deployment docs
31
-
32
- ## Refactor Guardrails
33
-
34
- Group by theme, not by function. A file should cover a coherent area — not
35
- necessarily one function or one class. Pragmatism over purity.
36
-
37
- - Group related functions into one file by theme (e.g. all CLI logic in `cli.rip`).
38
- - No generic `utils.rip` dumping ground — but themed helpers files are fine.
39
- - If a module is under ~20 lines with only one importer, fold it into its neighbor.
40
- - If a module grows past ~300 lines, consider splitting by sub-theme.
41
- - Keep import fan-out low; if a module imports too many siblings, the boundary is wrong.
42
- - `server.rip` should stay as orchestration/wiring, not business logic.
43
- - Every extraction or consolidation must pass tests.
44
- - Prefer vertical domains:
45
- - `edge/*` for request-path behavior (forwarding, scheduling, status, registry)
46
- - `control/*` for management (CLI, lifecycle, workers, watchers, mDNS)
47
- - `acme/*` only when ACME implementation begins
48
-
49
- ## Coding Conventions
50
-
51
- ### Bare `try` over `try ... catch then null`
52
-
53
- In Rip, a bare `try` compiles to `try {} catch {}` in JavaScript — functionally
54
- identical to `try ... catch then null`, which compiles to `try {} catch { null; }`.
55
- The extra `null;` is a no-op statement with no behavioral difference.
56
-
57
- **Preferred style:** use bare `try` for fire-and-forget error suppression.
58
-
59
- ```coffee
60
- # Good — clean, concise
61
- try unlinkSync(path)
62
- try server.stop()
63
-
64
- # Good — multiline bare try
65
- try
66
- proc.kill()
67
- console.log "stopped #{host}"
68
-
69
- # Avoid — unnecessary catch block
70
- try unlinkSync(path) catch then null
71
-
72
- # Avoid — verbose no-op catch
73
- try
74
- proc.kill()
75
- catch
76
- null
77
- ```
78
-
79
- **When to use an explicit catch:**
80
- - When the catch body does actual work (logging, fallback value, cleanup)
81
- - When catching a specific error variable: `catch e`
82
- - When fall-through after try needs a specific return value that differs from `undefined`
83
-
84
- ```coffee
85
- # Good — catch does real work
86
- try
87
- pkg = JSON.parse(readFileSync(path, 'utf8'))
88
- catch
89
- console.log 'version unknown'
90
-
91
- # Good — catch with error variable
92
- catch e
93
- console.error "failed: #{e.message}"
94
- ```
95
-
96
- ## Evidence links
97
-
98
- - TLS spikes and outputs:
99
- - `packages/server/spikes/tls/README.md`
100
- - `packages/server/spikes/tls/FINDINGS.md`
101
- - Plan of record:
102
- - `packages/server/docs/edge/PURE_BUN_EDGE_PLAN.md`
@@ -1,46 +0,0 @@
1
- # Scheduler Policy (M0b)
2
-
3
- This document freezes v1 scheduler behavior.
4
-
5
- ## Algorithm
6
-
7
- v1 uses **least-inflight** per app pool.
8
-
9
- Selection order:
10
- 1. filter to workers in `ready` state
11
- 2. choose worker with lowest `inflight`
12
- 3. tie-break by lowest `workerId`
13
-
14
- ## Fallback behavior
15
-
16
- - If all workers are saturated and queue depth `< maxQueue`: enqueue
17
- - If queue depth `>= maxQueue`: return `503` with `Retry-After`
18
-
19
- ## Fairness expectations
20
-
21
- - No worker starvation under steady load
22
- - No worker starvation under burst load
23
- - Workload spread should converge over time for equal worker capacity
24
-
25
- ## Retry policy interaction
26
-
27
- - Retry only idempotent requests by default
28
- - Never retry after partial upstream response
29
- - Retry decisions occur after scheduler selection and only on retry-eligible failures
30
-
31
- ## Metrics emitted
32
-
33
- - per-app scheduler decisions
34
- - per-worker inflight counts
35
- - queue depth and queue wait duration
36
- - shed count (`503` due to capacity)
37
-
38
- ## Change criteria (v2)
39
-
40
- Consider upgrading algorithm if:
41
- - tail latency variance between workers > 3x for sustained periods
42
- - workload variance causes persistent imbalance despite least-inflight
43
-
44
- Candidate future algorithms:
45
- - EWMA latency-weighted
46
- - power-of-two choices
package/docs/logo.png DELETED
Binary file
package/docs/logo.svg DELETED
@@ -1,13 +0,0 @@
1
- <svg width="693" height="162" viewBox="0 0 693 162" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M640.523 109.375V33.0114H667.17V47.5284H667.966C669.358 42.1591 671.562 38.2315 674.578 35.7457C677.627 33.26 681.19 32.0171 685.267 32.0171C686.46 32.0171 687.637 32.1165 688.797 32.3154C689.99 32.4811 691.133 32.7297 692.227 33.0611V56.4773C690.868 56.0133 689.195 55.6653 687.206 55.4332C685.217 55.2012 683.51 55.0852 682.085 55.0852C679.401 55.0852 676.981 55.6984 674.827 56.9247C672.705 58.1179 671.032 59.8082 669.805 61.9957C668.579 64.1501 667.966 66.6856 667.966 69.6023V109.375H640.523Z" fill="#0088FF"/>
3
- <path d="M591.938 110.767C583.784 110.767 576.758 109.209 570.858 106.094C564.992 102.945 560.468 98.4375 557.286 92.571C554.137 86.6714 552.563 79.6118 552.563 71.3921C552.563 63.5038 554.154 56.6099 557.336 50.7102C560.517 44.8106 565.008 40.2202 570.809 36.9389C576.609 33.6577 583.453 32.0171 591.341 32.0171C597.108 32.0171 602.328 32.9119 607.002 34.7017C611.675 36.4915 615.669 39.0933 618.983 42.5071C622.298 45.8878 624.85 49.9976 626.64 54.8367C628.429 59.6757 629.324 65.1279 629.324 71.1932V77.5568H561.114V62.4432H604.069C604.035 60.2557 603.472 58.3333 602.378 56.6761C601.318 54.9858 599.876 53.6766 598.053 52.7486C596.263 51.7874 594.225 51.3068 591.938 51.3068C589.717 51.3068 587.679 51.7874 585.823 52.7486C583.967 53.6766 582.475 54.9692 581.348 56.6264C580.255 58.2836 579.675 60.2225 579.608 62.4432V78.75C579.608 81.2027 580.122 83.3902 581.15 85.3125C582.177 87.2349 583.652 88.7429 585.574 89.8367C587.497 90.9304 589.817 91.4773 592.534 91.4773C594.424 91.4773 596.147 91.2121 597.705 90.6818C599.296 90.1515 600.655 89.3892 601.782 88.3949C602.909 87.3674 603.737 86.1411 604.267 84.7159H629.324C628.462 90.0189 626.424 94.626 623.209 98.5369C619.994 102.415 615.735 105.431 610.432 107.585C605.162 109.706 598.998 110.767 591.938 110.767Z" fill="#0088FF"/>
4
- <path d="M549.866 33.0114L524.212 109.375H492.394L466.741 33.0114H495.576L507.906 83.5227H508.701L521.031 33.0114H549.866Z" fill="#0088FF"/>
5
- <path d="M409.878 109.375V33.0114H436.526V47.5284H437.321C438.713 42.1591 440.917 38.2315 443.934 35.7457C446.983 33.26 450.546 32.0171 454.622 32.0171C455.816 32.0171 456.992 32.1165 458.152 32.3154C459.346 32.4811 460.489 32.7297 461.583 33.0611V56.4773C460.224 56.0133 458.55 55.6653 456.561 55.4332C454.573 55.2012 452.866 55.0852 451.441 55.0852C448.756 55.0852 446.337 55.6984 444.182 56.9247C442.061 58.1179 440.387 59.8082 439.161 61.9957C437.935 64.1501 437.321 66.6856 437.321 69.6023V109.375H409.878Z" fill="#0088FF"/>
6
- <path d="M361.293 110.767C353.14 110.767 346.113 109.209 340.214 106.094C334.347 102.945 329.823 98.4375 326.641 92.571C323.493 86.6714 321.918 79.6118 321.918 71.3921C321.918 63.5038 323.509 56.6099 326.691 50.7102C329.873 44.8106 334.364 40.2202 340.164 36.9389C345.964 33.6577 352.808 32.0171 360.697 32.0171C366.464 32.0171 371.684 32.9119 376.357 34.7017C381.031 36.4915 385.024 39.0933 388.339 42.5071C391.653 45.8878 394.205 49.9976 395.995 54.8367C397.785 59.6757 398.68 65.1279 398.68 71.1932V77.5568H330.469V62.4432H373.424C373.391 60.2557 372.827 58.3333 371.734 56.6761C370.673 54.9858 369.231 53.6766 367.408 52.7486C365.619 51.7874 363.58 51.3068 361.293 51.3068C359.073 51.3068 357.034 51.7874 355.178 52.7486C353.322 53.6766 351.831 54.9692 350.704 56.6264C349.61 58.2836 349.03 60.2225 348.964 62.4432V78.75C348.964 81.2027 349.478 83.3902 350.505 85.3125C351.532 87.2349 353.007 88.7429 354.93 89.8367C356.852 90.9304 359.172 91.4773 361.89 91.4773C363.779 91.4773 365.503 91.2121 367.06 90.6818C368.651 90.1515 370.01 89.3892 371.137 88.3949C372.264 87.3674 373.093 86.1411 373.623 84.7159H398.68C397.818 90.0189 395.78 94.626 392.565 98.5369C389.35 102.415 385.091 105.431 379.788 107.585C374.518 109.706 368.353 110.767 361.293 110.767Z" fill="#0088FF"/>
7
- <path d="M285.949 39.375C285.684 36.0606 284.441 33.4754 282.22 31.6193C280.033 29.7633 276.702 28.8352 272.227 28.8352C269.377 28.8352 267.04 29.1832 265.217 29.8793C263.428 30.5421 262.102 31.4536 261.24 32.6136C260.378 33.7737 259.931 35.0994 259.898 36.5909C259.831 37.8172 260.047 38.9276 260.544 39.9219C261.074 40.883 261.903 41.7614 263.03 42.5568C264.157 43.3191 265.599 44.0151 267.355 44.6449C269.112 45.2746 271.2 45.8381 273.619 46.3352L281.972 48.125C287.606 49.3182 292.429 50.8925 296.439 52.848C300.449 54.8035 303.731 57.107 306.283 59.7585C308.835 62.3769 310.707 65.3267 311.901 68.608C313.127 71.8892 313.757 75.4688 313.79 79.3466C313.757 86.0417 312.083 91.7093 308.768 96.3494C305.454 100.99 300.715 104.519 294.55 106.939C288.418 109.358 281.044 110.568 272.426 110.568C263.577 110.568 255.854 109.259 249.259 106.641C242.696 104.022 237.592 99.9953 233.946 94.5597C230.333 89.0909 228.51 82.0975 228.477 73.5795H254.727C254.893 76.6951 255.672 79.3134 257.064 81.4346C258.456 83.5559 260.411 85.1633 262.93 86.2571C265.483 87.3508 268.515 87.8977 272.028 87.8977C274.978 87.8977 277.447 87.5331 279.436 86.804C281.425 86.0748 282.933 85.0639 283.96 83.7713C284.988 82.4787 285.518 81.0038 285.551 79.3466C285.518 77.7888 285.004 76.4299 284.01 75.2699C283.049 74.0767 281.458 73.0161 279.237 72.0881C277.017 71.1269 274.017 70.232 270.239 69.4034L260.097 67.2159C251.081 65.2604 243.972 61.9957 238.768 57.4219C233.598 52.8149 231.029 46.5341 231.063 38.5795C231.029 32.1165 232.753 26.4654 236.233 21.6264C239.746 16.7543 244.602 12.9593 250.8 10.2415C257.031 7.52367 264.173 6.16476 272.227 6.16476C280.447 6.16476 287.556 7.54024 293.555 10.2912C299.554 13.0421 304.178 16.92 307.426 21.9247C310.707 26.8963 312.365 32.7131 312.398 39.375H285.949Z" fill="#0088FF"/>
8
- <path d="M140.339 138.011V33.0114H167.583V46.3352H168.18C169.174 43.75 170.633 41.3802 172.555 39.2259C174.477 37.0384 176.864 35.2983 179.714 34.0057C182.564 32.6799 185.879 32.0171 189.657 32.0171C194.695 32.0171 199.484 33.3594 204.025 36.044C208.599 38.7287 212.311 42.9546 215.162 48.7216C218.045 54.4886 219.487 61.9792 219.487 71.1932C219.487 80.0095 218.111 87.3177 215.36 93.1179C212.643 98.9181 208.997 103.243 204.423 106.094C199.882 108.944 194.894 110.369 189.458 110.369C185.879 110.369 182.681 109.789 179.863 108.629C177.079 107.436 174.693 105.829 172.704 103.807C170.749 101.752 169.241 99.4318 168.18 96.8466H167.782V138.011H140.339ZM167.186 71.1932C167.186 74.9053 167.666 78.1203 168.627 80.8381C169.622 83.5227 171.014 85.6108 172.804 87.1023C174.627 88.5606 176.797 89.2898 179.316 89.2898C181.835 89.2898 183.973 88.5772 185.73 87.152C187.52 85.6937 188.878 83.6222 189.806 80.9375C190.768 78.2197 191.248 74.9716 191.248 71.1932C191.248 67.4148 190.768 64.1833 189.806 61.4986C188.878 58.7808 187.52 56.7093 185.73 55.2841C183.973 53.8258 181.835 53.0966 179.316 53.0966C176.797 53.0966 174.627 53.8258 172.804 55.2841C171.014 56.7093 169.622 58.7808 168.627 61.4986C167.666 64.1833 167.186 67.4148 167.186 71.1932Z" fill="#BB0000"/>
9
- <path d="M98.9133 109.375V33.0114H126.357V109.375H98.9133ZM112.635 25.0568C108.923 25.0568 105.741 23.8305 103.089 21.3778C100.438 18.9252 99.1122 15.9754 99.1122 12.5284C99.1122 9.08144 100.438 6.13163 103.089 3.67897C105.741 1.22632 108.923 0 112.635 0C116.38 0 119.562 1.22632 122.18 3.67897C124.832 6.13163 126.158 9.08144 126.158 12.5284C126.158 15.9754 124.832 18.9252 122.18 21.3778C119.562 23.8305 116.38 25.0568 112.635 25.0568Z" fill="#BB0000"/>
10
- <path d="M5 109.375V7.55682H48.9489C56.5057 7.55682 63.1179 8.9323 68.7855 11.6832C74.4531 14.4342 78.8613 18.3949 82.0099 23.5653C85.1586 28.7358 86.733 34.9337 86.733 42.1591C86.733 49.4508 85.1089 55.599 81.8608 60.6037C78.6458 65.6084 74.1217 69.3868 68.2884 71.9389C62.4882 74.491 55.7102 75.7671 47.9545 75.7671H21.7045V54.2898H42.3864C45.6345 54.2898 48.402 53.8921 50.6889 53.0966C53.009 52.268 54.7822 50.9588 56.0085 49.169C57.268 47.3793 57.8977 45.0426 57.8977 42.1591C57.8977 39.2424 57.268 36.8726 56.0085 35.0497C54.7822 33.1937 53.009 31.8348 50.6889 30.973C48.402 30.0781 45.6345 29.6307 42.3864 29.6307H32.642V109.375H5ZM64.6591 62.6421L90.1136 109.375H60.0852L35.2273 62.6421H64.6591Z" fill="#BB0000"/>
11
- <rect x="98.915" y="108.475" width="27.45" height="11.5" fill="#BB0000"/>
12
- <path d="M48.1719 103.775C72.4009 103.775 95.8737 111.586 117.116 119.158C127.797 122.965 137.871 126.699 147.345 129.455C156.817 132.211 165.493 133.927 173.325 133.775C187.883 133.494 197.211 132.109 203.539 130.467C209.816 128.837 213.215 126.94 216.018 125.446L216.275 125.321C217.585 124.751 219.143 124.999 220.136 126.141C221.207 127.373 221.151 129.11 220.203 130.352C211.435 141.831 189.111 158.775 150.06 158.775C120.199 158.775 100.372 150.691 79.9199 143.314C59.5497 135.968 38.3359 129.218 5.1543 131.271L2.5 131.435V113.079L3.8623 112.383C9.0879 109.713 23.5784 103.775 48.1719 103.775Z" fill="#0389FF" stroke="white" stroke-width="5"/>
13
- </svg>
package/docs/social.png DELETED
Binary file