From b6f41eea025b6d0a017a2465f601d3b2f2217769 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Oct 2023 14:09:54 +0300 Subject: [PATCH 1/9] Add type definitions and export them via /types path --- package.json | 3 +- types/MiddlewareUtil.d.ts | 99 +++++++++++++++++++++++++++++++++++++++ types/index.d.ts | 4 ++ types/ui5_serve.d.ts | 4 ++ 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 types/MiddlewareUtil.d.ts create mode 100644 types/index.d.ts create mode 100644 types/ui5_serve.d.ts diff --git a/package.json b/package.json index 1c96bb97..d52a0be0 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "./internal/sslUtil": "./lib/sslUtil.js", "./internal/middlewareRepository": "./lib/middleware/middlewareRepository.js", "./internal/MiddlewareManager": "./lib/middleware/MiddlewareManager.js", - "./package.json": "./package.json" + "./package.json": "./package.json", + "./types": "./types/index.d.ts" }, "engines": { "node": "^16.18.0 || >=18.12.0", diff --git a/types/MiddlewareUtil.d.ts b/types/MiddlewareUtil.d.ts new file mode 100644 index 00000000..e44fab06 --- /dev/null +++ b/types/MiddlewareUtil.d.ts @@ -0,0 +1,99 @@ +declare module "@ui5/server/middleware/MiddlewareUtil" { + type MimeInfo = { + type: string + charset: string + contentType: string + }; + + type ui5_logger_Logger = object + type ui5_fs_resourceFactory = object + type ui5_fs_Resource = object + type ui5_fs_AbstractReader = object + type ProjectInterface = object + + type StandardBuildTags = { + OmitFromBuildResult: string + IsBundle: string + IsDebugVariant: string + HasDebugVariant: string + } + + type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; + + type MiddlewareUtil = specVersion extends "2.0" + ? MiddlewareUtil_v2_0 + : specVersion extends "3.0" | "2.2" + ? MiddlewareUtil_v3_0 + : specVersion extends "3.2" + ? MiddlewareUtil_v3_2 + : never; + + class MiddlewareUtil_v2_0 { + resourceFactory: ui5_fs_resourceFactory + getPathname(req: object): string + getMimeInfo(resourcePath: object): MimeInfo + } + + class MiddlewareUtil_v3_0 extends MiddlewareUtil_v2_0 { + getDependencies(projectName?: string): string[] + getProject(projectNameOrResource?: string | ui5_fs_Resource) + } + + class MiddlewareUtil_v3_2 extends MiddlewareUtil_v3_0 { + someFutureMethod(); + } + + + type TaskUtil = specVersion extends "2.2" + ? TaskUtil_v2_2 + : specVersion extends "3.0" + ? TaskUtil_v3_0 + : specVersion extends "3.2" + ? TaskUtil_v3_2 + : never; + + class TaskUtil_v2_2 { + STANDARD_TAGS: StandardBuildTags + resourceFactory: ui5_fs_resourceFactory + getDependencies(projectName?: string): string[] + getProject(projectNameOrResource?: ProjectInterface | undefined) + isRootProject(): boolean + registerCleanupTask(callback: CallableFunction): never + } + + class TaskUtil_v3_0 extends TaskUtil_v2_2 { + clearTag(resource: ui5_fs_Resource, tag: string): never + getTag(resource: ui5_fs_Resource, tag: string): string | boolean | number | undefined + setTag(resource: ui5_fs_Resource, tag: string, value: string | boolean | number): never + } + + class TaskUtil_v3_2 extends TaskUtil_v3_0 { + someFutureMethod(); + } + + interface MiddlewareParametersBase { + log: ui5_logger_Logger + options: { + configuration?: Record + } + resources: { + all: ui5_fs_AbstractReader + rootProject: ui5_fs_AbstractReader + dependencies: ui5_fs_AbstractReader + }, + } + + interface MiddlewareParameters_2_0 extends MiddlewareParametersBase { + middlewareUtil: MiddlewareUtil; + } + + interface MiddlewareParameters_2_2 extends MiddlewareParameters_2_0 { + taskUtil: TaskUtil + } + + type MiddlewareParameters = specVersion extends "2.0" + ? MiddlewareParameters_2_0 + : specVersion extends availableSpecVersions + ? MiddlewareParameters_2_2 + : MiddlewareParametersBase +} diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 00000000..fee65dfd --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,4 @@ +// Reference multiple definitions, so they could act like a bundle + +/// +/// \ No newline at end of file diff --git a/types/ui5_serve.d.ts b/types/ui5_serve.d.ts new file mode 100644 index 00000000..ed2891ff --- /dev/null +++ b/types/ui5_serve.d.ts @@ -0,0 +1,4 @@ +declare module "@ui5/server" { + import { ProjectGraph } from "@ui5/project/graph"; + function serve(graph: ProjectGraph, configuration: Record): Function; +} From c3b7e47987d13cc96e4cac6f8710f7f0b8224292 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Oct 2023 15:22:39 +0300 Subject: [PATCH 2/9] Refine types and provide the correct namespaces --- types/MiddlewareParameters.d.ts | 35 +++++++++++++++ types/MiddlewareUtil.d.ts | 75 +++------------------------------ types/TaskUtil.d.ts | 41 ++++++++++++++++++ types/index.d.ts | 4 +- types/ui5_serve.d.ts | 3 ++ 5 files changed, 88 insertions(+), 70 deletions(-) create mode 100644 types/MiddlewareParameters.d.ts create mode 100644 types/TaskUtil.d.ts diff --git a/types/MiddlewareParameters.d.ts b/types/MiddlewareParameters.d.ts new file mode 100644 index 00000000..a2612b2c --- /dev/null +++ b/types/MiddlewareParameters.d.ts @@ -0,0 +1,35 @@ +declare module "@ui5/server/middleware/MiddlewareParameters" { + import { availableSpecVersions } from "@ui5/server"; + import { MiddlewareUtil } from "@ui5/server/middleware/MiddlewareUtil"; + import { TaskUtil } from "@ui5/project/build/helpers/TaskUtil"; + + // Mock some of the types, so it would be easier to follow + type ui5_logger_Logger = object + type ui5_fs_AbstractReader = object + + interface MiddlewareParametersBase { + log: ui5_logger_Logger + options: { + configuration?: Record + } + resources: { + all: ui5_fs_AbstractReader + rootProject: ui5_fs_AbstractReader + dependencies: ui5_fs_AbstractReader + }, + } + + interface MiddlewareParameters_2_0 extends MiddlewareParametersBase { + middlewareUtil: MiddlewareUtil; + } + + interface MiddlewareParameters_2_2 extends MiddlewareParameters_2_0 { + taskUtil: TaskUtil + } + + type MiddlewareParameters = specVersion extends "2.0" + ? MiddlewareParameters_2_0 + : specVersion extends availableSpecVersions + ? MiddlewareParameters_2_2 + : MiddlewareParametersBase +} diff --git a/types/MiddlewareUtil.d.ts b/types/MiddlewareUtil.d.ts index e44fab06..d3e7e451 100644 --- a/types/MiddlewareUtil.d.ts +++ b/types/MiddlewareUtil.d.ts @@ -1,25 +1,16 @@ declare module "@ui5/server/middleware/MiddlewareUtil" { + import { availableSpecVersions } from "@ui5/server"; + + // Mock some of the types, so it would be easier to follow + type ui5_fs_resourceFactory = object + type ui5_fs_Resource = object + type MimeInfo = { type: string charset: string contentType: string }; - type ui5_logger_Logger = object - type ui5_fs_resourceFactory = object - type ui5_fs_Resource = object - type ui5_fs_AbstractReader = object - type ProjectInterface = object - - type StandardBuildTags = { - OmitFromBuildResult: string - IsBundle: string - IsDebugVariant: string - HasDebugVariant: string - } - - type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; - type MiddlewareUtil = specVersion extends "2.0" ? MiddlewareUtil_v2_0 : specVersion extends "3.0" | "2.2" @@ -42,58 +33,4 @@ declare module "@ui5/server/middleware/MiddlewareUtil" { class MiddlewareUtil_v3_2 extends MiddlewareUtil_v3_0 { someFutureMethod(); } - - - type TaskUtil = specVersion extends "2.2" - ? TaskUtil_v2_2 - : specVersion extends "3.0" - ? TaskUtil_v3_0 - : specVersion extends "3.2" - ? TaskUtil_v3_2 - : never; - - class TaskUtil_v2_2 { - STANDARD_TAGS: StandardBuildTags - resourceFactory: ui5_fs_resourceFactory - getDependencies(projectName?: string): string[] - getProject(projectNameOrResource?: ProjectInterface | undefined) - isRootProject(): boolean - registerCleanupTask(callback: CallableFunction): never - } - - class TaskUtil_v3_0 extends TaskUtil_v2_2 { - clearTag(resource: ui5_fs_Resource, tag: string): never - getTag(resource: ui5_fs_Resource, tag: string): string | boolean | number | undefined - setTag(resource: ui5_fs_Resource, tag: string, value: string | boolean | number): never - } - - class TaskUtil_v3_2 extends TaskUtil_v3_0 { - someFutureMethod(); - } - - interface MiddlewareParametersBase { - log: ui5_logger_Logger - options: { - configuration?: Record - } - resources: { - all: ui5_fs_AbstractReader - rootProject: ui5_fs_AbstractReader - dependencies: ui5_fs_AbstractReader - }, - } - - interface MiddlewareParameters_2_0 extends MiddlewareParametersBase { - middlewareUtil: MiddlewareUtil; - } - - interface MiddlewareParameters_2_2 extends MiddlewareParameters_2_0 { - taskUtil: TaskUtil - } - - type MiddlewareParameters = specVersion extends "2.0" - ? MiddlewareParameters_2_0 - : specVersion extends availableSpecVersions - ? MiddlewareParameters_2_2 - : MiddlewareParametersBase } diff --git a/types/TaskUtil.d.ts b/types/TaskUtil.d.ts new file mode 100644 index 00000000..f228a787 --- /dev/null +++ b/types/TaskUtil.d.ts @@ -0,0 +1,41 @@ +declare module "@ui5/project/build/helpers/TaskUtil" { + import { availableSpecVersions } from "@ui5/server"; + + // Mock some of the types, so it would be easier to follow + type ui5_fs_resourceFactory = object + type ProjectInterface = object + + type StandardBuildTags = { + OmitFromBuildResult: string + IsBundle: string + IsDebugVariant: string + HasDebugVariant: string + } + + type TaskUtil = specVersion extends "2.2" + ? TaskUtil_v2_2 + : specVersion extends "3.0" + ? TaskUtil_v3_0 + : specVersion extends "3.2" + ? TaskUtil_v3_2 + : never; + + class TaskUtil_v2_2 { + STANDARD_TAGS: StandardBuildTags + resourceFactory: ui5_fs_resourceFactory + getDependencies(projectName?: string): string[] + getProject(projectNameOrResource?: ProjectInterface | undefined) + isRootProject(): boolean + registerCleanupTask(callback: CallableFunction): never + } + + class TaskUtil_v3_0 extends TaskUtil_v2_2 { + clearTag(resource: ui5_fs_Resource, tag: string): never + getTag(resource: ui5_fs_Resource, tag: string): string | boolean | number | undefined + setTag(resource: ui5_fs_Resource, tag: string, value: string | boolean | number): never + } + + class TaskUtil_v3_2 extends TaskUtil_v3_0 { + someFutureMethod(); + } +} \ No newline at end of file diff --git a/types/index.d.ts b/types/index.d.ts index fee65dfd..0421496a 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,4 +1,6 @@ // Reference multiple definitions, so they could act like a bundle +/// /// -/// \ No newline at end of file +/// +/// \ No newline at end of file diff --git a/types/ui5_serve.d.ts b/types/ui5_serve.d.ts index ed2891ff..a973d46e 100644 --- a/types/ui5_serve.d.ts +++ b/types/ui5_serve.d.ts @@ -1,4 +1,7 @@ declare module "@ui5/server" { import { ProjectGraph } from "@ui5/project/graph"; + function serve(graph: ProjectGraph, configuration: Record): Function; + + type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; } From e872904836a5f9f3b0b6c49696552933b5b9f795 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Oct 2023 15:33:19 +0300 Subject: [PATCH 3/9] Add comments --- types/ui5_serve.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/ui5_serve.d.ts b/types/ui5_serve.d.ts index a973d46e..a3bd747d 100644 --- a/types/ui5_serve.d.ts +++ b/types/ui5_serve.d.ts @@ -3,5 +3,6 @@ declare module "@ui5/server" { function serve(graph: ProjectGraph, configuration: Record): Function; + // This one should be (eventually) provided globally or as a part of @ui5/server/Specification type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; } From cfeb414e4f7b3ccabe429f285e11436e8bf1c857 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Oct 2023 15:42:19 +0300 Subject: [PATCH 4/9] Refactor definitions --- types/MiddlewareParameters.d.ts | 4 +++- types/MiddlewareUtil.d.ts | 3 ++- types/TaskUtil.d.ts | 41 --------------------------------- types/ui5_serve.d.ts | 3 --- 4 files changed, 5 insertions(+), 46 deletions(-) delete mode 100644 types/TaskUtil.d.ts diff --git a/types/MiddlewareParameters.d.ts b/types/MiddlewareParameters.d.ts index a2612b2c..91f09391 100644 --- a/types/MiddlewareParameters.d.ts +++ b/types/MiddlewareParameters.d.ts @@ -1,11 +1,13 @@ declare module "@ui5/server/middleware/MiddlewareParameters" { - import { availableSpecVersions } from "@ui5/server"; import { MiddlewareUtil } from "@ui5/server/middleware/MiddlewareUtil"; import { TaskUtil } from "@ui5/project/build/helpers/TaskUtil"; // Mock some of the types, so it would be easier to follow type ui5_logger_Logger = object type ui5_fs_AbstractReader = object + + // This one should be (eventually) provided globally or as a part of @ui5/project/Specification + type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; interface MiddlewareParametersBase { log: ui5_logger_Logger diff --git a/types/MiddlewareUtil.d.ts b/types/MiddlewareUtil.d.ts index d3e7e451..0c554ca3 100644 --- a/types/MiddlewareUtil.d.ts +++ b/types/MiddlewareUtil.d.ts @@ -1,5 +1,6 @@ declare module "@ui5/server/middleware/MiddlewareUtil" { - import { availableSpecVersions } from "@ui5/server"; + // This one should be (eventually) provided globally or as a part of @ui5/project/Specification + type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; // Mock some of the types, so it would be easier to follow type ui5_fs_resourceFactory = object diff --git a/types/TaskUtil.d.ts b/types/TaskUtil.d.ts deleted file mode 100644 index f228a787..00000000 --- a/types/TaskUtil.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -declare module "@ui5/project/build/helpers/TaskUtil" { - import { availableSpecVersions } from "@ui5/server"; - - // Mock some of the types, so it would be easier to follow - type ui5_fs_resourceFactory = object - type ProjectInterface = object - - type StandardBuildTags = { - OmitFromBuildResult: string - IsBundle: string - IsDebugVariant: string - HasDebugVariant: string - } - - type TaskUtil = specVersion extends "2.2" - ? TaskUtil_v2_2 - : specVersion extends "3.0" - ? TaskUtil_v3_0 - : specVersion extends "3.2" - ? TaskUtil_v3_2 - : never; - - class TaskUtil_v2_2 { - STANDARD_TAGS: StandardBuildTags - resourceFactory: ui5_fs_resourceFactory - getDependencies(projectName?: string): string[] - getProject(projectNameOrResource?: ProjectInterface | undefined) - isRootProject(): boolean - registerCleanupTask(callback: CallableFunction): never - } - - class TaskUtil_v3_0 extends TaskUtil_v2_2 { - clearTag(resource: ui5_fs_Resource, tag: string): never - getTag(resource: ui5_fs_Resource, tag: string): string | boolean | number | undefined - setTag(resource: ui5_fs_Resource, tag: string, value: string | boolean | number): never - } - - class TaskUtil_v3_2 extends TaskUtil_v3_0 { - someFutureMethod(); - } -} \ No newline at end of file diff --git a/types/ui5_serve.d.ts b/types/ui5_serve.d.ts index a3bd747d..c456d884 100644 --- a/types/ui5_serve.d.ts +++ b/types/ui5_serve.d.ts @@ -2,7 +2,4 @@ declare module "@ui5/server" { import { ProjectGraph } from "@ui5/project/graph"; function serve(graph: ProjectGraph, configuration: Record): Function; - - // This one should be (eventually) provided globally or as a part of @ui5/server/Specification - type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; } From 6222bd34f5747251de4351fc5756e14125d09830 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Oct 2023 15:50:55 +0300 Subject: [PATCH 5/9] Fix definitions --- types/index.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/types/index.d.ts b/types/index.d.ts index 0421496a..bcfe5137 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -2,5 +2,4 @@ /// /// -/// /// \ No newline at end of file From 1c8864738b6d5e322659088fa6ef44758156068f Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Wed, 18 Oct 2023 13:53:11 +0300 Subject: [PATCH 6/9] Include explicitly type defs from the other "@ui5/*" projects --- types/MiddlewareParameters.d.ts | 2 ++ types/ui5_serve.d.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/types/MiddlewareParameters.d.ts b/types/MiddlewareParameters.d.ts index 91f09391..b074781a 100644 --- a/types/MiddlewareParameters.d.ts +++ b/types/MiddlewareParameters.d.ts @@ -1,3 +1,5 @@ +import "@ui5/server/types"; +import "@ui5/project/types"; declare module "@ui5/server/middleware/MiddlewareParameters" { import { MiddlewareUtil } from "@ui5/server/middleware/MiddlewareUtil"; import { TaskUtil } from "@ui5/project/build/helpers/TaskUtil"; diff --git a/types/ui5_serve.d.ts b/types/ui5_serve.d.ts index c456d884..185c3265 100644 --- a/types/ui5_serve.d.ts +++ b/types/ui5_serve.d.ts @@ -1,3 +1,4 @@ +import "@ui5/project/types" declare module "@ui5/server" { import { ProjectGraph } from "@ui5/project/graph"; From 5a41451d4f5e22b4a51a7edf6d7d13f2642551af Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Wed, 18 Oct 2023 14:12:35 +0300 Subject: [PATCH 7/9] Scope imports --- types/MiddlewareParameters.d.ts | 5 +++-- types/ui5_serve.d.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/types/MiddlewareParameters.d.ts b/types/MiddlewareParameters.d.ts index b074781a..1fd556c9 100644 --- a/types/MiddlewareParameters.d.ts +++ b/types/MiddlewareParameters.d.ts @@ -1,6 +1,7 @@ -import "@ui5/server/types"; -import "@ui5/project/types"; declare module "@ui5/server/middleware/MiddlewareParameters" { + import "@ui5/server/types"; + import "@ui5/project/types"; + import { MiddlewareUtil } from "@ui5/server/middleware/MiddlewareUtil"; import { TaskUtil } from "@ui5/project/build/helpers/TaskUtil"; diff --git a/types/ui5_serve.d.ts b/types/ui5_serve.d.ts index 185c3265..850f6465 100644 --- a/types/ui5_serve.d.ts +++ b/types/ui5_serve.d.ts @@ -1,5 +1,5 @@ -import "@ui5/project/types" declare module "@ui5/server" { + import "@ui5/project/types" import { ProjectGraph } from "@ui5/project/graph"; function serve(graph: ProjectGraph, configuration: Record): Function; From 1302e6d7129bff1919ab47974f4ea036864b37b1 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Fri, 20 Oct 2023 15:16:06 +0300 Subject: [PATCH 8/9] Remove ambient modules and use package.json export's conditional syntax instead --- package.json | 17 +++++---- types/MiddlewareParameters.d.ts | 61 +++++++++++++++------------------ types/MiddlewareUtil.d.ts | 60 ++++++++++++++++---------------- types/index.d.ts | 8 ++--- types/ui5_serve.d.ts | 7 ++-- 5 files changed, 73 insertions(+), 80 deletions(-) diff --git a/package.json b/package.json index d52a0be0..91dfe3c8 100644 --- a/package.json +++ b/package.json @@ -18,12 +18,17 @@ ], "type": "module", "exports": { - ".": "./lib/server.js", + ".": { + "default": "./lib/server.js", + "types": "./types/ui5_serve.d.ts" + }, + "./middleware/*": { + "types": "./types/index.d.ts" + }, "./internal/sslUtil": "./lib/sslUtil.js", "./internal/middlewareRepository": "./lib/middleware/middlewareRepository.js", "./internal/MiddlewareManager": "./lib/middleware/MiddlewareManager.js", - "./package.json": "./package.json", - "./types": "./types/index.d.ts" + "./package.json": "./package.json" }, "engines": { "node": "^16.18.0 || >=18.12.0", @@ -142,18 +147,18 @@ "ava": "^5.3.1", "chokidar-cli": "^3.0.0", "cross-env": "^7.0.3", - "depcheck": "^1.4.6", + "depcheck": "^1.4.7", "docdash": "^2.0.2", "eslint": "^8.51.0", "eslint-config-google": "^0.14.0", "eslint-plugin-ava": "^14.0.0", "eslint-plugin-jsdoc": "^46.8.2", - "esmock": "^2.5.5", + "esmock": "^2.5.6", "jsdoc": "^4.0.2", "nyc": "^15.1.0", "open-cli": "^7.2.0", "rimraf": "^5.0.5", - "sinon": "^16.1.0", + "sinon": "^16.1.3", "supertest": "^6.3.3", "tap-xunit": "^2.4.1" } diff --git a/types/MiddlewareParameters.d.ts b/types/MiddlewareParameters.d.ts index 1fd556c9..b632f93a 100644 --- a/types/MiddlewareParameters.d.ts +++ b/types/MiddlewareParameters.d.ts @@ -1,40 +1,35 @@ -declare module "@ui5/server/middleware/MiddlewareParameters" { - import "@ui5/server/types"; - import "@ui5/project/types"; +import type { MiddlewareUtil } from "./MiddlewareUtil.d.ts"; +import type { TaskUtil } from "@ui5/project/build/helpers/TaskUtil"; - import { MiddlewareUtil } from "@ui5/server/middleware/MiddlewareUtil"; - import { TaskUtil } from "@ui5/project/build/helpers/TaskUtil"; - - // Mock some of the types, so it would be easier to follow - type ui5_logger_Logger = object - type ui5_fs_AbstractReader = object - - // This one should be (eventually) provided globally or as a part of @ui5/project/Specification - type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; +// Mock some of the types, so it would be easier to follow +declare type ui5_logger_Logger = object +declare type ui5_fs_AbstractReader = object - interface MiddlewareParametersBase { - log: ui5_logger_Logger - options: { - configuration?: Record - } - resources: { - all: ui5_fs_AbstractReader - rootProject: ui5_fs_AbstractReader - dependencies: ui5_fs_AbstractReader - }, - } +// This one should be (eventually) provided globally or as a part of @ui5/project/Specification +declare type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; - interface MiddlewareParameters_2_0 extends MiddlewareParametersBase { - middlewareUtil: MiddlewareUtil; +declare interface MiddlewareParametersBase { + log: ui5_logger_Logger + options: { + configuration?: Record } + resources: { + all: ui5_fs_AbstractReader + rootProject: ui5_fs_AbstractReader + dependencies: ui5_fs_AbstractReader + }, +} - interface MiddlewareParameters_2_2 extends MiddlewareParameters_2_0 { - taskUtil: TaskUtil - } +declare interface MiddlewareParameters_2_0 extends MiddlewareParametersBase { + middlewareUtil: MiddlewareUtil; +} - type MiddlewareParameters = specVersion extends "2.0" - ? MiddlewareParameters_2_0 - : specVersion extends availableSpecVersions - ? MiddlewareParameters_2_2 - : MiddlewareParametersBase +declare interface MiddlewareParameters_2_2 extends MiddlewareParameters_2_0 { + taskUtil: TaskUtil } + +export declare type MiddlewareParameters = specVersion extends "2.0" + ? MiddlewareParameters_2_0 + : specVersion extends availableSpecVersions + ? MiddlewareParameters_2_2 + : MiddlewareParametersBase diff --git a/types/MiddlewareUtil.d.ts b/types/MiddlewareUtil.d.ts index 0c554ca3..3b84b54c 100644 --- a/types/MiddlewareUtil.d.ts +++ b/types/MiddlewareUtil.d.ts @@ -1,37 +1,35 @@ -declare module "@ui5/server/middleware/MiddlewareUtil" { - // This one should be (eventually) provided globally or as a part of @ui5/project/Specification - type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; +// This one should be (eventually) provided globally or as a part of @ui5/project/Specification +declare type availableSpecVersions = "2.0" | "2.2" | "3.0" | "3.2"; - // Mock some of the types, so it would be easier to follow - type ui5_fs_resourceFactory = object - type ui5_fs_Resource = object +// Mock some of the types, so it would be easier to follow +declare type ui5_fs_resourceFactory = object +declare type ui5_fs_Resource = object - type MimeInfo = { - type: string - charset: string - contentType: string - }; +declare type MimeInfo = { + type: string + charset: string + contentType: string +}; - type MiddlewareUtil = specVersion extends "2.0" - ? MiddlewareUtil_v2_0 - : specVersion extends "3.0" | "2.2" - ? MiddlewareUtil_v3_0 - : specVersion extends "3.2" - ? MiddlewareUtil_v3_2 - : never; - - class MiddlewareUtil_v2_0 { - resourceFactory: ui5_fs_resourceFactory - getPathname(req: object): string - getMimeInfo(resourcePath: object): MimeInfo - } +declare class MiddlewareUtil_v2_0 { + resourceFactory: ui5_fs_resourceFactory + getPathname(req: object): string + getMimeInfo(resourcePath: object): MimeInfo +} - class MiddlewareUtil_v3_0 extends MiddlewareUtil_v2_0 { - getDependencies(projectName?: string): string[] - getProject(projectNameOrResource?: string | ui5_fs_Resource) - } +declare class MiddlewareUtil_v3_0 extends MiddlewareUtil_v2_0 { + getDependencies(projectName?: string): string[] + getProject(projectNameOrResource?: string | ui5_fs_Resource) +} - class MiddlewareUtil_v3_2 extends MiddlewareUtil_v3_0 { - someFutureMethod(); - } +declare class MiddlewareUtil_v3_2 extends MiddlewareUtil_v3_0 { + someFutureMethod(); } + +export declare type MiddlewareUtil = specVersion extends "2.0" + ? MiddlewareUtil_v2_0 + : specVersion extends "3.0" | "2.2" + ? MiddlewareUtil_v3_0 + : specVersion extends "3.2" + ? MiddlewareUtil_v3_2 + : never; diff --git a/types/index.d.ts b/types/index.d.ts index bcfe5137..1b12da76 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,5 +1,3 @@ -// Reference multiple definitions, so they could act like a bundle - -/// -/// -/// \ No newline at end of file +// Re exporting types from other modules +export type { MiddlewareParameters } from "./MiddlewareParameters.d.ts"; +export type { MiddlewareUtil } from "./MiddlewareUtil.d.ts"; \ No newline at end of file diff --git a/types/ui5_serve.d.ts b/types/ui5_serve.d.ts index 850f6465..94075ad9 100644 --- a/types/ui5_serve.d.ts +++ b/types/ui5_serve.d.ts @@ -1,6 +1,3 @@ -declare module "@ui5/server" { - import "@ui5/project/types" - import { ProjectGraph } from "@ui5/project/graph"; +import type { ProjectGraph } from "@ui5/project/graph"; - function serve(graph: ProjectGraph, configuration: Record): Function; -} +export declare function serve(graph: ProjectGraph, configuration: Record): Function; From 4b119ea1ca2938c8d36bd050490ce5c09290189d Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Fri, 20 Oct 2023 15:18:40 +0300 Subject: [PATCH 9/9] Add .tsconfig file --- tsconfig.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 tsconfig.json diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..bfce1eb8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "esnext", + "noEmit": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "allowSyntheticDefaultImports": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + }, +}