Skip to content

Commit 1438861

Browse files
authored
Add copper tier (#3460)
* Copper tier * Update
1 parent b87e59d commit 1438861

File tree

4 files changed

+111
-59
lines changed

4 files changed

+111
-59
lines changed

README.md

+25-27
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,6 @@ Sponsorship at any level is appreciated and encouraged. For individual developer
284284

285285
#### Bronze
286286

287-
<!--
288-
two column table layout
289-
each td should contain a ul
290-
-->
291-
292287
<table>
293288
<tr>
294289
<td><a href="https://www.numeric.io">Numeric</a></td>
@@ -298,34 +293,37 @@ each td should contain a ul
298293
</tr>
299294
<tr>
300295
<td><a href="https://www.bamboocreative.nz/">Bamboo Creative</a></td>
301-
<td><a href="https://twitter.com/flybayer">Brandon Bayer</a></td>
302-
<td><a href="https://github.com/brabeji">Jiří Brabec</a></td>
303-
<td><a href="https://twitter.com/alexdotjs">Alex Johansson</a></td>
296+
</tr>
297+
</table>
298+
299+
#### Copper
300+
301+
<table>
302+
<tr>
303+
<td>Brandon Bayer</td>
304+
<td>Jiří Brabec</td>
305+
<td>Alex Johansson</td>
306+
<td>Fungible Systems</td>
307+
</tr>
308+
<tr>
309+
<td>Adaptable</td>
310+
<td>Avana Wallet</td>
311+
<td>Jason Lengstorf</td>
312+
<td>Global Illumination, Inc.</td>
304313
</tr>
305314
<tr>
306-
<td><a href="https://learnwithjason.dev">Learn with Jason</a></td>
307-
<td><a href="https://github.com/kronodeus">Ryan Palmer</a></td>
308-
<td><a href="https://github.com/overthemike">Michael Sweeney</a></td>
309-
<td><a href="https://github.com/ConnorSinnott">Connor Sinnott</a></td>
315+
<td>MasterBorn</td>
316+
<td>Ryan Palmer</td>
317+
<td>Michael Sweeney</td>
318+
<td>Nextbase</td>
310319
</tr>
311320
<tr>
312-
<td><a href="https://aerabi.com/">Mohammad-Ali A'râbi</a></td>
321+
<td>Remotion</td>
322+
<td>Connor Sinnott</td>
323+
<td>Mohammad-Ali A'râbi</td>
324+
<td>Supatool</td>
313325
</tr>
314326
</table>
315-
<!--
316-
- [Numeric](https://www.numeric.io)
317-
- [Marcato Partners](https://marcatopartners.com/)
318-
- [Interval](https://interval.com)
319-
- [Seasoned Software](https://seasoned.cc)
320-
- [Bamboo Creative](https://www.bamboocreative.nz/)
321-
- [Brandon Bayer](https://twitter.com/flybayer)
322-
- [Jiří Brabec](https://github.com/brabeji)
323-
- [Alex Johansson](https://twitter.com/alexdotjs)
324-
- [Learn with Jason](https://learnwithjason.dev)
325-
- [Ryan Palmer](https://github.com/kronodeus)
326-
- [Michael Sweeney](https://github.com/overthemike)
327-
- [Connor Sinnott](https://github.com/ConnorSinnott)
328-
- [Mohammad-Ali A'râbi](https://aerabi.com/) -->
329327

330328
### Ecosystem
331329

deno/lib/README.md

+27-28
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,6 @@ Sponsorship at any level is appreciated and encouraged. For individual developer
284284

285285
#### Bronze
286286

287-
<!--
288-
two column table layout
289-
each td should contain a ul
290-
-->
291-
292287
<table>
293288
<tr>
294289
<td><a href="https://www.numeric.io">Numeric</a></td>
@@ -298,34 +293,37 @@ each td should contain a ul
298293
</tr>
299294
<tr>
300295
<td><a href="https://www.bamboocreative.nz/">Bamboo Creative</a></td>
301-
<td><a href="https://twitter.com/flybayer">Brandon Bayer</a></td>
302-
<td><a href="https://github.com/brabeji">Jiří Brabec</a></td>
303-
<td><a href="https://twitter.com/alexdotjs">Alex Johansson</a></td>
296+
</tr>
297+
</table>
298+
299+
#### Copper
300+
301+
<table>
302+
<tr>
303+
<td>Brandon Bayer</td>
304+
<td>Jiří Brabec</td>
305+
<td>Alex Johansson</td>
306+
<td>Fungible Systems</td>
307+
</tr>
308+
<tr>
309+
<td>Adaptable</td>
310+
<td>Avana Wallet</td>
311+
<td>Jason Lengstorf</td>
312+
<td>Global Illumination, Inc.</td>
304313
</tr>
305314
<tr>
306-
<td><a href="https://learnwithjason.dev">Learn with Jason</a></td>
307-
<td><a href="https://github.com/kronodeus">Ryan Palmer</a></td>
308-
<td><a href="https://github.com/overthemike">Michael Sweeney</a></td>
309-
<td><a href="https://github.com/ConnorSinnott">Connor Sinnott</a></td>
315+
<td>MasterBorn</td>
316+
<td>Ryan Palmer</td>
317+
<td>Michael Sweeney</td>
318+
<td>Nextbase</td>
310319
</tr>
311320
<tr>
312-
<td><a href="https://aerabi.com/">Mohammad-Ali A'râbi</a></td>
321+
<td>Remotion</td>
322+
<td>Connor Sinnott</td>
323+
<td>Mohammad-Ali A'râbi</td>
324+
<td>Supatool</td>
313325
</tr>
314326
</table>
315-
<!--
316-
- [Numeric](https://www.numeric.io)
317-
- [Marcato Partners](https://marcatopartners.com/)
318-
- [Interval](https://interval.com)
319-
- [Seasoned Software](https://seasoned.cc)
320-
- [Bamboo Creative](https://www.bamboocreative.nz/)
321-
- [Brandon Bayer](https://twitter.com/flybayer)
322-
- [Jiří Brabec](https://github.com/brabeji)
323-
- [Alex Johansson](https://twitter.com/alexdotjs)
324-
- [Learn with Jason](https://learnwithjason.dev)
325-
- [Ryan Palmer](https://github.com/kronodeus)
326-
- [Michael Sweeney](https://github.com/overthemike)
327-
- [Connor Sinnott](https://github.com/ConnorSinnott)
328-
- [Mohammad-Ali A'râbi](https://aerabi.com/) -->
329327

330328
### Ecosystem
331329

@@ -417,6 +415,7 @@ There are a growing number of tools that are built atop or support Zod natively!
417415
#### Utilities for Zod
418416

419417
- [`zod_utilz`](https://github.com/JacobWeisenburger/zod_utilz): Framework agnostic utilities for Zod.
418+
- [`zod-playground`](https://github.com/marilari88/zod-playground): A tool for learning and testing Zod schema validation functionalities. [Link](https://zod-playground.vercel.app/).
420419
- [`zod-sandbox`](https://github.com/nereumelo/zod-sandbox): Controlled environment for testing zod schemas. [Live demo](https://zod-sandbox.vercel.app/).
421420
- [`zod-dev`](https://github.com/schalkventer/zod-dev): Conditionally disables Zod runtime parsing in production.
422421
- [`zod-accelerator`](https://github.com/duplojs/duplojs-zod-accelerator): Accelerates Zod's throughput up to ~100x.
@@ -2445,7 +2444,7 @@ Note that branded types do not affect the runtime result of `.parse`. It is a st
24452444
This method returns a `ZodReadonly` schema instance that parses the input using the base schema, then calls `Object.freeze()` on the result. The inferred type is also marked as `readonly`.
24462445

24472446
```ts
2448-
const schema = z.object({ name: string }).readonly();
2447+
const schema = z.object({ name: z.string() }).readonly();
24492448
type schema = z.infer<typeof schema>;
24502449
// Readonly<{name: string}>
24512450

deno/lib/__tests__/readonly.test.ts

+50
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,53 @@ test("object freezing", () => {
203203
)
204204
).toBe(true);
205205
});
206+
207+
test("async object freezing", async () => {
208+
expect(
209+
Object.isFrozen(await z.array(z.string()).readonly().parseAsync(["a"]))
210+
).toBe(true);
211+
expect(
212+
Object.isFrozen(
213+
await z.tuple([z.string(), z.number()]).readonly().parseAsync(["a", 1])
214+
)
215+
).toBe(true);
216+
expect(
217+
Object.isFrozen(
218+
await z
219+
.map(z.string(), z.date())
220+
.readonly()
221+
.parseAsync(new Map([["a", new Date()]]))
222+
)
223+
).toBe(true);
224+
expect(
225+
Object.isFrozen(
226+
await z
227+
.set(z.promise(z.string()))
228+
.readonly()
229+
.parseAsync(new Set([Promise.resolve("a")]))
230+
)
231+
).toBe(true);
232+
expect(
233+
Object.isFrozen(
234+
await z.record(z.string()).readonly().parseAsync({ a: "b" })
235+
)
236+
).toBe(true);
237+
expect(
238+
Object.isFrozen(
239+
await z.record(z.string(), z.number()).readonly().parseAsync({ a: 1 })
240+
)
241+
).toBe(true);
242+
expect(
243+
Object.isFrozen(
244+
await z
245+
.object({ a: z.string(), 1: z.number() })
246+
.readonly()
247+
.parseAsync({ a: "b", 1: 2 })
248+
)
249+
).toBe(true);
250+
expect(
251+
Object.isFrozen(
252+
await z.promise(z.string()).readonly().parseAsync(Promise.resolve("a"))
253+
)
254+
).toBe(true);
255+
});

deno/lib/types.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -5041,10 +5041,15 @@ export class ZodReadonly<T extends ZodTypeAny> extends ZodType<
50415041
> {
50425042
_parse(input: ParseInput): ParseReturnType<this["_output"]> {
50435043
const result = this._def.innerType._parse(input);
5044-
if (isValid(result)) {
5045-
result.value = Object.freeze(result.value);
5046-
}
5047-
return result;
5044+
const freeze = (data: ParseReturnType<this["_output"]>) => {
5045+
if (isValid(data)) {
5046+
data.value = Object.freeze(data.value);
5047+
}
5048+
return data;
5049+
};
5050+
return isAsync(result)
5051+
? result.then((data) => freeze(data))
5052+
: freeze(result);
50485053
}
50495054

50505055
static create = <T extends ZodTypeAny>(

0 commit comments

Comments
 (0)