minip-bridge 1.0.20 → 1.0.21

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
@@ -24,22 +24,10 @@ navigateTo({page: "index.html", title: "title"})
24
24
  - Directly use in html/js file
25
25
 
26
26
  ```html
27
- <head>
28
- <script type="importmap">
29
- {
30
- "imports": {
31
- "minip-bridge": "https://cdn.jsdelivr.net/npm/minip-bridge/dist/index.mjs",
32
- "kysely": "https://cdn.jsdelivr.net/npm/kysely/dist/esm/index.js"
33
- }
34
- }
35
- </script>
36
- </head>
37
- <body>
38
- <script type="module">
39
- import * as minip from "minip-bridge";
40
-
41
- console.log(minip);
42
- console.log(minip.navigateTo);
43
- </script>
44
- </body>
27
+ <script type="module">
28
+ import * as minip from "minip-bridge";
29
+
30
+ console.log(minip);
31
+ console.log(minip.navigateTo);
32
+ </script>
45
33
  ```
@@ -1,53 +1,6 @@
1
- // src/bridge/index.ts
2
- var jsBridge;
3
- if (window.webkit?.messageHandlers?.MinipNativeInteraction) {
4
- const _callNative = window.webkit.messageHandlers.MinipNativeInteraction;
5
- jsBridge = {
6
- callNative(req) {
7
- return _callNative.postMessage(JSON.stringify(req)).then((res) => JSON.parse(res)).then((res) => {
8
- if (res.code === 0 /* SUCCESS */) {
9
- res.isSuccess = () => true;
10
- const hashData = res.data !== null && res.data !== void 0;
11
- res.hasData = () => hashData;
12
- return res;
13
- } else {
14
- throw new Error(res.msg ?? "Unknown error, res: ");
15
- }
16
- });
17
- },
18
- callNativeSync(req) {
19
- const res = prompt(JSON.stringify(req));
20
- if (res) {
21
- const r = JSON.parse(res);
22
- r.isSuccess = () => true;
23
- const hashData = r.data !== null && r.data !== void 0;
24
- r.hasData = () => hashData;
25
- return r;
26
- }
27
- return {
28
- code: 7 /* FAILED */,
29
- msg: "Unknown error",
30
- isSuccess: () => false,
31
- hasData: () => false
32
- };
33
- }
34
- };
35
- } else {
36
- jsBridge = {
37
- callNative() {
38
- return new Promise((_, reject) => {
39
- reject("Cannot find JavaScript Bridge!!!");
40
- });
41
- },
42
- callNativeSync() {
43
- return {
44
- code: 7 /* FAILED */,
45
- msg: "Cannot find JavaScript Bridge!!!"
46
- };
47
- }
48
- };
49
- }
50
- var bridge_default = jsBridge;
1
+ import {
2
+ bridge_default
3
+ } from "./chunk-PRRQDQWO.mjs";
51
4
 
52
5
  // src/api/sqlite.ts
