@rpack-dev/core 0.1.19 → 0.1.20-cc8be57

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.
@@ -17,7 +17,7 @@ declare class RPack {
17
17
  */
18
18
  static createInstance(defaultInstance?: boolean): Promise<RPack>;
19
19
  static getInstance(): RPack;
20
- private readonly pluginThread;
20
+ private readonly environment;
21
21
  private readonly loadPromise;
22
22
  private readonly platform;
23
23
  private readonly version;
@@ -42,11 +42,25 @@ declare class RPack {
42
42
  * @return an RPVersion instance
43
43
  */
44
44
  getVersion(): RPVersion;
45
+ /**
46
+ * Returns the current ProxyManager instance.
47
+ *
48
+ * This class is used when dealing with proxied objects
49
+ * across threads and the network.
50
+ */
45
51
  getProxyManager(): ProxyManager;
52
+ /**
53
+ * Returns the current RegistryManager instance.
54
+ *
55
+ * This class is used when dealing with Registries.
56
+ */
46
57
  getRegistryManager(): RegistryManager;
47
58
  getPluginManager(): PluginManager;
48
59
  getNetworkManager(): NetworkManager;
60
+ getEnvironment(): EnvironmentInfo;
49
61
  isPluginThread(): boolean;
62
+ isHost(): boolean;
63
+ isClient(): boolean;
50
64
  /**
51
65
  * Shorthand for getNetworkManager().getPlugin().
52
66
  *
@@ -80,9 +94,9 @@ export declare abstract class RPPlatform {
80
94
  export declare abstract class RPackThread {
81
95
  private readonly threadId;
82
96
  private readonly messenger;
83
- protected constructor(threadId: string, messenger: Messenger<W2HPackets, H2WPackets>);
97
+ protected constructor(threadId: string, messenger: Messenger<P2CPackets, C2PPackets>);
84
98
  getThreadId(): string;
85
- getMessenger(): Messenger<W2HPackets, H2WPackets>;
99
+ getMessenger(): Messenger<P2CPackets, C2PPackets>;
86
100
  abstract disable(): Promise<void>;
87
101
  abstract terminate(): Promise<void>;
88
102
  }
@@ -171,7 +185,7 @@ export declare class ArrayUtils {
171
185
  */
172
186
  static naturalSort<T>(array: T[], func?: (element: T) => string): T[];
173
187
  }
174
- export declare class AsyncIterableIteratorMirror<T, E> implements AsyncIterableIterator<T> {
188
+ export declare class AsyncIteratorMirror<T, E> implements AsyncIterableIterator<T> {
175
189
  private readonly it;
176
190
  private readonly converter;
177
191
  constructor(it: Iterator<T>);
@@ -228,7 +242,7 @@ export declare class DevPluginSource implements PluginSource {
228
242
  getPluginArchive(groupId: string, pluginId: string, version: string): Promise<PluginArchive>;
229
243
  removeServer(client: DevPluginServerClient): void;
230
244
  }
231
- export declare class FilteredIterableIterator<T> implements IterableIterator<T> {
245
+ export declare class FilteredIterator<T> implements IterableIterator<T> {
232
246
  private readonly it;
233
247
  private readonly filter;
234
248
  constructor(it: Iterator<T>, filter: (t: T) => boolean);
@@ -242,7 +256,7 @@ export declare class FilteredIterableIterator<T> implements IterableIterator<T>
242
256
  return(value?: any): IteratorResult<T>;
243
257
  throw(e?: any): IteratorResult<T>;
244
258
  }
245
- export declare class LazyBatchedAsyncIterableIterator<T> implements AsyncIterableIterator<T> {
259
+ export declare class LazyBatchedAsyncIterator<T> implements AsyncIterableIterator<T> {
246
260
  private readonly supplier;
247
261
  private readonly completeHandler?;
248
262
  private readonly errorHandler?;
@@ -269,6 +283,11 @@ export declare class LazyPromise<T> {
269
283
  isComplete(): boolean;
270
284
  isErrored(): boolean;
271
285
  }
286
+ /**
287
+ * A Proxy handler that functions as a wrapper around an object.
288
+ * This class turns function return values on the wrapped object
289
+ * into Promise objects to match Registry return types.
290
+ */
272
291
  export declare class LocalObject<T extends object> implements ProxyHandler<T> {
273
292
  get(target: T, p: string | symbol, receiver: any): any;
274
293
  }
@@ -327,6 +346,18 @@ export declare class LocalRemoteMap<Local, Remote> {
327
346
  hasRemote(key: string): boolean;
328
347
  deleteRemote(key: string): boolean;
329
348
  }
349
+ export declare class MappedIterator<T, K> implements IterableIterator<K> {
350
+ private readonly it;
351
+ private readonly map;
352
+ constructor(it: Iterator<T>, map: (t: T) => K);
353
+ [Symbol.iterator](): IterableIterator<K>;
354
+ next(...args: [
355
+ ] | [
356
+ any
357
+ ]): IteratorResult<K>;
358
+ return(value?: any): IteratorResult<K>;
359
+ throw(e?: any): IteratorResult<K>;
360
+ }
330
361
  export declare class Messenger<InPackets extends PacketsType<InPackets>, OutPackets extends PacketsType<OutPackets>> {
331
362
  private readonly handlerLists;
332
363
  private readonly sender;
@@ -347,26 +378,29 @@ export declare class Messenger<InPackets extends PacketsType<InPackets>, OutPack
347
378
  sendPacket<K extends keyof OutPackets>(packet: OutPackets[K]): void;
348
379
  sendPacketWithNoncePromise<O extends keyof OnlyNoncePackets<OutPackets>, I extends keyof OnlyNoncePackets<InPackets>>(outPacketKey: O, outPacket: Omit<OutPackets[O], "nonce" | "id">, inPacket: I, timeout?: number): Promise<InPackets[I]>;
349
380
  static cast<SIn extends TIn, SOut extends TOut, TIn extends PacketsType<TIn>, TOut extends PacketsType<TOut>>(source: Messenger<SIn, SOut>): Messenger<TIn, TOut>;
381
+ private static filterTransferable;
382
+ static transferableSend<T, In extends PacketsType<In>, Out extends PacketsType<Out>>(detection: (value: any) => boolean, target: MessageTarget<T>): Messenger<In, Out>;
383
+ static websocket<In extends PacketsType<In>, Out extends PacketsType<Out>>(websocket: WebSocket): Messenger<In, Out>;
350
384
  }
351
385
  export declare class NetworkManager {
352
- static readonly HOST_THREAD_ID = "host";
386
+ static readonly CORE_THREAD_ID = "core";
353
387
  private readonly rpack;
354
- private hostMessenger?;
388
+ private coreMessenger?;
355
389
  private threads?;
356
390
  private readonly pluginRegistry;
357
391
  private plugin;
358
392
  private threadId;
359
393
  private readonly wellKnownMap;
360
394
  private readonly wellKnownReverseMap;
361
- constructor(rpack: RPack, threadId: string, hostMessenger?: Messenger<H2WPackets, W2HPackets>);
395
+ constructor(rpack: RPack);
362
396
  private mapWellKnown;
363
397
  __initPlugin(pluginKey: string, scriptUrl: string): Promise<void>;
364
398
  getRPack(): RPack;
365
- getHostMessenger(): Messenger<H2WPackets, W2HPackets> | undefined;
399
+ getCoreMessenger(): Messenger<C2PPackets, P2CPackets> | undefined;
366
400
  getCurrentThreadId(): string;
367
401
  getPlugin<T extends RPPlugin>(key: string): Promise<RegistryDataFiltered<T> | undefined>;
368
402
  getPluginRegistry(): Registry<RPPlugin, string>;
369
- __initRemotes(threadId: string, messenger: Messenger<H2WPackets | W2HPackets, H2WPackets | W2HPackets>): void;
403
+ __initRemotes(threadId: string, messenger: Messenger<C2PPackets | P2CPackets, C2PPackets | P2CPackets>): void;
370
404
  __createThread(pluginKey: string, scriptUrl: string): Promise<string>;
371
405
  private ensureJSONInner;
372
406
  private ensureJSON;
@@ -405,7 +439,31 @@ export declare class RPPlugin {
405
439
  * @return the RPack instance
406
440
  */
407
441
  getRPack(): RPack;
442
+ /**
443
+ * This lifecycle method is called when this plugin is initialized in any environment.
444
+ * Note that this method runs before environment-specific methods.
445
+ * @see onInitHost
446
+ * @see onInitClient
447
+ */
408
448
  onInit(): Promise<void>;
449
+ /**
450
+ * This lifecycle method is called when this plugin is initialized in a client environment.
451
+ * Note that this method runs after the generic {@link onInit} finishes executing.
452
+ */
453
+ onInitClient(): Promise<void>;
454
+ /**
455
+ * This lifecycle method is called when this plugin is initialized in a host environment.
456
+ * Note that this method runs after the generic {@link onInit} finishes executing.
457
+ */
458
+ onInitHost(): Promise<void>;
459
+ /**
460
+ * This lifecycle method is called when this plugin is requested to shut down.
461
+ *
462
+ * By default, the plugin will only unload after this method
463
+ * finishes executing. However, if this method is taking too
464
+ * long to finish, the user can choose to terminate the plugin,
465
+ * which will cause the execution to immediately halt.
466
+ */
409
467
  onShutdown(): Promise<void>;
410
468
  /**
411
469
  * Internal method, do not use.
@@ -685,7 +743,6 @@ export declare class Utils {
685
743
  static getEnumConstants<E extends string | number>(enumClass: {
686
744
  [x: string]: E;
687
745
  }): E[];
688
- static presentOrDefault<T>(value: T | undefined, defaultValue: T): T;
689
746
  /**
690
747
  * Generates a random integer
691
748
  * between 0 (inclusive) and `to` (exclusive)
@@ -718,6 +775,7 @@ export declare class Utils {
718
775
  * @returns a random element
719
776
  */
720
777
  static pickRandomElement<T>(array: T[]): T;
778
+ static withDefaults<D extends object>(data: D, defaults: D): D;
721
779
  }
722
780
  export declare class ZipPluginArchive extends PluginArchive {
723
781
  private zip;
@@ -794,6 +852,20 @@ export declare namespace Registry {
794
852
  function withDefaultOptions(options?: Partial<RegistryOptions>): RegistryOptions;
795
853
  function withPublicDefaultOptions(options?: Partial<RegistryOptions>): PublicRegistryOptions;
796
854
  }
855
+ export interface C2HHelloRequestPacket extends NoncePacket {
856
+ id: "host:hello_request";
857
+ name: string;
858
+ secret: string;
859
+ }
860
+ export interface C2PHelloRequestPacket extends NoncePacket {
861
+ id: "thread:hello_request";
862
+ threadId: string;
863
+ pluginKey: string;
864
+ scriptUrl: string;
865
+ }
866
+ export interface C2PShutdownRequestPacket extends NoncePacket {
867
+ id: "thread:shutdown_request";
868
+ }
797
869
  export interface DevPluginSourceR2SHelloRPackPacket {
798
870
  id: "hello_request_rpack";
799
871
  rpackChannel: string;
@@ -841,14 +913,55 @@ export interface DevPluginSourceServerManifest {
841
913
  };
842
914
  websocketRefresh?: boolean;
843
915
  }
844
- export interface H2WHelloRequestPacket extends NoncePacket {
845
- id: "thread:hello_request";
846
- threadId: string;
847
- pluginKey: string;
848
- scriptUrl: string;
916
+ /**
917
+ * This class gives some information about the current environment the rPack.dev instance is running in.
918
+ */
919
+ export interface EnvironmentInfo {
920
+ /**
921
+ * Returns whether the current thread is a plugin thread.
922
+ */
923
+ isPluginThread(): boolean;
924
+ /**
925
+ * Returns whether this environment is a host.
926
+ */
927
+ isHost(): boolean;
928
+ /**
929
+ * Returns whether this environment is a client.
930
+ */
931
+ isClient(): boolean;
932
+ /**
933
+ * Returns the type of environment the current rPack.dev instance is.
934
+ */
935
+ getEnvironmentType(): EnvironmentType;
936
+ /**
937
+ * Returns the current Thread ID.
938
+ */
939
+ getThreadId(): string;
940
+ /**
941
+ * Returns the Messenger instance used to
942
+ * communicate with the current core thread.
943
+ *
944
+ * This only works on plugin threads, otherwise returns null.
945
+ */
946
+ getCoreMessenger(): Messenger<C2PPackets, P2CPackets> | null;
947
+ /**
948
+ * Returns the Messenger interface used to
949
+ * communicate with the current host.
950
+ *
951
+ * If there is no host connected (no project is open),
952
+ * this method will return null.
953
+ */
954
+ getHostMessenger(): Messenger<P2CPackets, C2PPackets> | null;
849
955
  }
850
- export interface H2WShutdownRequestPacket extends NoncePacket {
851
- id: "thread:shutdown_request";
956
+ export interface H2CHelloResponsePacket extends NoncePacket {
957
+ id: "host:hello_response";
958
+ accepted: boolean;
959
+ }
960
+ export interface MessageTarget<T = any> {
961
+ postMessage(message: any, options?: {
962
+ transfer?: T[];
963
+ }): void;
964
+ onmessage: ((event: MessageEvent<any>) => void) | null;
852
965
  }
853
966
  export interface MultiSetRegistry<Data, Key extends JSONLike = string> extends RegistryBase {
854
967
  append(key: Key, value: Data): Promise<string>;
@@ -869,6 +982,15 @@ export interface MultiSetRegistryEntry<Data, Key extends JSONLike> {
869
982
  export interface NoncePacket {
870
983
  nonce: string;
871
984
  }
985
+ export interface P2CHelloResponsePacket extends NoncePacket {
986
+ id: "thread:hello_response";
987
+ }
988
+ export interface P2CPluginLoadPacket extends NoncePacket {
989
+ id: "thread:plugin_load";
990
+ }
991
+ export interface P2CShutdownResponsePacket extends NoncePacket {
992
+ id: "thread:shutdown_response";
993
+ }
872
994
  export interface Packet {
873
995
  id: string;
874
996
  }
@@ -961,6 +1083,8 @@ export interface ProxyRefreshObjectResponsePacket extends NoncePacket {
961
1083
  value?: SerializedData;
962
1084
  error?: SerializedData;
963
1085
  }
1086
+ export interface RPackHost {
1087
+ }
964
1088
  export interface Registry<Data, Key extends JSONLike = string> extends RegistryBase {
965
1089
  get(key: Key): Promise<RegistryDataFiltered<Data> | undefined>;
966
1090
  getEntry(key: Key): Promise<RegistryEntry<Data, Key> | undefined>;
@@ -1154,19 +1278,17 @@ export interface TableOptions<N extends number> {
1154
1278
  padding?: string;
1155
1279
  textAlign?: "left" | "center" | "right";
1156
1280
  }
1157
- export interface W2HHelloResponsePacket extends NoncePacket {
1158
- id: "thread:hello_response";
1159
- }
1160
- export interface W2HPluginLoadPacket extends NoncePacket {
1161
- id: "thread:plugin_load";
1162
- }
1163
- export interface W2HShutdownResponsePacket extends NoncePacket {
1164
- id: "thread:shutdown_response";
1165
- }
1166
1281
  export type BatchResult<T> = {
1167
1282
  done: boolean;
1168
1283
  values: T[];
1169
1284
  };
1285
+ export type C2HPackets = {
1286
+ "host:hello_request": C2HHelloRequestPacket;
1287
+ } & ProxyPackets & RegistryPackets;
1288
+ export type C2PPackets = {
1289
+ "thread:hello_request": C2PHelloRequestPacket;
1290
+ "thread:shutdown_request": C2PShutdownRequestPacket;
1291
+ } & ProxyPackets & RegistryPackets;
1170
1292
  /**
1171
1293
  * A type alias representing a constructor signature for creating instances of type `T`.
1172
1294
  *
@@ -1187,6 +1309,7 @@ export type DeserializedFilter<T> = Pick<T, {
1187
1309
  [K in keyof T]: T[K] extends ((...args: infer P) => Promise<Serializable | void>) ? P extends [
1188
1310
  ] ? K : P[number] extends Serializable ? K : never : never;
1189
1311
  }[keyof T]>;
1312
+ export type EnvironmentType = "host" | "client";
1190
1313
  export type ErrorType = Error | EvalError | RangeError | ReferenceError | SyntaxError | TypeError | URIError;
1191
1314
  export type FixedLengthArray<T, L extends number, TObj = [
1192
1315
  T,
@@ -1196,14 +1319,13 @@ export type FixedLengthArray<T, L extends number, TObj = [
1196
1319
  [I: number]: T;
1197
1320
  [Symbol.iterator]: () => IterableIterator<T>;
1198
1321
  };
1199
- export type H2WPackets = {
1200
- "thread:hello_request": H2WHelloRequestPacket;
1201
- "thread:shutdown_request": H2WShutdownRequestPacket;
1322
+ export type H2CPackets = {
1323
+ "host:hello_response": H2CHelloResponsePacket;
1202
1324
  } & ProxyPackets & RegistryPackets;
1203
1325
  export type JSONLike = string | number | boolean | null | {
1204
1326
  [key: string]: JSONLike;
1205
1327
  } | JSONLike[];
1206
- export type KnownModules = "@rpack-dev/core" | "@rpack-dev/platform-browser";
1328
+ export type KnownModules = "@rpack-dev/core" | "@rpack-dev/platform-browser/bridge" | "@rpack-dev/platform-browser/worker";
1207
1329
  export type MappedDeserializedData<T> = T extends SerializedUndefined ? undefined : T extends SerializedJSON ? JSONLike : T extends SerializedRegistry ? Registry<any, any> : T extends SerializedError ? ErrorType : T extends SerializedObject ? SerializableObject : T extends SerializedRegistryEntry ? RegistryObject<any> : T extends SerializedFunction ? SerializableFunction : T extends {
1208
1330
  "type": "well_known";
1209
1331
  "kind": "RPack";
@@ -1236,6 +1358,11 @@ export type OnlyNoncePacketTypes<Packets extends PacketsType<Packets>> = {
1236
1358
  export type OnlyNoncePackets<Packets extends PacketsType<Packets>> = {
1237
1359
  [Key in OnlyNoncePacketTypes<Packets>]: Packets[Key] & NoncePacket;
1238
1360
  };
1361
+ export type P2CPackets = {
1362
+ "thread:hello_response": P2CHelloResponsePacket;
1363
+ "thread:plugin_load": P2CPluginLoadPacket;
1364
+ "thread:shutdown_response": P2CShutdownResponsePacket;
1365
+ } & ProxyPackets & RegistryPackets;
1239
1366
  export type PacketHandler<T> = (packet: T) => unknown | false;
1240
1367
  export type PacketHandlers<T> = {
1241
1368
  [Key in keyof T]?: (T[Key] extends void ? () => (void | false) : PacketHandler<T[Key]>)[];
@@ -1250,11 +1377,10 @@ export type PromisesOnly<T> = {
1250
1377
  export type ProxyCleanupTarget = "object" | "iterator" | "array" | "function";
1251
1378
  export type PublicRegistryOptions = typeof DefaultPublicRegistryOptions;
1252
1379
  export type RPackConstructorOptions = {
1253
- pluginThread: boolean;
1254
1380
  loadPromise: Promise<void>;
1381
+ environment: EnvironmentInfo;
1255
1382
  platform: RPPlatform;
1256
- threadId: string;
1257
- hostMessenger?: Messenger<H2WPackets, W2HPackets>;
1383
+ hostMessenger?: Messenger<C2PPackets, P2CPackets>;
1258
1384
  version: RPVersion;
1259
1385
  };
1260
1386
  export type RegistryDataFiltered<Data> = Data extends Serializable ? Data : {
@@ -1272,11 +1398,6 @@ export type Serializable = undefined | JSONLike | RegistryType | ErrorType | Wel
1272
1398
  export type SerializableFunction = (...args: Serializable[]) => Promise<Serializable>;
1273
1399
  export type SerializableObject = Record<string, SerializableFunction>;
1274
1400
  export type SerializedData = SerializedUndefined | SerializedJSON | SerializedRegistry | SerializedError | SerializedObject | SerializedFunction | SerializedWellKnown;
1275
- export type W2HPackets = {
1276
- "thread:hello_response": W2HHelloResponsePacket;
1277
- "thread:plugin_load": W2HPluginLoadPacket;
1278
- "thread:shutdown_response": W2HShutdownResponsePacket;
1279
- } & ProxyPackets & RegistryPackets;
1280
1401
  export type WellKnownType = RPack | NetworkManager | ProxyManager | RegistryManager;
1281
1402
 
1282
1403
  export {
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@rpack-dev/core",
3
- "version": "0.1.19",
3
+ "version": "0.1.20-cc8be57",
4
4
  "description": "",
5
5
  "license": "LGPL-3.0-or-later",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/rpack-dev/rpack-dev.git"
9
9
  },
10
+ "sideEffects": false,
10
11
  "scripts": {
11
12
  "test": "tsx node_modules/jasmine/bin/jasmine --config=jasmine.json",
12
13
  "prebuild:barrel": "ctix build",