Skip to content

Commit 39cbb69

Browse files
author
Colin McDonnell
committed
Fix emoji validation, fix lint
1 parent c244fb6 commit 39cbb69

File tree

5 files changed

+14
-72
lines changed

5 files changed

+14
-72
lines changed

Diff for: deno/lib/__tests__/string.test.ts

+5-6
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,11 @@ test("url error overrides", () => {
131131

132132
test("emoji validations", () => {
133133
const emoji = z.string().emoji();
134-
try {
135-
emoji.parse("🍺👩‍🚀🫡");
136-
emoji.parse("💚 💙 💜 💛 ❤️");
137-
expect(() => emoji.parse(":-)")).toThrow();
138-
expect(() => emoji.parse("😀 is an emoji")).toThrow()
139-
} catch (err) {}
134+
135+
emoji.parse("🍺👩‍🚀🫡");
136+
emoji.parse("💚 💙 💜 💛 ❤️");
137+
expect(() => emoji.parse(":-)")).toThrow();
138+
expect(() => emoji.parse("😀 is an emoji")).toThrow();
140139
});
141140

142141
test("uuid", () => {

Diff for: deno/lib/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ const emailRegex =
530530
// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression
531531

532532
const emojiRegex =
533-
/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/;
533+
/^(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*$/;
534534

535535
// interface IsDateStringOptions extends StringDateOptions {
536536
/**

Diff for: playground.ts

+2-58
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,5 @@
11
import { z } from "./src";
22

3-
z.number().int();
3+
const schema = z.string().emoji();
44

5-
// const arg = z.enum(["a", "b"] as const);
6-
// const arb = arg.exclude(["b"]);
7-
// const arc = arg.extract(["a"]);
8-
9-
// const aaa = z.object({ a: z.string(), b: z.number() });
10-
// const bbb = aaa.extend({ b: z.string() });
11-
12-
// const Type1 = z.object({ a: z.string() }).merge(z.object({ a: z.number() }));
13-
// type test1 = z.infer<typeof Type1>;
14-
15-
// const Type2 = Type1.merge(z.object({ b: z.string() }));
16-
// type test2 = z.infer<typeof Type2>;
17-
18-
// const Type3 = Type2.merge(z.object({ c: z.string() }));
19-
// type test3 = z.infer<typeof Type3>;
20-
21-
// const Type4 = Type3.merge(z.object({ Type3: z.string() }));
22-
// type test4 = z.infer<typeof Type4>;
23-
24-
// const Type5 = Type4.merge(z.object({ Type4: z.string() }));
25-
// type test5 = z.infer<typeof Type5>;
26-
27-
// const Type6 = Type5.merge(z.object({ Type5: z.string() }));
28-
// type test6 = z.infer<typeof Type6>;
29-
30-
// const Type7 = Type6.merge(z.object({ Type6: z.string() }));
31-
// type test7 = z.infer<typeof Type7>;
32-
33-
// const Type8 = Type7.merge(z.object({ Type7: z.string() }));
34-
// type test8 = z.infer<typeof Type8>;
35-
36-
// const Type9 = Type8.merge(z.object({ Type8: z.string() }));
37-
// type test9 = z.infer<typeof Type9>;
38-
39-
// const Type10 = Type9.merge(z.object({ Type9: z.string() }));
40-
// type test10 = z.infer<typeof Type10>;
41-
42-
// const Type11 = Type10.merge(z.object({ Type10: z.string() }));
43-
// type test11 = z.infer<typeof Type11>;
44-
45-
// const Type12 = Type11.merge(z.object({ Type11: z.string() }));
46-
// type test12 = z.infer<typeof Type12>;
47-
48-
// const Type13 = Type12.merge(z.object({ Type12: z.string() }));
49-
// type test13 = z.infer<typeof Type13>;
50-
51-
// const Type14 = Type13.merge(z.object({ Type13: z.string() }));
52-
// type test14 = z.infer<typeof Type14>;
53-
54-
// const Type15 = Type14.merge(z.object({ Type14: z.string() }));
55-
// type test15 = z.infer<typeof Type15>;
56-
57-
// const Type16 = Type14.merge(z.object({ Type15: z.string() }));
58-
// type test16 = z.infer<typeof Type16>;
59-
60-
// const arg = Type16.parse("asdf");
61-
// arg;
5+
schema.parse("😀 is an emoji");

Diff for: src/__tests__/string.test.ts

+5-6
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,11 @@ test("url error overrides", () => {
130130

131131
test("emoji validations", () => {
132132
const emoji = z.string().emoji();
133-
try {
134-
emoji.parse("🍺👩‍🚀🫡");
135-
emoji.parse("💚 💙 💜 💛 ❤️");
136-
expect(() => emoji.parse(":-)")).toThrow();
137-
expect(() => emoji.parse("😀 is an emoji")).toThrow()
138-
} catch (err) {}
133+
134+
emoji.parse("🍺👩‍🚀🫡");
135+
emoji.parse("💚 💙 💜 💛 ❤️");
136+
expect(() => emoji.parse(":-)")).toThrow();
137+
expect(() => emoji.parse("😀 is an emoji")).toThrow();
139138
});
140139

141140
test("uuid", () => {

Diff for: src/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ const emailRegex =
530530
// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression
531531

532532
const emojiRegex =
533-
/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/;
533+
/^(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*$/;
534534

535535
// interface IsDateStringOptions extends StringDateOptions {
536536
/**

0 commit comments

Comments
 (0)