osra 0.4.5 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +224 -231
- package/build/connections/bidirectional.d.ts +11 -1
- package/build/connections/index.d.ts +1 -1
- package/build/connections/utils.d.ts +1 -0
- package/build/index.d.ts +2 -2
- package/build/index.js +782 -513
- package/build/index.js.map +1 -1
- package/build/revivables/abort-signal.d.ts +3 -1
- package/build/revivables/async-iterator.d.ts +16 -0
- package/build/revivables/error.d.ts +3 -0
- package/build/revivables/event-target.d.ts +4 -3
- package/build/revivables/index.d.ts +13 -4
- package/build/revivables/json-primitives.d.ts +17 -0
- package/build/revivables/readable-stream.d.ts +5 -1
- package/build/revivables/request.d.ts +2 -0
- package/build/revivables/symbol.d.ts +3 -1
- package/build/revivables/utils.d.ts +0 -5
- package/build/types.d.ts +9 -1
- package/build/utils/index.d.ts +1 -2
- package/build/utils/replace.d.ts +0 -3
- package/build/utils/teardown.d.ts +7 -0
- package/build/utils/transport.d.ts +11 -13
- package/build/utils/type-guards.d.ts +10 -2
- package/build/utils/typed-message-channel.d.ts +1 -0
- package/package.json +11 -7
|
@@ -9,7 +9,9 @@ type AbortMessage = {
|
|
|
9
9
|
export type BoxedAbortSignal = BoxBaseType<typeof type> & {
|
|
10
10
|
aborted: boolean;
|
|
11
11
|
reason?: Capable;
|
|
12
|
-
|
|
12
|
+
/** Absent when the signal was already aborted at box time — the reason
|
|
13
|
+
* rides the wrapper and no live channel is needed. */
|
|
14
|
+
port?: BoxedMessagePort<AbortMessage>;
|
|
13
15
|
};
|
|
14
16
|
export declare const isType: (value: unknown) => value is AbortSignal;
|
|
15
17
|
export declare const box: <T extends AbortSignal, T2 extends RevivableContext>(value: T, context: T2) => BoxedAbortSignal;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Capable } from '../types.js';
|
|
2
|
+
import type { RevivableContext, BoxBase as BoxBaseType } from './utils.js';
|
|
3
|
+
import { BoxedFunction } from './function.js';
|
|
4
|
+
export declare const type: 'asyncIterator';
|
|
5
|
+
type AnyAsyncIterable = {
|
|
6
|
+
[Symbol.asyncIterator]: () => AsyncIterator<unknown>;
|
|
7
|
+
};
|
|
8
|
+
export type BoxedAsyncIterator = BoxBaseType<typeof type> & {
|
|
9
|
+
next: BoxedFunction;
|
|
10
|
+
return: BoxedFunction;
|
|
11
|
+
throw: BoxedFunction;
|
|
12
|
+
};
|
|
13
|
+
export declare const isType: (value: unknown) => value is AnyAsyncIterable;
|
|
14
|
+
export declare const box: <T extends AnyAsyncIterable, T2 extends RevivableContext>(value: T, context: T2) => BoxedAsyncIterator;
|
|
15
|
+
export declare const revive: <T extends BoxedAsyncIterator, T2 extends RevivableContext>(value: T, context: T2) => AsyncIterableIterator<Capable>;
|
|
16
|
+
export {};
|
|
@@ -6,6 +6,9 @@ export type BoxedError = BoxBaseType<typeof type> & {
|
|
|
6
6
|
message: string;
|
|
7
7
|
stack: string;
|
|
8
8
|
cause?: Capable;
|
|
9
|
+
/** AggregateError only */
|
|
10
|
+
errors?: Capable;
|
|
11
|
+
isDOMException?: boolean;
|
|
9
12
|
};
|
|
10
13
|
export declare const isType: (value: unknown) => value is Error;
|
|
11
14
|
export declare const box: <T extends Error, T2 extends RevivableContext>(value: T, context: T2) => BoxedError;
|
|
@@ -10,9 +10,10 @@ export declare const isType: (value: unknown) => value is EventTarget;
|
|
|
10
10
|
export declare const box: <T extends EventTarget, T2 extends RevivableContext>(value: T, context: T2) => {
|
|
11
11
|
__OSRA_BOX__: 'revivable';
|
|
12
12
|
type: "eventTarget";
|
|
13
|
-
addListener: import("./function.js").BoxedFunction<(
|
|
14
|
-
removeListener: import("./function.js").BoxedFunction<(
|
|
13
|
+
addListener: import("./function.js").BoxedFunction<(eventType: string, listener: EventListener, options?: ListenerOpts) => void>;
|
|
14
|
+
removeListener: import("./function.js").BoxedFunction<(eventType: string, listener: EventListener, options?: ListenerOpts) => void>;
|
|
15
|
+
removeAllListeners: import("./function.js").BoxedFunction<() => void>;
|
|
15
16
|
};
|
|
16
17
|
export type BoxedEventTarget = ReturnType<typeof box>;
|
|
17
|
-
export declare const revive: <T extends
|
|
18
|
+
export declare const revive: <T extends BoxedEventTarget, T2 extends RevivableContext>(value: T, context: T2) => EventTarget;
|
|
18
19
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BoxBase, RevivableContext } from './utils.js';
|
|
2
|
-
import type { DeepReplaceWithBox, DeepReplaceWithRevive
|
|
2
|
+
import type { DeepReplaceWithBox, DeepReplaceWithRevive } from '../utils/replace.js';
|
|
3
3
|
import type { MessageFields, Capable } from '../types.js';
|
|
4
4
|
import * as arrayBuffer from './array-buffer.js';
|
|
5
5
|
import * as date from './date.js';
|
|
@@ -23,6 +23,7 @@ import * as event from './event.js';
|
|
|
23
23
|
import * as eventTarget from './event-target.js';
|
|
24
24
|
import * as blob from './blob.js';
|
|
25
25
|
import * as symbol from './symbol.js';
|
|
26
|
+
import * as asyncIterator from './async-iterator.js';
|
|
26
27
|
export { identity } from './identity.js';
|
|
27
28
|
export { transfer } from './transfer.js';
|
|
28
29
|
export * from './utils.js';
|
|
@@ -34,7 +35,17 @@ export type RevivableModule<T extends string = string, T2 = any, T3 extends BoxB
|
|
|
34
35
|
readonly init?: (context: RevivableContext<any>) => void;
|
|
35
36
|
readonly Messages?: T4;
|
|
36
37
|
};
|
|
37
|
-
export declare const defaultRevivableModules: readonly [typeof transfer, typeof identity, typeof arrayBuffer, typeof date, typeof headers, typeof error, typeof typedArray, typeof blob, typeof promise, typeof func, typeof messagePort, typeof readableStream, typeof writableStream, typeof abortSignal, typeof response, typeof request, typeof map, typeof set, typeof bigInt, typeof symbol, typeof event, {
|
|
38
|
+
export declare const defaultRevivableModules: readonly [typeof transfer, typeof identity, typeof arrayBuffer, typeof date, typeof headers, typeof error, typeof typedArray, typeof blob, typeof promise, typeof func, typeof messagePort, typeof readableStream, typeof writableStream, typeof abortSignal, typeof response, typeof request, typeof map, typeof set, typeof bigInt, typeof symbol, typeof event, typeof asyncIterator, {
|
|
39
|
+
readonly type: 'nonFiniteNumber';
|
|
40
|
+
readonly isType: (value: unknown) => value is number;
|
|
41
|
+
readonly box: (value: number, context: RevivableContext<any>) => import("./json-primitives.js").BoxedNonFiniteNumber | number;
|
|
42
|
+
readonly revive: (value: import("./json-primitives.js").BoxedNonFiniteNumber, _context: RevivableContext<any>) => number;
|
|
43
|
+
}, {
|
|
44
|
+
readonly type: 'undefined';
|
|
45
|
+
readonly isType: (value: unknown) => value is undefined;
|
|
46
|
+
readonly box: (value: undefined, context: RevivableContext<any>) => import("./json-primitives.js").BoxedUndefined | undefined;
|
|
47
|
+
readonly revive: (_value: import("./json-primitives.js").BoxedUndefined, _context: RevivableContext<any>) => undefined;
|
|
48
|
+
}, {
|
|
38
49
|
readonly type: 'clonable';
|
|
39
50
|
readonly capableOnly: true;
|
|
40
51
|
readonly isType: (value: unknown) => value is import("./fallbacks.js").Clonable;
|
|
@@ -54,7 +65,5 @@ export declare const defaultRevivableModules: readonly [typeof transfer, typeof
|
|
|
54
65
|
}];
|
|
55
66
|
export type DefaultRevivableModules = typeof defaultRevivableModules;
|
|
56
67
|
export type DefaultRevivableModule = DefaultRevivableModules[number];
|
|
57
|
-
export declare const box: <T extends Capable, TModules extends readonly RevivableModule[]>(value: T, context: RevivableContext<TModules>) => ReplaceWithBox<T, TModules[number]>;
|
|
58
68
|
export declare const recursiveBox: <T extends Capable, TModules extends readonly RevivableModule[]>(value: T, context: RevivableContext<TModules>) => DeepReplaceWithBox<T, TModules[number]>;
|
|
59
|
-
export declare const revive: <T extends ReturnType<typeof box>, TModules extends readonly RevivableModule[]>(value: T, context: RevivableContext<TModules>) => ReplaceWithRevive<T, TModules[number]>;
|
|
60
69
|
export declare const recursiveRevive: <T extends Capable, TModules extends readonly RevivableModule[]>(value: T, context: RevivableContext<TModules>) => DeepReplaceWithRevive<T, TModules[number]>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BoxBase as BoxBaseType, RevivableContext } from './utils.js';
|
|
2
|
+
export type BoxedNonFiniteNumber = BoxBaseType<'nonFiniteNumber'> & {
|
|
3
|
+
value: 'NaN' | 'Infinity' | '-Infinity';
|
|
4
|
+
};
|
|
5
|
+
export declare const nonFiniteNumber: {
|
|
6
|
+
readonly type: 'nonFiniteNumber';
|
|
7
|
+
readonly isType: (value: unknown) => value is number;
|
|
8
|
+
readonly box: (value: number, context: RevivableContext<any>) => BoxedNonFiniteNumber | number;
|
|
9
|
+
readonly revive: (value: BoxedNonFiniteNumber, _context: RevivableContext<any>) => number;
|
|
10
|
+
};
|
|
11
|
+
export type BoxedUndefined = BoxBaseType<'undefined'>;
|
|
12
|
+
export declare const undefinedValue: {
|
|
13
|
+
readonly type: 'undefined';
|
|
14
|
+
readonly isType: (value: unknown) => value is undefined;
|
|
15
|
+
readonly box: (value: undefined, context: RevivableContext<any>) => BoxedUndefined | undefined;
|
|
16
|
+
readonly revive: (_value: BoxedUndefined, _context: RevivableContext<any>) => undefined;
|
|
17
|
+
};
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import type { Capable } from '../types.js';
|
|
1
2
|
import type { RevivableContext, BoxBase as BoxBaseType } from './utils.js';
|
|
2
3
|
import type { UnderlyingType } from './index.js';
|
|
3
4
|
import { BoxedMessagePort } from './message-port.js';
|
|
4
5
|
export declare const type: 'readableStream';
|
|
5
6
|
export type PullContext = {
|
|
6
|
-
type: 'pull'
|
|
7
|
+
type: 'pull';
|
|
8
|
+
} | {
|
|
9
|
+
type: 'cancel';
|
|
10
|
+
reason?: Capable;
|
|
7
11
|
};
|
|
8
12
|
type ChunkMessage<T = unknown> = Promise<ReadableStreamReadResult<T>>;
|
|
9
13
|
type Msg = PullContext | ChunkMessage;
|
|
@@ -14,10 +14,12 @@ export declare const box: <T extends Request, T2 extends RevivableContext>(value
|
|
|
14
14
|
body: import("./readable-stream.js").BoxedReadableStream<ReadableStream<Uint8Array<ArrayBuffer>>> | null;
|
|
15
15
|
credentials: RequestCredentials;
|
|
16
16
|
cache: RequestCache;
|
|
17
|
+
mode: RequestMode;
|
|
17
18
|
redirect: RequestRedirect;
|
|
18
19
|
referrer: string;
|
|
19
20
|
referrerPolicy: ReferrerPolicy;
|
|
20
21
|
integrity: string;
|
|
21
22
|
keepalive: boolean;
|
|
23
|
+
signal: import("./abort-signal.js").BoxedAbortSignal;
|
|
22
24
|
};
|
|
23
25
|
export declare const revive: <T extends ReturnType<typeof box>, T2 extends RevivableContext>(value: T, context: T2) => Request;
|
|
@@ -4,8 +4,10 @@ export declare const isType: (value: unknown) => value is symbol;
|
|
|
4
4
|
export declare const box: <T extends symbol, T2 extends RevivableContext>(value: T, context: T2) => {
|
|
5
5
|
__OSRA_BOX__: 'revivable';
|
|
6
6
|
type: "symbol";
|
|
7
|
-
|
|
7
|
+
registryKey: string;
|
|
8
8
|
} | import("./identity.js").BoxedIdentity<import("../types.js").Capable>;
|
|
9
9
|
export declare const revive: <T extends {
|
|
10
|
+
registryKey: string;
|
|
11
|
+
} | {
|
|
10
12
|
description: string | undefined;
|
|
11
13
|
}, T2 extends RevivableContext>(value: T, _context: T2) => symbol;
|
|
@@ -12,7 +12,6 @@ export type BoxBase<T extends string = string> = typeof BoxBase & {
|
|
|
12
12
|
export type RevivableContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = {
|
|
13
13
|
transport: Transport;
|
|
14
14
|
remoteUuid: Uuid;
|
|
15
|
-
unregisterSignal?: AbortSignal;
|
|
16
15
|
/** Typed as a broad dispatcher so revivables can post their own message
|
|
17
16
|
* variants without triggering contravariant function-parameter mismatches
|
|
18
17
|
* across modules. The shape is enforced structurally via `MessageFields`. */
|
|
@@ -30,9 +29,6 @@ export type ExtractType<T, Ctx extends RevivableContext = RevivableContext> = T
|
|
|
30
29
|
} ? S : never : T extends {
|
|
31
30
|
isType: (value: unknown) => value is infer S;
|
|
32
31
|
} ? S : never;
|
|
33
|
-
export type ExtractBox<T> = T extends {
|
|
34
|
-
box: (...args: any[]) => infer B;
|
|
35
|
-
} ? B : never;
|
|
36
32
|
export type ExtractMessages<T> = T extends {
|
|
37
33
|
Messages?: infer B;
|
|
38
34
|
} ? B extends {
|
|
@@ -40,7 +36,6 @@ export type ExtractMessages<T> = T extends {
|
|
|
40
36
|
} ? string extends B['type'] ? never : B : never : never;
|
|
41
37
|
export type InferMessages<TModules extends readonly unknown[]> = ExtractMessages<TModules[number]>;
|
|
42
38
|
export type InferRevivables<TModules extends readonly unknown[], Ctx extends RevivableContext = RevivableContext> = ExtractType<TModules[number], Ctx>;
|
|
43
|
-
export type InferRevivableBox<TModules extends readonly unknown[]> = ExtractBox<TModules[number]>;
|
|
44
39
|
export declare const isRevivableBox: (value: unknown) => value is BoxBase;
|
|
45
40
|
/** Wire shape for an ArrayBuffer: base64 on JSON, raw on clone. */
|
|
46
41
|
export type BoxedBuffer<TCtx extends RevivableContext = RevivableContext> = IsJsonOnlyTransport<TCtx['transport']> extends true ? {
|
package/build/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConnectionMessage } from './connections/index.js';
|
|
2
|
-
import type { TypedEventTarget } from './utils/
|
|
2
|
+
import type { TypedEventTarget } from './utils/typed-event-target.js';
|
|
3
3
|
import type { IsJsonOnlyTransport } from './utils/type-guards.js';
|
|
4
4
|
import type { DefaultRevivableModules, RevivableModule, InferMessages, InferRevivables, RevivableContext } from './revivables/index.js';
|
|
5
5
|
export declare const OSRA_KEY: '__OSRA_KEY__';
|
|
@@ -25,6 +25,14 @@ type CapableBase<Ctx extends RevivableContext> = IsJsonOnlyTransport<Ctx['transp
|
|
|
25
25
|
export type Capable<TModules extends readonly RevivableModule[] = DefaultRevivableModules, Ctx extends RevivableContext = RevivableContext> = CapableBase<Ctx> | InferRevivables<TModules, Ctx> | {
|
|
26
26
|
[key: string]: Capable<TModules, Ctx>;
|
|
27
27
|
} | Array<Capable<TModules, Ctx>> | Map<Capable<TModules, Ctx>, Capable<TModules, Ctx>> | Set<Capable<TModules, Ctx>>;
|
|
28
|
+
/** What a value looks like from the far side of the connection: functions
|
|
29
|
+
* become async (calls cross the wire), Blobs arrive as Promise<Blob>,
|
|
30
|
+
* containers map recursively, everything else revives as itself. */
|
|
31
|
+
export type Remote<T> = T extends (...args: infer P) => infer R ? (...args: P) => Promise<Remote<Awaited<R>>> : T extends Blob ? Promise<T> : T extends Promise<infer U> ? Promise<Remote<U>> : T extends Map<any, any> | Set<any> | Date | Error | RegExp | ArrayBuffer | ArrayBufferView | ReadableStream | WritableStream | MessagePort | EventTarget | Request | Response | Headers ? T : T extends AsyncIterable<infer U> ? AsyncIterableIterator<Remote<U>> : T extends ReadonlyArray<unknown> ? {
|
|
32
|
+
[K in keyof T]: Remote<T[K]>;
|
|
33
|
+
} : T extends object ? {
|
|
34
|
+
[K in keyof T]: Remote<T[K]>;
|
|
35
|
+
} : T;
|
|
28
36
|
export type MessageFields = {
|
|
29
37
|
type: string;
|
|
30
38
|
remoteUuid: Uuid;
|
package/build/utils/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export * from './transport.js';
|
|
2
|
-
export * from '../revivables/index.js';
|
|
3
2
|
export * from './replace.js';
|
|
4
|
-
export * from '../connections/index.js';
|
|
5
3
|
export * from './transferable.js';
|
|
6
4
|
export * from './type-guards.js';
|
|
7
5
|
export * from './typed-event-target.js';
|
|
@@ -10,3 +8,4 @@ export * from './event-channel.js';
|
|
|
10
8
|
export * from './type.js';
|
|
11
9
|
export * from './capable-check.js';
|
|
12
10
|
export * from './gc-tracker.js';
|
|
11
|
+
export * from './teardown.js';
|
package/build/utils/replace.d.ts
CHANGED
|
@@ -14,9 +14,6 @@ type FindMatchingRevive<T, M> = M extends {
|
|
|
14
14
|
box: (...args: any[]) => infer S;
|
|
15
15
|
revive: (...args: any[]) => infer R;
|
|
16
16
|
} ? T extends S ? R : never : never;
|
|
17
|
-
export type ReplaceWithRevive<T, M> = [
|
|
18
|
-
FindMatchingRevive<T, M>
|
|
19
|
-
] extends [never] ? T : FindMatchingRevive<T, M>;
|
|
20
17
|
export type DeepReplaceWithRevive<T, M> = [
|
|
21
18
|
FindMatchingRevive<T, M>
|
|
22
19
|
] extends [never] ? T extends Array<infer U> ? Array<DeepReplaceWithRevive<U, M>> : T extends object ? {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Per-connection teardown registry. Revivables register cleanup for state
|
|
2
|
+
* tied to a connection (pending RPC settlements, port routing, caches);
|
|
3
|
+
* the connection layer runs it on protocol close or unregisterSignal abort.
|
|
4
|
+
* Registering against an already-torn-down scope runs the callback
|
|
5
|
+
* immediately so late registrations fail fast instead of leaking. */
|
|
6
|
+
export declare const onTeardown: (scope: WeakKey, fn: () => void) => (() => void);
|
|
7
|
+
export declare const runTeardown: (scope: WeakKey) => void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Browser } from 'webextension-polyfill';
|
|
1
2
|
import type { Message } from '../types.js';
|
|
2
3
|
import type { WebExtOnConnect, WebExtOnMessage, WebExtPort, WebExtRuntime, WebExtSender } from './type-guards.js';
|
|
3
4
|
export type MessageContext = {
|
|
@@ -5,8 +6,9 @@ export type MessageContext = {
|
|
|
5
6
|
sender?: WebExtSender;
|
|
6
7
|
receiveTransport?: ReceivePlatformTransport;
|
|
7
8
|
source?: MessageEventSource | null;
|
|
9
|
+
origin?: string;
|
|
8
10
|
};
|
|
9
|
-
export type ReceiveHandler = (listener: (event: Message, messageContext: MessageContext) => void) => void;
|
|
11
|
+
export type ReceiveHandler = (listener: (event: Message, messageContext: MessageContext) => void) => void | (() => void);
|
|
10
12
|
export type EmitHandler = (message: Message, transferables?: Transferable[]) => void;
|
|
11
13
|
type CustomReceive = ReceivePlatformTransport | ReceiveHandler;
|
|
12
14
|
type CustomEmit = EmitPlatformTransport | EmitHandler;
|
|
@@ -31,25 +33,21 @@ export type ReceiveJsonPlatformTransport = WebSocket | WebExtPort | WebExtOnConn
|
|
|
31
33
|
export type JsonPlatformTransport = {
|
|
32
34
|
isJson: true;
|
|
33
35
|
} | EmitJsonPlatformTransport | ReceiveJsonPlatformTransport;
|
|
34
|
-
type
|
|
35
|
-
export type
|
|
36
|
-
export type ReceivePlatformTransport = ReceiveJsonPlatformTransport | StructuredClonePlatformTransport;
|
|
36
|
+
export type EmitPlatformTransport = EmitJsonPlatformTransport | Window | ServiceWorker | Worker | SharedWorker | MessagePort;
|
|
37
|
+
export type ReceivePlatformTransport = ReceiveJsonPlatformTransport | Window | ServiceWorkerContainer | Worker | SharedWorker | MessagePort;
|
|
37
38
|
export type PlatformTransport = EmitPlatformTransport | ReceivePlatformTransport;
|
|
38
|
-
export type EmitTransport = EmitPlatformTransport
|
|
39
|
-
|
|
40
|
-
}>;
|
|
41
|
-
export type ReceiveTransport = ReceivePlatformTransport & Extract<CustomTransport, {
|
|
42
|
-
receive: any;
|
|
43
|
-
}>;
|
|
39
|
+
export type EmitTransport = EmitPlatformTransport | CustomEmitTransport;
|
|
40
|
+
export type ReceiveTransport = ReceivePlatformTransport | CustomReceiveTransport;
|
|
44
41
|
export type Transport = PlatformTransport | CustomTransport;
|
|
45
|
-
export declare const getWebExtensionGlobal: () =>
|
|
46
|
-
export declare const getWebExtensionRuntime: () =>
|
|
42
|
+
export declare const getWebExtensionGlobal: () => Browser | undefined;
|
|
43
|
+
export declare const getWebExtensionRuntime: () => import("webextension-polyfill").Runtime.Static | undefined;
|
|
47
44
|
export declare const checkOsraMessageKey: (message: any, key: string) => message is Message;
|
|
48
|
-
export declare const registerOsraMessageListener: ({ listener, transport, remoteName, key, unregisterSignal }: {
|
|
45
|
+
export declare const registerOsraMessageListener: ({ listener, transport, remoteName, key, origin, unregisterSignal }: {
|
|
49
46
|
listener: (message: Message, messageContext: MessageContext) => void;
|
|
50
47
|
transport: ReceiveTransport;
|
|
51
48
|
remoteName?: string;
|
|
52
49
|
key?: string;
|
|
50
|
+
origin?: string;
|
|
53
51
|
unregisterSignal?: AbortSignal;
|
|
54
52
|
}) => void;
|
|
55
53
|
export declare const sendOsraMessage: (transport: EmitTransport, message: Message, origin?: string, transferables?: Transferable[]) => void;
|
|
@@ -23,17 +23,25 @@ export declare const typedArrayTypeToTypedArrayConstructor: (value: TypedArrayTy
|
|
|
23
23
|
export declare const isTypedArray: (value: unknown) => value is TypedArray;
|
|
24
24
|
export declare const isWebSocket: (value: unknown) => value is WebSocket;
|
|
25
25
|
export declare const isServiceWorkerContainer: (value: unknown) => value is ServiceWorkerContainer;
|
|
26
|
+
export declare const isServiceWorker: (value: unknown) => value is ServiceWorker;
|
|
26
27
|
export declare const isWorker: (value: unknown) => value is Worker;
|
|
27
|
-
export
|
|
28
|
+
export type DedicatedWorkerGlobalScopeLike = typeof globalThis & {
|
|
29
|
+
postMessage: (message: unknown, transfer?: Transferable[]) => void;
|
|
30
|
+
name: string;
|
|
31
|
+
};
|
|
32
|
+
export declare const isDedicatedWorker: (value: unknown) => value is DedicatedWorkerGlobalScopeLike;
|
|
28
33
|
export declare const isSharedWorker: (value: unknown) => value is SharedWorker;
|
|
29
34
|
export declare const isOsraMessage: (value: unknown) => value is Message;
|
|
30
35
|
type AnyConstructor = abstract new (...args: any[]) => unknown;
|
|
31
36
|
/** True if `value` is an instance of any of the given constructors.
|
|
32
37
|
* Tolerates undefined entries (constructors missing on this platform). */
|
|
33
38
|
export declare const instanceOfAny: (value: unknown, ctors: readonly (AnyConstructor | undefined)[]) => boolean;
|
|
39
|
+
export declare const isSharedArrayBuffer: (value: unknown) => boolean;
|
|
40
|
+
/** @deprecated Renamed — this only ever checked SharedArrayBuffer, unlike
|
|
41
|
+
* the unrelated clonable fallback module. Use isSharedArrayBuffer. */
|
|
34
42
|
export declare const isClonable: (value: unknown) => boolean;
|
|
35
43
|
export declare const isTransferable: (value: unknown) => value is Transferable;
|
|
36
|
-
export type WebExtRuntime =
|
|
44
|
+
export type WebExtRuntime = Runtime.Static;
|
|
37
45
|
export declare const isWebExtensionRuntime: (value: unknown) => value is WebExtRuntime;
|
|
38
46
|
export type WebExtPort = ReturnType<WebExtRuntime['connect']> | Runtime.Port;
|
|
39
47
|
export declare const isWebExtensionPort: (value: unknown, connectPort?: boolean) => value is WebExtPort;
|
|
@@ -3,6 +3,7 @@ import type { TypedEventTarget } from './typed-event-target.js';
|
|
|
3
3
|
export type TypedMessagePortEventMap<T = unknown> = {
|
|
4
4
|
'message': MessageEvent<T>;
|
|
5
5
|
'messageerror': MessageEvent;
|
|
6
|
+
'close': Event;
|
|
6
7
|
};
|
|
7
8
|
export interface TypedMessagePort<T = unknown> extends Omit<TypedEventTarget<TypedMessagePortEventMap<T>>, typeof UnderlyingType> {
|
|
8
9
|
[UnderlyingType]?: T;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "osra",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Easy communication between workers",
|
|
5
5
|
"files": [
|
|
6
6
|
"build"
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
".": {
|
|
12
12
|
"types": "./build/index.d.ts",
|
|
13
13
|
"import": "./build/index.js"
|
|
14
|
-
}
|
|
14
|
+
},
|
|
15
|
+
"./package.json": "./package.json"
|
|
15
16
|
},
|
|
16
17
|
"type": "module",
|
|
17
18
|
"scripts": {
|
|
@@ -24,16 +25,17 @@
|
|
|
24
25
|
"dev": "concurrently \"npm run build-test-watch\"",
|
|
25
26
|
"_dev": "concurrently \"npm run build-watch\" \"npm run build-test-watch\" \"npm run test-watch\"",
|
|
26
27
|
"dev2": "concurrently \"npm run build-watch\" \"npm run build-test-watch\" \"npm run test-watch-headful\"",
|
|
27
|
-
"test": "npm run build-test && npx playwright test",
|
|
28
|
+
"test": "npm run build && npm run build-test && npx playwright test",
|
|
28
29
|
"test-watch": "set PWTEST_WATCH=1 & npx playwright test",
|
|
29
|
-
"test-watch-headful": "nodemon --watch build --exec \"npx playwright test --headed\"",
|
|
30
|
+
"test-watch-headful": "nodemon --watch build-test --exec \"npx playwright test --headed\"",
|
|
30
31
|
"test-with-coverage": "npm run build-test && npx playwright test && npm run print-coverage && npm run clean-coverage",
|
|
31
32
|
"print-coverage": "npx nyc report",
|
|
32
33
|
"clean-coverage": "rimraf .nyc_output coverage",
|
|
33
34
|
"type-check": "tsgo --noEmit && tsgo --noEmit -p tsconfig.tests.json",
|
|
34
35
|
"start-server": "http-server -p 3000",
|
|
35
36
|
"build-extension-test": "node build-extension-test.mjs",
|
|
36
|
-
"test-extension": "npm run build-extension-test && npx playwright test -c playwright.extension.config.ts"
|
|
37
|
+
"test-extension": "npm run build-extension-test && npx playwright test -c playwright.extension.config.ts",
|
|
38
|
+
"check-consumer-types": "npm run build && tsgo --noEmit -p tsconfig.consumer.json"
|
|
37
39
|
},
|
|
38
40
|
"repository": {
|
|
39
41
|
"type": "git",
|
|
@@ -65,6 +67,8 @@
|
|
|
65
67
|
"nyc": "^17.1.0",
|
|
66
68
|
"playwright": "^1.58.2",
|
|
67
69
|
"vite": "^8.0.3",
|
|
68
|
-
"vite-plugin-istanbul": "^8.0.0"
|
|
69
|
-
|
|
70
|
+
"vite-plugin-istanbul": "^8.0.0",
|
|
71
|
+
"ws": "^8.21.0"
|
|
72
|
+
},
|
|
73
|
+
"sideEffects": false
|
|
70
74
|
}
|