Skip to content

Commit 4285209

Browse files
committed
http: support 304 when serving files
1 parent fd7c9ab commit 4285209

20 files changed

+132
-104
lines changed

docs/cli_readme.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
CLI args:
2424

2525
```js
26-
import * as cl from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/cli.mjs'
26+
import * as cl from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/cli.mjs'
2727

2828
const cli = cl.Flag.os()
2929

@@ -34,15 +34,15 @@ console.log(...cli.args)
3434
Console clearing:
3535

3636
```js
37-
import * as cl from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/cli.mjs'
37+
import * as cl from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/cli.mjs'
3838

3939
cl.emptty()
4040
```
4141

4242
Clearing the console only once, before running your code:
4343

4444
```js
45-
import 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/cli_emptty.mjs'
45+
import 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/cli_emptty.mjs'
4646
```
4747

4848
## API

docs/coll_readme.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Port and rework of https://github.com/mitranim/jol.
2626
## Usage
2727

2828
```js
29-
import * as c from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/coll.mjs'
29+
import * as c from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/coll.mjs'
3030
```
3131

3232
## API
@@ -101,8 +101,8 @@ Links: [source](../coll.mjs#L100); [test/example](../test/coll_test.mjs#L218).
101101
Variant of [#`Bmap`](#class-bmap) with support for key and value checks. Subclasses must override methods `.reqKey` and `.reqVal`. These methods are automatically called by `.set`. Method `.reqKey` must validate and return the given key, and method `.reqVal` must validate and return the given value. Use type assertions provided by [`lang`](lang_readme.md).
102102

103103
```js
104-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
105-
import * as c from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/coll.mjs'
104+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
105+
import * as c from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/coll.mjs'
106106

