diff --git a/types/dayjs-recur/dayjs-recur-tests.ts b/types/dayjs-recur/dayjs-recur-tests.ts index 387e8b667046cb..f4ea78b3d5c202 100644 --- a/types/dayjs-recur/dayjs-recur-tests.ts +++ b/types/dayjs-recur/dayjs-recur-tests.ts @@ -34,6 +34,7 @@ d.dayOfMonth(); d.daysOfMonth(); d.weekOfMonth(); d.weeksOfMonth(); +d.weeksOfMonthByDay(); d.weekOfYear(); d.weeksOfYear(); d.monthOfYear(); diff --git a/types/dayjs-recur/index.d.ts b/types/dayjs-recur/index.d.ts index 55b6e59981e2d2..6d1fc760db1a50 100644 --- a/types/dayjs-recur/index.d.ts +++ b/types/dayjs-recur/index.d.ts @@ -21,6 +21,7 @@ interface Recurrence { daysOfMonth(unit?: string): Recurrence; weekOfMonth(unit?: string): Recurrence; weeksOfMonth(unit?: string): Recurrence; + weeksOfMonthByDay(unit?: string): Recurrence; weekOfYear(unit?: string): Recurrence; weeksOfYear(unit?: string): Recurrence; monthOfYear(unit?: string): Recurrence; @@ -52,5 +53,7 @@ declare module "dayjs" { start?: string | Dayjs; end?: string | Dayjs; }): Recurrence; + monthWeekByDay(): number; + monthWeek(): number; } } diff --git a/types/dockerode/index.d.ts b/types/dockerode/index.d.ts index 2175b4c071081e..ab089331b7d198 100644 --- a/types/dockerode/index.d.ts +++ b/types/dockerode/index.d.ts @@ -661,11 +661,7 @@ declare namespace Dockerode { Healthcheck?: HealthConfig | undefined; }; NetworkSettings: { - Bridge: string; SandboxID: string; - HairpinMode: boolean; - LinkLocalIPv6Address: string; - LinkLocalIPv6PrefixLen: number; Ports: { [portAndProtocol: string]: Array<{ HostIp: string; @@ -673,16 +669,6 @@ declare namespace Dockerode { }>; }; SandboxKey: string; - SecondaryIPAddresses?: any; - SecondaryIPv6Addresses?: any; - EndpointID: string; - Gateway: string; - GlobalIPv6Address: string; - GlobalIPv6PrefixLen: number; - IPAddress: string; - IPPrefixLen: number; - IPv6Gateway: string; - MacAddress: string; Networks: { [type: string]: { IPAMConfig?: any; @@ -699,17 +685,6 @@ declare namespace Dockerode { MacAddress: string; }; }; - Node?: - | { - ID: string; - IP: string; - Addr: string; - Name: string; - Cpus: number; - Memory: number; - Labels: any; - } - | undefined; }; } diff --git a/types/dockerode/package.json b/types/dockerode/package.json index 2affc37751827d..62944ab8e46183 100644 --- a/types/dockerode/package.json +++ b/types/dockerode/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@types/dockerode", - "version": "3.3.9999", + "version": "4.0.9999", "projects": [ "https://github.com/apocas/dockerode" ], diff --git a/types/w3c-capture-all-screens/.npmignore b/types/w3c-capture-all-screens/.npmignore new file mode 100644 index 00000000000000..93e307400a5456 --- /dev/null +++ b/types/w3c-capture-all-screens/.npmignore @@ -0,0 +1,5 @@ +* +!**/*.d.ts +!**/*.d.cts +!**/*.d.mts +!**/*.d.*.ts diff --git a/types/w3c-capture-all-screens/index.d.ts b/types/w3c-capture-all-screens/index.d.ts new file mode 100644 index 00000000000000..15494b61fb2193 --- /dev/null +++ b/types/w3c-capture-all-screens/index.d.ts @@ -0,0 +1,22 @@ +/** + * @see https://screen-share.github.io/capture-all-screens + */ + +interface MediaDevices { + getAllScreensMedia(): Promise; +} + +interface ScreenCaptureMediaStreamTrack extends MediaStreamTrack { + screenDetailed(): ScreenDetailed; +} + +interface ScreenDetailed extends Screen { + readonly availLeft: number; + readonly availTop: number; + readonly left: number; + readonly top: number; + readonly isPrimary: boolean; + readonly isInternal: boolean; + readonly devicePixelRatio: number; + readonly label: string; +} diff --git a/types/w3c-capture-all-screens/package.json b/types/w3c-capture-all-screens/package.json new file mode 100644 index 00000000000000..6f4261b5924d1d --- /dev/null +++ b/types/w3c-capture-all-screens/package.json @@ -0,0 +1,28 @@ +{ + "private": true, + "nonNpm": true, + "nonNpmDescription": "Implementation of Isolated Web App (IWA) APIs resides in Chromium.", + "name": "@types/w3c-capture-all-screens", + "version": "0.0.9999", + "projects": [ + "https://github.com/WICG/isolated-web-apps" + ], + "devDependencies": { + "@types/web": "*", + "@types/w3c-capture-all-screens": "workspace:." + }, + "owners": [ + { + "name": "Paulina Gacek", + "githubUsername": "paulinagacek" + }, + { + "name": "Andrew Rayskiy", + "githubUsername": "GrapeGreen" + }, + { + "name": "Simon Hangl", + "githubUsername": "shangl" + } + ] +} diff --git a/types/w3c-capture-all-screens/tsconfig.json b/types/w3c-capture-all-screens/tsconfig.json new file mode 100644 index 00000000000000..f4a21616a0ee52 --- /dev/null +++ b/types/w3c-capture-all-screens/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "node16", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "paths": { + "w3c-capture-all-screens": [ + "./index.d.ts" + ] + } + }, + "files": [ + "index.d.ts", + "w3c-capture-all-screens-tests.ts" + ] +} diff --git a/types/w3c-capture-all-screens/w3c-capture-all-screens-tests.ts b/types/w3c-capture-all-screens/w3c-capture-all-screens-tests.ts new file mode 100644 index 00000000000000..d5683cc0133c42 --- /dev/null +++ b/types/w3c-capture-all-screens/w3c-capture-all-screens-tests.ts @@ -0,0 +1,55 @@ +async function testGetAllScreensMedia() { + if (!navigator.mediaDevices || !navigator.mediaDevices.getAllScreensMedia) { + return; + } + + // $ExpectType MediaStream[] + const streams = await navigator.mediaDevices.getAllScreensMedia(); + + // @ts-expect-error - arguments are not accepted + await navigator.mediaDevices.getAllScreensMedia({ video: true }); +} + +function testScreenCaptureTrack(track: MediaStreamTrack) { + // Check if the track has the method (type narrowing) + if ("screenDetailed" in track) { + // Cast to the interface that has the method + const screenTrack = track as ScreenCaptureMediaStreamTrack; + + // $ExpectType ScreenDetailed + const details = screenTrack.screenDetailed(); + + testScreenDetailed(details); + } +} + +function testScreenDetailed(details: ScreenDetailed) { + // $ExpectType number + details.availLeft; + // $ExpectType number + details.availTop; + // $ExpectType number + details.left; + // $ExpectType number + details.top; + // $ExpectType boolean + details.isPrimary; + // $ExpectType boolean + details.isInternal; + // $ExpectType number + details.devicePixelRatio; + // $ExpectType string + details.label; + + // Inheritance Check: It should also be a valid Screen object + // $ExpectType number + details.width; + // $ExpectType number + details.height; + + // @ts-expect-error - readonly property cannot be assigned + details.isPrimary = false; + + // @ts-expect-error - property does not exist + details.nonExistentProperty; +}