Skip to content

Commit 9ac3f17

Browse files
committed
Merge master, and use new migrate script
2 parents 2398dac + 575087a commit 9ac3f17

9 files changed

+87
-12
lines changed

.github/workflows/test_typescript.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ jobs:
1717
1818
# Clone TypeScript, set it up
1919
git clone https://github.com/microsoft/TypeScript --depth 1
20+
21+
# Migrate the generated files into the repo
22+
npm run migrate
23+
2024
cd TypeScript
2125
npm i
2226
23-
# Move in the generated dom APIs into a new version of TSC
24-
cp -rf ../generated/* src/lib
2527
2628
# Run TypeScript's tests with the new DOM libs, but don't fail
2729
npm test || true

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ To test:
2525
npm run test
2626
```
2727

28+
To deploy:
29+
30+
```sh
31+
npm run migrate
32+
```
33+
34+
The script will look in for a clone of the TypeScript repo in "../TypeScript", or "./TypeScript" to move the generated files in.
35+
2836
## Contribution Guidelines
2937

3038
The `dom.generated.d.ts`, `webworker.generated.d.ts` and `dom.iterable.generated.d.ts` files from the TypeScript repo are used as baselines.

baselines/dom.generated.d.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5756,13 +5756,17 @@ interface GlobalEventHandlersEventMap {
57565756
"animationiteration": AnimationEvent;
57575757
"animationstart": AnimationEvent;
57585758
"auxclick": MouseEvent;
5759+
"beforeinput": InputEvent;
57595760
"blur": FocusEvent;
57605761
"cancel": Event;
57615762
"canplay": Event;
57625763
"canplaythrough": Event;
57635764
"change": Event;
57645765
"click": MouseEvent;
57655766
"close": Event;
5767+
"compositionend": CompositionEvent;
5768+
"compositionstart": CompositionEvent;
5769+
"compositionupdate": CompositionEvent;
57665770
"contextmenu": MouseEvent;
57675771
"cuechange": Event;
57685772
"dblclick": MouseEvent;
@@ -14983,7 +14987,7 @@ interface ServiceWorkerContainer extends EventTarget {
1498314987
readonly ready: Promise<ServiceWorkerRegistration>;
1498414988
getRegistration(clientURL?: string): Promise<ServiceWorkerRegistration | undefined>;
1498514989
getRegistrations(): Promise<ReadonlyArray<ServiceWorkerRegistration>>;
14986-
register(scriptURL: string, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;
14990+
register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;
1498714991
startMessages(): void;
1498814992
addEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1498914993
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
@@ -18537,7 +18541,7 @@ interface Window extends EventTarget, AnimationFrameProvider, GlobalEventHandler
1853718541
readonly event: Event | undefined;
1853818542
/** @deprecated */
1853918543
readonly external: External;
18540-
readonly frameElement: Element;
18544+
readonly frameElement: Element | null;
1854118545
readonly frames: Window;
1854218546
readonly history: History;
1854318547
readonly innerHeight: number;
@@ -19586,7 +19590,7 @@ declare var document: Document;
1958619590
declare var event: Event | undefined;
1958719591
/** @deprecated */
1958819592
declare var external: External;
19589-
declare var frameElement: Element;
19593+
declare var frameElement: Element | null;
1959019594
declare var frames: Window;
1959119595
declare var history: History;
1959219596
declare var innerHeight: number;
@@ -20138,7 +20142,7 @@ type OverSampleType = "2x" | "4x" | "none";
2013820142
type PanningModelType = "HRTF" | "equalpower";
2013920143
type PaymentComplete = "fail" | "success" | "unknown";
2014020144
type PaymentShippingType = "delivery" | "pickup" | "shipping";
20141-
type PermissionName = "accelerometer" | "ambient-light-sensor" | "background-sync" | "bluetooth" | "camera" | "clipboard" | "device-info" | "geolocation" | "gyroscope" | "magnetometer" | "microphone" | "midi" | "notifications" | "persistent-storage" | "push" | "speaker";
20145+
type PermissionName = "accelerometer" | "ambient-light-sensor" | "background-fetch" | "background-sync" | "bluetooth" | "camera" | "clipboard-read" | "clipboard-write" | "device-info" | "display-capture" | "geolocation" | "gyroscope" | "magnetometer" | "microphone" | "midi" | "nfc" | "notifications" | "persistent-storage" | "push" | "speaker";
2014220146
type PermissionState = "denied" | "granted" | "prompt";
2014320147
type PlaybackDirection = "alternate" | "alternate-reverse" | "normal" | "reverse";
2014420148
type PositionAlignSetting = "auto" | "center" | "line-left" | "line-right";