107107
class StrNatMap extends c.TypedMap {
108108
reqKey(key) {return l.reqStr(key)}
@@ -242,7 +242,7 @@ Differences and advantages over `Array`:
242242
The overhead of the wrapper is insignificant.
243243

244244
```js
245-
import * as c from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/coll.mjs'
245+
import * as c from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/coll.mjs'
246246

247247
console.log(new c.Vec())
248248
// Vec{Symbol(val): []}

docs/dom_readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
## Usage
1212

1313
```js
14-
import * as d from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/dom.mjs'
14+
import * as d from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/dom.mjs'
1515
```
1616

1717
## API

docs/dom_reg_readme.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
Example mockup for a pushstate link.
2828

2929
```js
30-
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/dom_reg.mjs'
30+
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/dom_reg.mjs'
3131

3232
// Immediately ready for use. Tag is automatically set to `a-btn`.
3333
// The mixin `MixReg` enables automatic registration on instantiation.
@@ -66,7 +66,7 @@ Apps which use server-side rendering and client-side upgrading of custom element
6666
Instead, use `dr.reg`, which is also used internally by `MixReg`. This is simply a shortcut for using the [#default registry](#class-reg) provided by this module.
6767

6868
```js
69-
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/dom_reg.mjs'
69+
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/dom_reg.mjs'
7070

7171
class Btn extends HTMLButtonElement {
7272
/*
@@ -106,7 +106,7 @@ For browser-only code, prefer the mixin `MixReg` from the same module which is e
106106
Simple usage:
107107

108108
```js
109-
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/dom_reg.mjs'
109+
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/dom_reg.mjs'
110110

111111
class Btn extends HTMLButtonElement {
112112
/*
@@ -126,7 +126,7 @@ document.body.append(new Btn())
126126
You can unset the default definer to defer registration:
127127

128128
```js
129-
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/dom_reg.mjs'
129+
import * as dr from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/dom_reg.mjs'
130130

131131
dr.Reg.main.setDefiner()
132132

docs/dom_shim_readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
## Usage
1212

1313
```js
14-
import * as ds from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/dom_shim.mjs'
14+
import * as ds from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/dom_shim.mjs'
1515
```
1616

1717
## API

docs/http_readme.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Also see [`http_bun`](http_bun_readme.md) for Bun HTTP servers, [`http_deno`](ht
2323
## Usage
2424

2525
```js
26-
import * as h from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/http.mjs'
26+
import * as h from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/http.mjs'
2727

2828
const reqBody = {msg: `hello world`}
2929
const resBody = await h.reqBui().to(`/api`).post().json(reqBody).fetchOkJson()
@@ -40,7 +40,7 @@ Signature: `(res: Response | Promise<Response>) => Promise<Response>`.
4040
Missing feature of the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). If the response is OK (HTTP code between 200 and 299, `.ok === true`), the resulting promise resolves to that response as-is. Otherwise the resulting promise is rejected with a descriptive [#`ErrHttp`](#class-errhttp) which includes the response status code, the response body (if any) as the error message, and the response itself for introspection if needed.
4141

4242
```js
43-
import * as h from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/http.mjs'
43+
import * as h from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/http.mjs'
4444

4545
// If response is unsuccessful, this will throw `h.ErrHttp`.
4646
const res = await h.resOk(await fetch(someUrl, someOpt))
@@ -112,8 +112,8 @@ rou.groups // {key: `path`}
112112
Routing is imperative:
113113

114114
```js
115-
import * as h from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/http.mjs'
116-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
115+
import * as h from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/http.mjs'
116+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
117117

118118
const nextPage = route(window.location)
119119

docs/http_srv_readme.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ The following APIs are exported but undocumented. Check [http_srv.mjs](../http_s
2828
* [`class ConcatStreamSource`](../http_srv.mjs#L94)
2929
* [`class Broad`](../http_srv.mjs#L169)
3030
* [`function fileResponse`](../http_srv.mjs#L217)
31-
* [`class BaseHttpFile`](../http_srv.mjs#L243)
32-
* [`class BaseHttpDir`](../http_srv.mjs#L349)
33-
* [`class HttpDirs`](../http_srv.mjs#L433)
34-
* [`function slashPre`](../http_srv.mjs#L537)
35-
* [`function unslashPre`](../http_srv.mjs#L538)
36-
* [`function hasDotDot`](../http_srv.mjs#L539)
37-
* [`function etag`](../http_srv.mjs#L546)
38-
* [`function decodeAcceptEncoding`](../http_srv.mjs#L556)
39-
* [`const COMPRESSION_ALGOS`](../http_srv.mjs#L568)
40-
* [`const COMPRESSION_OPTS`](../http_srv.mjs#L570)
41-
* [`class HttpCompressor`](../http_srv.mjs#L589)
42-
* [`class CompressionStreamPolyfill`](../http_srv.mjs#L754)
43-
* [`class DecompressionStreamPolyfill`](../http_srv.mjs#L766)
31+
* [`class BaseHttpFile`](../http_srv.mjs#L249)
32+
* [`class BaseHttpDir`](../http_srv.mjs#L379)
33+
* [`class HttpDirs`](../http_srv.mjs#L463)
34+
* [`function slashPre`](../http_srv.mjs#L567)
35+
* [`function unslashPre`](../http_srv.mjs#L568)
36+
* [`function hasDotDot`](../http_srv.mjs#L569)
37+
* [`function etag`](../http_srv.mjs#L572)
38+
* [`function decodeAcceptEncoding`](../http_srv.mjs#L583)
39+
* [`const COMPRESSION_ALGOS`](../http_srv.mjs#L595)
40+
* [`const COMPRESSION_OPTS`](../http_srv.mjs#L597)
41+
* [`class HttpCompressor`](../http_srv.mjs#L616)
42+
* [`class CompressionStreamPolyfill`](../http_srv.mjs#L781)
43+
* [`class DecompressionStreamPolyfill`](../http_srv.mjs#L793)

docs/iter_readme.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ Port and rework of https://github.com/mitranim/fpx.
8383
## Usage
8484

8585
```js
86-
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/iter.mjs'
86+
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/iter.mjs'
8787
```
8888

8989
## Perf
@@ -310,8 +310,8 @@ Signature: `(Iter<A>, {new(A): B}) => B[]`.
310310
Similar to [#`map`](#function-map), but instead of taking an arbitrary function, takes a class and calls it with `new` for each element.
311311

312312
```js
313-
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/iter.mjs'
314-
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/obj.mjs'
313+
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/iter.mjs'
314+
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/obj.mjs'
315315

316316
class Model extends o.Dict {pk() {return this.id}}
317317
class Person extends Model {}
@@ -637,8 +637,8 @@ Similar to [#`map`](#function-map) but for dicts.
637637
* The mapping function receives only one argument: each value.
638638

639639
```js
640-
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/iter.mjs'
641-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
640+
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/iter.mjs'
641+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
642642

643643
i.mapDict({one: 10, two: 20}, l.inc)
644644
// {one: 11, two: 21}
@@ -659,8 +659,8 @@ Similar to [#`filter`](#function-filter) but for dicts.
659659
* The mapping function receives each value.
660660

661661
```js
662-
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/iter.mjs'
663-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
662+
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/iter.mjs'
663+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
664664

665665
i.pick({one: -20, two: -10, three: 10, four: 20}, l.isFinPos)
666666
// {three: 10, four: 20}
@@ -681,8 +681,8 @@ Similar to [#`reject`](#function-reject) but for dicts.
681681
* The mapping function receives each value.
682682

683683
```js
684-
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/iter.mjs'
685-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
684+
import * as i from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/iter.mjs'
685+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
686686

687687
i.omit({one: -20, two: -10, three: 10, four: 20}, l.isFinPos)
688688
// {one: -20, two: -10}

docs/lang_readme.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ Port and rework of https://github.com/mitranim/fpx.
113113
## Usage
114114

115115
```js
116-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
116+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
117117
```
118118

119119
## API
@@ -125,7 +125,7 @@ Links: [source](../lang.mjs#L7); [test/example](../test/lang_test.mjs#L266).
125125
True for `null` and `undefined`. Same as `value == null`. Incidentally, these are the only values that produce an exception when attempting to read a property: `null.someProperty`.
126126

127127
```js
128-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
128+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
129129

130130
// Definition
131131
function isNil(value) {return value == null}
@@ -159,7 +159,7 @@ Links: [source](../lang.mjs#L23); [test/example](../test/lang_test.mjs#L291).
159159
Same as `typeof val === 'number'`. True if the value is a primitive number, _including_ `NaN` and `±Infinity`. In most cases you should use [#`isFin`](#function-isfin) instead.
160160

161161
```js
162-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
162+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
163163

164164
l.isNum(1)
165165
// true
@@ -178,7 +178,7 @@ Links: [source](../lang.mjs#L29); [test/example](../test/lang_test.mjs#L303).
178178
Same as ES2015's [`Number.isFinite`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite). True if `val` is a primitive number and is _not_ `NaN` or `±Infinity`. In most cases you should prefer `isFin` over `isNum`.
179179

180180
```js
181-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
181+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
182182

183183
l.isFin(1)
184184
// true
@@ -520,8 +520,8 @@ The names `deref` and `reset` for this interface are lifted from Clojure.
520520
Combined example:
521521

522522
```js
523-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
524-
import * as ob from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/obs.mjs'
523+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
524+
import * as ob from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/obs.mjs'
525525

526526
l.isRef(10) // false
527527
l.isRef({}) // false
@@ -563,7 +563,7 @@ Signature: `(val, test) => val` where `test: val => bool`.
563563
Short for "require". Minification-friendly assertion. If `!test(val)`, throws an informative `TypeError`. Otherwise, returns `val` as-is.
564564

565565
```js
566-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
566+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
567567

568568
l.req({one: `two`}, l.isObj)
569569
// {one: `two`}
@@ -661,7 +661,7 @@ Identity test: same as `===`, but considers `NaN` equal to `NaN`. Equivalent to
661661
Note that [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) implements [_SameValue_](https://www.ecma-international.org/ecma-262/6.0/#sec-samevalue), which treats `-0` and `+0` as _distinct values_. This is typically undesirable. As a result, you should prefer `l.is` over `===` or `Object.is` unless you _know_ you intend to differentiate `-0` and `+0`.
662662

663663
```js
664-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
664+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
665665

666666
l.is(1, '1')
667667
// false
@@ -701,7 +701,7 @@ Links: [source](../lang.mjs#L468); [test/example](../test/lang_test.mjs#L1822).
701701
Takes a value and creates a function that always returns that value. Sometimes useful with higher order functions.
702702

703703
```js
704-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
704+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
705705

706706
const constant = l.val(1)
707707

@@ -719,7 +719,7 @@ Links: [source](../lang.mjs#L469); [test/example](../test/lang_test.mjs#L1836).
719719
Same as `throw` but an expression rather than a statement. Also sometimes useful with higher-order functions.
720720

721721
```js
722-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
722+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
723723

724724
const x = someTest ? someValue : l.panic(Error(`unreachable`))
725725
```
@@ -739,7 +739,7 @@ Like [`Function.prototype.bind`](https://developer.mozilla.org/en-US/docs/Web/Ja
739739
Returns a new function that represents [partial application](https://en.wikipedia.org/wiki/Partial_application) of the given function, a common tool in functional programming. When called, it joins arguments from both calls and invokes the original function. Think of it like splitting a function call in two, or more. Performance is inferior to closures; avoid in hotspots.
740740

741741
```js
742-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
742+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
743743

744744
const inc = l.bind(l.add, 1)
745745

@@ -756,7 +756,7 @@ Links: [source](../lang.mjs#L477); [test/example](../test/lang_test.mjs#L1799).
756756
Returns a new function that negates the result of the given function, like a delayed `!`.
757757

758758
```js
759-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
759+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
760760

761761
function eq(a, b) {return a === b}
762762

@@ -788,7 +788,7 @@ Links: [source](../lang.mjs#L485); [test/example](../test/lang_test.mjs#L1254).
788788
Returns `true` if the target is [#non-primitive](#function-iscomp) and has the given property on its prototype. As a consequence, this returns `false` if the target is a primitive, or has the given property as an "own" property, either enumerable or not.
789789

790790
```js
791-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
791+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
792792

793793
l.hasInherited([10, 20, 30], `length`)
794794
// false
@@ -956,7 +956,7 @@ Rounding half away from zero. Has one difference from [`Math.round`](https://dev
956956
Examples:
957957

958958
```js
959-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
959+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
960960

961961
l.round(-12.5) // -13
962962
l.round(12.5) // 13

docs/obj_readme.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
## Usage
1515

1616
```js
17-
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/obj.mjs'
17+
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/obj.mjs'
1818
```
1919

2020
## API
@@ -62,7 +62,7 @@ Links: [source](../obj.mjs#L147); [test/example](../test/obj_test.mjs#L755).
6262
Takes a class and hacks its prototype, converting all non-inherited getters to lazy/memoizing versions of themselves that only execute _once_. The resulting value replaces the getter. Inherited getters are unaffected.
6363

6464
```js
65-
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/obj.mjs'
65+
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/obj.mjs'
6666

6767
class StructLax extends o.MixStruct(l.Emp) {}
6868

@@ -104,8 +104,8 @@ Performance characteristics:
104104
* When the number of declared fields is significantly smaller than the number of provided fields, this tends to be faster than the aforementioned assignment functions.
105105

106106
```js
107-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
108-
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/obj.mjs'
107+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
108+
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/obj.mjs'
109109

110110
class Person extends o.MixStruct(l.Emp) {
111111
static spec = {
@@ -145,8 +145,8 @@ Differences from [#`MixStruct`](#function-mixstruct):
145145
* Has slightly worse performance.
146146

147147
```js
148-
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/lang.mjs'
149-
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.81/obj.mjs'
148+
import * as l from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/lang.mjs'
149+
import * as o from 'https://cdn.jsdelivr.net/npm/@mitranim/js@0.1.82/obj.mjs'
150150

151151
class Person extends o.MixStructLax(l.Emp) {
152152
static spec = {

0 commit comments

Comments
 (0)