@websimai/client-api-types 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  # @websimai/client-api-types
2
2
 
3
- Type declarations for `window.websim` object
3
+ Type declarations for the `window.websim` object
@@ -0,0 +1,282 @@
1
+ import { WebsimComment } from "@websimai/shared-types";
2
+
3
+ //#region src/types/chat.d.ts
4
+ type ChatCompletionsMessageRole = "system" | "user" | "assistant" | "tool";
5
+ type ChatCompletionsMessageContent = {
6
+ /**
7
+ * The type of content part.
8
+ */
9
+ type: "text";
10
+ /**
11
+ * The text content.
12
+ */
13
+ text: string;
14
+ } | {
15
+ /**
16
+ * The type of content part.
17
+ */
18
+ type: "image_url";
19
+ /**
20
+ * An object containing the base64 encoded image data URL.
21
+ */
22
+ image_url: {
23
+ /**
24
+ * A base64 encoded image data URL.
25
+ */
26
+ url: string;
27
+ };
28
+ };
29
+ /**
30
+ * Represents a single message in the conversation history.
31
+ */
32
+ type ChatCompletionsMessage = {
33
+ /**
34
+ * The role of the message sender.
35
+ */
36
+ role: ChatCompletionsMessageRole;
37
+ /**
38
+ * The message content.
39
+ * Can be plain text or an array for multimodal inputs.
40
+ */
41
+ content: string | ChatCompletionsMessageContent[];
42
+ };
43
+ type ChatCompletionOptions = {
44
+ /**
45
+ * A list of messages comprising the conversation so far.
46
+ * Each message includes a `role` (system, user, assistant, tool) and `content`.
47
+ */
48
+ messages: ChatCompletionsMessage[];
49
+ /**
50
+ * ID of the model to use.
51
+ * If not specified, websim uses its default model.
52
+ */
53
+ model?: string;
54
+ /**
55
+ * If `true`, the model will attempt to generate a JSON object.
56
+ * The response content will be a string that you will need to parse.
57
+ * Defaults to `false`.
58
+ */
59
+ json?: boolean;
60
+ /**
61
+ * If `true`, the response will be streamed back incrementally.
62
+ * Defaults to `false`.
63
+ */
64
+ stream?: boolean;
65
+ /**
66
+ * What sampling temperature to use, between 0 and 2.
67
+ * Higher values (e.g., 0.8) make the output more random; lower values (e.g., 0.2) make it more focused.
68
+ * Defaults to 1.
69
+ */
70
+ temperature?: number;
71
+ /**
72
+ * An alternative to sampling with temperature, where the model considers tokens with top_p probability mass.
73
+ * E.g., 0.1 means only tokens comprising the top 10% probability mass are considered.
74
+ * Defaults to 1.
75
+ */
76
+ top_p?: number;
77
+ /**
78
+ * The maximum number of tokens to generate in the chat completion.
79
+ */
80
+ max_tokens?: number;
81
+ };
82
+ type ChatCompletionResult = {
83
+ /**
84
+ * The generated text content from the assistant.
85
+ */
86
+ readonly content: string;
87
+ /**
88
+ * The role of the message sender, which will always be "assistant" for the model's response.
89
+ */
90
+ readonly role: "assistant";
91
+ };
92
+ declare namespace ChatCompletions {
93
+ type MessageRole = ChatCompletionsMessageRole;
94
+ type ContentPart = ChatCompletionsMessageContent;
95
+ type Message = ChatCompletionsMessage;
96
+ type Options = ChatCompletionOptions;
97
+ type Result = ChatCompletionResult;
98
+ }
99
+ declare class Chat {
100
+ readonly completions: {
101
+ create(args: ChatCompletionOptions): Promise<ChatCompletionResult>;
102
+ };
103
+ }
104
+ //#endregion
105
+ //#region src/types/image-gen.d.ts
106
+ type ImageGenAspectRatio = "1:1" | "16:9" | "21:9" | "3:2" | "2:3" | "4:5" | "5:4" | "3:4" | "4:3" | "9:16" | "9:21";
107
+ type ImageGenOptions = {
108
+ /**
109
+ * The primary text prompt describing the image to generate.
110
+ * This is a required parameter.
111
+ */
112
+ prompt: string;
113
+ /**
114
+ * Optional aspect ratio for the generated image.
115
+ * Defaults to "1:1".
116
+ * If `width` and `height` are provided, this parameter will be ignored.
117
+ */
118
+ aspect_ratio?: ImageGenAspectRatio;
119
+ /**
120
+ * Optional width of the generated image in pixels.
121
+ * If provided along with `height`, it overrides `aspect_ratio`.
122
+ */
123
+ width?: number;
124
+ /**
125
+ * Optional height of the generated image in pixels.
126
+ * If provided along with `width`, it overrides `aspect_ratio`.
127
+ */
128
+ height?: number;
129
+ /**
130
+ * Optional boolean.
131
+ * If `true`, the generated image will have a transparent background.
132
+ * Defaults to `false`.
133
+ */
134
+ transparent?: boolean;
135
+ /**
136
+ * Optional array of image inputs.
137
+ * Each object in the array should have a `url` property, which is a base64 encoded image data URL.
138
+ * Supports 1-4 input images for image-to-image generation.
139
+ */
140
+ image_inputs?: {
141
+ url: string;
142
+ }[];
143
+ /**
144
+ * Optional seed for the image generation process.
145
+ * Using the same prompt and seed will produce variations of the same output, useful for consistent results or exploring variations.
146
+ */
147
+ seed?: number;
148
+ };
149
+ type ImageGenResult = {
150
+ /**
151
+ * The URL of the generated image.
152
+ * This URL can be used to display the image.
153
+ */
154
+ readonly url: `https://${string}/${string}`;
155
+ };
156
+ declare namespace ImageGen {
157
+ type AspectRatio = ImageGenAspectRatio;
158
+ type Options = ImageGenOptions;
159
+ type Result = ImageGenResult;
160
+ }
161
+ //#endregion
162
+ //#region src/types/text-to-speech.d.ts
163
+ type TextToSpeechOptions = {
164
+ /**
165
+ * The text string to synthesize to speech.
166
+ */
167
+ text: string;
168
+ /**
169
+ * Voice identifier (e.g., "en-male") or ElevenLabs voice ID for a specific voice.
170
+ */
171
+ voice?: string;
172
+ /**
173
+ * Desired audio format.
174
+ * Defaults to "mp3".
175
+ */
176
+ format?: "mp3" | "wav";
177
+ /**
178
+ * Playback speed multiplier.
179
+ * Typical range 0.5 - 2.0.
180
+ */
181
+ speed?: number;
182
+ /**
183
+ * Pitch adjustment in semitones.
184
+ * Typical range -12 to 12.
185
+ */
186
+ pitch?: number;
187
+ };
188
+ type TextToSpeechResult = {
189
+ /**
190
+ * A public URL pointing to the generated audio file.
191
+ */
192
+ readonly url: `https://${string}/${string}`;
193
+ };
194
+ //#endregion
195
+ //#region src/types/user.d.ts
196
+ type AnonymousWebsimUser = {
197
+ readonly id: "1";
198
+ readonly username: "anonymous";
199
+ readonly avatar_url: null;
200
+ };
201
+ type WebsimUser = {
202
+ readonly id: string;
203
+ readonly username: string;
204
+ readonly avatar_url: `https://${string}/${string}` | null;
205
+ };
206
+ type WebsimUserOrAnonymous = WebsimUser | AnonymousWebsimUser;
207
+ //#endregion
208
+ //#region src/client-api.d.ts
209
+ interface WebsimClientAPI {
210
+ getUser(): Promise<WebsimUserOrAnonymous>;
211
+ /** Alias for getUser */
212
+ getCurrentUser(): Promise<WebsimUserOrAnonymous>;
213
+ /** @deprecated Use getBootstrap instead */
214
+ getDistinctId(): Promise<string>;
215
+ getBootstrap(): Promise<{
216
+ readonly distinct_id: string;
217
+ readonly session_id: string;
218
+ }>;
219
+ getCreatedBy(): Promise<WebsimUser>;
220
+ /** Alias for getCreatedBy */
221
+ getCreator(): Promise<WebsimUser>;
222
+ getCurrentProject(): Promise<{
223
+ readonly id: string;
224
+ readonly title: string;
225
+ readonly description: string;
226
+ }>;
227
+ getColorScheme(): Promise<"light" | "dark">;
228
+ postComment(args: {
229
+ content: string;
230
+ credits?: number;
231
+ images?: string[];
232
+ }): Promise<{
233
+ readonly error?: "User has not interacted with the page";
234
+ }>;
235
+ renderVideo(args: {
236
+ composition: string;
237
+ inputProps?: Record<string, unknown>;
238
+ options?: unknown;
239
+ onProgress?: (progress: unknown) => void;
240
+ }): Promise<{
241
+ url: string;
242
+ renderId: string;
243
+ }>;
244
+ addEventListener(eventType: "comment:created", callback: (data: {
245
+ readonly comment: WebsimComment;
246
+ readonly cursor: string;
247
+ }) => void): () => void;
248
+ upload(file: File): Promise<string>;
249
+ readonly chat: Chat;
250
+ imageGen(args: ImageGenOptions): Promise<ImageGenResult>;
251
+ textToSpeech(args: TextToSpeechOptions): Promise<TextToSpeechResult>;
252
+ readonly experimental?: {
253
+ readonly v0: {
254
+ login(): Promise<void>;
255
+ /**
256
+ * Saves the given htmlContent to a new websim site.
257
+ * @param htmlContent html content to save
258
+ * @returns object with id of the saved site
259
+ */
260
+ save(htmlContent: string): Promise<{
261
+ id: string;
262
+ }>;
263
+ /**
264
+ * Returns the HTML for the given siteId.
265
+ * Defaults to the current websimsite.
266
+ * @param siteId
267
+ * @returns HTML for the given siteId.
268
+ */
269
+ getHTML(siteId?: string): Promise<string>;
270
+ };
271
+ };
272
+ }
273
+ //#endregion
274
+ //#region src/globals.d.ts
275
+ declare global {
276
+ interface Window {
277
+ readonly websim: WebsimClientAPI;
278
+ }
279
+ const websim: WebsimClientAPI;
280
+ }
281
+ //#endregion
282
+ export { AnonymousWebsimUser, Chat, ChatCompletionOptions, ChatCompletionResult, ChatCompletions, ChatCompletionsMessage, ChatCompletionsMessageContent, ChatCompletionsMessageRole, ImageGen, ImageGenAspectRatio, ImageGenOptions, ImageGenResult, TextToSpeechOptions, TextToSpeechResult, type WebsimClientAPI, WebsimUser, WebsimUserOrAnonymous };
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ export { };
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@websimai/client-api-types",
3
- "version": "0.0.2",
4
- "description": "Type declarations for `window.websim` object",
3
+ "version": "0.0.4",
4
+ "description": "Type declarations for the `window.websim` object",
5
+ "type": "module",
5
6
  "author": "GameRoMan",
