@blastlauncher/runtime 1.0.5 → 3.0.0-alpha.1

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.
Files changed (110) hide show
  1. package/README.md +4 -10
  2. package/dist/api/action-panel.d.ts +134 -0
  3. package/dist/api/action-panel.js +36 -0
  4. package/dist/api/action.d.ts +386 -0
  5. package/dist/api/action.js +260 -0
  6. package/dist/api/ai-browser.d.ts +423 -0
  7. package/dist/api/ai-browser.js +113 -0
  8. package/dist/api/ai-decide.d.ts +41 -0
  9. package/dist/api/ai-decide.js +62 -0
  10. package/dist/api/applications.d.ts +13 -0
  11. package/dist/api/applications.js +48 -0
  12. package/dist/api/cache.d.ts +27 -0
  13. package/dist/api/cache.js +126 -0
  14. package/dist/api/capability.d.ts +14 -0
  15. package/dist/api/capability.js +30 -0
  16. package/dist/api/clipboard.d.ts +57 -0
  17. package/dist/api/clipboard.js +83 -0
  18. package/dist/api/detail.d.ts +33 -0
  19. package/dist/api/detail.js +11 -0
  20. package/dist/api/diagnostics.d.ts +16 -0
  21. package/dist/api/diagnostics.js +26 -0
  22. package/dist/api/dropdown.d.ts +17 -0
  23. package/dist/api/dropdown.js +48 -0
  24. package/dist/api/enums.generated.d.ts +750 -0
  25. package/dist/api/enums.generated.js +719 -0
  26. package/dist/api/environment.d.ts +44 -0
  27. package/dist/api/environment.js +61 -0
  28. package/dist/api/feedback.d.ts +94 -0
  29. package/dist/api/feedback.js +228 -0
  30. package/dist/api/form.d.ts +162 -0
  31. package/dist/api/form.js +345 -0
  32. package/dist/api/grid.d.ts +293 -0
  33. package/dist/api/grid.js +36 -0
  34. package/dist/api/implemented.d.ts +53 -0
  35. package/dist/api/implemented.js +43 -0
  36. package/dist/api/index.d.ts +612 -0
  37. package/dist/api/index.js +82 -0
  38. package/dist/api/keyboard.d.ts +182 -0
  39. package/dist/api/keyboard.js +107 -0
  40. package/dist/api/launch.d.ts +40 -0
  41. package/dist/api/launch.js +27 -0
  42. package/dist/api/legacy.d.ts +9 -0
  43. package/dist/api/legacy.js +25 -0
  44. package/dist/api/list.d.ts +291 -0
  45. package/dist/api/list.js +28 -0
  46. package/dist/api/menu-bar.d.ts +54 -0
  47. package/dist/api/menu-bar.js +30 -0
  48. package/dist/api/metadata.d.ts +62 -0
  49. package/dist/api/metadata.js +33 -0
  50. package/dist/api/navigation.d.ts +36 -0
  51. package/dist/api/navigation.js +99 -0
  52. package/dist/api/oauth.d.ts +84 -0
  53. package/dist/api/oauth.js +125 -0
  54. package/dist/api/open.d.ts +18 -0
  55. package/dist/api/open.js +36 -0
  56. package/dist/api/preferences.d.ts +43 -0
  57. package/dist/api/preferences.js +41 -0
  58. package/dist/api/selection.d.ts +10 -0
  59. package/dist/api/selection.js +31 -0
  60. package/dist/api/slot.d.ts +7 -0
  61. package/dist/api/slot.js +11 -0
  62. package/dist/api/storage.d.ts +24 -0
  63. package/dist/api/storage.js +45 -0
  64. package/dist/api/types.d.ts +46 -0
  65. package/dist/api/types.js +5 -0
  66. package/dist/api/unsupported.d.ts +18 -0
  67. package/dist/api/unsupported.generated.d.ts +1255 -0
  68. package/dist/api/unsupported.generated.js +56 -0
  69. package/dist/api/unsupported.js +65 -0
  70. package/dist/api/window-management.d.ts +97 -0
  71. package/dist/api/window-management.js +164 -0
  72. package/dist/api/window.d.ts +16 -0
  73. package/dist/api/window.js +32 -0
  74. package/dist/main.d.ts +1 -0
  75. package/dist/main.js +339 -0
  76. package/dist/provider.d.ts +8 -0
  77. package/dist/provider.js +107 -0
  78. package/dist/reconciler/index.d.ts +9 -0
  79. package/dist/reconciler/index.js +186 -0
  80. package/dist/reconciler/serialize.d.ts +3 -0
  81. package/dist/reconciler/serialize.js +53 -0
  82. package/dist/reconciler/types.d.ts +8 -0
  83. package/dist/reconciler/types.js +1 -0
  84. package/package.json +38 -23
  85. package/.eslintrc.js +0 -6
  86. package/CHANGELOG.md +0 -19
  87. package/dist/App.d.ts +0 -5
  88. package/dist/App.js +0 -10
  89. package/dist/components/CommandList/index.d.ts +0 -1
  90. package/dist/components/CommandList/index.js +0 -20
  91. package/dist/components/CommandList/utils.d.ts +0 -1
  92. package/dist/components/CommandList/utils.js +0 -24
  93. package/dist/index.d.ts +0 -1
  94. package/dist/index.js +0 -11
  95. package/dist/utils/connectDevtools.d.ts +0 -1
  96. package/dist/utils/connectDevtools.js +0 -11
  97. package/dist/utils/run.d.ts +0 -4
  98. package/dist/utils/run.js +0 -12
  99. package/dist/utils/window.d.ts +0 -0
  100. package/dist/utils/window.js +0 -2
  101. package/src/@types/raycast.d.ts +0 -4
  102. package/src/@types/react-devtools-core.d.ts +0 -19
  103. package/src/App.tsx +0 -18
  104. package/src/components/CommandList/index.tsx +0 -27
  105. package/src/components/CommandList/utils.ts +0 -26
  106. package/src/index.ts +0 -13
  107. package/src/utils/connectDevtools.ts +0 -8
  108. package/src/utils/run.ts +0 -7
  109. package/src/utils/window.js +0 -1
  110. package/tsconfig.json +0 -10
