@d-najd/universal-media-tracker-sdk 0.0.8 → 0.1.0
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/dist/index.d.ts +10 -58
- package/dist/index.js +91 -70
- package/dist/types/handler/base/baseHandler.d.ts +10 -0
- package/dist/types/handler/base/baseHandler.js +1 -0
- package/dist/types/handler/base/baseHandlerArgs.d.ts +6 -0
- package/dist/types/handler/base/baseHandlerArgs.js +1 -0
- package/dist/types/handler/base/baseHandlerResponse.d.ts +4 -0
- package/dist/types/handler/base/baseHandlerResponse.js +1 -0
- package/dist/types/handler/base/createHandler.d.ts +5 -0
- package/dist/types/handler/base/createHandler.js +1 -0
- package/dist/types/handler/base/handler.d.ts +8 -0
- package/dist/types/handler/base/handler.js +13 -0
- package/dist/types/handler/base/handlerTypes.d.ts +2 -0
- package/dist/types/handler/base/handlerTypes.js +1 -0
- package/dist/types/handler/media/baseResourceHandler.d.ts +9 -0
- package/dist/types/handler/media/baseResourceHandler.js +1 -0
- package/dist/types/handler/media/catalog/catalogHandlerArgs.d.ts +3 -0
- package/dist/types/handler/media/catalog/catalogHandlerArgs.js +1 -0
- package/dist/types/handler/media/catalog/catalogHandlerResponse.d.ts +4 -0
- package/dist/types/handler/media/catalog/catalogHandlerResponse.js +1 -0
- package/dist/types/handler/media/catalog/createCatalogHandler.d.ts +8 -0
- package/dist/types/handler/media/catalog/createCatalogHandler.js +1 -0
- package/dist/types/handler/media/catalog/metaPreview.d.ts +7 -0
- package/dist/types/handler/media/catalog/metaPreview.js +1 -0
- package/dist/types/handler/media/createResourceHandler.d.ts +10 -0
- package/dist/types/handler/media/createResourceHandler.js +1 -0
- package/dist/types/handler/media/resourceHandler.d.ts +15 -0
- package/dist/types/handler/media/resourceHandler.js +1 -0
- package/dist/types/handler/media/resourceType.d.ts +2 -0
- package/dist/types/handler/media/resourceType.js +1 -0
- package/dist/types/handler/plugin/factory/createPluginFactoryHandler.d.ts +4 -0
- package/dist/types/handler/plugin/factory/createPluginFactoryHandler.js +1 -0
- package/dist/types/handler/plugin/factory/pluginFactoryHandlerArgs.d.ts +3 -0
- package/dist/types/handler/plugin/factory/pluginFactoryHandlerArgs.js +1 -0
- package/dist/types/handler/plugin/factory/pluginFactoryHandlerResponse.d.ts +12 -0
- package/dist/types/handler/plugin/factory/pluginFactoryHandlerResponse.js +1 -0
- package/dist/types/handler/plugin/source/createPluginSourceHandler.d.ts +4 -0
- package/dist/types/handler/plugin/source/createPluginSourceHandler.js +1 -0
- package/dist/types/handler/plugin/source/pluginSourceHandlerArgs.d.ts +3 -0
- package/dist/types/handler/plugin/source/pluginSourceHandlerArgs.js +1 -0
- package/dist/types/handler/plugin/source/pluginSourceHandlerResponse.d.ts +11 -0
- package/dist/types/handler/plugin/source/pluginSourceHandlerResponse.js +1 -0
- package/dist/types/pluginConfig.d.ts +6 -0
- package/dist/types/pluginConfig.js +1 -0
- package/dist/types/pluginSpec.d.ts +8 -0
- package/dist/types/pluginSpec.js +1 -0
- package/package.json +3 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,59 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
readonly search?: string;
|
|
9
|
-
readonly skip?: number;
|
|
10
|
-
readonly pageSize?: number;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
type BaseHandlerResponse<T = any> = {
|
|
14
|
-
readonly data: T[];
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
type Handler<T = any, R = any> = {
|
|
18
|
-
id: string;
|
|
19
|
-
type: string;
|
|
20
|
-
callback: (args: T) => Promise<R>;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
type ResourceHandlerType = 'catalog-request';
|
|
24
|
-
|
|
25
|
-
type ResourceType = 'movie' | 'series';
|
|
26
|
-
|
|
27
|
-
type ResourceHandler<T extends BaseHandlerArgs = BaseHandlerArgs, R extends BaseHandlerResponse = BaseHandlerResponse> = Handler<T, R> & {
|
|
28
|
-
/**
|
|
29
|
-
* Displayed in the app
|
|
30
|
-
*/
|
|
31
|
-
name: string;
|
|
32
|
-
type: ResourceHandlerType | string;
|
|
33
|
-
resourceType: ResourceType | string;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
type CreateResourceHandler<T extends BaseHandlerArgs = BaseHandlerArgs, R extends BaseHandlerResponse = BaseHandlerResponse> = Omit<ResourceHandler<T, R>, 'id' | 'name'> & {
|
|
37
|
-
id?: string;
|
|
38
|
-
name?: string;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
type CatalogHandlerArgs = BaseHandlerArgs & {};
|
|
42
|
-
|
|
43
|
-
type MetaPreview = {
|
|
44
|
-
readonly id: string;
|
|
45
|
-
readonly type: string;
|
|
46
|
-
readonly name: string;
|
|
47
|
-
readonly poster: string;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
type CatalogHandlerResponse = BaseHandlerResponse<MetaPreview> & {};
|
|
51
|
-
|
|
52
|
-
type CreateCatalogHandler = Omit<CreateResourceHandler<CatalogHandlerArgs, CatalogHandlerResponse>, 'type'> & {
|
|
53
|
-
type?: ResourceHandlerType | string;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
declare class Plugin {
|
|
1
|
+
import PluginConfig from "./types/pluginConfig";
|
|
2
|
+
import CreateCatalogHandler from "./types/handler/media/catalog/createCatalogHandler";
|
|
3
|
+
import CreateResourceHandler from "./types/handler/media/createResourceHandler";
|
|
4
|
+
import CreatePluginSourceHandler from "./types/handler/plugin/source/createPluginSourceHandler";
|
|
5
|
+
import CreateHandler from "./types/handler/base/createHandler";
|
|
6
|
+
import CreatePluginFactoryHandler from "./types/handler/plugin/factory/createPluginFactoryHandler";
|
|
7
|
+
export default class Plugin {
|
|
57
8
|
readonly config: PluginConfig;
|
|
58
9
|
private handlers;
|
|
59
10
|
private counter;
|
|
@@ -64,6 +15,7 @@ declare class Plugin {
|
|
|
64
15
|
*/
|
|
65
16
|
onLoad(callback: () => Promise<void>): void;
|
|
66
17
|
onUnload(callback: () => Promise<void>): void;
|
|
18
|
+
defineHandler(handler: CreateHandler): string;
|
|
67
19
|
/**
|
|
68
20
|
* @see Handler
|
|
69
21
|
*/
|
|
@@ -74,9 +26,9 @@ declare class Plugin {
|
|
|
74
26
|
* @see defineResourceHandler
|
|
75
27
|
*/
|
|
76
28
|
defineCatalogHandler(handler: CreateCatalogHandler): string;
|
|
29
|
+
definePluginSourceHandler(handler: CreatePluginSourceHandler): string;
|
|
30
|
+
definePluginFactoryHandler(handler: CreatePluginFactoryHandler): string;
|
|
77
31
|
private getSpec;
|
|
78
32
|
private onLoadCallback;
|
|
79
33
|
private onUnloadCallback;
|
|
80
34
|
}
|
|
81
|
-
|
|
82
|
-
export { Plugin as default };
|
package/dist/index.js
CHANGED
|
@@ -1,72 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
name: `${this.config.name}`,
|
|
32
|
-
...handler
|
|
33
|
-
};
|
|
34
|
-
this.handlers.set(newHandler.id, newHandler);
|
|
35
|
-
return newHandler.id;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Defines or overrides if a catalog handler has already been defined, if
|
|
39
|
-
* you use multiple catalog handlers use `defineMediaHandler` instead
|
|
40
|
-
* @see defineResourceHandler
|
|
41
|
-
*/
|
|
42
|
-
defineCatalogHandler(handler) {
|
|
43
|
-
const newHandler = {
|
|
44
|
-
id: `${this.config.id}-catalog-handler`,
|
|
45
|
-
...handler,
|
|
46
|
-
type: "catalog-request"
|
|
47
|
-
};
|
|
48
|
-
return this.defineResourceHandler(newHandler);
|
|
49
|
-
}
|
|
50
|
-
// Used internally, private since its internal api
|
|
51
|
-
// noinspection JSUnusedLocalSymbols
|
|
52
|
-
getSpec() {
|
|
53
|
-
if (!this.loaded) {
|
|
54
|
-
throw Error("The plugin must be loaded before getting it's spec");
|
|
1
|
+
export default class Plugin {
|
|
2
|
+
config;
|
|
3
|
+
handlers = new Map();
|
|
4
|
+
counter = 0;
|
|
5
|
+
loaded = false;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.config = options;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Don't define handlers here, they are part of the spec
|
|
11
|
+
*/
|
|
12
|
+
onLoad(callback) {
|
|
13
|
+
this.onLoadCallback = async () => {
|
|
14
|
+
await callback();
|
|
15
|
+
this.loaded = true;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
onUnload(callback) {
|
|
19
|
+
this.onUnloadCallback = async () => {
|
|
20
|
+
await callback();
|
|
21
|
+
this.loaded = false;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
defineHandler(handler) {
|
|
25
|
+
const newHandler = {
|
|
26
|
+
id: `${this.config.id}-custom-${this.counter++}`,
|
|
27
|
+
...handler
|
|
28
|
+
};
|
|
29
|
+
this.handlers.set(newHandler.id, newHandler);
|
|
30
|
+
return newHandler.id;
|
|
55
31
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
32
|
+
/**
|
|
33
|
+
* @see Handler
|
|
34
|
+
*/
|
|
35
|
+
defineResourceHandler(handler) {
|
|
36
|
+
const newHandler = {
|
|
37
|
+
id: `${this.config.id}-custom-resource-${this.counter++}`,
|
|
38
|
+
name: `${this.config.name}`,
|
|
39
|
+
...handler
|
|
40
|
+
};
|
|
41
|
+
this.handlers.set(newHandler.id, newHandler);
|
|
42
|
+
return newHandler.id;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Defines or overrides if a catalog handler has already been defined, if
|
|
46
|
+
* you use multiple catalog handlers use `defineMediaHandler` instead
|
|
47
|
+
* @see defineResourceHandler
|
|
48
|
+
*/
|
|
49
|
+
defineCatalogHandler(handler) {
|
|
50
|
+
const newHandler = {
|
|
51
|
+
id: `${this.config.id}-catalog`,
|
|
52
|
+
name: `${this.config.name}`,
|
|
53
|
+
...handler,
|
|
54
|
+
type: 'catalog-request'
|
|
55
|
+
};
|
|
56
|
+
return this.defineResourceHandler(newHandler);
|
|
57
|
+
}
|
|
58
|
+
definePluginSourceHandler(handler) {
|
|
59
|
+
const newHandler = {
|
|
60
|
+
id: `${this.config.id}-plugin-source`,
|
|
61
|
+
...handler,
|
|
62
|
+
type: 'plugin-source'
|
|
63
|
+
};
|
|
64
|
+
return this.defineHandler(newHandler);
|
|
65
|
+
}
|
|
66
|
+
definePluginFactoryHandler(handler) {
|
|
67
|
+
const newHandler = {
|
|
68
|
+
id: `${this.config.id}-plugin-factory`,
|
|
69
|
+
...handler,
|
|
70
|
+
type: 'plugin-factory'
|
|
71
|
+
};
|
|
72
|
+
return this.defineHandler(newHandler);
|
|
73
|
+
}
|
|
74
|
+
// Used internally, private since its internal api
|
|
75
|
+
// noinspection JSUnusedLocalSymbols
|
|
76
|
+
getSpec() {
|
|
77
|
+
if (!this.loaded) {
|
|
78
|
+
throw Error("The plugin must be loaded before getting it's spec");
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
config: this.config,
|
|
82
|
+
handlers: this.handlers,
|
|
83
|
+
onLoad: this.onLoadCallback,
|
|
84
|
+
onUnload: this.onUnloadCallback
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
onLoadCallback = async () => {
|
|
88
|
+
this.loaded = true;
|
|
89
|
+
};
|
|
90
|
+
onUnloadCallback = async () => {
|
|
91
|
+
this.loaded = false;
|
|
61
92
|
};
|
|
62
|
-
|
|
63
|
-
onLoadCallback = async () => {
|
|
64
|
-
this.loaded = true;
|
|
65
|
-
};
|
|
66
|
-
onUnloadCallback = async () => {
|
|
67
|
-
this.loaded = false;
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
export {
|
|
71
|
-
Plugin as default
|
|
72
|
-
};
|
|
93
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Represents a plugin handler.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* - `type` can be a predefined `MediaHandlerTypes` value or any custom string.
|
|
6
|
+
* Custom types must be handled by the plugin author.
|
|
7
|
+
* - `id` is a unique identifier for the handler. If a handler with the same
|
|
8
|
+
* id exists, it will be overridden.
|
|
9
|
+
* - `name` name of the handler that will be displayed in the app
|
|
10
|
+
* - `callback` callback function that is called when the handler is invoked
|
|
11
|
+
* @see BaseHandler
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import BaseHandlerArgs from "../base/baseHandlerArgs";
|
|
2
|
+
import BaseHandlerResponse from "../base/baseHandlerResponse";
|
|
3
|
+
import ResourceType from "./resourceType";
|
|
4
|
+
import BaseHandler from "../base/baseHandler";
|
|
5
|
+
type BaseResourceHandler<T extends BaseHandlerArgs = BaseHandlerArgs, R extends BaseHandlerResponse = BaseHandlerResponse> = BaseHandler<T, R> & {
|
|
6
|
+
name?: string;
|
|
7
|
+
resourceType?: ResourceType | string;
|
|
8
|
+
};
|
|
9
|
+
export default BaseResourceHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import BaseResourceHandler from "../baseResourceHandler";
|
|
2
|
+
import CatalogHandlerArgs from "./catalogHandlerArgs";
|
|
3
|
+
import CatalogHandlerResponse from "./catalogHandlerResponse";
|
|
4
|
+
import ResourceType from "../resourceType";
|
|
5
|
+
type CreateCatalogHandler = BaseResourceHandler<CatalogHandlerArgs, CatalogHandlerResponse> & {
|
|
6
|
+
resourceType: ResourceType | string;
|
|
7
|
+
};
|
|
8
|
+
export default CreateCatalogHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import BaseHandlerArgs from "../base/baseHandlerArgs";
|
|
2
|
+
import BaseHandlerResponse from "../base/baseHandlerResponse";
|
|
3
|
+
import BaseResourceHandler from "./baseResourceHandler";
|
|
4
|
+
import ResourceType from "./resourceType";
|
|
5
|
+
import HandlerTypes from "../base/handlerTypes";
|
|
6
|
+
type CreateResourceHandler<T extends BaseHandlerArgs = BaseHandlerArgs, R extends BaseHandlerResponse = BaseHandlerResponse> = BaseResourceHandler<T, R> & {
|
|
7
|
+
type: HandlerTypes | string;
|
|
8
|
+
resourceType: ResourceType | string;
|
|
9
|
+
};
|
|
10
|
+
export default CreateResourceHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import BaseHandlerArgs from "../base/baseHandlerArgs";
|
|
2
|
+
import BaseHandlerResponse from "../base/baseHandlerResponse";
|
|
3
|
+
import ResourceType from "./resourceType";
|
|
4
|
+
import BaseResourceHandler from "./baseResourceHandler";
|
|
5
|
+
import Handler from "../base/handler";
|
|
6
|
+
import HandlerTypes from "../base/handlerTypes";
|
|
7
|
+
type ResourceHandler<T extends BaseHandlerArgs = BaseHandlerArgs, R extends BaseHandlerResponse = BaseHandlerResponse> = BaseResourceHandler<T, R> & Handler<T, R> & {
|
|
8
|
+
/**
|
|
9
|
+
* Displayed in the app
|
|
10
|
+
*/
|
|
11
|
+
name: string;
|
|
12
|
+
type: HandlerTypes | string;
|
|
13
|
+
resourceType: ResourceType | string;
|
|
14
|
+
};
|
|
15
|
+
export default ResourceHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import BaseHandler from "../../base/baseHandler";
|
|
2
|
+
import PluginSourceHandlerResponse from "../source/pluginSourceHandlerResponse";
|
|
3
|
+
type CreatePluginFactoryHandler = BaseHandler<PluginSourceHandlerArgs, PluginSourceHandlerResponse> & {};
|
|
4
|
+
export default CreatePluginFactoryHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Plugin from '../../../../index';
|
|
2
|
+
export type PluginFactoryHandlerResponse = {
|
|
3
|
+
readonly status: 'valid';
|
|
4
|
+
readonly plugin: Plugin;
|
|
5
|
+
} | {
|
|
6
|
+
readonly status: 'skip';
|
|
7
|
+
readonly reason?: string;
|
|
8
|
+
} | {
|
|
9
|
+
readonly status: 'invalid';
|
|
10
|
+
readonly reason: string;
|
|
11
|
+
};
|
|
12
|
+
export default PluginFactoryHandlerResponse;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import PluginSourceHandlerResponse from "./pluginSourceHandlerResponse";
|
|
2
|
+
import BaseHandler from "../../base/baseHandler";
|
|
3
|
+
type CreatePluginSourceHandler = BaseHandler<PluginSourceHandlerArgs, PluginSourceHandlerResponse> & {};
|
|
4
|
+
export default CreatePluginSourceHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type PluginSourceHandlerResponse = {
|
|
2
|
+
readonly status: 'valid';
|
|
3
|
+
readonly code: string;
|
|
4
|
+
} | {
|
|
5
|
+
readonly status: 'skip';
|
|
6
|
+
readonly reason?: string;
|
|
7
|
+
} | {
|
|
8
|
+
readonly status: 'invalid';
|
|
9
|
+
readonly reason: string;
|
|
10
|
+
};
|
|
11
|
+
export default PluginSourceHandlerResponse;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import PluginConfig from "./pluginConfig";
|
|
2
|
+
import Handler from "./handler/base/handler";
|
|
3
|
+
export default interface PluginSpec {
|
|
4
|
+
readonly config: PluginConfig;
|
|
5
|
+
readonly onLoad: () => Promise<void>;
|
|
6
|
+
readonly onUnload: () => Promise<void>;
|
|
7
|
+
readonly handlers: Map<string, Handler>;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@d-najd/universal-media-tracker-sdk",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
|
-
"
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
5
|
+
"types": "dist/types/index.d.ts",
|
|
7
6
|
"files": [
|
|
8
7
|
"dist"
|
|
9
8
|
],
|
|
10
9
|
"scripts": {
|
|
11
|
-
"build": "
|
|
10
|
+
"build": "tsc"
|
|
12
11
|
},
|
|
13
12
|
"license": "MIT",
|
|
14
13
|
"type": "module",
|
|
15
14
|
"devDependencies": {
|
|
16
|
-
"tsup": "^8.5.1",
|
|
17
15
|
"typescript": "^5.9.3"
|
|
18
16
|
}
|
|
19
17
|
}
|