6
7
  "license": "MIT",
7
- "types": "./src/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./src/index.d.ts"
11
- }
8
+ "publishConfig": {
9
+ "access": "public"
12
10
  },
13
- "scripts": {
14
- "publish": "bun publish --access public"
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/websimnpm/websim.git",
14
+ "directory": "packages/client-api-types"
15
15
  },
16
16
  "keywords": [
17
17
  "websim",
@@ -20,7 +20,26 @@
20
20
  "types",
21
21
  "typescript"
22
22
  ],
23
- "peerDependencies": {
24
- "typescript": "^5.9.2"
23
+ "scripts": {
24
+ "build": "bunx --bun tsdown",
25
+ "npm:publish": "bun run build && bun publish"
26
+ },
27
+ "files": [
28
+ "dist/**/*",
29
+ "README.md",
30
+ "LICENSE"
31
+ ],
32
+ "main": "./dist/index.mjs",
33
+ "module": "./dist/index.mjs",
34
+ "types": "./dist/index.d.mts",
35
+ "exports": {
36
+ ".": "./dist/index.mjs",
37
+ "./package.json": "./package.json"
38
+ },
39
+ "dependencies": {
40
+ "@websimai/shared-types": "workspace:*"
41
+ },
42
+ "devDependencies": {
43
+ "tsdown": "catalog:"
25
44
  }
26
45
  }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Roman A
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,74 +0,0 @@
1
- import type { WebsimUser, WebsimUserOrAnonymous } from "./types";
2
-
3
- import type { ChatCompletionOptions, ChatCompletionResult } from "./types";
4
-
5
- import type { ImageGenOptions, ImageGenResult } from "./types";
6
-
7
- import type { TextToSpeechOptions, TextToSpeechResult } from "./types";
8
-
9
- export interface WebsimClientAPI {
10
- getUser(): Promise<WebsimUserOrAnonymous>;
11
- /** Alias for getUser */
12
- getCurrentUser(): Promise<WebsimUserOrAnonymous>;
13
- /** @deprecated Use getBootstrap instead */
14
- getDistinctId(): Promise<string>;
15
- getBootstrap(): Promise<{
16
- readonly distinct_id: string;
17
- readonly session_id: string;
18
- }>;
19
- getCreatedBy(): Promise<WebsimUser>;
20
- /** Alias for getCreatedBy */
21
- getCreator(): Promise<WebsimUser>;
22
- getCurrentProject(): Promise<{
23
- readonly id: string;
24
- readonly title: string;
25
- readonly description: string;
26
- }>;
27
- getColorScheme(): Promise<"light" | "dark">;
28
-
29
- postComment(args: {
30
- content: string;
31
- credits?: number;
32
- images?: string[];
33
- }): Promise<{ readonly error?: "User has not interacted with the page" }>;
34
-
35
- addEventListener(
36
- eventType: "comment:created",
37
- callback: (data: any) => void
38
- ): () => void;
39
-
40
- upload: (file: File) => Promise<string>;
41
-
42
- readonly chat: {
43
- readonly completions: {
44
- create: (args: ChatCompletionOptions) => Promise<ChatCompletionResult>;
45
- };
46
- };
47
-
48
- imageGen: (args: ImageGenOptions) => Promise<ImageGenResult>;
49
-
50
- textToSpeech: (args: TextToSpeechOptions) => Promise<TextToSpeechResult>;
51
-
52
- experimental: {
53
- v0: {
54
- login: () => Promise<void>;
55
-
56
- /**
57
- * Saves the given htmlContent to a new websim site.
58
- * @param htmlContent html content to save
59
- * @returns object with id of the saved site
60
- */
61
- save(htmlContent: string): Promise<{ id: string }>;
62
-
63
- /**
64
- * Returns the HTML for the given siteId.
65
- * Defaults to the current websimsite.
66
- * @param siteId
67
- * @returns HTML for the given siteId.
68
- */
69
- getHTML(siteId?: string): Promise<string>;
70
- };
71
- };
72
-
73
- internal_only_experimental: {};
74
- }
package/src/globals.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import type { WebsimClientAPI } from "./client-api";
2
-
3
- declare global {
4
- interface Window {
5
- readonly websim: WebsimClientAPI;
6
- }
7
-
8
- declare const websim: WebsimClientAPI;
9
- }
package/src/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export type { WebsimClientAPI } from "./client-api";
2
- export type * from "./types";
3
-
4
- export type * from "./globals";
@@ -1,106 +0,0 @@
1
- export type ChatCompletionsMessageRole =
2
- | "system"
3
- | "user"
4
- | "assistant"
5
- | "tool";
6
-
7
- export type ChatCompletionsMessageContent =
8
- | {
9
- /**
10
- * The type of content part.
11
- */
12
- type: "text";
13
- /**
14
- * The text content.
15
- */
16
- text: string;
17
- }
18
- | {
19
- /**
20
- * The type of content part.
21
- */
22
- type: "image_url";
23
- /**
24
- * An object containing the base64 encoded image data URL.
25
- */
26
- image_url: {
27
- /**
28
- * A base64 encoded image data URL.
29
- */
30
- url: string;
31
- };
32
- };
33
-
34
- /**
35
- * Represents a single message in the conversation history.
36
- */
37
- export type ChatCompletionsMessage = {
38
- /**
39
- * The role of the message sender.
40
- */
41
- role: ChatCompletionsMessageRole;
42
- /**
43
- * The message content.
44
- * Can be plain text or an array for multimodal inputs.
45
- */
46
- content: string | ChatCompletionsMessageContent[];
47
- };
48
-
49
- export type ChatCompletionOptions = {
50
- /**
51
- * A list of messages comprising the conversation so far.
52
- * Each message includes a `role` (system, user, assistant, tool) and `content`.
53
- */
54
- messages: ChatCompletionsMessage[];
55
- /**
56
- * ID of the model to use.
57
- * If not specified, websim uses its default model.
58
- */
59
- model?: string;
60
- /**
61
- * If `true`, the model will attempt to generate a JSON object.
62
- * The response content will be a string that you will need to parse.
63
- * Defaults to `false`.
64
- */
65
- json?: boolean;
66
- /**
67
- * If `true`, the response will be streamed back incrementally.
68
- * Defaults to `false`.
69
- */
70
- stream?: boolean;
71
- /**
72
- * What sampling temperature to use, between 0 and 2.
73
- * Higher values (e.g., 0.8) make the output more random; lower values (e.g., 0.2) make it more focused.
74
- * Defaults to 1.
75
- */
76
- temperature?: number;
77
- /**
78
- * An alternative to sampling with temperature, where the model considers tokens with top_p probability mass.
79
- * E.g., 0.1 means only tokens comprising the top 10% probability mass are considered.
80
- * Defaults to 1.
81
- */
82
- top_p?: number;
83
- /**
84
- * The maximum number of tokens to generate in the chat completion.
85
- */
86
- max_tokens?: number;
87
- };
88
-
89
- export type ChatCompletionResult = {
90
- /**
91
- * The generated text content from the assistant.
92
- */
93
- readonly content: string;
94
- /**
95
- * The role of the message sender, which will always be "assistant" for the model's response.
96
- */
97
- readonly role: "assistant";
98
- };
99
-
100
- export namespace ChatCompletions {
101
- export type MessageRole = ChatCompletionsMessageRole;
102
- export type ContentPart = ChatCompletionsMessageContent;
103
- export type Message = ChatCompletionsMessage;
104
- export type Options = ChatCompletionOptions;
105
- export type Result = ChatCompletionResult;
106
- }
@@ -1,67 +0,0 @@
1
- export type ImageGenAspectRatio =
2
- | "1:1"
3
- | "16:9"
4
- | "21:9"
5
- | "3:2"
6
- | "2:3"
7
- | "4:5"
8
- | "5:4"
9
- | "3:4"
10
- | "4:3"
11
- | "9:16"
12
- | "9:21";
13
-
14
- export type ImageGenOptions = {
15
- /**
16
- * The primary text prompt describing the image to generate.
17
- * This is a required parameter.
18
- */
19
- prompt: string;
20
- /**
21
- * Optional aspect ratio for the generated image.
22
- * Defaults to "1:1".
23
- * If `width` and `height` are provided, this parameter will be ignored.
24
- */
25
- aspect_ratio?: ImageGenAspectRatio;
26
- /**
27
- * Optional width of the generated image in pixels.
28
- * If provided along with `height`, it overrides `aspect_ratio`.
29
- */
30
- width?: number;
31
- /**
32
- * Optional height of the generated image in pixels.
33
- * If provided along with `width`, it overrides `aspect_ratio`.
34
- */
35
- height?: number;
36
- /**
37
- * Optional boolean.
38
- * If `true`, the generated image will have a transparent background.
39
- * Defaults to `false`.
40
- */
41
- transparent?: boolean;
42
- /**
43
- * Optional array of image inputs.
44
- * Each object in the array should have a `url` property, which is a base64 encoded image data URL.
45
- * Supports 1-4 input images for image-to-image generation.
46
- */
47
- image_inputs?: { url: string }[];
48
- /**
49
- * Optional seed for the image generation process.
50
- * Using the same prompt and seed will produce variations of the same output, useful for consistent results or exploring variations.
51
- */
52
- seed?: number;
53
- };
54
-
55
- export type ImageGenResult = {
56
- /**
57
- * The URL of the generated image.
58
- * This URL can be used to display the image.
59
- */
60
- readonly url: `https://${string}/${string}`;
61
- };
62
-
63
- export namespace ImageGen {
64
- export type AspectRatio = ImageGenAspectRatio;
65
- export type Options = ImageGenOptions;
66
- export type Result = ImageGenResult;
67
- }
@@ -1,4 +0,0 @@
1
- export type * from "./chat";
2
- export type * from "./image-gen";
3
- export type * from "./user";
4
- export type * from "./text-to-speech";
@@ -1,32 +0,0 @@
1
- export type TextToSpeechOptions = {
2
- /**
3
- * The text string to synthesize to speech.
4
- */
5
- text: string;
6
- /**
7
- * Voice identifier (e.g., "en-male") or ElevenLabs voice ID for a specific voice.
8
- */
9
- voice?: string;
10
- /**
11
- * Desired audio format.
12
- * Defaults to "mp3".
13
- */
14
- format?: "mp3" | "wav";
15
- /**
16
- * Playback speed multiplier.
17
- * Typical range 0.5 - 2.0.
18
- */
19
- speed?: number;
20
- /**
21
- * Pitch adjustment in semitones.
22
- * Typical range -12 to 12.
23
- */
24
- pitch?: number;
25
- };
26
-
27
- export type TextToSpeechResult = {
28
- /**
29
- * A public URL pointing to the generated audio file.
30
- */
31
- readonly url: `https://${string}/${string}`;
32
- };
@@ -1,13 +0,0 @@
1
- export type AnonymousWebsimUser = {
2
- readonly id: "1";
3
- readonly username: "anonymous";
4
- readonly avatar_url: null;
5
- };
6
-
7
- export type WebsimUser = {
8
- readonly id: string;
9
- readonly username: string;
10
- readonly avatar_url: `https://${string}/${string}` | null;
11
- };
12
-
13
- export type WebsimUserOrAnonymous = WebsimUser | AnonymousWebsimUser;
package/tsconfig.json DELETED
@@ -1,28 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- // Environment setup & latest features
4
- "lib": ["ESNext", "DOM"],
5
- "target": "esnext",
6
- "module": "preserve",
7
- "moduleDetection": "force",
8
-
9
- // Bundler mode
10
- "moduleResolution": "bundler",
11
- "allowImportingTsExtensions": true,
12
- "noEmit": true,
13
-
14
- // Max strictness
15
- "strict": true,
16
- "skipLibCheck": true,
17
- "noFallthroughCasesInSwitch": true,
18
- "noUncheckedIndexedAccess": true,
19
- "noImplicitOverride": true,
20
- "noUnusedLocals": true,
21
- "noUnusedParameters": true,
22
- "noPropertyAccessFromIndexSignature": true,
23
- "noImplicitAny": true,
24
- "strictNullChecks": true,
25
- "forceConsistentCasingInFileNames": true,
26
- "verbatimModuleSyntax": true
27
- }
28
- }