craft-native 0.0.37

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 (117) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +424 -0
  3. package/bin/cli.ts +937 -0
  4. package/dist/api/android-advanced.d.ts +737 -0
  5. package/dist/api/android-advanced.d.ts.map +1 -0
  6. package/dist/api/app.d.ts +432 -0
  7. package/dist/api/app.d.ts.map +1 -0
  8. package/dist/api/clipboard.d.ts +85 -0
  9. package/dist/api/clipboard.d.ts.map +1 -0
  10. package/dist/api/crypto.d.ts +79 -0
  11. package/dist/api/crypto.d.ts.map +1 -0
  12. package/dist/api/db.d.ts +427 -0
  13. package/dist/api/db.d.ts.map +1 -0
  14. package/dist/api/dialog.d.ts +141 -0
  15. package/dist/api/dialog.d.ts.map +1 -0
  16. package/dist/api/fs.d.ts +131 -0
  17. package/dist/api/fs.d.ts.map +1 -0
  18. package/dist/api/http.d.ts +196 -0
  19. package/dist/api/http.d.ts.map +1 -0
  20. package/dist/api/index.d.ts +38 -0
  21. package/dist/api/index.d.ts.map +1 -0
  22. package/dist/api/ios-advanced.d.ts +833 -0
  23. package/dist/api/ios-advanced.d.ts.map +1 -0
  24. package/dist/api/macos-advanced.d.ts +721 -0
  25. package/dist/api/macos-advanced.d.ts.map +1 -0
  26. package/dist/api/media.d.ts +233 -0
  27. package/dist/api/media.d.ts.map +1 -0
  28. package/dist/api/mobile.d.ts +658 -0
  29. package/dist/api/mobile.d.ts.map +1 -0
  30. package/dist/api/process.d.ts +168 -0
  31. package/dist/api/process.d.ts.map +1 -0
  32. package/dist/api/sidebar.d.ts +125 -0
  33. package/dist/api/sidebar.d.ts.map +1 -0
  34. package/dist/api/tray.d.ts +410 -0
  35. package/dist/api/tray.d.ts.map +1 -0
  36. package/dist/api/window.d.ts +462 -0
  37. package/dist/api/window.d.ts.map +1 -0
  38. package/dist/api/windows-advanced.d.ts +719 -0
  39. package/dist/api/windows-advanced.d.ts.map +1 -0
  40. package/dist/assets/index.d.ts +69 -0
  41. package/dist/assets/index.d.ts.map +1 -0
  42. package/dist/binary-resolver.d.ts +39 -0
  43. package/dist/binary-resolver.d.ts.map +1 -0
  44. package/dist/bridge/android.d.ts +574 -0
  45. package/dist/bridge/android.d.ts.map +1 -0
  46. package/dist/bridge/core.d.ts +474 -0
  47. package/dist/bridge/core.d.ts.map +1 -0
  48. package/dist/bridge/ids.d.ts +18 -0
  49. package/dist/bridge/ids.d.ts.map +1 -0
  50. package/dist/bridge/ios.d.ts +528 -0
  51. package/dist/bridge/ios.d.ts.map +1 -0
  52. package/dist/bridge/webkit-pending.d.ts +50 -0
  53. package/dist/bridge/webkit-pending.d.ts.map +1 -0
  54. package/dist/build/bundle-optimizer.d.ts +69 -0
  55. package/dist/build/bundle-optimizer.d.ts.map +1 -0
  56. package/dist/components/index.d.ts +719 -0
  57. package/dist/components/index.d.ts.map +1 -0
  58. package/dist/components/native.d.ts +728 -0
  59. package/dist/components/native.d.ts.map +1 -0
  60. package/dist/components/sidebar.d.ts +458 -0
  61. package/dist/components/sidebar.d.ts.map +1 -0
  62. package/dist/dev/devtools.d.ts +118 -0
  63. package/dist/dev/devtools.d.ts.map +1 -0
  64. package/dist/dev/error-overlay.d.ts +73 -0
  65. package/dist/dev/error-overlay.d.ts.map +1 -0
  66. package/dist/dev/hot-reload.d.ts +127 -0
  67. package/dist/dev/hot-reload.d.ts.map +1 -0
  68. package/dist/index.cjs +10253 -0
  69. package/dist/index.d.cts +59 -0
  70. package/dist/index.d.ts +59 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +10240 -0
  73. package/dist/logging/index.d.ts +152 -0
  74. package/dist/logging/index.d.ts.map +1 -0
  75. package/dist/optimizations/index.d.ts +232 -0
  76. package/dist/optimizations/index.d.ts.map +1 -0
  77. package/dist/package.d.ts +90 -0
  78. package/dist/package.d.ts.map +1 -0
  79. package/dist/performance/runtime.d.ts +230 -0
  80. package/dist/performance/runtime.d.ts.map +1 -0
  81. package/dist/performance/startup.d.ts +223 -0
  82. package/dist/performance/startup.d.ts.map +1 -0
  83. package/dist/plugins/index.d.ts +114 -0
  84. package/dist/plugins/index.d.ts.map +1 -0
  85. package/dist/security/index.d.ts +268 -0
  86. package/dist/security/index.d.ts.map +1 -0
  87. package/dist/signing/index.d.ts +104 -0
  88. package/dist/signing/index.d.ts.map +1 -0
  89. package/dist/styles/headwind.d.ts +222 -0
  90. package/dist/styles/headwind.d.ts.map +1 -0
  91. package/dist/styles/index.d.ts +31 -0
  92. package/dist/styles/index.d.ts.map +1 -0
  93. package/dist/styles/sidebar-templates.d.ts +77 -0
  94. package/dist/styles/sidebar-templates.d.ts.map +1 -0
  95. package/dist/styles/sidebars.d.ts +194 -0
  96. package/dist/styles/sidebars.d.ts.map +1 -0
  97. package/dist/types.d.ts +1555 -0
  98. package/dist/types.d.ts.map +1 -0
  99. package/dist/updater/index.d.ts +164 -0
  100. package/dist/updater/index.d.ts.map +1 -0
  101. package/dist/utils/audio.d.ts +40 -0
  102. package/dist/utils/audio.d.ts.map +1 -0
  103. package/dist/utils/index.d.ts +9 -0
  104. package/dist/utils/index.d.ts.map +1 -0
  105. package/dist/utils/native.d.ts +27 -0
  106. package/dist/utils/native.d.ts.map +1 -0
  107. package/dist/utils/react.d.ts +157 -0
  108. package/dist/utils/react.d.ts.map +1 -0
  109. package/dist/utils/storage.d.ts +35 -0
  110. package/dist/utils/storage.d.ts.map +1 -0
  111. package/dist/utils/svelte.d.ts +187 -0
  112. package/dist/utils/svelte.d.ts.map +1 -0
  113. package/dist/utils/timer.d.ts +57 -0
  114. package/dist/utils/timer.d.ts.map +1 -0
  115. package/dist/utils/vue.d.ts +157 -0
  116. package/dist/utils/vue.d.ts.map +1 -0
  117. package/package.json +78 -0
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Svelte bindings for Craft
3
+ * @module @craft-native/svelte
4
+ */
5
+ import { type Writable, type Readable } from 'svelte/store';
6
+ export interface WindowState {
7
+ isVisible: boolean;
8
+ isFullscreen: boolean;
9
+ isMaximized: boolean;
10
+ isMinimized: boolean;
11
+ isFocused: boolean;
12
+ title: string;
13
+ width: number;
14
+ height: number;
15
+ x: number;
16
+ y: number;
17
+ }
18
+ export interface TrayState {
19
+ isVisible: boolean;
20
+ tooltip: string;
21
+ icon: string;
22
+ }
23
+ export interface TrayMenuItem {
24
+ id: string;
25
+ label: string;
26
+ type?: 'normal' | 'separator' | 'checkbox' | 'submenu';
27
+ checked?: boolean;
28
+ enabled?: boolean;
29
+ submenu?: TrayMenuItem[];
30
+ onClick?: () => void;
31
+ }
32
+ export interface NotificationOptions {
33
+ title: string;
34
+ body: string;
35
+ icon?: string;
36
+ sound?: boolean;
37
+ actions?: Array<{
38
+ id: string;
39
+ title: string;
40
+ }>;
41
+ }
42
+ export interface CraftContext {
43
+ platform: 'ios' | 'android' | 'macos' | 'windows' | 'linux' | 'web';
44
+ isDarkMode: boolean;
45
+ isOnline: boolean;
46
+ appVersion: string;
47
+ }
48
+ declare function createCraftStore(): {
49
+ subscribe: Writable<CraftContext>['subscribe'];
50
+ setDarkMode: (dark: boolean) => void;
51
+ setAppVersion: (version: string) => void;
52
+ };
53
+ declare function createWindowStore(): {
54
+ subscribe: Writable<WindowState>['subscribe'];
55
+ setTitle: (title: string) => void;
56
+ setSize: (width: number, height: number) => void;
57
+ setPosition: (x: number, y: number) => void;
58
+ minimize: () => void;
59
+ maximize: () => void;
60
+ restore: () => void;
61
+ close: () => void;
62
+ toggleFullscreen: () => void;
63
+ show: () => void;
64
+ hide: () => void;
65
+ focus: () => void;
66
+ };
67
+ declare function createTrayStore(): {
68
+ subscribe: Writable<TrayState>['subscribe'];
69
+ menu: Writable<TrayMenuItem[]>;
70
+ setIcon: (icon: string) => void;
71
+ setTooltip: (tooltip: string) => void;
72
+ setMenu: (items: TrayMenuItem[]) => void;
73
+ show: () => void;
74
+ hide: () => void;
75
+ };
76
+ export declare const craftStore: ReturnType<typeof createCraftStore>;
77
+ export declare const windowStore: ReturnType<typeof createWindowStore>;
78
+ export declare const trayStore: ReturnType<typeof createTrayStore>;
79
+ export declare const platform: Readable<CraftContext['platform']>;
80
+ export declare const isDarkMode: Readable<boolean>;
81
+ export declare const isOnline: Readable<boolean>;
82
+ export declare const isMobile: Readable<boolean>;
83
+ export declare const isDesktop: Readable<boolean>;
84
+ export declare const isWeb: Readable<boolean>;
85
+ declare function createNotificationStore(): {
86
+ hasPermission: {
87
+ subscribe: Writable<boolean>['subscribe'];
88
+ };
89
+ requestPermission: () => Promise<boolean>;
90
+ show: (options: NotificationOptions) => Promise<string>;
91
+ close: (id: string) => void;
92
+ };
93
+ export declare const notificationStore: ReturnType<typeof createNotificationStore>;
94
+ /**
95
+ * Create a persistent store backed by localStorage
96
+ */
97
+ export declare function persistentStore<T>(key: string, initialValue: T): Writable<T>;
98
+ /**
99
+ * Create a store for clipboard operations
100
+ */
101
+ export declare function createClipboardStore(): {
102
+ copy: (text: string) => Promise<void>;
103
+ paste: () => Promise<string>;
104
+ readImage: () => Promise<Blob | null>;
105
+ };
106
+ export declare const clipboardStore: ReturnType<typeof createClipboardStore>;
107
+ /**
108
+ * Action for keyboard shortcuts
109
+ * Usage: <div use:shortcut={{ key: 'ctrl+s', callback: save }}>
110
+ */
111
+ export declare function shortcut(_node: HTMLElement, params: {
112
+ key: string;
113
+ callback: () => void;
114
+ preventDefault?: boolean;
115
+ }): {
116
+ destroy(): void;
117
+ update(newParams: typeof params): void;
118
+ };
119
+ /**
120
+ * Action for file drop zones
121
+ * Usage: <div use:fileDrop={{ onDrop: handleFiles }}>
122
+ */
123
+ export declare function fileDrop(node: HTMLElement, params: {
124
+ onDrop: (files: File[]) => void;
125
+ onDragEnter?: () => void;
126
+ onDragLeave?: () => void;
127
+ accept?: string[];
128
+ }): {
129
+ destroy(): void;
130
+ update(newParams: typeof params): void;
131
+ };
132
+ /**
133
+ * Action for click outside detection
134
+ * Usage: <div use:clickOutside={() => close()}>
135
+ */
136
+ export declare function clickOutside(node: HTMLElement, callback: () => void): {
137
+ destroy(): void;
138
+ update(newCallback: () => void): void;
139
+ };
140
+ /**
141
+ * Action for intersection observer
142
+ * Usage: <div use:inView={{ callback: handleVisible }}>
143
+ */
144
+ export declare function inView(node: HTMLElement, params: {
145
+ callback: (isVisible: boolean) => void;
146
+ threshold?: number;
147
+ rootMargin?: string;
148
+ }): {
149
+ destroy(): void;
150
+ update(newParams: typeof params): void;
151
+ };
152
+ /**
153
+ * Action for auto-focus
154
+ * Usage: <input use:autoFocus>
155
+ */
156
+ export declare function autoFocus(node: HTMLElement): {
157
+ destroy(): void;
158
+ };
159
+ /**
160
+ * Action for tooltip
161
+ * Usage: <button use:tooltip={'Click me'}>
162
+ */
163
+ export declare function tooltip(node: HTMLElement, text: string): {
164
+ destroy(): void;
165
+ update(newText: string): void;
166
+ };
167
+ /**
168
+ * Action for long press
169
+ * Usage: <button use:longPress={{ callback: handleLongPress, duration: 500 }}>
170
+ */
171
+ export declare function longPress(node: HTMLElement, params: {
172
+ callback: () => void;
173
+ duration?: number;
174
+ }): {
175
+ destroy(): void;
176
+ update(newParams: typeof params): void;
177
+ };
178
+ /**
179
+ * Run callback on mount and return cleanup function
180
+ */
181
+ export declare function onMountWithCleanup(callback: () => void | (() => void)): void;
182
+ /**
183
+ * Subscribe to a store only when component is mounted
184
+ */
185
+ export declare function subscribeOnMount<T>(store: Readable<T>, callback: (value: T) => void): void;
186
+ export {};
187
+ //# sourceMappingURL=svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../src/utils/svelte.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Timer utilities for Craft applications
3
+ * Simple interval-based timer with callbacks
4
+ */
5
+ export type TimerCallback = (_timeRemaining: number) => void;
6
+ export declare class Timer {
7
+ private duration;
8
+ private onTick;
9
+ private onComplete?;
10
+ private intervalId;
11
+ private timeRemaining;
12
+ private isRunning;
13
+ /** Wallclock deadline (ms epoch). Used to recompute timeRemaining each
14
+ * tick so the timer doesn't drift under load or tab throttling — a
15
+ * simple `--` counter loses minutes over hours. */
16
+ private endAt;
17
+ /** Reference to a clock for testability — overridable so tests can
18
+ * advance time deterministically. Defaults to `Date.now`. */
19
+ private static now;
20
+ constructor(duration: number, onTick: TimerCallback, onComplete?: (() => void) | undefined);
21
+ /**
22
+ * Start the timer
23
+ */
24
+ start(): void;
25
+ /**
26
+ * Pause the timer
27
+ */
28
+ pause(): void;
29
+ /**
30
+ * Reset the timer to initial duration
31
+ */
32
+ reset(): void;
33
+ /**
34
+ * Set a new duration
35
+ */
36
+ setDuration(duration: number): void;
37
+ /**
38
+ * Get current time remaining
39
+ */
40
+ getTimeRemaining(): number;
41
+ /**
42
+ * Check if timer is running
43
+ */
44
+ running(): boolean;
45
+ /**
46
+ * Format time as MM:SS. Negative values are clamped to zero since the
47
+ * timer should never display "negative time remaining" in a UI.
48
+ */
49
+ static formatTime(seconds: number): string;
50
+ /**
51
+ * Override the wallclock used by `start()`/`reset()` for the lifetime
52
+ * of the process. Intended for tests that need to advance time
53
+ * deterministically. Pass `null` to restore `Date.now`.
54
+ */
55
+ static _setClockForTests(clock: (() => number) | null): void;
56
+ }
57
+ //# sourceMappingURL=timer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../src/utils/timer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;AAE5D,qBAAa,KAAK;IAad,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IAdrB,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,SAAS,CAAiB;IAClC;;uDAEmD;IACnD,OAAO,CAAC,KAAK,CAAY;IACzB;iEAC6D;IAC7D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAiC;gBAGzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,GAAE,MAAM,IAAI,aAAA;IAKjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAkBb;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQnC;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAO1C;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI;CAG7D"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Vue bindings for Craft
3
+ * @module @craft-native/vue
4
+ */
5
+ import { type App, type ComputedRef, type InjectionKey, type Ref } from 'vue';
6
+ export interface WindowState {
7
+ isVisible: boolean;
8
+ isFullscreen: boolean;
9
+ isMaximized: boolean;
10
+ isMinimized: boolean;
11
+ isFocused: boolean;
12
+ title: string;
13
+ width: number;
14
+ height: number;
15
+ x: number;
16
+ y: number;
17
+ }
18
+ export interface TrayState {
19
+ isVisible: boolean;
20
+ tooltip: string;
21
+ icon: string;
22
+ }
23
+ export interface TrayMenuItem {
24
+ id: string;
25
+ label: string;
26
+ type?: 'normal' | 'separator' | 'checkbox' | 'submenu';
27
+ checked?: boolean;
28
+ enabled?: boolean;
29
+ submenu?: TrayMenuItem[];
30
+ onClick?: () => void;
31
+ }
32
+ export interface NotificationOptions {
33
+ title: string;
34
+ body: string;
35
+ icon?: string;
36
+ sound?: boolean;
37
+ actions?: Array<{
38
+ id: string;
39
+ title: string;
40
+ }>;
41
+ }
42
+ export interface CraftContext {
43
+ platform: 'ios' | 'android' | 'macos' | 'windows' | 'linux' | 'web';
44
+ isDarkMode: boolean;
45
+ isOnline: boolean;
46
+ appVersion: string;
47
+ }
48
+ export declare const CRAFT_KEY: InjectionKey<ReturnType<typeof createCraftContext>>;
49
+ export declare const WINDOW_KEY: InjectionKey<ReturnType<typeof createWindowContext>>;
50
+ export declare const TRAY_KEY: InjectionKey<ReturnType<typeof createTrayContext>>;
51
+ declare function createCraftContext(): {
52
+ state: Readonly<CraftContext>;
53
+ setDarkMode: (dark: boolean) => void;
54
+ };
55
+ declare function createWindowContext(): {
56
+ state: Readonly<WindowState>;
57
+ setTitle: (title: string) => void;
58
+ setSize: (width: number, height: number) => void;
59
+ setPosition: (x: number, y: number) => void;
60
+ minimize: () => void;
61
+ maximize: () => void;
62
+ restore: () => void;
63
+ close: () => void;
64
+ toggleFullscreen: () => void;
65
+ show: () => void;
66
+ hide: () => void;
67
+ focus: () => void;
68
+ };
69
+ declare function createTrayContext(): {
70
+ state: Readonly<TrayState>;
71
+ menu: Readonly<Ref<readonly TrayMenuItem[]>>;
72
+ setIcon: (icon: string) => void;
73
+ setTooltip: (tooltip: string) => void;
74
+ setMenu: (items: TrayMenuItem[]) => void;
75
+ show: () => void;
76
+ hide: () => void;
77
+ };
78
+ export interface CraftPluginOptions {
79
+ appVersion?: string;
80
+ }
81
+ export declare const CraftPlugin: {
82
+ install(app: App, options?: CraftPluginOptions): void;
83
+ };
84
+ /**
85
+ * Composable to access the Craft context
86
+ */
87
+ export declare function useCraft(): ReturnType<typeof createCraftContext>;
88
+ /**
89
+ * Composable to manage the application window
90
+ */
91
+ export declare function useWindow(): ReturnType<typeof createWindowContext>;
92
+ /**
93
+ * Composable to manage the system tray
94
+ */
95
+ export declare function useTray(): ReturnType<typeof createTrayContext>;
96
+ /**
97
+ * Composable for native notifications
98
+ */
99
+ export declare function useNotification(): {
100
+ hasPermission: Readonly<Ref<boolean>>;
101
+ requestPermission: () => Promise<boolean>;
102
+ show: (options: NotificationOptions) => Promise<string>;
103
+ close: (id: string) => void;
104
+ };
105
+ /**
106
+ * Composable to detect dark mode preference
107
+ */
108
+ export declare function useDarkMode(): {
109
+ isDark: Readonly<Ref<boolean>>;
110
+ setDarkMode: (dark: boolean) => void;
111
+ };
112
+ /**
113
+ * Composable to detect online status
114
+ */
115
+ export declare function useOnline(): Readonly<Ref<boolean>>;
116
+ /**
117
+ * Composable for keyboard shortcuts
118
+ */
119
+ export declare function useShortcut(shortcut: string | Ref<string>, callback: () => void, options?: {
120
+ preventDefault?: boolean;
121
+ enabled?: Ref<boolean> | boolean;
122
+ }): void;
123
+ /**
124
+ * Composable for file drag and drop
125
+ */
126
+ export declare function useFileDrop(options: {
127
+ onDrop: (files: File[]) => void;
128
+ onDragEnter?: () => void;
129
+ onDragLeave?: () => void;
130
+ accept?: string[];
131
+ }): {
132
+ isDragging: Readonly<Ref<boolean>>;
133
+ dropRef: Ref<HTMLElement | null>;
134
+ };
135
+ /**
136
+ * Composable for clipboard operations
137
+ */
138
+ export declare function useClipboard(): {
139
+ copy: (text: string) => Promise<void>;
140
+ paste: () => Promise<string>;
141
+ readImage: () => Promise<Blob | null>;
142
+ };
143
+ /**
144
+ * Composable for local storage with reactivity
145
+ */
146
+ export declare function useLocalStorage<T>(key: string, initialValue: T): Ref<T>;
147
+ /**
148
+ * Composable to detect platform
149
+ */
150
+ export declare function usePlatform(): {
151
+ platform: ComputedRef<'ios' | 'android' | 'macos' | 'windows' | 'linux' | 'web'>;
152
+ isMobile: ComputedRef<boolean>;
153
+ isDesktop: ComputedRef<boolean>;
154
+ isWeb: ComputedRef<boolean>;
155
+ };
156
+ export { createCraftContext, createWindowContext, createTrayContext, };
157
+ //# sourceMappingURL=vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/utils/vue.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "craft-native",
3
+ "version": "0.0.37",
4
+ "type": "module",
5
+ "description": "Build desktop apps with web languages - TypeScript SDK for Craft",
6
+ "author": "Chris Breuer <chris@stacksjs.org>",
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/home-lang/craft#readme",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/home-lang/craft.git",
12
+ "directory": "packages/typescript"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/home-lang/craft/issues"
16
+ },
17
+ "keywords": [
18
+ "desktop",
19
+ "app",
20
+ "framework",
21
+ "webview",
22
+ "zig",
23
+ "native",
24
+ "cross-platform",
25
+ "electron-alternative",
26
+ "tauri-alternative",
27
+ "gui",
28
+ "typescript",
29
+ "bun"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "import": {
34
+ "types": "./dist/index.d.ts",
35
+ "default": "./dist/index.js"
36
+ },
37
+ "require": {
38
+ "types": "./dist/index.d.cts",
39
+ "default": "./dist/index.cjs"
40
+ }
41
+ }
42
+ },
43
+ "module": "./dist/index.js",
44
+ "types": "./dist/index.d.ts",
45
+ "files": [
46
+ "bin",
47
+ "dist",
48
+ "README.md",
49
+ "LICENSE.md"
50
+ ],
51
+ "bin": {
52
+ "craft": "./bin/cli.ts",
53
+ "craft-sdk": "./bin/cli.ts"
54
+ },
55
+ "scripts": {
56
+ "build": "rm -rf dist && bun run build:lib && bun run build:types",
57
+ "build:lib": "bun build src/index.ts --outdir dist --format esm --target bun --external archiver --external ws && bun build src/index.ts --outfile dist/index.cjs --format cjs --target node --external archiver --external ws",
58
+ "build:types": "bun run tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts",
59
+ "dev": "bun --watch src/index.ts",
60
+ "lint": "bunx --bun pickier lint . --config ../../pickier.config.ts --max-warnings 9999",
61
+ "lint:fix": "bunx --bun pickier lint . --fix --config ../../pickier.config.ts --max-warnings 9999",
62
+ "test": "bun test",
63
+ "typecheck": "tsc --noEmit",
64
+ "prepublishOnly": "bun run build"
65
+ },
66
+ "dependencies": {
67
+ "archiver": "^7.0.1",
68
+ "ws": "^8.18.0"
69
+ },
70
+ "devDependencies": {
71
+ "@stacksjs/clapp": "^0.2.0",
72
+ "@types/archiver": "^6.0.2",
73
+ "@types/bun": "^1.2.0",
74
+ "@types/node": "^22.0.0",
75
+ "@types/ws": "^8.5.12",
76
+ "better-dx": "^0.2.7"
77
+ }
78
+ }