@@ -0,0 +1,56 @@
1
+ // Generated by scripts/compat/generate-stubs.ts; do not edit.
2
+ import * as implemented from "./implemented.js";
3
+ import { createApi } from "./unsupported.js";
4
+ const api = createApi(implemented);
5
+ export const AI = api("AI");
6
+ export const Action = api("Action");
7
+ export const ActionPanel = api("ActionPanel");
8
+ export const Alert = api("Alert");
9
+ export const BrowserExtension = api("BrowserExtension");
10
+ export const Cache = api("Cache");
11
+ export const Clipboard = api("Clipboard");
12
+ export const Color = api("Color");
13
+ export const Detail = api("Detail");
14
+ export const Form = api("Form");
15
+ export const Grid = api("Grid");
16
+ export const Icon = api("Icon");
17
+ export const Keyboard = api("Keyboard");
18
+ export const LaunchType = api("LaunchType");
19
+ export const List = api("List");
20
+ export const LocalStorage = api("LocalStorage");
21
+ export const MenuBarExtra = api("MenuBarExtra");
22
+ export const OAuth = api("OAuth");
23
+ export const PopToRootType = api("PopToRootType");
24
+ export const Toast = api("Toast");
25
+ export const Tool = api("Tool");
26
+ export const WindowManagement = api("WindowManagement");
27
+ export const captureException = api("captureException");
28
+ export const captureMemorySnapshot = api("captureMemorySnapshot");
29
+ export const clearSearchBar = api("clearSearchBar");
30
+ export const closeMainWindow = api("closeMainWindow");
31
+ export const confirmAlert = api("confirmAlert");
32
+ export const environment = api("environment");
33
+ export const getApplications = api("getApplications");
34
+ export const getDefaultApplication = api("getDefaultApplication");
35
+ export const getFrontmostApplication = api("getFrontmostApplication");
36
+ export const getPreferenceValues = api("getPreferenceValues");
37
+ export const getSelectedFinderItems = api("getSelectedFinderItems");
38
+ export const getSelectedText = api("getSelectedText");
39
+ export const launchCommand = api("launchCommand");
40
+ export const open = api("open");
41
+ export const openCommandPreferences = api("openCommandPreferences");
42
+ export const openExtensionPreferences = api("openExtensionPreferences");
43
+ export const popToRoot = api("popToRoot");
44
+ export const preferences = api("preferences");
45
+ export const randomId = api("randomId");
46
+ export const render = api("render");
47
+ export const showHUD = api("showHUD");
48
+ export const showInFinder = api("showInFinder");
49
+ export const showToast = api("showToast");
50
+ export const specialKeys = api("specialKeys");
51
+ export const trash = api("trash");
52
+ export const updateCommandMetadata = api("updateCommandMetadata");
53
+ export const useActionPanel = api("useActionPanel");
54
+ export const useId = api("useId");
55
+ export const useNavigation = api("useNavigation");
56
+ export const useUnstableAI = api("useUnstableAI");
@@ -0,0 +1,65 @@
1
+ export class UnsupportedApiError extends Error {
2
+ code = "UNSUPPORTED_API";
3
+ path;
4
+ constructor(path) {
5
+ super(`Unsupported API in Blast: ${path}`);
6
+ this.name = "UnsupportedApiError";
7
+ this.path = path;
8
+ }
9
+ }
10
+ /** Present on stubs only: the unsupported path. Lets the serializer reject stub values. */
11
+ export const UNSUPPORTED_PATH = Symbol.for("blast.unsupportedPath");
12
+ export function unsupportedPath(value) {
13
+ if (typeof value !== "function" && (typeof value !== "object" || value === null))
14
+ return undefined;
15
+ const path = Reflect.get(value, UNSUPPORTED_PATH);
16
+ return typeof path === "string" ? path : undefined;
17
+ }
18
+ /** Preserve real implementations, while lazily supplying missing namespace members.
19
+ * Probe properties used by React and Promise resolution must retain normal semantics.
20
+ */
21
+ export function withUnsupported(path, implemented) {
22
+ const target = implemented ??
23
+ function () {
24
+ throw new UnsupportedApiError(path);
25
+ };
26
+ if ((typeof target !== "object" || target === null) && typeof target !== "function")
27
+ return target;
28
+ const children = new Map();
29
+ const isStub = implemented === undefined;
30
+ return new Proxy(target, {
31
+ get(value, key, receiver) {
32
+ if (key === UNSUPPORTED_PATH)
33
+ return isStub ? path : undefined;
34
+ if (typeof key !== "string" ||
35
+ key === "then" ||
36
+ key === "prototype" ||
37
+ key.startsWith("_") ||
38
+ key.startsWith("$") ||
39
+ key === "displayName" ||
40
+ key === "defaultProps" ||
41
+ key === "contextTypes" ||
42
+ key === "childContextTypes" ||
43
+ key === "contextType" ||
44
+ key === "getDerivedStateFromProps" ||
45
+ key === "getDerivedStateFromError" ||
46
+ key === "propTypes" ||
47
+ key in Function.prototype)
48
+ return Reflect.get(value, key, receiver);
49
+ const child = Reflect.get(value, key, receiver);
50
+ if (key in value &&
51
+ (child === null || (typeof child !== "object" && typeof child !== "function")))
52
+ return child;
53
+ // A replaced or deleted member must not keep serving its old wrapper.
54
+ const cached = children.get(key);
55
+ if (cached && cached.source === child)
56
+ return cached.wrapper;
57
+ const wrapper = withUnsupported(`${path}.${key}`, child);
58
+ children.set(key, { source: child, wrapper });
59
+ return wrapper;
60
+ },
61
+ });
62
+ }
63
+ export function createApi(implemented) {
64
+ return (path) => withUnsupported(path, Reflect.get(implemented, path));
65
+ }
@@ -0,0 +1,97 @@
1
+ import type { Application } from "./open.js";
2
+ /** `WindowManagement.DesktopType`, the enum generated from the declarations. */
3
+ export declare const DesktopType: {
4
+ readonly User: "User";
5
+ readonly FullScreen: "FullScreen";
6
+ };
7
+ /** `WindowManagement.Desktop.type` as a value union. */
8
+ export type DesktopTypeValue = (typeof DesktopType)[keyof typeof DesktopType];
9
+ /** `WindowManagement.Desktop`: a virtual desktop on a screen. */
10
+ export interface Desktop {
11
+ /** The size of the desktop. */
12
+ size: {
13
+ width: number;
14
+ height: number;
15
+ };
16
+ /** The unique identifier of the desktop. */
17
+ id: string;
18
+ /** The identifier of the screen the desktop is on. */
19
+ screenId: string;
20
+ /** Whether the desktop is the active one. */
21
+ active: boolean;
22
+ /** The kind of desktop. */
23
+ type: DesktopTypeValue;
24
+ }
25
+ /** The position and size of a window, as the declarations allow them partially. */
26
+ export interface WindowBounds {
27
+ position?: {
28
+ x?: number;
29
+ y?: number;
30
+ };
31
+ size?: {
32
+ width?: number;
33
+ height?: number;
34
+ };
35
+ }
36
+ /** `WindowManagement.Window`: a window of an application on a desktop. */
37
+ export interface Window {
38
+ /** The unique identifier of the window. */
39
+ id: string;
40
+ /** The application that owns the window, when the client can name it. */
41
+ application?: Application;
42
+ /** The bounds of the window, or `"fullscreen"`. */
43
+ bounds: {
44
+ position: {
45
+ x: number;
46
+ y: number;
47
+ };
48
+ size: {
49
+ width: number;
50
+ height: number;
51
+ };
52
+ } | "fullscreen";
53
+ /** The desktop the window is on. */
54
+ desktopId: string;
55
+ /** Whether the window can be made fullscreen. */
56
+ fullScreenSettable: boolean;
57
+ /** Whether the window can be resized. */
58
+ resizable: boolean;
59
+ /** Whether the window can be moved. */
60
+ positionable: boolean;
61
+ /** Whether the window is the active one. */
62
+ active: boolean;
63
+ }
64
+ /** `WindowManagement.setWindowBounds` options, exactly as the declarations union them. */
65
+ export type SetWindowBoundsOptions = {
66
+ id: string;
67
+ } & ({
68
+ bounds: WindowBounds;
69
+ desktopId?: string;
70
+ } | {
71
+ bounds: "fullscreen";
72
+ });
73
+ /** Gets the desktops across all screens. */
74
+ export declare function getDesktops(): Promise<Desktop[]>;
75
+ /**
76
+ * Gets the active window. Rejects when no window is active, as the
77
+ * declarations promise.
78
+ */
79
+ export declare function getActiveWindow(): Promise<Window>;
80
+ /** Gets the windows on the active desktop. */
81
+ export declare function getWindowsOnActiveDesktop(): Promise<Window[]>;
82
+ /**
83
+ * Moves a window, or makes it fullscreen. The request reaches the host only
84
+ * through the capability, never the scene.
85
+ */
86
+ export declare function setWindowBounds(options: SetWindowBoundsOptions): Promise<void>;
87
+ /** Members in the order the declarations list them. */
88
+ export declare const WindowManagement: {
89
+ DesktopType: {
90
+ readonly User: "User";
91
+ readonly FullScreen: "FullScreen";
92
+ };
93
+ getDesktops: typeof getDesktops;
94
+ getActiveWindow: typeof getActiveWindow;
95
+ getWindowsOnActiveDesktop: typeof getWindowsOnActiveDesktop;
96
+ setWindowBounds: typeof setWindowBounds;
97
+ };
@@ -0,0 +1,164 @@
1
+ import { WindowManagement as WindowManagementEnums } from "./enums.generated.js";
2
+ import { requestCapability } from "./capability.js";
3
+ import { toApplication } from "./applications.js";
4
+ /** `WindowManagement.DesktopType`, the enum generated from the declarations. */
5
+ export const DesktopType = WindowManagementEnums.DesktopType;
6
+ function numberField(value, at) {
7
+ if (value === undefined)
8
+ return undefined;
9
+ if (typeof value !== "number" || !Number.isFinite(value)) {
10
+ throw new TypeError(`${at} must be a finite number`);
11
+ }
12
+ return value;
13
+ }
14
+ function boundsWire(bounds, at) {
15
+ if (typeof bounds !== "object" || bounds === null || Array.isArray(bounds)) {
16
+ throw new TypeError(`${at}: bounds must be an object or "fullscreen"`);
17
+ }
18
+ const wire = {};
19
+ if (bounds.position !== undefined) {
20
+ const position = {};
21
+ const x = numberField(bounds.position.x, `${at}: bounds.position.x`);
22
+ const y = numberField(bounds.position.y, `${at}: bounds.position.y`);
23
+ if (x !== undefined)
24
+ position["x"] = x;
25
+ if (y !== undefined)
26
+ position["y"] = y;
27
+ wire["position"] = position;
28
+ }
29
+ if (bounds.size !== undefined) {
30
+ const size = {};
31
+ const width = numberField(bounds.size.width, `${at}: bounds.size.width`);
32
+ const height = numberField(bounds.size.height, `${at}: bounds.size.height`);
33
+ if (width !== undefined)
34
+ size["width"] = width;
35
+ if (height !== undefined)
36
+ size["height"] = height;
37
+ wire["size"] = size;
38
+ }
39
+ return wire;
40
+ }
41
+ // The host is another process: rebuild each value from the declared fields
42
+ // rather than trusting whatever shape arrived on the wire.
43
+ function toBounds(value, at) {
44
+ if (value === "fullscreen")
45
+ return value;
46
+ const bounds = boundsWire(value, at);
47
+ const { position, size } = bounds;
48
+ if (position?.x === undefined ||
49
+ position.y === undefined ||
50
+ size?.width === undefined ||
51
+ size.height === undefined) {
52
+ throw new TypeError(`${at}: the host returned incomplete Window bounds`);
53
+ }
54
+ return {
55
+ position: { x: position.x, y: position.y },
56
+ size: { width: size.width, height: size.height },
57
+ };
58
+ }
59
+ function toWindow(value, api) {
60
+ if (typeof value !== "object" ||
61
+ value === null ||
62
+ Array.isArray(value) ||
63
+ typeof value.id !== "string" ||
64
+ typeof value.desktopId !== "string" ||
65
+ typeof value.fullScreenSettable !== "boolean" ||
66
+ typeof value.resizable !== "boolean" ||
67
+ typeof value.positionable !== "boolean" ||
68
+ typeof value.active !== "boolean") {
69
+ throw new TypeError(`${api}: the host returned an invalid Window`);
70
+ }
71
+ const window = {
72
+ id: value.id,
73
+ bounds: toBounds(value.bounds, `${api}: bounds`),
74
+ desktopId: value.desktopId,
75
+ fullScreenSettable: value.fullScreenSettable,
76
+ resizable: value.resizable,
77
+ positionable: value.positionable,
78
+ active: value.active,
79
+ };
80
+ if (value.application !== undefined) {
81
+ window.application = toApplication(value.application, `${api}: application`);
82
+ }
83
+ return window;
84
+ }
85
+ function toDesktop(value, api) {
86
+ if (typeof value !== "object" ||
87
+ value === null ||
88
+ Array.isArray(value) ||
89
+ typeof value.id !== "string" ||
90
+ typeof value.screenId !== "string" ||
91
+ typeof value.active !== "boolean" ||
92
+ (value.type !== DesktopType.User && value.type !== DesktopType.FullScreen)) {
93
+ throw new TypeError(`${api}: the host returned an invalid Desktop`);
94
+ }
95
+ const size = value.size;
96
+ if (typeof size !== "object" ||
97
+ size === null ||
98
+ Array.isArray(size) ||
99
+ typeof size.width !== "number" ||
100
+ typeof size.height !== "number" ||
101
+ !Number.isFinite(size.width) ||
102
+ !Number.isFinite(size.height)) {
103
+ throw new TypeError(`${api}: the host returned an invalid Desktop size`);
104
+ }
105
+ return {
106
+ size: { width: size.width, height: size.height },
107
+ id: value.id,
108
+ screenId: value.screenId,
109
+ active: value.active,
110
+ type: value.type,
111
+ };
112
+ }
113
+ function windows(value, api) {
114
+ if (!Array.isArray(value))
115
+ throw new TypeError(`${api}: the host returned a non-array`);
116
+ return value.map((item) => toWindow(item, api));
117
+ }
118
+ /** Gets the desktops across all screens. */
119
+ export async function getDesktops() {
120
+ const value = await requestCapability("window.desktops", {});
121
+ if (!Array.isArray(value))
122
+ throw new TypeError("getDesktops: the host returned a non-array");
123
+ return value.map((item) => toDesktop(item, "getDesktops"));
124
+ }
125
+ /**
126
+ * Gets the active window. Rejects when no window is active, as the
127
+ * declarations promise.
128
+ */
129
+ export async function getActiveWindow() {
130
+ return toWindow(await requestCapability("window.active", {}), "getActiveWindow");
131
+ }
132
+ /** Gets the windows on the active desktop. */
133
+ export async function getWindowsOnActiveDesktop() {
134
+ return windows(await requestCapability("window.list", {}), "getWindowsOnActiveDesktop");
135
+ }
136
+ /**
137
+ * Moves a window, or makes it fullscreen. The request reaches the host only
138
+ * through the capability, never the scene.
139
+ */
140
+ export async function setWindowBounds(options) {
141
+ if (typeof options.id !== "string" || options.id === "") {
142
+ throw new TypeError("setWindowBounds: id must be a non-empty string");
143
+ }
144
+ const params = { id: options.id };
145
+ if (options.bounds === "fullscreen")
146
+ params["bounds"] = "fullscreen";
147
+ else
148
+ params["bounds"] = boundsWire(options.bounds, "setWindowBounds");
149
+ const desktopId = "desktopId" in options ? options.desktopId : undefined;
150
+ if (desktopId !== undefined) {
151
+ if (typeof desktopId !== "string")
152
+ throw new TypeError("setWindowBounds: desktopId must be a string");
153
+ params["desktopId"] = desktopId;
154
+ }
155
+ await requestCapability("window.setBounds", params);
156
+ }
157
+ /** Members in the order the declarations list them. */
158
+ export const WindowManagement = {
159
+ DesktopType,
160
+ getDesktops,
161
+ getActiveWindow,
162
+ getWindowsOnActiveDesktop,
163
+ setWindowBounds,
164
+ };
@@ -0,0 +1,16 @@
1
+ import { PopToRootType } from "./enums.generated.js";
2
+ export { PopToRootType };
3
+ /** `PopToRootType`'s value union: the enum type from the declarations. */
4
+ export type PopToRootTypeValue = (typeof PopToRootType)[keyof typeof PopToRootType];
5
+ /** The `closeMainWindow` options from the declarations. */
6
+ export interface CloseMainWindowOptions {
7
+ /** Asks the client to clear the root search bar and scroll to the top. */
8
+ clearRootSearch?: boolean;
9
+ popToRootType?: PopToRootTypeValue;
10
+ }
11
+ /** Scene subscription; `Navigation` renders `closeMainWindow` from the request. */
12
+ export declare function subscribeCloseRequest(listener: () => void): () => void;
13
+ /** The recorded request, or `undefined` while the window stays open. */
14
+ export declare function closeRequest(): CloseMainWindowOptions | undefined;
15
+ /** Records the request on the scene and resolves once it is published. */
16
+ export declare function closeMainWindow(options?: CloseMainWindowOptions): Promise<void>;
@@ -0,0 +1,32 @@
1
+ // `closeMainWindow` from the declarations. Closing the window is a client
2
+ // action, so the runtime records the request on the root `Navigation` scene
3
+ // node (decision 0001, like HUD in decision 0004) and resolves. A no-view
4
+ // command mounts its scene on the first request, exactly like feedback.
5
+ import { PopToRootType } from "./enums.generated.js";
6
+ import { mountScene } from "./feedback.js";
7
+ export { PopToRootType };
8
+ // Module state, not provider state: a no-view command has no mounted scene yet
9
+ // when it closes the window, and its scene reads the request as it mounts.
10
+ let request;
11
+ const listeners = new Set();
12
+ /** Scene subscription; `Navigation` renders `closeMainWindow` from the request. */
13
+ export function subscribeCloseRequest(listener) {
14
+ listeners.add(listener);
15
+ return () => {
16
+ listeners.delete(listener);
17
+ // The scene is gone with its last subscriber, so a later command is clean.
18
+ if (listeners.size === 0)
19
+ request = undefined;
20
+ };
21
+ }
22
+ /** The recorded request, or `undefined` while the window stays open. */
23
+ export function closeRequest() {
24
+ return request;
25
+ }
26
+ /** Records the request on the scene and resolves once it is published. */
27
+ export async function closeMainWindow(options = {}) {
28
+ request = { ...options };
29
+ for (const listener of listeners)
30
+ listener();
31
+ mountScene();
32
+ }
package/dist/main.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};