baselines/webworker.generated.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2891,7 +2891,7 @@ interface ServiceWorkerContainer extends EventTarget {
28912891
readonly ready: Promise<ServiceWorkerRegistration>;
28922892
getRegistration(clientURL?: string): Promise<ServiceWorkerRegistration | undefined>;
28932893
getRegistrations(): Promise<ReadonlyArray<ServiceWorkerRegistration>>;
2894-
register(scriptURL: string, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;
2894+
register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;
28952895
startMessages(): void;
28962896
addEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
28972897
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
@@ -6001,7 +6001,7 @@ type KeyUsage = "decrypt" | "deriveBits" | "deriveKey" | "encrypt" | "sign" | "u
60016001
type NotificationDirection = "auto" | "ltr" | "rtl";
60026002
type NotificationPermission = "default" | "denied" | "granted";
60036003
type OffscreenRenderingContextId = "2d" | "bitmaprenderer" | "webgl" | "webgl2";
6004-
type PermissionName = "accelerometer" | "ambient-light-sensor" | "background-sync" | "bluetooth" | "camera" | "clipboard" | "device-info" | "geolocation" | "gyroscope" | "magnetometer" | "microphone" | "midi" | "notifications" | "persistent-storage" | "push" | "speaker";
6004+
type PermissionName = "accelerometer" | "ambient-light-sensor" | "background-fetch" | "background-sync" | "bluetooth" | "camera" | "clipboard-read" | "clipboard-write" | "device-info" | "display-capture" | "geolocation" | "gyroscope" | "magnetometer" | "microphone" | "midi" | "nfc" | "notifications" | "persistent-storage" | "push" | "speaker";
60056005
type PermissionState = "denied" | "granted" | "prompt";
60066006
type PremultiplyAlpha = "default" | "none" | "premultiply";
60076007
type PushEncryptionKeyName = "auth" | "p256dh";

inputfiles/addedTypes.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,22 @@
6969
"GlobalEventHandlers": {
7070
"attributeless-events": {
7171
"event": [
72+
{
73+
"name": "beforeinput",
74+
"type": "InputEvent"
75+
},
76+
{
77+
"name": "compositionstart",
78+
"type": "CompositionEvent"
79+
},
80+
{
81+
"name": "compositionupdate",
82+
"type": "CompositionEvent"
83+
},
84+
{
85+
"name": "compositionend",
86+
"type": "CompositionEvent"
87+
},
7288
{
7389
"name": "focusin",
7490
"type": "FocusEvent"

inputfiles/idl/Permissions.widl

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ interface PermissionStatus : EventTarget {
1616

1717
[Exposed=(Window)]
1818
partial interface Navigator {
19-
readonly attribute Permissions permissions;
19+
[SameObject] readonly attribute Permissions permissions;
2020
};
2121

2222
[Exposed=(Worker)]
2323
partial interface WorkerNavigator {
24-
readonly attribute Permissions permissions;
24+
[SameObject] readonly attribute Permissions permissions;
2525
};
2626

2727
[Exposed=(Window,Worker)]
@@ -38,14 +38,18 @@ enum PermissionName {
3838
"microphone",
3939
"speaker",
4040
"device-info",
41+
"background-fetch",
4142
"background-sync",
4243
"bluetooth",
4344
"persistent-storage",
4445
"ambient-light-sensor",
4546
"accelerometer",
4647
"gyroscope",
4748
"magnetometer",
48-
"clipboard",
49+
"clipboard-read",
50+
"clipboard-write",
51+
"display-capture",
52+
"nfc",
4953
};
5054

5155
dictionary PushPermissionDescriptor : PermissionDescriptor {
@@ -59,3 +63,13 @@ dictionary MidiPermissionDescriptor : PermissionDescriptor {
5963
dictionary DevicePermissionDescriptor : PermissionDescriptor {
6064
DOMString deviceId;
6165
};
66+
67+
dictionary CameraDevicePermissionDescriptor : DevicePermissionDescriptor {
68+
boolean panTiltZoom = false;
69+
};
70+
71+
dictionary PermissionSetParameters {
72+
required PermissionDescriptor descriptor;
73+
required PermissionState state;
74+
boolean oneRealm = false;
75+
};

inputfiles/overridingTypes.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,9 @@
481481
"override-type": "Event | undefined",
482482
"deprecated": 1
483483
},
484+
"frameElement": {
485+
"nullable": 1
486+
},
484487
"location": {
485488
"read-only": 0
486489
},
@@ -1574,6 +1577,12 @@
15741577
"override-signatures": [
15751578
"getRegistration(clientURL?: string): Promise<ServiceWorkerRegistration | undefined>"
15761579
]
1580+
},
1581+
"register": {
1582+
"name": "register",
1583+
"override-signatures": [
1584+
"register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>"
1585+
]
15771586
}
15781587
}
15791588
},

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"fetch": "echo This could take a few minutes... && npm run fetch-idl && npm run fetch-mdn",
99
"baseline-accept": "cpx \"generated\\*\" baselines\\",
1010
"test": "tsc -p ./tsconfig.json && node ./lib/index.js && node ./lib/test.js",
11-
"danger": "danger"
11+
"danger": "danger",
12+
"migrate": "node ./lib/migrate-to-tsc.js"
1213
},
1314
"dependencies": {
1415
"@types/jsdom": "^16.2.4",

src/migrate-to-tsc.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Mainly a quick script to migrate the generated files into the
2+
// lib folder of a TypeScript clone.
3+
//
4+
// node ./lib/migrate-to-tsc.js [optional/file/path/to/tsc]
5+
6+
import { existsSync, readdirSync, readFileSync, writeFileSync } from "fs"
7+
import { join } from "path"
8+
9+
const maybeTSWorkingDir = [process.argv[2], "../TypeScript", "TypeScript"]
10+
const tscWD = maybeTSWorkingDir.find(wd => existsSync(wd))
11+
12+
if (!tscWD) throw new Error("Could not find a TypeScript clone to put the generated files in.")
13+
14+
const generatedFiles = readdirSync("generated")
15+
generatedFiles.forEach(file => {
16+
const contents = readFileSync(join("generated", file) , "utf8")
17+
const newFilePath = join(tscWD, "src", "lib", file)
18+
writeFileSync(newFilePath, contents)
19+
})
20+
21+
console.log(`Moved ${generatedFiles.map(f => f.replace(".generated", "")).join(", ")} to '${tscWD}'.`)

0 commit comments

Comments
 (0)