53
6
  function sqliteOpenDB(path) {
@@ -135,7 +88,6 @@ function sqliteIteratorRelease(dbKey, stmtKey) {
135
88
  }
136
89
 
137
90
  export {
138
- bridge_default,
139
91
  sqliteOpenDB,
140
92
  sqliteCloseDB,
141
93
  sqlitePrepare,
@@ -146,4 +98,4 @@ export {
146
98
  sqliteIteratorNext,
147
99
  sqliteIteratorRelease
148
100
  };
149
- //# sourceMappingURL=chunk-BHXED4CK.mjs.map
101
+ //# sourceMappingURL=chunk-P6PQVD6M.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/sqlite.ts"],"sourcesContent":["import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\n\r\nexport function sqliteOpenDB(\r\n path: string,\r\n): Promise<MResponseWithData<{ dbKey: number }>> {\r\n return jsBridge.callNative({\r\n api: \"sqliteOpenDB\",\r\n data: {\r\n path,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteCloseDB(dbKey: number): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"sqliteCloseDB\",\r\n data: {\r\n dbKey,\r\n },\r\n });\r\n}\r\n\r\nexport function sqlitePrepare(\r\n dbKey: number,\r\n sql: string,\r\n): Promise<MResponseWithData<{ stmtKey: number; reader: boolean }>> {\r\n return jsBridge.callNative({\r\n api: \"sqlitePrepare\",\r\n data: {\r\n dbKey,\r\n sql,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteStatementAll(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<MResponseWithData<unknown[]>> {\r\n return jsBridge.callNative({\r\n api: \"sqliteStatementAll\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteStatementRun(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<\r\n MResponseWithData<{\r\n changes: number | bigint;\r\n lastInsertRowid: number | bigint;\r\n }>\r\n> {\r\n return jsBridge.callNative({\r\n api: \"sqliteStatementRun\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteExecute(\r\n dbKey: number,\r\n sql: string,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<\r\n MResponseWithData<{\r\n reader: boolean;\r\n runRes?: {\r\n changes: number | bigint;\r\n lastInsertRowid: number | bigint;\r\n };\r\n entityData?: unknown[];\r\n }>\r\n> {\r\n return jsBridge.callNative({\r\n api: \"sqliteExecute\",\r\n data: {\r\n dbKey,\r\n sql,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteCreateIterator(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"sqliteCreateIterator\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteIteratorNext(\r\n dbKey: number,\r\n stmtKey: number,\r\n): Promise<MResponseWithData<unknown | undefined>> {\r\n return jsBridge.callNative({\r\n api: \"sqliteIteratorNext\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteIteratorRelease(\r\n dbKey: number,\r\n stmtKey: number,\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"sqliteIteratorRelease\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n },\r\n });\r\n}\r\n"],"mappings":";;;;;AAGO,SAAS,aACd,MAC+C;AAC/C,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,cAAc,OAAmC;AAC/D,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,cACd,OACA,KACkE;AAClE,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,mBACd,OACA,SACA,YACuC;AACvC,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,mBACd,OACA,SACA,YAMA;AACA,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,cACd,OACA,KACA,YAUA;AACA,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,qBACd,OACA,SACA,YACoB;AACpB,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,mBACd,OACA,SACiD;AACjD,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,sBACd,OACA,SACoB;AACpB,SAAO,eAAS,WAAW;AAAA,IACzB,KAAK;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,54 @@
1
+ // src/bridge/index.ts
2
+ var jsBridge;
3
+ if (window.webkit?.messageHandlers?.MinipNativeInteraction) {
4
+ const _callNative = window.webkit.messageHandlers.MinipNativeInteraction;
5
+ jsBridge = {
6
+ callNative(req) {
7
+ return _callNative.postMessage(JSON.stringify(req)).then((res) => JSON.parse(res)).then((res) => {
8
+ if (res.code === 0 /* SUCCESS */) {
9
+ res.isSuccess = () => true;
10
+ const hashData = res.data !== null && res.data !== void 0;
11
+ res.hasData = () => hashData;
12
+ return res;
13
+ } else {
14
+ throw new Error(res.msg ?? "Unknown error, res: ");
15
+ }
16
+ });
17
+ },
18
+ callNativeSync(req) {
19
+ const res = prompt(JSON.stringify(req));
20
+ if (res) {
21
+ const r = JSON.parse(res);
22
+ if (r.code === 0 /* SUCCESS */) {
23
+ r.isSuccess = () => true;
24
+ const hashData = r.data !== null && r.data !== void 0;
25
+ r.hasData = () => hashData;
26
+ return r;
27
+ } else {
28
+ throw new Error(r.msg ?? "Unknown error, res: ");
29
+ }
30
+ }
31
+ throw new Error("Unknown error");
32
+ }
33
+ };
34
+ } else {
35
+ jsBridge = {
36
+ callNative() {
37
+ return new Promise((_, reject) => {
38
+ reject("Cannot find JavaScript Bridge!!!");
39
+ });
40
+ },
41
+ callNativeSync() {
42
+ return {
43
+ code: 7 /* FAILED */,
44
+ msg: "Cannot find JavaScript Bridge!!!"
45
+ };
46
+ }
47
+ };
48
+ }
49
+ var bridge_default = jsBridge;
50
+
51
+ export {
52
+ bridge_default
53
+ };
54
+ //# sourceMappingURL=chunk-PRRQDQWO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bridge/index.ts"],"sourcesContent":["import { MResponseStatusCode } from \"../types\";\r\nimport { MRequest } from \"../types/request\";\r\n\r\ninterface WebKitCallable {\r\n postMessage: (data: string) => Promise<string>;\r\n}\r\ndeclare global {\r\n interface Window {\r\n webkit?: {\r\n messageHandlers?: {\r\n MinipNativeInteraction?: WebKitCallable;\r\n };\r\n };\r\n }\r\n}\r\n\r\nlet jsBridge: {\r\n callNative: <T>(req?: MRequest<T>) => Promise<any>;\r\n callNativeSync: <T>(req?: MRequest<T>) => any;\r\n};\r\n\r\n// apple webkit\r\nif (window.webkit?.messageHandlers?.MinipNativeInteraction) {\r\n const _callNative = window.webkit.messageHandlers.MinipNativeInteraction;\r\n jsBridge = {\r\n callNative(req) {\r\n return _callNative\r\n .postMessage(JSON.stringify(req))\r\n .then((res) => JSON.parse(res))\r\n .then((res) => {\r\n if (res.code === MResponseStatusCode.SUCCESS) {\r\n res.isSuccess = () => true;\r\n const hashData = res.data !== null && res.data !== undefined;\r\n res.hasData = () => hashData;\r\n return res;\r\n } else {\r\n throw new Error(res.msg ?? \"Unknown error, res: \");\r\n }\r\n });\r\n },\r\n callNativeSync(req) {\r\n const res = prompt(JSON.stringify(req));\r\n if (res) {\r\n const r = JSON.parse(res);\r\n\r\n if (r.code === MResponseStatusCode.SUCCESS) {\r\n r.isSuccess = () => true;\r\n const hashData = r.data !== null && r.data !== undefined;\r\n r.hasData = () => hashData;\r\n return r;\r\n } else {\r\n throw new Error(r.msg ?? \"Unknown error, res: \");\r\n }\r\n }\r\n throw new Error(\"Unknown error\");\r\n },\r\n };\r\n}\r\n// error\r\nelse {\r\n jsBridge = {\r\n callNative() {\r\n return new Promise((_, reject) => {\r\n reject(\"Cannot find JavaScript Bridge!!!\");\r\n });\r\n },\r\n callNativeSync() {\r\n return {\r\n code: MResponseStatusCode.FAILED,\r\n msg: \"Cannot find JavaScript Bridge!!!\",\r\n };\r\n },\r\n };\r\n}\r\n\r\nexport default jsBridge;\r\n"],"mappings":";AAgBA,IAAI;AAMJ,IAAI,OAAO,QAAQ,iBAAiB,wBAAwB;AAC1D,QAAM,cAAc,OAAO,OAAO,gBAAgB;AAClD,aAAW;AAAA,IACT,WAAW,KAAK;AACd,aAAO,YACJ,YAAY,KAAK,UAAU,GAAG,CAAC,EAC/B,KAAK,CAAC,QAAQ,KAAK,MAAM,GAAG,CAAC,EAC7B,KAAK,CAAC,QAAQ;AACb,YAAI,IAAI,0BAAsC;AAC5C,cAAI,YAAY,MAAM;AACtB,gBAAM,WAAW,IAAI,SAAS,QAAQ,IAAI,SAAS;AACnD,cAAI,UAAU,MAAM;AACpB,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM,IAAI,MAAM,IAAI,OAAO,sBAAsB;AAAA,QACnD;AAAA,MACF,CAAC;AAAA,IACL;AAAA,IACA,eAAe,KAAK;AAClB,YAAM,MAAM,OAAO,KAAK,UAAU,GAAG,CAAC;AACtC,UAAI,KAAK;AACP,cAAM,IAAI,KAAK,MAAM,GAAG;AAExB,YAAI,EAAE,0BAAsC;AAC1C,YAAE,YAAY,MAAM;AACpB,gBAAM,WAAW,EAAE,SAAS,QAAQ,EAAE,SAAS;AAC/C,YAAE,UAAU,MAAM;AAClB,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM,IAAI,MAAM,EAAE,OAAO,sBAAsB;AAAA,QACjD;AAAA,MACF;AACA,YAAM,IAAI,MAAM,eAAe;AAAA,IACjC;AAAA,EACF;AACF,OAEK;AACH,aAAW;AAAA,IACT,aAAa;AACX,aAAO,IAAI,QAAQ,CAAC,GAAG,WAAW;AAChC,eAAO,kCAAkC;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB;AACf,aAAO;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,iBAAQ;","names":[]}
@@ -0,0 +1,54 @@
1
+ interface FileStats {
2
+ dev: number;
3
+ ino: number;
4
+ mode: number;
5
+ nlink: number;
6
+ uid: number;
7
+ gid: number;
8
+ rdev: number;
9
+ size: number;
10
+ blksize: number;
11
+ blocks: number;
12
+ atimeMs: number;
13
+ mtimeMs: number;
14
+ ctimeMs: number;
15
+ birthtimeMs: number;
16
+ atime: Date;
17
+ mtime: Date;
18
+ ctime: Date;
19
+ birthtime: Date;
20
+ isDirectory(): boolean;
21
+ isFile(): boolean;
22
+ isSymbolicLink(): boolean;
23
+ }
24
+
25
+ declare function access(path: string, mode?: number): Promise<void>;
26
+ declare function accessSync(path: string, mode?: number): void;
27
+ declare function unlink(path: string): Promise<void>;
28
+ declare function unlinkSync(path: string): void;
29
+ declare function rename(oldPath: string, newPath: string): Promise<void>;
30
+ declare function renameSync(oldPath: string, newPath: string): void;
31
+ declare function stat(path: string): Promise<FileStats>;
32
+ declare function statSync(path: string): FileStats;
33
+ declare function rm(path: string): Promise<void>;
34
+ declare function rmSync(path: string): void;
35
+
36
+ declare function mkdir(path: string, recursive?: boolean): Promise<void>;
37
+ declare function mkdirSync(path: string, recursive?: boolean): void;
38
+ declare function readDir(path: string): Promise<string[]>;
39
+ declare function readDirSync(path: string): string[];
40
+ declare function rmdir(path: string, force?: boolean): Promise<void>;
41
+ declare function rmdirSync(path: string, force?: boolean): void;
42
+
43
+ declare function readFile(path: string): Promise<ArrayBuffer>;
44
+ declare function readFileSync(path: string): ArrayBuffer;
45
+ declare function writeFile(path: string, data: ArrayBuffer | string): Promise<void>;
46
+ declare function writeFileSync(path: string, data: ArrayBuffer | string): void;
47
+ declare function appendFile(path: string, data: ArrayBuffer | string): Promise<void>;
48
+ declare function appendFileSync(path: string, data: ArrayBuffer | string): void;
49
+ declare function copyFile(src: string, dest: string): Promise<void>;
50
+ declare function copyFileSync(src: string, dest: string): void;
51
+ declare function truncate(path: string, length: number): Promise<void>;
52
+ declare function truncateSync(path: string, length: number): void;
53
+
54
+ export { access, accessSync, appendFile, appendFileSync, copyFile, copyFileSync, mkdir, mkdirSync, readDir, readDirSync, readFile, readFileSync, rename, renameSync, rm, rmSync, rmdir, rmdirSync, stat, statSync, truncate, truncateSync, unlink, unlinkSync, writeFile, writeFileSync };
@@ -0,0 +1,359 @@
1
+ import {
2
+ bridge_default
3
+ } from "../chunk-PRRQDQWO.mjs";
4
+
5
+ // src/fs/common.ts
6
+ async function access(path, mode) {
7
+ return bridge_default.callNative({
8
+ api: "fsAccess",
9
+ data: {
10
+ path,
11
+ mode
12
+ }
13
+ }).then((res) => {
14
+ const r = res;
15
+ if (!r.hasData() || !r.data) {
16
+ throw new Error(r.msg ?? "cannot access this file or directory");
17
+ }
18
+ });
19
+ }
20
+ function accessSync(path, mode) {
21
+ const res = bridge_default.callNativeSync({
22
+ api: "fsAccessSync",
23
+ data: {
24
+ path,
25
+ mode
26
+ }
27
+ });
28
+ if (!res.hasData() || !res.data) {
29
+ throw new Error(res.msg ?? "cannot access this file or directory");
30
+ }
31
+ }
32
+ async function unlink(path) {
33
+ await bridge_default.callNative({
34
+ api: "fsUnlink",
35
+ data: {
36
+ path
37
+ }
38
+ });
39
+ }
40
+ function unlinkSync(path) {
41
+ bridge_default.callNativeSync({
42
+ api: "fsUnlinkSync",
43
+ data: {
44
+ path
45
+ }
46
+ });
47
+ }
48
+ async function rename(oldPath, newPath) {
49
+ await bridge_default.callNative({
50
+ api: "fsRename",
51
+ data: {
52
+ oldPath,
53
+ newPath
54
+ }
55
+ });
56
+ }
57
+ function renameSync(oldPath, newPath) {
58
+ bridge_default.callNativeSync({
59
+ api: "fsRenameSync",
60
+ data: {
61
+ oldPath,
62
+ newPath
63
+ }
64
+ });
65
+ }
66
+ async function stat(path) {
67
+ const res = await bridge_default.callNative({
68
+ api: "fsStat",
69
+ data: {
70
+ path
71
+ }
72
+ });
73
+ const file = res.data;
74
+ file.atime = new Date(file.atimeMs);
75
+ file.mtime = new Date(file.mtimeMs);
76
+ file.ctime = new Date(file.ctimeMs);
77
+ const S_IFDIR = 16384;
78
+ const S_IFREG = 32768;
79
+ const S_IFLNK = 40960;
80
+ file.isDirectory = function() {
81
+ return (this.mode & S_IFDIR) === S_IFDIR;
82
+ };
83
+ file.isFile = function() {
84
+ return (this.mode & S_IFREG) === S_IFREG;
85
+ };
86
+ file.isSymbolicLink = function() {
87
+ return (this.mode & S_IFLNK) === S_IFLNK;
88
+ };
89
+ return file;
90
+ }
91
+ function statSync(path) {
92
+ const res = bridge_default.callNativeSync({
93
+ api: "fsStatSync",
94
+ data: {
95
+ path
96
+ }
97
+ });
98
+ const file = res.data;
99
+ file.atime = new Date(file.atimeMs);
100
+ file.mtime = new Date(file.mtimeMs);
101
+ file.ctime = new Date(file.ctimeMs);
102
+ const S_IFDIR = 16384;
103
+ const S_IFREG = 32768;
104
+ const S_IFLNK = 40960;
105
+ file.isDirectory = function() {
106
+ return (this.mode & S_IFDIR) === S_IFDIR;
107
+ };
108
+ file.isFile = function() {
109
+ return (this.mode & S_IFREG) === S_IFREG;
110
+ };
111
+ file.isSymbolicLink = function() {
112
+ return (this.mode & S_IFLNK) === S_IFLNK;
113
+ };
114
+ return file;
115
+ }
116
+ async function rm(path) {
117
+ await bridge_default.callNative({
118
+ api: "fsRm",
119
+ data: {
120
+ path
121
+ }
122
+ });
123
+ }
124
+ function rmSync(path) {
125
+ bridge_default.callNativeSync({
126
+ api: "fsRmSync",
127
+ data: {
128
+ path
129
+ }
130
+ });
131
+ }
132
+
133
+ // src/fs/dir.ts
134
+ async function mkdir(path, recursive = true) {
135
+ await bridge_default.callNative({
136
+ api: "fsMkdir",
137
+ data: {
138
+ path,
139
+ recursive
140
+ }
141
+ });
142
+ }
143
+ function mkdirSync(path, recursive = true) {
144
+ bridge_default.callNativeSync({
145
+ api: "fsMkdirSync",
146
+ data: {
147
+ path,
148
+ recursive
149
+ }
150
+ });
151
+ }
152
+ function readDir(path) {
153
+ return bridge_default.callNative({
154
+ api: "fsReadDir",
155
+ data: {
156
+ path
157
+ }
158
+ }).then((res) => res).then((res) => res.data);
159
+ }
160
+ function readDirSync(path) {
161
+ const res = bridge_default.callNativeSync({
162
+ api: "fsReadDirSync",
163
+ data: {
164
+ path
165
+ }
166
+ });
167
+ return res.data;
168
+ }
169
+ async function rmdir(path, force) {
170
+ await bridge_default.callNative({
171
+ api: "fsRmdir",
172
+ data: {
173
+ path,
174
+ force
175
+ }
176
+ });
177
+ }
178
+ function rmdirSync(path, force) {
179
+ bridge_default.callNativeSync({
180
+ api: "fsRmdirSync",
181
+ data: {
182
+ path,
183
+ force
184
+ }
185
+ });
186
+ }
187
+
188
+ // src/fs/file.ts
189
+ function base64ToArrayBuffer(base64) {
190
+ const binaryString = atob(base64);
191
+ const bytes = new Uint8Array(binaryString.length);
192
+ for (let i = 0; i < binaryString.length; i++) {
193
+ bytes[i] = binaryString.charCodeAt(i);
194
+ }
195
+ return bytes.buffer;
196
+ }
197
+ function arrayBufferToBase64(buffer) {
198
+ let binary = "";
199
+ const bytes = new Uint8Array(buffer);
200
+ const len = bytes.byteLength;
201
+ for (let i = 0; i < len; i++) {
202
+ binary += String.fromCharCode(bytes[i]);
203
+ }
204
+ return btoa(binary);
205
+ }
206
+ function readFile(path) {
207
+ return bridge_default.callNative({
208
+ api: "fsReadFile",
209
+ data: {
210
+ path
211
+ }
212
+ }).then((res) => res.data).then((res) => base64ToArrayBuffer(res));
213
+ }
214
+ function readFileSync(path) {
215
+ const res = bridge_default.callNativeSync({
216
+ api: "fsReadFileSync",
217
+ data: {
218
+ path
219
+ }
220
+ });
221
+ return base64ToArrayBuffer(res.data);
222
+ }
223
+ async function writeFile(path, data) {
224
+ let base64 = "";
225
+ if (data instanceof ArrayBuffer) {
226
+ base64 = arrayBufferToBase64(data);
227
+ } else {
228
+ const encoder = new TextEncoder();
229
+ const uint8Array = encoder.encode(data);
230
+ const arrayBuffer = uint8Array.buffer;
231
+ base64 = arrayBufferToBase64(arrayBuffer);
232
+ }
233
+ await bridge_default.callNative({
234
+ api: "fsWriteFile",
235
+ data: {
236
+ path,
237
+ data: base64
238
+ }
239
+ });
240
+ }
241
+ function writeFileSync(path, data) {
242
+ let base64 = "";
243
+ if (data instanceof ArrayBuffer) {
244
+ base64 = arrayBufferToBase64(data);
245
+ } else {
246
+ const encoder = new TextEncoder();
247
+ const uint8Array = encoder.encode(data);
248
+ const arrayBuffer = uint8Array.buffer;
249
+ base64 = arrayBufferToBase64(arrayBuffer);
250
+ }
251
+ bridge_default.callNativeSync({
252
+ api: "fsWriteFileSync",
253
+ data: {
254
+ path,
255
+ data: base64
256
+ }
257
+ });
258
+ }
259
+ async function appendFile(path, data) {
260
+ let base64 = "";
261
+ if (data instanceof ArrayBuffer) {
262
+ base64 = arrayBufferToBase64(data);
263
+ } else {
264
+ const encoder = new TextEncoder();
265
+ const uint8Array = encoder.encode(data);
266
+ const arrayBuffer = uint8Array.buffer;
267
+ base64 = arrayBufferToBase64(arrayBuffer);
268
+ }
269
+ await bridge_default.callNative({
270
+ api: "fsAppendFile",
271
+ data: {
272
+ path,
273
+ data: base64
274
+ }
275
+ });
276
+ }
277
+ function appendFileSync(path, data) {
278
+ let base64 = "";
279
+ if (data instanceof ArrayBuffer) {
280
+ base64 = arrayBufferToBase64(data);
281
+ } else {
282
+ const encoder = new TextEncoder();
283
+ const uint8Array = encoder.encode(data);
284
+ const arrayBuffer = uint8Array.buffer;
285
+ base64 = arrayBufferToBase64(arrayBuffer);
286
+ }
287
+ bridge_default.callNativeSync({
288
+ api: "fsAppendFileSync",
289
+ data: {
290
+ path,
291
+ data: base64
292
+ }
293
+ });
294
+ }
295
+ async function copyFile(src, dest) {
296
+ await bridge_default.callNative({
297
+ api: "fsCopyFile",
298
+ data: {
299
+ src,
300
+ dest
301
+ }
302
+ });
303
+ }
304
+ function copyFileSync(src, dest) {
305
+ bridge_default.callNativeSync({
306
+ api: "fsCopyFileSync",
307
+ data: {
308
+ src,
309
+ dest
310
+ }
311
+ });
312
+ }
313
+ async function truncate(path, length) {
314
+ await bridge_default.callNative({
315
+ api: "fsTruncate",
316
+ data: {
317
+ path,
318
+ length
319
+ }
320
+ });
321
+ }
322
+ function truncateSync(path, length) {
323
+ bridge_default.callNativeSync({
324
+ api: "fsTruncateSync",
325
+ data: {
326
+ path,
327
+ length
328
+ }
329
+ });
330
+ }
331
+ export {
332
+ access,
333
+ accessSync,
334
+ appendFile,
335
+ appendFileSync,
336
+ copyFile,
337
+ copyFileSync,
338
+ mkdir,
339
+ mkdirSync,
340
+ readDir,
341
+ readDirSync,
342
+ readFile,
343
+ readFileSync,
344
+ rename,
345
+ renameSync,
346
+ rm,
347
+ rmSync,
348
+ rmdir,
349
+ rmdirSync,
350
+ stat,
351
+ statSync,
352
+ truncate,
353
+ truncateSync,
354
+ unlink,
355
+ unlinkSync,
356
+ writeFile,
357
+ writeFileSync
358
+ };
359
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fs/common.ts","../../src/fs/dir.ts","../../src/fs/file.ts"],"sourcesContent":["import jsBridge from \"../bridge\";\r\nimport { MResponseWithData } from \"../types\";\r\nimport { FileStats } from \"../types/FileStats\";\r\n\r\nexport async function access(path: string, mode?: number): Promise<void> {\r\n return jsBridge.callNative({\r\n api: \"fsAccess\",\r\n data: {\r\n path,\r\n mode\r\n }\r\n }).then(res => {\r\n const r = res as MResponseWithData<boolean>\r\n if (!r.hasData() || !r.data) {\r\n throw new Error(r.msg ?? \"cannot access this file or directory\")\r\n }\r\n });\r\n}\r\n\r\nexport function accessSync(path: string, mode?: number) {\r\n const res = jsBridge.callNativeSync({\r\n api: \"fsAccessSync\",\r\n data: {\r\n path,\r\n mode\r\n }\r\n }) as MResponseWithData<boolean>\r\n if (!res.hasData() || !res.data) {\r\n throw new Error(res.msg ?? \"cannot access this file or directory\")\r\n }\r\n}\r\n\r\nexport async function unlink(path: string) {\r\n await jsBridge.callNative({\r\n api: \"fsUnlink\",\r\n data: {\r\n path\r\n }\r\n })\r\n}\r\n\r\nexport function unlinkSync(path: string) {\r\n jsBridge.callNativeSync({\r\n api: \"fsUnlinkSync\",\r\n data: {\r\n path\r\n }\r\n })\r\n}\r\n\r\nexport async function rename(oldPath: string, newPath: string) {\r\n await jsBridge.callNative({\r\n api: \"fsRename\",\r\n data: {\r\n oldPath,\r\n newPath\r\n }\r\n })\r\n}\r\n\r\nexport function renameSync(oldPath: string, newPath: string) {\r\n jsBridge.callNativeSync({\r\n api: \"fsRenameSync\",\r\n data: {\r\n oldPath,\r\n newPath\r\n }\r\n })\r\n}\r\n\r\n// todo: check !!!!!\r\nexport async function stat(path: string) {\r\n const res = await jsBridge.callNative({\r\n api: \"fsStat\",\r\n data: {\r\n path\r\n }\r\n }) as MResponseWithData<FileStats>\r\n\r\n const file = res.data\r\n\r\n file.atime = new Date(file.atimeMs);\r\n file.mtime = new Date(file.mtimeMs);\r\n file.ctime = new Date(file.ctimeMs);\r\n\r\n const S_IFDIR = 0o040000;\r\n const S_IFREG = 0o100000;\r\n const S_IFLNK = 0o120000;\r\n\r\n file.isDirectory = function () {\r\n return (this.mode & S_IFDIR) === S_IFDIR;\r\n };\r\n\r\n file.isFile = function () {\r\n return (this.mode & S_IFREG) === S_IFREG;\r\n };\r\n\r\n file.isSymbolicLink = function () {\r\n return (this.mode & S_IFLNK) === S_IFLNK;\r\n };\r\n\r\n return file\r\n}\r\n\r\nexport function statSync(path: string) {\r\n const res = jsBridge.callNativeSync({\r\n api: \"fsStatSync\",\r\n data: {\r\n path\r\n }\r\n }) as MResponseWithData<FileStats>\r\n\r\n const file = res.data\r\n\r\n file.atime = new Date(file.atimeMs);\r\n file.mtime = new Date(file.mtimeMs);\r\n file.ctime = new Date(file.ctimeMs);\r\n\r\n const S_IFDIR = 0o040000;\r\n const S_IFREG = 0o100000;\r\n const S_IFLNK = 0o120000;\r\n\r\n file.isDirectory = function () {\r\n return (this.mode & S_IFDIR) === S_IFDIR;\r\n };\r\n\r\n file.isFile = function () {\r\n return (this.mode & S_IFREG) === S_IFREG;\r\n };\r\n\r\n file.isSymbolicLink = function () {\r\n return (this.mode & S_IFLNK) === S_IFLNK;\r\n };\r\n\r\n return file\r\n}\r\n\r\nexport async function rm(path: string) {\r\n await jsBridge.callNative({\r\n api: \"fsRm\",\r\n data: {\r\n path\r\n }\r\n })\r\n}\r\n\r\nexport function rmSync(path: string) {\r\n jsBridge.callNativeSync({\r\n api: \"fsRmSync\",\r\n data: {\r\n path\r\n }\r\n })\r\n}","import jsBridge from \"../bridge\";\r\nimport { MResponseWithData } from \"../types\";\r\n\r\nexport async function mkdir(path: string, recursive: boolean = true) {\r\n await jsBridge.callNative({\r\n api: \"fsMkdir\",\r\n data: {\r\n path,\r\n recursive\r\n }\r\n })\r\n}\r\n\r\nexport function mkdirSync(path: string, recursive: boolean = true) {\r\n jsBridge.callNativeSync({\r\n api: \"fsMkdirSync\",\r\n data: {\r\n path,\r\n recursive\r\n }\r\n })\r\n}\r\n\r\nexport function readDir(path: string): Promise<string[]> {\r\n return jsBridge.callNative({\r\n api: \"fsReadDir\",\r\n data: {\r\n path\r\n }\r\n }).then(res => res as MResponseWithData<string[]>)\r\n .then(res => res.data)\r\n}\r\n\r\nexport function readDirSync(path: string): string[] {\r\n const res = jsBridge.callNativeSync({\r\n api: \"fsReadDirSync\",\r\n data: {\r\n path\r\n }\r\n }) as MResponseWithData<string[]>\r\n return res.data\r\n}\r\n\r\nexport async function rmdir(path: string, force?: boolean) {\r\n await jsBridge.callNative({\r\n api: \"fsRmdir\",\r\n data: {\r\n path,\r\n force\r\n }\r\n })\r\n}\r\n\r\nexport function rmdirSync(path: string, force?: boolean) {\r\n jsBridge.callNativeSync({\r\n api: \"fsRmdirSync\",\r\n data: {\r\n path,\r\n force\r\n }\r\n })\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponseWithData } from \"../types\";\r\n\r\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\r\n const binaryString = atob(base64);\r\n const bytes = new Uint8Array(binaryString.length);\r\n for (let i = 0; i < binaryString.length; i++) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n return bytes.buffer;\r\n}\r\n\r\nfunction arrayBufferToBase64(buffer: ArrayBuffer): string {\r\n let binary = '';\r\n const bytes = new Uint8Array(buffer);\r\n const len = bytes.byteLength;\r\n\r\n for (let i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n\r\n return btoa(binary);\r\n}\r\n\r\nexport function readFile(path: string): Promise<ArrayBuffer> {\r\n return jsBridge.callNative({\r\n api: \"fsReadFile\",\r\n data: {\r\n path\r\n }\r\n }).then(res => (res as MResponseWithData<string>).data)\r\n .then(res => base64ToArrayBuffer(res))\r\n}\r\n\r\nexport function readFileSync(path: string): ArrayBuffer {\r\n const res = jsBridge.callNativeSync({\r\n api: \"fsReadFileSync\",\r\n data: {\r\n path\r\n }\r\n }) as MResponseWithData<string>\r\n return base64ToArrayBuffer(res.data)\r\n}\r\n\r\nexport async function writeFile(path: string, data: ArrayBuffer | string) {\r\n let base64 = \"\"\r\n if (data instanceof ArrayBuffer) {\r\n base64 = arrayBufferToBase64(data)\r\n } else {\r\n const encoder = new TextEncoder();\r\n const uint8Array = encoder.encode(data);\r\n const arrayBuffer = uint8Array.buffer;\r\n base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)\r\n }\r\n\r\n\r\n await jsBridge.callNative({\r\n api: \"fsWriteFile\",\r\n data: {\r\n path,\r\n data: base64\r\n }\r\n })\r\n}\r\n\r\nexport function writeFileSync(path: string, data: ArrayBuffer | string) {\r\n let base64 = \"\"\r\n if (data instanceof ArrayBuffer) {\r\n base64 = arrayBufferToBase64(data)\r\n } else {\r\n const encoder = new TextEncoder();\r\n const uint8Array = encoder.encode(data);\r\n const arrayBuffer = uint8Array.buffer;\r\n base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)\r\n }\r\n\r\n jsBridge.callNativeSync({\r\n api: \"fsWriteFileSync\",\r\n data: {\r\n path,\r\n data: base64\r\n }\r\n })\r\n}\r\n\r\nexport async function appendFile(path: string, data: ArrayBuffer | string) {\r\n let base64 = \"\"\r\n if (data instanceof ArrayBuffer) {\r\n base64 = arrayBufferToBase64(data)\r\n } else {\r\n const encoder = new TextEncoder();\r\n const uint8Array = encoder.encode(data);\r\n const arrayBuffer = uint8Array.buffer;\r\n base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)\r\n }\r\n\r\n await jsBridge.callNative({\r\n api: \"fsAppendFile\",\r\n data: {\r\n path,\r\n data: base64\r\n }\r\n })\r\n}\r\n\r\nexport function appendFileSync(path: string, data: ArrayBuffer | string) {\r\n let base64 = \"\"\r\n if (data instanceof ArrayBuffer) {\r\n base64 = arrayBufferToBase64(data)\r\n } else {\r\n const encoder = new TextEncoder();\r\n const uint8Array = encoder.encode(data);\r\n const arrayBuffer = uint8Array.buffer;\r\n base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)\r\n }\r\n\r\n jsBridge.callNativeSync({\r\n api: \"fsAppendFileSync\",\r\n data: {\r\n path,\r\n data: base64\r\n }\r\n })\r\n}\r\n\r\nexport async function copyFile(src: string, dest: string) {\r\n await jsBridge.callNative({\r\n api: \"fsCopyFile\",\r\n data: {\r\n src,\r\n dest\r\n }\r\n })\r\n}\r\n\r\nexport function copyFileSync(src: string, dest: string) {\r\n jsBridge.callNativeSync({\r\n api: \"fsCopyFileSync\",\r\n data: {\r\n src,\r\n dest\r\n }\r\n })\r\n}\r\n\r\nexport async function truncate(path: string, length: number) {\r\n await jsBridge.callNative({\r\n api: \"fsTruncate\",\r\n data: {\r\n path,\r\n length\r\n }\r\n })\r\n}\r\n\r\nexport function truncateSync(path: string, length: number) {\r\n jsBridge.callNativeSync({\r\n api: \"fsTruncateSync\",\r\n data: {\r\n path,\r\n length\r\n }\r\n })\r\n}"],"mappings":"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","names":[]}
package/dist/index.d.mts CHANGED
@@ -117,6 +117,24 @@ interface File {
117
117
  hash: string;
118
118
  }
