@zimi/remote 0.2.1-alpha.10 → 0.2.1-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adaptor.d.ts +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/remoteValue/exposeToRemote.d.ts +5 -2
- package/dist/remoteValue/exposeToRemote.js +2 -3
- package/dist/remoteValue/exposeToRemote.js.map +1 -1
- package/dist/remoteValue/remoteValue.js.map +1 -1
- package/dist/remoteValue/type.d.ts +4 -0
- package/package.json +1 -1
- package/src/adaptor.ts +2 -2
- package/src/index.ts +1 -1
- package/src/remoteValue/exposeToRemote.ts +9 -6
- package/src/remoteValue/remoteValue.ts +2 -2
- package/src/remoteValue/type.ts +5 -0
package/dist/adaptor.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface AdaptorPackageData {
|
|
1
|
+
export interface AdaptorPackageData<D = unknown> {
|
|
2
2
|
/**
|
|
3
3
|
* 自身设备 id,应确保唯一性(对方能凭借该 deviceId 找到该设备)
|
|
4
4
|
*/
|
|
@@ -11,7 +11,7 @@ export interface AdaptorPackageData {
|
|
|
11
11
|
* 远程调用的对方的方法名
|
|
12
12
|
*/
|
|
13
13
|
name: string;
|
|
14
|
-
data:
|
|
14
|
+
data: D;
|
|
15
15
|
/**
|
|
16
16
|
* 所需回调的方法名(如果需要回调的话)
|
|
17
17
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export * from './adaptor';
|
|
|
3
3
|
export * from './response';
|
|
4
4
|
export * from './remoteValue/remoteValue';
|
|
5
5
|
export * from './remoteValue/exposeToRemote';
|
|
6
|
-
export type { ToFunc } from './remoteValue/type';
|
|
6
|
+
export type { ToFunc, RemoteCallData } from './remoteValue/type';
|
|
7
7
|
export * from './adaptors/iframe';
|
|
8
8
|
export * from './adaptors/http';
|
|
9
9
|
export * from './adaptors/dao3/client';
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Adaptor, AdaptorPackageData } from '../adaptor';
|
|
2
|
+
import { RemoteCallData } from './type';
|
|
3
|
+
type AdaptorData = AdaptorPackageData<RemoteCallData>;
|
|
2
4
|
interface ExposeProps {
|
|
3
5
|
globalName: string;
|
|
4
6
|
adaptor: Adaptor;
|
|
@@ -7,9 +9,10 @@ interface ExposeProps {
|
|
|
7
9
|
*/
|
|
8
10
|
exposeTo: string[];
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
12
|
+
* 你可以在该回调中抛错,以阻止远程调用,
|
|
13
|
+
* 也可以修改传入的 data
|
|
11
14
|
*/
|
|
12
|
-
onRequest?: (e:
|
|
15
|
+
onRequest?: (e: AdaptorData) => RemoteCallData | Promise<RemoteCallData>;
|
|
13
16
|
}
|
|
14
17
|
export declare function isRemoteValueEvent(eventName: string): boolean;
|
|
15
18
|
export declare function exposeToRemote<T extends object>(obj: T, options: ExposeProps): () => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RemoteError, response } from '../response';
|
|
2
2
|
function defaultOnRequest(e) {
|
|
3
|
-
return e;
|
|
3
|
+
return e.data;
|
|
4
4
|
}
|
|
5
5
|
export function isRemoteValueEvent(eventName) {
|
|
6
6
|
return eventName.startsWith('__REMOTE_VALUE_REQ__');
|
|
@@ -10,11 +10,10 @@ export function exposeToRemote(obj, options) {
|
|
|
10
10
|
const callback = async (e) => {
|
|
11
11
|
var _a, _b;
|
|
12
12
|
try {
|
|
13
|
-
await onRequest(e);
|
|
13
|
+
const { paths, args } = await onRequest(e);
|
|
14
14
|
if (!exposeTo.includes(e.deviceId) && !exposeTo.includes('*')) {
|
|
15
15
|
throw new RemoteError('permission denied');
|
|
16
16
|
}
|
|
17
|
-
const { paths, args } = e.data;
|
|
18
17
|
let target = obj;
|
|
19
18
|
for (let i = 0; i < paths.length; i += 1) {
|
|
20
19
|
target = target[paths[i]];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exposeToRemote.js","sourceRoot":"","sources":["../../src/remoteValue/exposeToRemote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"exposeToRemote.js","sourceRoot":"","sources":["../../src/remoteValue/exposeToRemote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAmBnD,SAAS,gBAAgB,CAAC,CAAc;IACtC,OAAO,CAAC,CAAC,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,cAAc,CAAmB,GAAM,EAAE,OAAoB;IAC3E,MAAM,EACJ,UAAU,EACV,OAAO,EACP,QAAQ,EACR,SAAS,GAAG,gBAAgB,GAC7B,GAAG,OAAO,CAAA;IACX,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAqB,EAAE,EAAE;;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,CAAgB,CAAC,CAAA;YACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,WAAW,CAAC,mBAAmB,CAAC,CAAA;YAC5C,CAAC;YACD,IAAI,MAAM,GAAG,GAAG,CAAA;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAwB,CAAkB,CAAA;YACnE,CAAC;YACD,IAAI,GAAY,CAAA;YAChB,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;gBAC/B,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,MAAM,CAAA;YACd,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAA,CAAC,CAAC,YAAY,mCAAI,6BAA6B;gBACrD,QAAQ,EAAE,CAAC,CAAC,cAAc;gBAC1B,cAAc,EAAE,CAAC,CAAC,QAAQ;gBAC1B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;aAC5B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAA,CAAC,CAAC,YAAY,mCAAI,6BAA6B;gBACrD,QAAQ,EAAE,CAAC,CAAC,cAAc;gBAC1B,cAAc,EAAE,CAAC,CAAC,QAAQ;gBAC1B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACnD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAC,uBAAuB,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAA;IACzD,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC5D,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteValue.js","sourceRoot":"","sources":["../../src/remoteValue/remoteValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAY,MAAM,aAAa,CAAA;AAIvE,SAAS,IAAI;IACX,OAAO;AACT,CAAC;AAYD,SAAS,SAAS,CAAmB,KAAe,EAAE,KAAuB;IAC3E,OAAO,IAAI,KAAK,CAAY,IAA4B,EAAE;QACxD,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ;YAC7B,MAAM,EACJ,OAAO,EACP,UAAU,EACV,SAAS,GAAG,KAAK,EACjB,GAAG,GAAG,KAAK,EACX,GAAG,SAAS,EACb,GAAG,KAAK,CAAA;YACT,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACrD,MAAM,IAAI,GAAG,uBAAuB,UAAU,EAAE,CAAA;YAChD,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CAAA;YAE3F,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CACT,kBAAkB,SAAS,CAAC,QAAQ,aAAa,SAAS,CAAC,cAAc,WAAW,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACxH,CAAA;YACH,CAAC;YAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI,KAAiC,CAAA;gBACrC,MAAM,QAAQ,GAAoB,CAAC,CAAC,EAAE,EAAE;;oBACtC,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;wBACtC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;oBACvC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,MAAC,CAAC,CAAC,IAA4C,0CAAE,IAAI,CAAC,CAAA;oBAChE,CAAC;gBACH,CAAC,CAAA;gBACD,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;gBACpC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;oBACnC,MAAM,CACJ,IAAI,kBAAkB,CACpB,YAAY,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC/C,CACF,CAAA;gBACH,CAAC,EAAE,SAAS,CAAC,CAAA;gBACb,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,YAAY,EAAE,YAAY;oBAC1B,GAAG,SAAS;oBACZ,IAAI,EAAE;wBACJ,KAAK;wBACL,IAAI,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"remoteValue.js","sourceRoot":"","sources":["../../src/remoteValue/remoteValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAY,MAAM,aAAa,CAAA;AAIvE,SAAS,IAAI;IACX,OAAO;AACT,CAAC;AAYD,SAAS,SAAS,CAAmB,KAAe,EAAE,KAAuB;IAC3E,OAAO,IAAI,KAAK,CAAY,IAA4B,EAAE;QACxD,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ;YAC7B,MAAM,EACJ,OAAO,EACP,UAAU,EACV,SAAS,GAAG,KAAK,EACjB,GAAG,GAAG,KAAK,EACX,GAAG,SAAS,EACb,GAAG,KAAK,CAAA;YACT,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACrD,MAAM,IAAI,GAAG,uBAAuB,UAAU,EAAE,CAAA;YAChD,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CAAA;YAE3F,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CACT,kBAAkB,SAAS,CAAC,QAAQ,aAAa,SAAS,CAAC,cAAc,WAAW,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACxH,CAAA;YACH,CAAC;YAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI,KAAiC,CAAA;gBACrC,MAAM,QAAQ,GAAoB,CAAC,CAAC,EAAE,EAAE;;oBACtC,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;wBACtC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;oBACvC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,MAAC,CAAC,CAAC,IAA4C,0CAAE,IAAI,CAAC,CAAA;oBAChE,CAAC;gBACH,CAAC,CAAA;gBACD,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;gBACpC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;oBACnC,MAAM,CACJ,IAAI,kBAAkB,CACpB,YAAY,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC/C,CACF,CAAA;gBACH,CAAC,EAAE,SAAS,CAAC,CAAA;gBACb,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,YAAY,EAAE,YAAY;oBAC1B,GAAG,SAAS;oBACZ,IAAI,EAAE;wBACJ,KAAK;wBACL,IAAI,EAAE,QAAQ;qBACU;iBAC3B,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,OAAO,SAAS,CAAC,CAAC,GAAG,KAAK,EAAE,IAAc,CAAC,EAAE,KAAK,CAAC,CAAA;QACrD,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAmB,KAAuB;IACnE,OAAO,SAAS,CAAI,EAAE,EAAE,KAAK,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -6,6 +6,10 @@ type HasFunc<T> = T extends (...args: unknown[]) => unknown ? true : T extends u
|
|
|
6
6
|
export type ToFunc<T extends object> = {
|
|
7
7
|
[K in keyof T]: T[K] extends (...args: infer Args) => infer Ret ? (...args: Args) => Promise<Awaited<Ret>> : HasFunc<T[K]> extends false ? () => Promise<T[K]> : T[K] extends object ? ToFunc<T[K]> : never;
|
|
8
8
|
};
|
|
9
|
+
export interface RemoteCallData {
|
|
10
|
+
paths: string[];
|
|
11
|
+
args: unknown[];
|
|
12
|
+
}
|
|
9
13
|
type Assert<T extends true> = T;
|
|
10
14
|
interface TestObj {
|
|
11
15
|
a1: number;
|
package/package.json
CHANGED
package/src/adaptor.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface AdaptorPackageData {
|
|
1
|
+
export interface AdaptorPackageData<D = unknown> {
|
|
2
2
|
/**
|
|
3
3
|
* 自身设备 id,应确保唯一性(对方能凭借该 deviceId 找到该设备)
|
|
4
4
|
*/
|
|
@@ -11,7 +11,7 @@ export interface AdaptorPackageData {
|
|
|
11
11
|
* 远程调用的对方的方法名
|
|
12
12
|
*/
|
|
13
13
|
name: string
|
|
14
|
-
data:
|
|
14
|
+
data: D
|
|
15
15
|
/**
|
|
16
16
|
* 所需回调的方法名(如果需要回调的话)
|
|
17
17
|
*/
|
package/src/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ export * from './response'
|
|
|
4
4
|
|
|
5
5
|
export * from './remoteValue/remoteValue'
|
|
6
6
|
export * from './remoteValue/exposeToRemote'
|
|
7
|
-
export type { ToFunc } from './remoteValue/type'
|
|
7
|
+
export type { ToFunc, RemoteCallData } from './remoteValue/type'
|
|
8
8
|
|
|
9
9
|
export * from './adaptors/iframe'
|
|
10
10
|
export * from './adaptors/http'
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Adaptor, AdaptorPackageData } from '../adaptor'
|
|
2
2
|
import { RemoteError, response } from '../response'
|
|
3
|
+
import { RemoteCallData } from './type'
|
|
4
|
+
|
|
5
|
+
type AdaptorData = AdaptorPackageData<RemoteCallData>
|
|
3
6
|
|
|
4
7
|
interface ExposeProps {
|
|
5
8
|
globalName: string
|
|
@@ -9,13 +12,14 @@ interface ExposeProps {
|
|
|
9
12
|
*/
|
|
10
13
|
exposeTo: string[]
|
|
11
14
|
/**
|
|
12
|
-
*
|
|
15
|
+
* 你可以在该回调中抛错,以阻止远程调用,
|
|
16
|
+
* 也可以修改传入的 data
|
|
13
17
|
*/
|
|
14
|
-
onRequest?: (e:
|
|
18
|
+
onRequest?: (e: AdaptorData) => RemoteCallData | Promise<RemoteCallData>
|
|
15
19
|
}
|
|
16
20
|
|
|
17
|
-
function defaultOnRequest(e:
|
|
18
|
-
return e
|
|
21
|
+
function defaultOnRequest(e: AdaptorData) {
|
|
22
|
+
return e.data
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
export function isRemoteValueEvent(eventName: string) {
|
|
@@ -31,11 +35,10 @@ export function exposeToRemote<T extends object>(obj: T, options: ExposeProps) {
|
|
|
31
35
|
} = options
|
|
32
36
|
const callback = async (e: AdaptorPackageData) => {
|
|
33
37
|
try {
|
|
34
|
-
await onRequest(e)
|
|
38
|
+
const { paths, args } = await onRequest(e as AdaptorData)
|
|
35
39
|
if (!exposeTo.includes(e.deviceId) && !exposeTo.includes('*')) {
|
|
36
40
|
throw new RemoteError('permission denied')
|
|
37
41
|
}
|
|
38
|
-
const { paths, args } = e.data as { paths: string[]; args: unknown[] }
|
|
39
42
|
let target = obj
|
|
40
43
|
for (let i = 0; i < paths.length; i += 1) {
|
|
41
44
|
target = target[paths[i] as keyof typeof target] as typeof target
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RemoteError, RemoteTimeoutError, response } from '../response'
|
|
2
2
|
import { Adaptor, AdaptorCallback, AdaptorPackageData } from '../adaptor'
|
|
3
|
-
import type { ToFunc } from './type'
|
|
3
|
+
import type { RemoteCallData, ToFunc } from './type'
|
|
4
4
|
|
|
5
5
|
function noop() {
|
|
6
6
|
// pass
|
|
@@ -62,7 +62,7 @@ function geneProxy<T extends object>(paths: string[], props: RemoteValueProps) {
|
|
|
62
62
|
data: {
|
|
63
63
|
paths,
|
|
64
64
|
args: argArray,
|
|
65
|
-
},
|
|
65
|
+
} satisfies RemoteCallData,
|
|
66
66
|
})
|
|
67
67
|
})
|
|
68
68
|
},
|