Skip to content
This repository was archived by the owner on Dec 30, 2023. It is now read-only.

Commit 64097e3

Browse files
committed
refactor(packages/type/built-in): ♻️ Split into smaller files
1 parent 645ec95 commit 64097e3

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed

packages/type/source/built-in/built-in.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,5 @@ export function isBuiltInObject(value: unknown): value is BuiltInObject {
127127
? BUILT_IN_OBJECTS_SCHEMAS[name].safeParse(value).success
128128
: false;
129129
}
130+
131+
export { AsyncFunction, AsyncGeneratorFunction, GeneratorFunction } from "./groups/control-abstraction.js";
Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,35 @@
11
import { z } from "zod";
22

3+
// eslint-disable-next-line func-names, @typescript-eslint/no-empty-function
4+
export const AsyncFunction = async function () {}.constructor as (...args: any[]) => Promise<any>;
5+
6+
// eslint-disable-next-line func-names, @typescript-eslint/no-empty-function
7+
export const AsyncGeneratorFunction = async function* () {}.constructor as AsyncGeneratorFunction;
8+
9+
// eslint-disable-next-line func-names, @typescript-eslint/no-empty-function
10+
export const GeneratorFunction = function* () {}.constructor as GeneratorFunction;
11+
312
/* prettier-ignore */
413
/** @see {@link CONTROL_ABSTRACTION_BUILT_IN_OBJECTS} */
514
export const CONTROL_ABSTRACTION_BUILT_IN_OBJECTS_NAMES = [
15+
"AsyncFunction" ,
16+
"AsyncGeneratorFunction",
17+
"GeneratorFunction",
618
"Promise",
719
// NOTE: Those are not defined.
8-
// "GeneratorFunction",
9-
// "AsyncGeneratorFunction",
10-
// "Generator",
1120
// "AsyncGenerator",
12-
// "AsyncFunction",
21+
// "Generator",
1322
] as const;
1423

1524
/** @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects#control_abstractions_objects} */
1625
export const CONTROL_ABSTRACTION_BUILT_IN_OBJECTS = {
26+
AsyncFunction: AsyncFunction,
27+
AsyncGeneratorFunction: AsyncGeneratorFunction,
28+
GeneratorFunction: GeneratorFunction,
1729
Promise: Promise,
1830
// NOTE: Those are not defined, unlike what MDN says
19-
// GeneratorFunction: GeneratorFunction,
20-
// AsyncGeneratorFunction: AsyncGeneratorFunction,
21-
// Generator: Generator,
2231
// AsyncGenerator: AsyncGenerator,
23-
// AsyncFunction: AsyncFunction,
32+
// Generator: Generator,
2433
} as const;
2534

2635
export type ControlAbstractionBuiltInObjectName = keyof typeof CONTROL_ABSTRACTION_BUILT_IN_OBJECTS;
@@ -30,11 +39,11 @@ export type ControlAbstractionBuiltInObject =
3039
export const CONTROL_ABSTRACTION_BUILT_IN_OBJECT_NAME_SCHEMA = z.enum(CONTROL_ABSTRACTION_BUILT_IN_OBJECTS_NAMES);
3140

3241
export const CONTROL_ABSTRACTION_BUILT_IN_OBJECTS_SCHEMAS = {
33-
Promise: z.instanceof(Promise),
42+
AsyncFunction: z.function().returns(z.promise(z.any())),
43+
AsyncGeneratorFunction: z.instanceof(AsyncGeneratorFunction),
44+
GeneratorFunction: z.instanceof(GeneratorFunction),
45+
Promise: z.promise(z.any()),
3446
// NOTE: Those are not defined, unlike what MDN says
35-
// GeneratorFunction: z.instanceof(GeneratorFunction),
36-
// AsyncGeneratorFunction: z.instanceof(AsyncGeneratorFunction),
37-
// Generator: z.instanceof(Generator),
3847
// AsyncGenerator: z.instanceof(AsyncGenerator),
39-
// AsyncFunction: z.instanceof(AsyncFunction),
48+
// Generator: z.instanceof(Generator),
4049
} as const;

0 commit comments

Comments
 (0)