119
119
 
120
+ interface DeviceInfo {
121
+ language: string;
122
+ model: string;
123
+ system: string;
124
+ screen: ScreenInfo;
125
+ safeAreaInfo: SafeAreaInfo;
126
+ }
127
+ interface ScreenInfo {
128
+ width: number;
129
+ height: number;
130
+ }
131
+ interface SafeAreaInfo {
132
+ left: number;
133
+ right: number;
134
+ top: number;
135
+ bottom: number;
136
+ }
137
+
120
138
  declare function navigateTo(data: {
121
139
  page: string;
122
140
  title?: string;
@@ -162,24 +180,6 @@ declare function setKVStorageSync(key: string, value: string): MResponse;
162
180
  declare function deleteKVStorageSync(key: string): MResponse;
163
181
  declare function clearKVStorageSync(): MResponse;
164
182
 
165
- interface DeviceInfo {
166
- language: string;
167
- model: string;
168
- system: string;
169
- screen: ScreenInfo;
170
- safeAreaInfo: SafeAreaInfo;
171
- }
172
- interface ScreenInfo {
173
- width: number;
174
- height: number;
175
- }
176
- interface SafeAreaInfo {
177
- left: number;
178
- right: number;
179
- top: number;
180
- bottom: number;
181
- }
182
-
183
183
  /**
184
184
  *
185
185
  * @param type medium as default
@@ -235,4 +235,4 @@ declare global {
235
235
  }
236
236
  }
237
237
 
238
- export { type AlertAction, type AlertConfig, type AppInfo, type DateAndTimePickerConfig, type HUDType, type MRequest, type MRequestBase, type MRequestWithData, type MResponse, MResponseStatusCode, type MResponseWithData, type MultipleColumnsPickerConfig, type ShowHUDRequest, type SingleColumnPickerConfig, clearKVStorage, clearKVStorageSync, clearMemoryStorage, closeApp, deleteKVStorage, deleteKVStorageSync, disablePullDownRefresh, enablePullDownRefresh, getClipboardData, getDeviceInfo, getDeviceInfoSync, getInstalledAppList, getKVStorage, getKVStorageSync, getMemoryStorage, hideHUD, installApp, navigateBack, navigateTo, onPullDownRefresh, openSettings, openWebsite, previewImage, previewVideo, redirectTo, removeMemoryStorage, scanQRCode, setClipboardData, setKVStorage, setKVStorageSync, setMemoryStorage, setMemoryStorageIfNotExist, setNavigationBarColor, setNavigationBarTitle, showAlert, showAppDetail, showHUD, showPicker, sqliteCloseDB, sqliteCreateIterator, sqliteExecute, sqliteIteratorNext, sqliteIteratorRelease, sqliteOpenDB, sqlitePrepare, sqliteStatementAll, sqliteStatementRun, startPullDownRefresh, stopPullDownRefresh, vibrate };
238
+ export { type AlertAction, type AlertConfig, type AppInfo, type DateAndTimePickerConfig, type DeviceInfo, type HUDType, type MRequest, type MRequestBase, type MRequestWithData, type MResponse, MResponseStatusCode, type MResponseWithData, type MultipleColumnsPickerConfig, type ShowHUDRequest, type SingleColumnPickerConfig, clearKVStorage, clearKVStorageSync, clearMemoryStorage, closeApp, deleteKVStorage, deleteKVStorageSync, disablePullDownRefresh, enablePullDownRefresh, getClipboardData, getDeviceInfo, getDeviceInfoSync, getInstalledAppList, getKVStorage, getKVStorageSync, getMemoryStorage, hideHUD, installApp, navigateBack, navigateTo, onPullDownRefresh, openSettings, openWebsite, previewImage, previewVideo, redirectTo, removeMemoryStorage, scanQRCode, setClipboardData, setKVStorage, setKVStorageSync, setMemoryStorage, setMemoryStorageIfNotExist, setNavigationBarColor, setNavigationBarTitle, showAlert, showAppDetail, showHUD, showPicker, sqliteCloseDB, sqliteCreateIterator, sqliteExecute, sqliteIteratorNext, sqliteIteratorRelease, sqliteOpenDB, sqlitePrepare, sqliteStatementAll, sqliteStatementRun, startPullDownRefresh, stopPullDownRefresh, vibrate };
package/dist/index.mjs CHANGED
@@ -1,5 +1,4 @@
1
1
  import {
2
- bridge_default,
3
2
  sqliteCloseDB,
4
3
  sqliteCreateIterator,
5
4
  sqliteExecute,
@@ -9,7 +8,10 @@ import {
9
8
  sqlitePrepare,
10
9
  sqliteStatementAll,
11
10
  sqliteStatementRun
12
- } from "./chunk-BHXED4CK.mjs";
11
+ } from "./chunk-P6PQVD6M.mjs";
12
+ import {
13
+ bridge_default
14
+ } from "./chunk-PRRQDQWO.mjs";
13
15
 
14
16
  // src/api/route.ts
15
17
  function navigateTo(data) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/route.ts","../src/api/app.ts","../src/api/ui.ts","../src/api/kvstorage.ts","../src/api/device.ts","../src/api/memory-cache.ts"],"sourcesContent":["import jsBridge from \"../bridge\";\r\nimport { MResponse } from \"../types\";\r\n\r\nexport function navigateTo(data: {\r\n page: string;\r\n title?: string;\r\n}): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"navigateTo\",\r\n data: data,\r\n });\r\n}\r\n\r\nexport function navigateBack(delta: number = 1): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"navigateBack\",\r\n data: {\r\n delta,\r\n },\r\n });\r\n}\r\n\r\nexport function redirectTo(data: {\r\n page: string;\r\n title?: string;\r\n}): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"redirectTo\",\r\n data: data,\r\n });\r\n}\r\n\r\nexport function openWebsite(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"openWebsite\",\r\n data: { url },\r\n });\r\n}\r\n\r\nexport function openSettings(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"openSettings\",\r\n });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { AppInfo, MResponse, MResponseWithData } from \"../types\";\r\n\r\nexport function closeApp(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"closeApp\",\r\n });\r\n}\r\n\r\nexport function showAppDetail(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"showAppDetail\",\r\n });\r\n}\r\n\r\nexport function installApp(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"installApp\",\r\n data: {\r\n url,\r\n },\r\n });\r\n}\r\n\r\nexport function getInstalledAppList(): Promise<MResponseWithData<AppInfo[]>> {\r\n return jsBridge.callNative({\r\n api: \"getInstalledAppList\",\r\n });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport {\r\n AlertConfig,\r\n DateAndTimePickerConfig,\r\n MResponse,\r\n MResponseWithData,\r\n MultipleColumnsPickerConfig,\r\n ShowHUDRequest,\r\n SingleColumnPickerConfig,\r\n} from \"../types\";\r\n\r\n// navigation bar\r\n\r\nexport function setNavigationBarTitle(title: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setNavigationBarTitle\",\r\n data: {\r\n title,\r\n },\r\n });\r\n}\r\n\r\nexport function setNavigationBarColor(config: {\r\n foregroundColor: string;\r\n backgroundColor: string;\r\n}): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setNavigationBarColor\",\r\n data: config,\r\n });\r\n}\r\n\r\n// pulldown refresh\r\n\r\nexport function enablePullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"enablePullDownRefresh\",\r\n });\r\n}\r\n\r\nexport function disablePullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"disablePullDownRefresh\",\r\n });\r\n}\r\n\r\nexport function onPullDownRefresh(callback: (e: Event) => any) {\r\n window.addEventListener(\"pulldownrefresh\", callback);\r\n}\r\n\r\nexport function startPullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"startPullDownRefresh\",\r\n });\r\n}\r\n\r\nexport function stopPullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"stopPullDownRefresh\",\r\n });\r\n}\r\n\r\n// HUD\r\n\r\nexport function showHUD(req: ShowHUDRequest): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"showHUD\",\r\n data: req,\r\n });\r\n}\r\n\r\nexport function hideHUD(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"hideHUD\",\r\n });\r\n}\r\n\r\n// alert\r\nexport function showAlert(\r\n config: AlertConfig,\r\n): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"showAlert\",\r\n data: config,\r\n });\r\n}\r\n\r\n// media\r\nexport function previewImage(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"previewImage\",\r\n data: {\r\n url,\r\n },\r\n });\r\n}\r\n\r\nexport function previewVideo(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"previewVideo\",\r\n data: {\r\n url,\r\n },\r\n });\r\n}\r\n\r\n// picker\r\nexport function showPicker(\r\n type: \"singleColumn\",\r\n data: SingleColumnPickerConfig,\r\n): Promise<MResponseWithData<number | null | undefined>>;\r\nexport function showPicker(\r\n type: \"multipleColumns\",\r\n data: MultipleColumnsPickerConfig,\r\n): Promise<MResponseWithData<number[] | null | undefined>>;\r\nexport function showPicker(\r\n type: \"date\" | \"time\",\r\n data: DateAndTimePickerConfig,\r\n): Promise<MResponseWithData<string | null | undefined>>;\r\n\r\nexport function showPicker(\r\n type: \"singleColumn\" | \"multipleColumns\" | \"date\" | \"time\",\r\n data:\r\n | SingleColumnPickerConfig\r\n | MultipleColumnsPickerConfig\r\n | DateAndTimePickerConfig,\r\n): Promise<MResponseWithData<number | number[] | string | null | undefined>> {\r\n let res;\r\n if (\r\n (type === \"time\" || type === \"date\") &&\r\n !(data as DateAndTimePickerConfig).dateFormat\r\n ) {\r\n res = jsBridge.callNative({\r\n api: \"showPicker\",\r\n data: {\r\n type,\r\n data: {\r\n ...data,\r\n dateFormat: type === \"date\" ? \"yyyy-MM-dd\" : \"HH:mm:ss\",\r\n },\r\n },\r\n });\r\n } else {\r\n res = jsBridge.callNative({\r\n api: \"showPicker\",\r\n data: { type, data },\r\n });\r\n }\r\n return res;\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\n\r\n// async methods\r\n\r\nexport function getKVStorage(key: string): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"getKVStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function setKVStorage(key: string, value: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setKVStorage\",\r\n data: { key, value },\r\n });\r\n}\r\n\r\nexport function deleteKVStorage(key: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"deleteKVStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function clearKVStorage(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"clearKVStorage\",\r\n });\r\n}\r\n\r\n// sync methods\r\n\r\nexport function getKVStorageSync(key: string): MResponseWithData<string> {\r\n return jsBridge.callNativeSync({\r\n api: \"getKVStorageSync\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function setKVStorageSync(key: string, value: string): MResponse {\r\n return jsBridge.callNativeSync({\r\n api: \"setKVStorageSync\",\r\n data: { key, value },\r\n });\r\n}\r\n\r\nexport function deleteKVStorageSync(key: string): MResponse {\r\n return jsBridge.callNativeSync({\r\n api: \"deleteKVStorageSync\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function clearKVStorageSync(): MResponse {\r\n return jsBridge.callNativeSync({\r\n api: \"clearKVStorageSync\",\r\n });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\nimport { DeviceInfo } from \"../types/deviceinfo\";\r\n\r\n/**\r\n *\r\n * @param type medium as default\r\n */\r\nexport function vibrate(\r\n type?: \"light\" | \"medium\" | \"heavy\",\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"vibrate\",\r\n data: {\r\n type: type ?? \"medium\",\r\n },\r\n });\r\n}\r\n\r\nexport function getClipboardData(): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"getClipboardData\",\r\n });\r\n}\r\n\r\nexport function setClipboardData(\r\n data: string,\r\n): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"setClipboardData\",\r\n data: {\r\n data,\r\n },\r\n });\r\n}\r\n\r\nexport function scanQRCode(): Promise<\r\n MResponseWithData<string | undefined | null>\r\n> {\r\n return jsBridge.callNative({ api: \"scanQRCode\" });\r\n}\r\n\r\nexport function getDeviceInfo(): Promise<MResponseWithData<DeviceInfo>> {\r\n return jsBridge.callNative({ api: \"getDeviceInfo\" });\r\n}\r\n\r\nexport function getDeviceInfoSync(): MResponseWithData<DeviceInfo> {\r\n return jsBridge.callNativeSync({ api: \"getDeviceInfoSync\" });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\n\r\nexport function getMemoryStorage(\r\n key: string,\r\n): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"getMemoryStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function setMemoryStorage(\r\n key: string,\r\n value: string,\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setMemoryStorage\",\r\n data: { key, value },\r\n });\r\n}\r\nexport function setMemoryStorageIfNotExist(\r\n key: string,\r\n value: string,\r\n): Promise<MResponseWithData<boolean>> {\r\n return jsBridge.callNative({\r\n api: \"setMemoryStorageIfNotExist\",\r\n data: { key, value },\r\n });\r\n}\r\n\r\nexport function removeMemoryStorage(key: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"removeMemoryStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function clearMemoryStorage(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"clearMemoryStorage\",\r\n });\r\n}\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/api/route.ts","../src/api/app.ts","../src/api/ui.ts","../src/api/kvstorage.ts","../src/api/device.ts","../src/api/memory-cache.ts"],"sourcesContent":["import jsBridge from \"../bridge\";\r\nimport { MResponse } from \"../types\";\r\n\r\nexport function navigateTo(data: {\r\n page: string;\r\n title?: string;\r\n}): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"navigateTo\",\r\n data: data,\r\n });\r\n}\r\n\r\nexport function navigateBack(delta: number = 1): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"navigateBack\",\r\n data: {\r\n delta,\r\n },\r\n });\r\n}\r\n\r\nexport function redirectTo(data: {\r\n page: string;\r\n title?: string;\r\n}): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"redirectTo\",\r\n data: data,\r\n });\r\n}\r\n\r\nexport function openWebsite(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"openWebsite\",\r\n data: { url },\r\n });\r\n}\r\n\r\nexport function openSettings(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"openSettings\",\r\n });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { AppInfo, MResponse, MResponseWithData } from \"../types\";\r\n\r\nexport function closeApp(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"closeApp\",\r\n });\r\n}\r\n\r\nexport function showAppDetail(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"showAppDetail\",\r\n });\r\n}\r\n\r\nexport function installApp(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"installApp\",\r\n data: {\r\n url,\r\n },\r\n });\r\n}\r\n\r\nexport function getInstalledAppList(): Promise<MResponseWithData<AppInfo[]>> {\r\n return jsBridge.callNative({\r\n api: \"getInstalledAppList\",\r\n });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport {\r\n AlertConfig,\r\n DateAndTimePickerConfig,\r\n MResponse,\r\n MResponseWithData,\r\n MultipleColumnsPickerConfig,\r\n ShowHUDRequest,\r\n SingleColumnPickerConfig,\r\n} from \"../types\";\r\n\r\n// navigation bar\r\n\r\nexport function setNavigationBarTitle(title: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setNavigationBarTitle\",\r\n data: {\r\n title,\r\n },\r\n });\r\n}\r\n\r\nexport function setNavigationBarColor(config: {\r\n foregroundColor: string;\r\n backgroundColor: string;\r\n}): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setNavigationBarColor\",\r\n data: config,\r\n });\r\n}\r\n\r\n// pulldown refresh\r\n\r\nexport function enablePullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"enablePullDownRefresh\",\r\n });\r\n}\r\n\r\nexport function disablePullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"disablePullDownRefresh\",\r\n });\r\n}\r\n\r\nexport function onPullDownRefresh(callback: (e: Event) => any) {\r\n window.addEventListener(\"pulldownrefresh\", callback);\r\n}\r\n\r\nexport function startPullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"startPullDownRefresh\",\r\n });\r\n}\r\n\r\nexport function stopPullDownRefresh(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"stopPullDownRefresh\",\r\n });\r\n}\r\n\r\n// HUD\r\n\r\nexport function showHUD(req: ShowHUDRequest): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"showHUD\",\r\n data: req,\r\n });\r\n}\r\n\r\nexport function hideHUD(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"hideHUD\",\r\n });\r\n}\r\n\r\n// alert\r\nexport function showAlert(\r\n config: AlertConfig,\r\n): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"showAlert\",\r\n data: config,\r\n });\r\n}\r\n\r\n// media\r\nexport function previewImage(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"previewImage\",\r\n data: {\r\n url,\r\n },\r\n });\r\n}\r\n\r\nexport function previewVideo(url: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"previewVideo\",\r\n data: {\r\n url,\r\n },\r\n });\r\n}\r\n\r\n// picker\r\nexport function showPicker(\r\n type: \"singleColumn\",\r\n data: SingleColumnPickerConfig,\r\n): Promise<MResponseWithData<number | null | undefined>>;\r\nexport function showPicker(\r\n type: \"multipleColumns\",\r\n data: MultipleColumnsPickerConfig,\r\n): Promise<MResponseWithData<number[] | null | undefined>>;\r\nexport function showPicker(\r\n type: \"date\" | \"time\",\r\n data: DateAndTimePickerConfig,\r\n): Promise<MResponseWithData<string | null | undefined>>;\r\n\r\nexport function showPicker(\r\n type: \"singleColumn\" | \"multipleColumns\" | \"date\" | \"time\",\r\n data:\r\n | SingleColumnPickerConfig\r\n | MultipleColumnsPickerConfig\r\n | DateAndTimePickerConfig,\r\n): Promise<MResponseWithData<number | number[] | string | null | undefined>> {\r\n let res;\r\n if (\r\n (type === \"time\" || type === \"date\") &&\r\n !(data as DateAndTimePickerConfig).dateFormat\r\n ) {\r\n res = jsBridge.callNative({\r\n api: \"showPicker\",\r\n data: {\r\n type,\r\n data: {\r\n ...data,\r\n dateFormat: type === \"date\" ? \"yyyy-MM-dd\" : \"HH:mm:ss\",\r\n },\r\n },\r\n });\r\n } else {\r\n res = jsBridge.callNative({\r\n api: \"showPicker\",\r\n data: { type, data },\r\n });\r\n }\r\n return res;\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\n\r\n// async methods\r\n\r\nexport function getKVStorage(key: string): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"getKVStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function setKVStorage(key: string, value: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setKVStorage\",\r\n data: { key, value },\r\n });\r\n}\r\n\r\nexport function deleteKVStorage(key: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"deleteKVStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function clearKVStorage(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"clearKVStorage\",\r\n });\r\n}\r\n\r\n// sync methods\r\n\r\nexport function getKVStorageSync(key: string): MResponseWithData<string> {\r\n return jsBridge.callNativeSync({\r\n api: \"getKVStorageSync\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function setKVStorageSync(key: string, value: string): MResponse {\r\n return jsBridge.callNativeSync({\r\n api: \"setKVStorageSync\",\r\n data: { key, value },\r\n });\r\n}\r\n\r\nexport function deleteKVStorageSync(key: string): MResponse {\r\n return jsBridge.callNativeSync({\r\n api: \"deleteKVStorageSync\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function clearKVStorageSync(): MResponse {\r\n return jsBridge.callNativeSync({\r\n api: \"clearKVStorageSync\",\r\n });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\nimport { DeviceInfo } from \"../types/deviceinfo\";\r\n\r\n/**\r\n *\r\n * @param type medium as default\r\n */\r\nexport function vibrate(\r\n type?: \"light\" | \"medium\" | \"heavy\",\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"vibrate\",\r\n data: {\r\n type: type ?? \"medium\",\r\n },\r\n });\r\n}\r\n\r\nexport function getClipboardData(): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"getClipboardData\",\r\n });\r\n}\r\n\r\nexport function setClipboardData(\r\n data: string,\r\n): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"setClipboardData\",\r\n data: {\r\n data,\r\n },\r\n });\r\n}\r\n\r\nexport function scanQRCode(): Promise<\r\n MResponseWithData<string | undefined | null>\r\n> {\r\n return jsBridge.callNative({ api: \"scanQRCode\" });\r\n}\r\n\r\nexport function getDeviceInfo(): Promise<MResponseWithData<DeviceInfo>> {\r\n return jsBridge.callNative({ api: \"getDeviceInfo\" });\r\n}\r\n\r\nexport function getDeviceInfoSync(): MResponseWithData<DeviceInfo> {\r\n return jsBridge.callNativeSync({ api: \"getDeviceInfoSync\" });\r\n}\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\n\r\nexport function getMemoryStorage(\r\n key: string,\r\n): Promise<MResponseWithData<string>> {\r\n return jsBridge.callNative({\r\n api: \"getMemoryStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function setMemoryStorage(\r\n key: string,\r\n value: string,\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"setMemoryStorage\",\r\n data: { key, value },\r\n });\r\n}\r\nexport function setMemoryStorageIfNotExist(\r\n key: string,\r\n value: string,\r\n): Promise<MResponseWithData<boolean>> {\r\n return jsBridge.callNative({\r\n api: \"setMemoryStorageIfNotExist\",\r\n data: { key, value },\r\n });\r\n}\r\n\r\nexport function removeMemoryStorage(key: string): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"removeMemoryStorage\",\r\n data: { key },\r\n });\r\n}\r\n\r\nexport function clearMemoryStorage(): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"clearMemoryStorage\",\r\n });\r\n}\r\n"],"mappings":"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","names":[]}
@@ -7,7 +7,8 @@ import {
7
7
  sqlitePrepare,
8
8
  sqliteStatementAll,
9
9
  sqliteStatementRun
10
- } from "../chunk-BHXED4CK.mjs";
10
+ } from "../chunk-P6PQVD6M.mjs";
11
+ import "../chunk-PRRQDQWO.mjs";
11
12
 
12
13
  // src/kysely/index.ts
13
14
  import { Kysely as Kysely2, Migrator } from "kysely";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/kysely/index.ts","../../src/kysely/core/sqlite-query-iterator.ts","../../src/kysely/core/sqlite-database.ts","../../src/kysely/core/sqlite-dialect.ts","../../src/kysely/core/sqlite-driver.ts","../../src/kysely/core/sqlite-connection.ts"],"sourcesContent":["import { Kysely, Migrator, MigratorProps } from \"kysely\";\r\nimport { MinipSqliteDatabase } from \"./core/sqlite-database\";\r\nimport { MinipSqliteDialect } from \"./core/sqlite-dialect\";\r\n\r\nexport interface MinipSqliteKyselyMigratorProps\r\n extends Omit<MigratorProps, \"db\"> {}\r\n\r\nexport interface OpenSqliteKyselyDBProps {\r\n path: string;\r\n debug?: boolean;\r\n migratorProps?: MinipSqliteKyselyMigratorProps;\r\n}\r\n\r\nexport interface OpenSqliteKyselyDBWithMigrationProps\r\n extends OpenSqliteKyselyDBProps {}\r\n\r\nexport function openSqliteKyselyDB<T>(props: {\r\n path: string;\r\n debug?: boolean;\r\n}): Kysely<T>;\r\n\r\nexport function openSqliteKyselyDB<T>(props: {\r\n path: string;\r\n debug?: boolean;\r\n migratorProps: MinipSqliteKyselyMigratorProps;\r\n}): {\r\n db: Kysely<T>;\r\n migrator: Migrator;\r\n};\r\n\r\nexport function openSqliteKyselyDB<T>(props: OpenSqliteKyselyDBProps) {\r\n const dialect = new MinipSqliteDialect({\r\n database: new MinipSqliteDatabase(props.path, props.debug ?? false),\r\n });\r\n const db = new Kysely<T>({\r\n dialect,\r\n });\r\n\r\n if (props.migratorProps) {\r\n const migrator = new Migrator({\r\n db,\r\n ...props.migratorProps,\r\n });\r\n return {\r\n db,\r\n migrator,\r\n };\r\n }\r\n\r\n return db;\r\n}\r\n","import {\r\n sqliteCreateIterator,\r\n sqliteIteratorNext,\r\n sqliteIteratorRelease,\r\n} from \"../../api/sqlite\";\r\n\r\nexport class MinipSQLiteQueryIterator\r\n implements AsyncIterableIterator<unknown>\r\n{\r\n readonly dbKey: number;\r\n readonly stmtKey: number;\r\n readonly parameters: ReadonlyArray<unknown>;\r\n created: boolean = false;\r\n\r\n constructor(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n ) {\r\n this.dbKey = dbKey;\r\n this.stmtKey = stmtKey;\r\n this.parameters = parameters;\r\n }\r\n\r\n public async next(): Promise<IteratorResult<unknown>> {\r\n if (!this.created) {\r\n await sqliteCreateIterator(this.dbKey, this.stmtKey, this.parameters);\r\n this.created = true;\r\n }\r\n const res = await sqliteIteratorNext(this.dbKey, this.stmtKey);\r\n if (res.hasData()) return { value: res.data, done: false };\r\n return { value: undefined, done: true };\r\n }\r\n\r\n public async return(): Promise<IteratorResult<unknown>> {\r\n if (this.created) {\r\n await sqliteIteratorRelease(this.dbKey, this.stmtKey);\r\n }\r\n return { value: undefined, done: true };\r\n }\r\n\r\n [Symbol.asyncIterator](): AsyncIterableIterator<unknown> {\r\n return this;\r\n }\r\n}\r\n","import { MinipSqliteStatement } from \"./sqlite-statement\";\r\nimport {\r\n sqliteCloseDB,\r\n sqliteOpenDB,\r\n sqlitePrepare,\r\n sqliteStatementAll,\r\n sqliteStatementRun,\r\n} from \"../../api/sqlite\";\r\nimport { MinipSQLiteQueryIterator } from \"./sqlite-query-iterator\";\r\n\r\nexport class MinipSqliteDatabase {\r\n path: string;\r\n id: number;\r\n debug: boolean;\r\n constructor(path: string, debug: boolean) {\r\n this.path = path;\r\n this.id = -1;\r\n this.debug = debug;\r\n }\r\n async close(): Promise<void> {\r\n if (this.id === -1) return;\r\n await sqliteCloseDB(this.id);\r\n }\r\n async prepare(sql: string): Promise<MinipSqliteStatement> {\r\n if (this.id === -1) {\r\n const res = await sqliteOpenDB(this.path);\r\n this.id = res.data.dbKey;\r\n }\r\n\r\n const dbKey = this.id;\r\n const stmtRes = await sqlitePrepare(dbKey, sql);\r\n\r\n const stmtKey = stmtRes.data.stmtKey;\r\n const reader = stmtRes.data.reader;\r\n\r\n return {\r\n reader: reader,\r\n all(parameters) {\r\n return sqliteStatementAll(dbKey, stmtKey, parameters).then(\r\n (res) => res.data,\r\n );\r\n },\r\n run(parameters) {\r\n return sqliteStatementRun(dbKey, stmtKey, parameters).then(\r\n (res) => res.data,\r\n );\r\n },\r\n iterate(parameters) {\r\n return new MinipSQLiteQueryIterator(dbKey, stmtKey, parameters);\r\n },\r\n };\r\n }\r\n}\r\n","import {\r\n DatabaseIntrospector,\r\n Dialect,\r\n DialectAdapter,\r\n Driver,\r\n Kysely,\r\n QueryCompiler,\r\n SqliteAdapter,\r\n SqliteIntrospector,\r\n SqliteQueryCompiler,\r\n} from \"kysely\";\r\nimport { MinipSqliteDialectConfig } from \"./sqlite-dialect-config\";\r\nimport { MinipSqliteDriver } from \"./sqlite-driver\";\r\n\r\nexport class MinipSqliteDialect implements Dialect {\r\n readonly #config: MinipSqliteDialectConfig;\r\n\r\n constructor(config: MinipSqliteDialectConfig) {\r\n this.#config = config;\r\n }\r\n\r\n createDriver(): Driver {\r\n return new MinipSqliteDriver(this.#config);\r\n }\r\n createQueryCompiler(): QueryCompiler {\r\n return new SqliteQueryCompiler();\r\n }\r\n createAdapter(): DialectAdapter {\r\n return new SqliteAdapter();\r\n }\r\n createIntrospector(db: Kysely<any>): DatabaseIntrospector {\r\n return new SqliteIntrospector(db);\r\n }\r\n}\r\n","import {\r\n CompiledQuery,\r\n DatabaseConnection,\r\n Driver,\r\n TransactionSettings,\r\n} from \"kysely\";\r\nimport { MinipSqliteDialectConfig } from \"./sqlite-dialect-config\";\r\nimport { MinipSqliteConnection } from \"./sqlite-connection\";\r\nimport { MinipSqliteDatabase } from \"./sqlite-database\";\r\n\r\nexport class MinipSqliteDriver implements Driver {\r\n readonly #config: MinipSqliteDialectConfig;\r\n\r\n #db?: MinipSqliteDatabase;\r\n #connection?: MinipSqliteConnection;\r\n\r\n constructor(config: MinipSqliteDialectConfig) {\r\n this.#config = config;\r\n }\r\n\r\n async init() {\r\n this.#db = this.#config.database;\r\n this.#connection = new MinipSqliteConnection(this.#db);\r\n if (this.#config.onCreateConnection) {\r\n await this.#config.onCreateConnection(this.#connection);\r\n }\r\n }\r\n async acquireConnection(): Promise<MinipSqliteConnection> {\r\n return this.#connection!;\r\n }\r\n async beginTransaction(\r\n connection: DatabaseConnection,\r\n settings: TransactionSettings,\r\n ): Promise<void> {\r\n await connection.executeQuery(CompiledQuery.raw(\"begin\"));\r\n }\r\n async commitTransaction(connection: DatabaseConnection): Promise<void> {\r\n await connection.executeQuery(CompiledQuery.raw(\"commit\"));\r\n }\r\n async rollbackTransaction(connection: DatabaseConnection): Promise<void> {\r\n await connection.executeQuery(CompiledQuery.raw(\"rollback\"));\r\n }\r\n async releaseConnection(connection: DatabaseConnection): Promise<void> {}\r\n async destroy(): Promise<void> {\r\n this.#db?.close();\r\n }\r\n}\r\n","import {\r\n CompiledQuery,\r\n DatabaseConnection,\r\n QueryResult,\r\n SelectQueryNode,\r\n} from \"kysely\";\r\nimport { MinipSqliteDatabase } from \"./sqlite-database\";\r\n\r\nexport class MinipSqliteConnection implements DatabaseConnection {\r\n readonly #db: MinipSqliteDatabase;\r\n\r\n constructor(db: MinipSqliteDatabase) {\r\n this.#db = db;\r\n }\r\n async executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>> {\r\n const { sql, parameters } = compiledQuery;\r\n if (this.#db.debug) {\r\n console.debug(sql, parameters);\r\n }\r\n const stmt = await this.#db.prepare(sql);\r\n\r\n if (stmt.reader) {\r\n return {\r\n rows: (await stmt.all(parameters)) as R[],\r\n };\r\n } else {\r\n const { changes, lastInsertRowid } = await stmt.run(parameters);\r\n\r\n const numAffectedRows =\r\n changes !== undefined && changes !== null ? BigInt(changes) : undefined;\r\n\r\n return {\r\n numUpdatedOrDeletedRows: numAffectedRows,\r\n numAffectedRows,\r\n insertId:\r\n lastInsertRowid !== undefined && lastInsertRowid !== null\r\n ? BigInt(lastInsertRowid)\r\n : undefined,\r\n rows: [],\r\n };\r\n }\r\n }\r\n async *streamQuery<R>(\r\n compiledQuery: CompiledQuery,\r\n _chunkSize: number,\r\n ): AsyncIterableIterator<QueryResult<R>> {\r\n const { sql, parameters, query } = compiledQuery;\r\n const stmt = await this.#db.prepare(sql);\r\n if (SelectQueryNode.is(query)) {\r\n const iter = stmt.iterate(parameters) as AsyncIterableIterator<R>;\r\n for await (const row of iter) {\r\n yield {\r\n rows: [row],\r\n };\r\n }\r\n } else {\r\n throw new Error(\r\n \"Sqlite driver only supports streaming of select queries\",\r\n );\r\n }\r\n }\r\n}\r\n"],"mappings":"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","names":["Kysely","CompiledQuery","CompiledQuery","Kysely"]}
1
+ {"version":3,"sources":["../../src/kysely/index.ts","../../src/kysely/core/sqlite-query-iterator.ts","../../src/kysely/core/sqlite-database.ts","../../src/kysely/core/sqlite-dialect.ts","../../src/kysely/core/sqlite-driver.ts","../../src/kysely/core/sqlite-connection.ts"],"sourcesContent":["import { Kysely, Migrator, MigratorProps } from \"kysely\";\r\nimport { MinipSqliteDatabase } from \"./core/sqlite-database\";\r\nimport { MinipSqliteDialect } from \"./core/sqlite-dialect\";\r\n\r\nexport interface MinipSqliteKyselyMigratorProps\r\n extends Omit<MigratorProps, \"db\"> {}\r\n\r\nexport interface OpenSqliteKyselyDBProps {\r\n path: string;\r\n debug?: boolean;\r\n migratorProps?: MinipSqliteKyselyMigratorProps;\r\n}\r\n\r\nexport interface OpenSqliteKyselyDBWithMigrationProps\r\n extends OpenSqliteKyselyDBProps {}\r\n\r\nexport function openSqliteKyselyDB<T>(props: {\r\n path: string;\r\n debug?: boolean;\r\n}): Kysely<T>;\r\n\r\nexport function openSqliteKyselyDB<T>(props: {\r\n path: string;\r\n debug?: boolean;\r\n migratorProps: MinipSqliteKyselyMigratorProps;\r\n}): {\r\n db: Kysely<T>;\r\n migrator: Migrator;\r\n};\r\n\r\nexport function openSqliteKyselyDB<T>(props: OpenSqliteKyselyDBProps) {\r\n const dialect = new MinipSqliteDialect({\r\n database: new MinipSqliteDatabase(props.path, props.debug ?? false),\r\n });\r\n const db = new Kysely<T>({\r\n dialect,\r\n });\r\n\r\n if (props.migratorProps) {\r\n const migrator = new Migrator({\r\n db,\r\n ...props.migratorProps,\r\n });\r\n return {\r\n db,\r\n migrator,\r\n };\r\n }\r\n\r\n return db;\r\n}\r\n","import {\r\n sqliteCreateIterator,\r\n sqliteIteratorNext,\r\n sqliteIteratorRelease,\r\n} from \"../../api/sqlite\";\r\n\r\nexport class MinipSQLiteQueryIterator\r\n implements AsyncIterableIterator<unknown>\r\n{\r\n readonly dbKey: number;\r\n readonly stmtKey: number;\r\n readonly parameters: ReadonlyArray<unknown>;\r\n created: boolean = false;\r\n\r\n constructor(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n ) {\r\n this.dbKey = dbKey;\r\n this.stmtKey = stmtKey;\r\n this.parameters = parameters;\r\n }\r\n\r\n public async next(): Promise<IteratorResult<unknown>> {\r\n if (!this.created) {\r\n await sqliteCreateIterator(this.dbKey, this.stmtKey, this.parameters);\r\n this.created = true;\r\n }\r\n const res = await sqliteIteratorNext(this.dbKey, this.stmtKey);\r\n if (res.hasData()) return { value: res.data, done: false };\r\n return { value: undefined, done: true };\r\n }\r\n\r\n public async return(): Promise<IteratorResult<unknown>> {\r\n if (this.created) {\r\n await sqliteIteratorRelease(this.dbKey, this.stmtKey);\r\n }\r\n return { value: undefined, done: true };\r\n }\r\n\r\n [Symbol.asyncIterator](): AsyncIterableIterator<unknown> {\r\n return this;\r\n }\r\n}\r\n","import { MinipSqliteStatement } from \"./sqlite-statement\";\r\nimport {\r\n sqliteCloseDB,\r\n sqliteOpenDB,\r\n sqlitePrepare,\r\n sqliteStatementAll,\r\n sqliteStatementRun,\r\n} from \"../../api/sqlite\";\r\nimport { MinipSQLiteQueryIterator } from \"./sqlite-query-iterator\";\r\n\r\nexport class MinipSqliteDatabase {\r\n path: string;\r\n id: number;\r\n debug: boolean;\r\n constructor(path: string, debug: boolean) {\r\n this.path = path;\r\n this.id = -1;\r\n this.debug = debug;\r\n }\r\n async close(): Promise<void> {\r\n if (this.id === -1) return;\r\n await sqliteCloseDB(this.id);\r\n }\r\n async prepare(sql: string): Promise<MinipSqliteStatement> {\r\n if (this.id === -1) {\r\n const res = await sqliteOpenDB(this.path);\r\n this.id = res.data.dbKey;\r\n }\r\n\r\n const dbKey = this.id;\r\n const stmtRes = await sqlitePrepare(dbKey, sql);\r\n\r\n const stmtKey = stmtRes.data.stmtKey;\r\n const reader = stmtRes.data.reader;\r\n\r\n return {\r\n reader: reader,\r\n all(parameters) {\r\n return sqliteStatementAll(dbKey, stmtKey, parameters).then(\r\n (res) => res.data,\r\n );\r\n },\r\n run(parameters) {\r\n return sqliteStatementRun(dbKey, stmtKey, parameters).then(\r\n (res) => res.data,\r\n );\r\n },\r\n iterate(parameters) {\r\n return new MinipSQLiteQueryIterator(dbKey, stmtKey, parameters);\r\n },\r\n };\r\n }\r\n}\r\n","import {\r\n DatabaseIntrospector,\r\n Dialect,\r\n DialectAdapter,\r\n Driver,\r\n Kysely,\r\n QueryCompiler,\r\n SqliteAdapter,\r\n SqliteIntrospector,\r\n SqliteQueryCompiler,\r\n} from \"kysely\";\r\nimport { MinipSqliteDialectConfig } from \"./sqlite-dialect-config\";\r\nimport { MinipSqliteDriver } from \"./sqlite-driver\";\r\n\r\nexport class MinipSqliteDialect implements Dialect {\r\n readonly #config: MinipSqliteDialectConfig;\r\n\r\n constructor(config: MinipSqliteDialectConfig) {\r\n this.#config = config;\r\n }\r\n\r\n createDriver(): Driver {\r\n return new MinipSqliteDriver(this.#config);\r\n }\r\n createQueryCompiler(): QueryCompiler {\r\n return new SqliteQueryCompiler();\r\n }\r\n createAdapter(): DialectAdapter {\r\n return new SqliteAdapter();\r\n }\r\n createIntrospector(db: Kysely<any>): DatabaseIntrospector {\r\n return new SqliteIntrospector(db);\r\n }\r\n}\r\n","import {\r\n CompiledQuery,\r\n DatabaseConnection,\r\n Driver,\r\n TransactionSettings,\r\n} from \"kysely\";\r\nimport { MinipSqliteDialectConfig } from \"./sqlite-dialect-config\";\r\nimport { MinipSqliteConnection } from \"./sqlite-connection\";\r\nimport { MinipSqliteDatabase } from \"./sqlite-database\";\r\n\r\nexport class MinipSqliteDriver implements Driver {\r\n readonly #config: MinipSqliteDialectConfig;\r\n\r\n #db?: MinipSqliteDatabase;\r\n #connection?: MinipSqliteConnection;\r\n\r\n constructor(config: MinipSqliteDialectConfig) {\r\n this.#config = config;\r\n }\r\n\r\n async init() {\r\n this.#db = this.#config.database;\r\n this.#connection = new MinipSqliteConnection(this.#db);\r\n if (this.#config.onCreateConnection) {\r\n await this.#config.onCreateConnection(this.#connection);\r\n }\r\n }\r\n async acquireConnection(): Promise<MinipSqliteConnection> {\r\n return this.#connection!;\r\n }\r\n async beginTransaction(\r\n connection: DatabaseConnection,\r\n settings: TransactionSettings,\r\n ): Promise<void> {\r\n await connection.executeQuery(CompiledQuery.raw(\"begin\"));\r\n }\r\n async commitTransaction(connection: DatabaseConnection): Promise<void> {\r\n await connection.executeQuery(CompiledQuery.raw(\"commit\"));\r\n }\r\n async rollbackTransaction(connection: DatabaseConnection): Promise<void> {\r\n await connection.executeQuery(CompiledQuery.raw(\"rollback\"));\r\n }\r\n async releaseConnection(connection: DatabaseConnection): Promise<void> {}\r\n async destroy(): Promise<void> {\r\n this.#db?.close();\r\n }\r\n}\r\n","import {\r\n CompiledQuery,\r\n DatabaseConnection,\r\n QueryResult,\r\n SelectQueryNode,\r\n} from \"kysely\";\r\nimport { MinipSqliteDatabase } from \"./sqlite-database\";\r\n\r\nexport class MinipSqliteConnection implements DatabaseConnection {\r\n readonly #db: MinipSqliteDatabase;\r\n\r\n constructor(db: MinipSqliteDatabase) {\r\n this.#db = db;\r\n }\r\n async executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>> {\r\n const { sql, parameters } = compiledQuery;\r\n if (this.#db.debug) {\r\n console.debug(sql, parameters);\r\n }\r\n const stmt = await this.#db.prepare(sql);\r\n\r\n if (stmt.reader) {\r\n return {\r\n rows: (await stmt.all(parameters)) as R[],\r\n };\r\n } else {\r\n const { changes, lastInsertRowid } = await stmt.run(parameters);\r\n\r\n const numAffectedRows =\r\n changes !== undefined && changes !== null ? BigInt(changes) : undefined;\r\n\r\n return {\r\n numUpdatedOrDeletedRows: numAffectedRows,\r\n numAffectedRows,\r\n insertId:\r\n lastInsertRowid !== undefined && lastInsertRowid !== null\r\n ? BigInt(lastInsertRowid)\r\n : undefined,\r\n rows: [],\r\n };\r\n }\r\n }\r\n async *streamQuery<R>(\r\n compiledQuery: CompiledQuery,\r\n _chunkSize: number,\r\n ): AsyncIterableIterator<QueryResult<R>> {\r\n const { sql, parameters, query } = compiledQuery;\r\n const stmt = await this.#db.prepare(sql);\r\n if (SelectQueryNode.is(query)) {\r\n const iter = stmt.iterate(parameters) as AsyncIterableIterator<R>;\r\n for await (const row of iter) {\r\n yield {\r\n rows: [row],\r\n };\r\n }\r\n } else {\r\n throw new Error(\r\n \"Sqlite driver only supports streaming of select queries\",\r\n );\r\n }\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,UAAAA,SAAQ,gBAA+B;;;ACMzC,IAAM,2BAAN,MAEP;AAAA,EACW;AAAA,EACA;AAAA,EACA;AAAA,EACT,UAAmB;AAAA,EAEnB,YACE,OACA,SACA,YACA;AACA,SAAK,QAAQ;AACb,SAAK,UAAU;AACf,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAa,OAAyC;AACpD,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,qBAAqB,KAAK,OAAO,KAAK,SAAS,KAAK,UAAU;AACpE,WAAK,UAAU;AAAA,IACjB;AACA,UAAM,MAAM,MAAM,mBAAmB,KAAK,OAAO,KAAK,OAAO;AAC7D,QAAI,IAAI,QAAQ,EAAG,QAAO,EAAE,OAAO,IAAI,MAAM,MAAM,MAAM;AACzD,WAAO,EAAE,OAAO,QAAW,MAAM,KAAK;AAAA,EACxC;AAAA,EAEA,MAAa,SAA2C;AACtD,QAAI,KAAK,SAAS;AAChB,YAAM,sBAAsB,KAAK,OAAO,KAAK,OAAO;AAAA,IACtD;AACA,WAAO,EAAE,OAAO,QAAW,MAAM,KAAK;AAAA,EACxC;AAAA,EAEA,CAAC,OAAO,aAAa,IAAoC;AACvD,WAAO;AAAA,EACT;AACF;;;AClCO,IAAM,sBAAN,MAA0B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,MAAc,OAAgB;AACxC,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,QAAQ;AAAA,EACf;AAAA,EACA,MAAM,QAAuB;AAC3B,QAAI,KAAK,OAAO,GAAI;AACpB,UAAM,cAAc,KAAK,EAAE;AAAA,EAC7B;AAAA,EACA,MAAM,QAAQ,KAA4C;AACxD,QAAI,KAAK,OAAO,IAAI;AAClB,YAAM,MAAM,MAAM,aAAa,KAAK,IAAI;AACxC,WAAK,KAAK,IAAI,KAAK;AAAA,IACrB;AAEA,UAAM,QAAQ,KAAK;AACnB,UAAM,UAAU,MAAM,cAAc,OAAO,GAAG;AAE9C,UAAM,UAAU,QAAQ,KAAK;AAC7B,UAAM,SAAS,QAAQ,KAAK;AAE5B,WAAO;AAAA,MACL;AAAA,MACA,IAAI,YAAY;AACd,eAAO,mBAAmB,OAAO,SAAS,UAAU,EAAE;AAAA,UACpD,CAAC,QAAQ,IAAI;AAAA,QACf;AAAA,MACF;AAAA,MACA,IAAI,YAAY;AACd,eAAO,mBAAmB,OAAO,SAAS,UAAU,EAAE;AAAA,UACpD,CAAC,QAAQ,IAAI;AAAA,QACf;AAAA,MACF;AAAA,MACA,QAAQ,YAAY;AAClB,eAAO,IAAI,yBAAyB,OAAO,SAAS,UAAU;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AACF;;;ACpDA;AAAA,EAOE;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACVP;AAAA,EACE,iBAAAC;AAAA,OAIK;;;ACLP;AAAA,EAIE;AAAA,OACK;AAGA,IAAM,wBAAN,MAA0D;AAAA,EACtD;AAAA,EAET,YAAY,IAAyB;AACnC,SAAK,MAAM;AAAA,EACb;AAAA,EACA,MAAM,aAAgB,eAAuD;AAC3E,UAAM,EAAE,KAAK,WAAW,IAAI;AAC5B,QAAI,KAAK,IAAI,OAAO;AAClB,cAAQ,MAAM,KAAK,UAAU;AAAA,IAC/B;AACA,UAAM,OAAO,MAAM,KAAK,IAAI,QAAQ,GAAG;AAEvC,QAAI,KAAK,QAAQ;AACf,aAAO;AAAA,QACL,MAAO,MAAM,KAAK,IAAI,UAAU;AAAA,MAClC;AAAA,IACF,OAAO;AACL,YAAM,EAAE,SAAS,gBAAgB,IAAI,MAAM,KAAK,IAAI,UAAU;AAE9D,YAAM,kBACJ,YAAY,UAAa,YAAY,OAAO,OAAO,OAAO,IAAI;AAEhE,aAAO;AAAA,QACL,yBAAyB;AAAA,QACzB;AAAA,QACA,UACE,oBAAoB,UAAa,oBAAoB,OACjD,OAAO,eAAe,IACtB;AAAA,QACN,MAAM,CAAC;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,YACL,eACA,YACuC;AACvC,UAAM,EAAE,KAAK,YAAY,MAAM,IAAI;AACnC,UAAM,OAAO,MAAM,KAAK,IAAI,QAAQ,GAAG;AACvC,QAAI,gBAAgB,GAAG,KAAK,GAAG;AAC7B,YAAM,OAAO,KAAK,QAAQ,UAAU;AACpC,uBAAiB,OAAO,MAAM;AAC5B,cAAM;AAAA,UACJ,MAAM,CAAC,GAAG;AAAA,QACZ;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ADnDO,IAAM,oBAAN,MAA0C;AAAA,EACtC;AAAA,EAET;AAAA,EACA;AAAA,EAEA,YAAY,QAAkC;AAC5C,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,OAAO;AACX,SAAK,MAAM,KAAK,QAAQ;AACxB,SAAK,cAAc,IAAI,sBAAsB,KAAK,GAAG;AACrD,QAAI,KAAK,QAAQ,oBAAoB;AACnC,YAAM,KAAK,QAAQ,mBAAmB,KAAK,WAAW;AAAA,IACxD;AAAA,EACF;AAAA,EACA,MAAM,oBAAoD;AACxD,WAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,iBACJ,YACA,UACe;AACf,UAAM,WAAW,aAAaC,eAAc,IAAI,OAAO,CAAC;AAAA,EAC1D;AAAA,EACA,MAAM,kBAAkB,YAA+C;AACrE,UAAM,WAAW,aAAaA,eAAc,IAAI,QAAQ,CAAC;AAAA,EAC3D;AAAA,EACA,MAAM,oBAAoB,YAA+C;AACvE,UAAM,WAAW,aAAaA,eAAc,IAAI,UAAU,CAAC;AAAA,EAC7D;AAAA,EACA,MAAM,kBAAkB,YAA+C;AAAA,EAAC;AAAA,EACxE,MAAM,UAAyB;AAC7B,SAAK,KAAK,MAAM;AAAA,EAClB;AACF;;;ADhCO,IAAM,qBAAN,MAA4C;AAAA,EACxC;AAAA,EAET,YAAY,QAAkC;AAC5C,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,eAAuB;AACrB,WAAO,IAAI,kBAAkB,KAAK,OAAO;AAAA,EAC3C;AAAA,EACA,sBAAqC;AACnC,WAAO,IAAI,oBAAoB;AAAA,EACjC;AAAA,EACA,gBAAgC;AAC9B,WAAO,IAAI,cAAc;AAAA,EAC3B;AAAA,EACA,mBAAmB,IAAuC;AACxD,WAAO,IAAI,mBAAmB,EAAE;AAAA,EAClC;AACF;;;AHHO,SAAS,mBAAsB,OAAgC;AACpE,QAAM,UAAU,IAAI,mBAAmB;AAAA,IACrC,UAAU,IAAI,oBAAoB,MAAM,MAAM,MAAM,SAAS,KAAK;AAAA,EACpE,CAAC;AACD,QAAM,KAAK,IAAIC,QAAU;AAAA,IACvB;AAAA,EACF,CAAC;AAED,MAAI,MAAM,eAAe;AACvB,UAAM,WAAW,IAAI,SAAS;AAAA,MAC5B;AAAA,MACA,GAAG,MAAM;AAAA,IACX,CAAC;AACD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;","names":["Kysely","CompiledQuery","CompiledQuery","Kysely"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "minip-bridge",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "description": "minip webview bridge",
5
5
  "main": "index.ts",
6
6
  "module": "./dist/index.mjs",
@@ -42,17 +42,17 @@ if (window.webkit?.messageHandlers?.MinipNativeInteraction) {
42
42
  const res = prompt(JSON.stringify(req));
43
43
  if (res) {
44
44
  const r = JSON.parse(res);
45
- r.isSuccess = () => true;
46
- const hashData = r.data !== null && r.data !== undefined;
47
- r.hasData = () => hashData;
48
- return r;
45
+
46
+ if (r.code === MResponseStatusCode.SUCCESS) {
47
+ r.isSuccess = () => true;
48
+ const hashData = r.data !== null && r.data !== undefined;
49
+ r.hasData = () => hashData;
50
+ return r;
51
+ } else {
52
+ throw new Error(r.msg ?? "Unknown error, res: ");
53
+ }
49
54
  }
50
- return {
51
- code: MResponseStatusCode.FAILED,
52
- msg: "Unknown error",
53
- isSuccess: () => false,
54
- hasData: () => false,
55
- };
55
+ throw new Error("Unknown error");
56
56
  },
57
57
  };
58
58
  }
@@ -0,0 +1,154 @@
1
+ import jsBridge from "../bridge";
2
+ import { MResponseWithData } from "../types";
3
+ import { FileStats } from "../types/FileStats";
4
+
5
+ export async function access(path: string, mode?: number): Promise<void> {
6
+ return jsBridge.callNative({
7
+ api: "fsAccess",
8
+ data: {
9
+ path,
10
+ mode
11
+ }
12
+ }).then(res => {
13
+ const r = res as MResponseWithData<boolean>
14
+ if (!r.hasData() || !r.data) {
15
+ throw new Error(r.msg ?? "cannot access this file or directory")
16
+ }
17
+ });
18
+ }
19
+
20
+ export function accessSync(path: string, mode?: number) {
21
+ const res = jsBridge.callNativeSync({
22
+ api: "fsAccessSync",
23
+ data: {
24
+ path,
25
+ mode
26
+ }
27
+ }) as MResponseWithData<boolean>
28
+ if (!res.hasData() || !res.data) {
29
+ throw new Error(res.msg ?? "cannot access this file or directory")
30
+ }
31
+ }
32
+
33
+ export async function unlink(path: string) {
34
+ await jsBridge.callNative({
35
+ api: "fsUnlink",
36
+ data: {
37
+ path
38
+ }
39
+ })
40
+ }
41
+
42
+ export function unlinkSync(path: string) {
43
+ jsBridge.callNativeSync({
44
+ api: "fsUnlinkSync",
45
+ data: {
46
+ path
47
+ }
48
+ })
49
+ }
50
+
51
+ export async function rename(oldPath: string, newPath: string) {
52
+ await jsBridge.callNative({
53
+ api: "fsRename",
54
+ data: {
55
+ oldPath,
56
+ newPath
57
+ }
58
+ })
59
+ }
60
+
61
+ export function renameSync(oldPath: string, newPath: string) {
62
+ jsBridge.callNativeSync({
63
+ api: "fsRenameSync",
64
+ data: {
65
+ oldPath,
66
+ newPath
67
+ }
68
+ })
69
+ }
70
+
71
+ // todo: check !!!!!
72
+ export async function stat(path: string) {
73
+ const res = await jsBridge.callNative({
74
+ api: "fsStat",
75
+ data: {
76
+ path
77
+ }
78
+ }) as MResponseWithData<FileStats>
79
+
80
+ const file = res.data
81
+
82
+ file.atime = new Date(file.atimeMs);
83
+ file.mtime = new Date(file.mtimeMs);
84
+ file.ctime = new Date(file.ctimeMs);
85
+
86
+ const S_IFDIR = 0o040000;
87
+ const S_IFREG = 0o100000;
88
+ const S_IFLNK = 0o120000;
89
+
90
+ file.isDirectory = function () {
91
+ return (this.mode & S_IFDIR) === S_IFDIR;
92
+ };
93
+
94
+ file.isFile = function () {
95
+ return (this.mode & S_IFREG) === S_IFREG;
96
+ };
97
+
98
+ file.isSymbolicLink = function () {
99
+ return (this.mode & S_IFLNK) === S_IFLNK;
100
+ };
101
+
102
+ return file
103
+ }
104
+
105
+ export function statSync(path: string) {
106
+ const res = jsBridge.callNativeSync({
107
+ api: "fsStatSync",
108
+ data: {
109
+ path
110
+ }
111
+ }) as MResponseWithData<FileStats>
112
+
113
+ const file = res.data
114
+
115
+ file.atime = new Date(file.atimeMs);
116
+ file.mtime = new Date(file.mtimeMs);
117
+ file.ctime = new Date(file.ctimeMs);
118
+
119
+ const S_IFDIR = 0o040000;
120
+ const S_IFREG = 0o100000;
121
+ const S_IFLNK = 0o120000;
122
+
123
+ file.isDirectory = function () {
124
+ return (this.mode & S_IFDIR) === S_IFDIR;
125
+ };
126
+
127
+ file.isFile = function () {
128
+ return (this.mode & S_IFREG) === S_IFREG;
129
+ };
130
+
131
+ file.isSymbolicLink = function () {
132
+ return (this.mode & S_IFLNK) === S_IFLNK;
133
+ };
134
+
135
+ return file
136
+ }
137
+
138
+ export async function rm(path: string) {
139
+ await jsBridge.callNative({
140
+ api: "fsRm",
141
+ data: {
142
+ path
143
+ }
144
+ })
145
+ }
146
+
147
+ export function rmSync(path: string) {
148
+ jsBridge.callNativeSync({
149
+ api: "fsRmSync",
150
+ data: {
151
+ path
152
+ }
153
+ })
154
+ }
package/src/fs/dir.ts ADDED
@@ -0,0 +1,62 @@
1
+ import jsBridge from "../bridge";
2
+ import { MResponseWithData } from "../types";
3
+
4
+ export async function mkdir(path: string, recursive: boolean = true) {
5
+ await jsBridge.callNative({
6
+ api: "fsMkdir",
7
+ data: {
8
+ path,
9
+ recursive
10
+ }
11
+ })
12
+ }
13
+
14
+ export function mkdirSync(path: string, recursive: boolean = true) {
15
+ jsBridge.callNativeSync({
16
+ api: "fsMkdirSync",
17
+ data: {
18
+ path,
19
+ recursive
20
+ }
21
+ })
22
+ }
23
+
24
+ export function readDir(path: string): Promise<string[]> {
25
+ return jsBridge.callNative({
26
+ api: "fsReadDir",
27
+ data: {
28
+ path
29
+ }
30
+ }).then(res => res as MResponseWithData<string[]>)
31
+ .then(res => res.data)
32
+ }
33
+
34
+ export function readDirSync(path: string): string[] {
35
+ const res = jsBridge.callNativeSync({
36
+ api: "fsReadDirSync",
37
+ data: {
38
+ path
39
+ }
40
+ }) as MResponseWithData<string[]>
41
+ return res.data
42
+ }
43
+
44
+ export async function rmdir(path: string, force?: boolean) {
45
+ await jsBridge.callNative({
46
+ api: "fsRmdir",
47
+ data: {
48
+ path,
49
+ force
50
+ }
51
+ })
52
+ }
53
+
54
+ export function rmdirSync(path: string, force?: boolean) {
55
+ jsBridge.callNativeSync({
56
+ api: "fsRmdirSync",
57
+ data: {
58
+ path,
59
+ force
60
+ }
61
+ })
62
+ }
package/src/fs/file.ts ADDED
@@ -0,0 +1,164 @@
1
+ import jsBridge from "../bridge";
2
+ import { MResponseWithData } from "../types";
3
+
4
+ function base64ToArrayBuffer(base64: string): ArrayBuffer {
5
+ const binaryString = atob(base64);
6
+ const bytes = new Uint8Array(binaryString.length);
7
+ for (let i = 0; i < binaryString.length; i++) {
8
+ bytes[i] = binaryString.charCodeAt(i);
9
+ }
10
+ return bytes.buffer;
11
+ }
12
+
13
+ function arrayBufferToBase64(buffer: ArrayBuffer): string {
14
+ let binary = '';
15
+ const bytes = new Uint8Array(buffer);
16
+ const len = bytes.byteLength;
17
+
18
+ for (let i = 0; i < len; i++) {
19
+ binary += String.fromCharCode(bytes[i]);
20
+ }
21
+
22
+ return btoa(binary);
23
+ }
24
+
25
+ export function readFile(path: string): Promise<ArrayBuffer> {
26
+ return jsBridge.callNative({
27
+ api: "fsReadFile",
28
+ data: {
29
+ path
30
+ }
31
+ }).then(res => (res as MResponseWithData<string>).data)
32
+ .then(res => base64ToArrayBuffer(res))
33
+ }
34
+
35
+ export function readFileSync(path: string): ArrayBuffer {
36
+ const res = jsBridge.callNativeSync({
37
+ api: "fsReadFileSync",
38
+ data: {
39
+ path
40
+ }
41
+ }) as MResponseWithData<string>
42
+ return base64ToArrayBuffer(res.data)
43
+ }
44
+
45
+ export async function writeFile(path: string, data: ArrayBuffer | string) {
46
+ let base64 = ""
47
+ if (data instanceof ArrayBuffer) {
48
+ base64 = arrayBufferToBase64(data)
49
+ } else {
50
+ const encoder = new TextEncoder();
51
+ const uint8Array = encoder.encode(data);
52
+ const arrayBuffer = uint8Array.buffer;
53
+ base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)
54
+ }
55
+
56
+
57
+ await jsBridge.callNative({
58
+ api: "fsWriteFile",
59
+ data: {
60
+ path,
61
+ data: base64
62
+ }
63
+ })
64
+ }
65
+
66
+ export function writeFileSync(path: string, data: ArrayBuffer | string) {
67
+ let base64 = ""
68
+ if (data instanceof ArrayBuffer) {
69
+ base64 = arrayBufferToBase64(data)
70
+ } else {
71
+ const encoder = new TextEncoder();
72
+ const uint8Array = encoder.encode(data);
73
+ const arrayBuffer = uint8Array.buffer;
74
+ base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)
75
+ }
76
+
77
+ jsBridge.callNativeSync({
78
+ api: "fsWriteFileSync",
79
+ data: {
80
+ path,
81
+ data: base64
82
+ }
83
+ })
84
+ }
85
+
86
+ export async function appendFile(path: string, data: ArrayBuffer | string) {
87
+ let base64 = ""
88
+ if (data instanceof ArrayBuffer) {
89
+ base64 = arrayBufferToBase64(data)
90
+ } else {
91
+ const encoder = new TextEncoder();
92
+ const uint8Array = encoder.encode(data);
93
+ const arrayBuffer = uint8Array.buffer;
94
+ base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)
95
+ }
96
+
97
+ await jsBridge.callNative({
98
+ api: "fsAppendFile",
99
+ data: {
100
+ path,
101
+ data: base64
102
+ }
103
+ })
104
+ }
105
+
106
+ export function appendFileSync(path: string, data: ArrayBuffer | string) {
107
+ let base64 = ""
108
+ if (data instanceof ArrayBuffer) {
109
+ base64 = arrayBufferToBase64(data)
110
+ } else {
111
+ const encoder = new TextEncoder();
112
+ const uint8Array = encoder.encode(data);
113
+ const arrayBuffer = uint8Array.buffer;
114
+ base64 = arrayBufferToBase64(arrayBuffer as ArrayBuffer)
115
+ }
116
+
117
+ jsBridge.callNativeSync({
118
+ api: "fsAppendFileSync",
119
+ data: {
120
+ path,
121
+ data: base64
122
+ }
123
+ })
124
+ }
125
+
126
+ export async function copyFile(src: string, dest: string) {
127
+ await jsBridge.callNative({
128
+ api: "fsCopyFile",
129
+ data: {
130
+ src,
131
+ dest
132
+ }
133
+ })
134
+ }
135
+
136
+ export function copyFileSync(src: string, dest: string) {
137
+ jsBridge.callNativeSync({
138
+ api: "fsCopyFileSync",
139
+ data: {
140
+ src,
141
+ dest
142
+ }
143
+ })
144
+ }
145
+
146
+ export async function truncate(path: string, length: number) {
147
+ await jsBridge.callNative({
148
+ api: "fsTruncate",
149
+ data: {
150
+ path,
151
+ length
152
+ }
153
+ })
154
+ }
155
+
156
+ export function truncateSync(path: string, length: number) {
157
+ jsBridge.callNativeSync({
158
+ api: "fsTruncateSync",
159
+ data: {
160
+ path,
161
+ length
162
+ }
163
+ })
164
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./common"
2
+ export * from "./dir"
3
+ export * from "./file"
@@ -0,0 +1,25 @@
1
+ export interface FileStats {
2
+ dev: number;
3
+ ino: number;
4
+ mode: number;
5
+ nlink: number;
6
+ uid: number;
7
+ gid: number;
8
+ rdev: number;
9
+ size: number;
10
+ blksize: number;
11
+ blocks: number;
12
+ atimeMs: number;
13
+ mtimeMs: number;
14
+ ctimeMs: number;
15
+ birthtimeMs: number;
16
+
17
+ atime: Date;
18
+ mtime: Date;
19
+ ctime: Date;
20
+ birthtime: Date;
21
+
22
+ isDirectory(): boolean;
23
+ isFile(): boolean;
24
+ isSymbolicLink(): boolean;
25
+ }
@@ -1,3 +1,4 @@
1
1
  export * from "./request";
2
2
  export * from "./response";
3
3
  export * from "./appinfo";
4
+ export * from "./deviceinfo";
package/tsup.config.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { defineConfig } from "tsup";
2
2
 
3
3
  export default defineConfig({
4
- entry: ["src/index.ts", "src/kysely/index.ts"],
4
+ entry: ["src/index.ts", "src/kysely/index.ts", "src/fs/index.ts"],
5
5
 
6
6
  format: ["esm"],
7
7
  dts: true,
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/bridge/index.ts","../src/api/sqlite.ts"],"sourcesContent":["import { MResponseStatusCode } from \"../types\";\r\nimport { MRequest } from \"../types/request\";\r\n\r\ninterface WebKitCallable {\r\n postMessage: (data: string) => Promise<string>;\r\n}\r\ndeclare global {\r\n interface Window {\r\n webkit?: {\r\n messageHandlers?: {\r\n MinipNativeInteraction?: WebKitCallable;\r\n };\r\n };\r\n }\r\n}\r\n\r\nlet jsBridge: {\r\n callNative: <T>(req?: MRequest<T>) => Promise<any>;\r\n callNativeSync: <T>(req?: MRequest<T>) => any;\r\n};\r\n\r\n// apple webkit\r\nif (window.webkit?.messageHandlers?.MinipNativeInteraction) {\r\n const _callNative = window.webkit.messageHandlers.MinipNativeInteraction;\r\n jsBridge = {\r\n callNative(req) {\r\n return _callNative\r\n .postMessage(JSON.stringify(req))\r\n .then((res) => JSON.parse(res))\r\n .then((res) => {\r\n if (res.code === MResponseStatusCode.SUCCESS) {\r\n res.isSuccess = () => true;\r\n const hashData = res.data !== null && res.data !== undefined;\r\n res.hasData = () => hashData;\r\n return res;\r\n } else {\r\n throw new Error(res.msg ?? \"Unknown error, res: \");\r\n }\r\n });\r\n },\r\n callNativeSync(req) {\r\n const res = prompt(JSON.stringify(req));\r\n if (res) {\r\n const r = JSON.parse(res);\r\n r.isSuccess = () => true;\r\n const hashData = r.data !== null && r.data !== undefined;\r\n r.hasData = () => hashData;\r\n return r;\r\n }\r\n return {\r\n code: MResponseStatusCode.FAILED,\r\n msg: \"Unknown error\",\r\n isSuccess: () => false,\r\n hasData: () => false,\r\n };\r\n },\r\n };\r\n}\r\n// error\r\nelse {\r\n jsBridge = {\r\n callNative() {\r\n return new Promise((_, reject) => {\r\n reject(\"Cannot find JavaScript Bridge!!!\");\r\n });\r\n },\r\n callNativeSync() {\r\n return {\r\n code: MResponseStatusCode.FAILED,\r\n msg: \"Cannot find JavaScript Bridge!!!\",\r\n };\r\n },\r\n };\r\n}\r\n\r\nexport default jsBridge;\r\n","import jsBridge from \"../bridge\";\r\nimport { MResponse, MResponseWithData } from \"../types\";\r\n\r\nexport function sqliteOpenDB(\r\n path: string,\r\n): Promise<MResponseWithData<{ dbKey: number }>> {\r\n return jsBridge.callNative({\r\n api: \"sqliteOpenDB\",\r\n data: {\r\n path,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteCloseDB(dbKey: number): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"sqliteCloseDB\",\r\n data: {\r\n dbKey,\r\n },\r\n });\r\n}\r\n\r\nexport function sqlitePrepare(\r\n dbKey: number,\r\n sql: string,\r\n): Promise<MResponseWithData<{ stmtKey: number; reader: boolean }>> {\r\n return jsBridge.callNative({\r\n api: \"sqlitePrepare\",\r\n data: {\r\n dbKey,\r\n sql,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteStatementAll(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<MResponseWithData<unknown[]>> {\r\n return jsBridge.callNative({\r\n api: \"sqliteStatementAll\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteStatementRun(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<\r\n MResponseWithData<{\r\n changes: number | bigint;\r\n lastInsertRowid: number | bigint;\r\n }>\r\n> {\r\n return jsBridge.callNative({\r\n api: \"sqliteStatementRun\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteExecute(\r\n dbKey: number,\r\n sql: string,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<\r\n MResponseWithData<{\r\n reader: boolean;\r\n runRes?: {\r\n changes: number | bigint;\r\n lastInsertRowid: number | bigint;\r\n };\r\n entityData?: unknown[];\r\n }>\r\n> {\r\n return jsBridge.callNative({\r\n api: \"sqliteExecute\",\r\n data: {\r\n dbKey,\r\n sql,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteCreateIterator(\r\n dbKey: number,\r\n stmtKey: number,\r\n parameters: ReadonlyArray<unknown>,\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"sqliteCreateIterator\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n parameters,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteIteratorNext(\r\n dbKey: number,\r\n stmtKey: number,\r\n): Promise<MResponseWithData<unknown | undefined>> {\r\n return jsBridge.callNative({\r\n api: \"sqliteIteratorNext\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n },\r\n });\r\n}\r\n\r\nexport function sqliteIteratorRelease(\r\n dbKey: number,\r\n stmtKey: number,\r\n): Promise<MResponse> {\r\n return jsBridge.callNative({\r\n api: \"sqliteIteratorRelease\",\r\n data: {\r\n dbKey,\r\n stmtKey,\r\n },\r\n });\r\n}\r\n"],"mappings":"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","names":[]}