@holochain/client 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +9 -9
  2. package/lib/api/admin/index.d.ts +2 -0
  3. package/lib/api/admin/index.js +3 -0
  4. package/lib/api/admin/index.js.map +1 -0
  5. package/{lib.es/api/admin.d.ts → lib/api/admin/types.d.ts} +71 -4
  6. package/{lib.es/api/admin.js → lib/api/admin/types.js} +1 -1
  7. package/lib/api/admin/types.js.map +1 -0
  8. package/lib/{websocket/admin.d.ts → api/admin/websocket.d.ts} +3 -3
  9. package/lib/api/admin/websocket.js +107 -0
  10. package/lib/api/admin/websocket.js.map +1 -0
  11. package/lib/api/app/index.d.ts +2 -0
  12. package/lib/api/app/index.js +3 -0
  13. package/lib/api/app/index.js.map +1 -0
  14. package/lib/api/{app.d.ts → app/types.d.ts} +4 -4
  15. package/lib/api/app/types.js +2 -0
  16. package/lib/api/app/types.js.map +1 -0
  17. package/{lib.es/websocket/app.d.ts → lib/api/app/websocket.d.ts} +6 -5
  18. package/{lib.es/websocket/app.js → lib/api/app/websocket.js} +14 -11
  19. package/lib/api/app/websocket.js.map +1 -0
  20. package/lib/{websocket → api}/client.d.ts +2 -2
  21. package/{lib.es/websocket → lib/api}/client.js +12 -8
  22. package/lib/api/client.js.map +1 -0
  23. package/lib/api/common.d.ts +9 -6
  24. package/lib/api/common.js +26 -6
  25. package/lib/api/common.js.map +1 -1
  26. package/lib/api/index.d.ts +2 -0
  27. package/lib/api/index.js +3 -0
  28. package/lib/api/index.js.map +1 -0
  29. package/lib/bundle.d.ts +6 -0
  30. package/lib/bundle.js +32 -0
  31. package/lib/bundle.js.map +1 -0
  32. package/lib/environments/launcher.d.ts +1 -1
  33. package/lib/environments/launcher.js +7 -12
  34. package/lib/environments/launcher.js.map +1 -1
  35. package/{lib.es/types → lib/hdk}/capabilities.d.ts +1 -1
  36. package/{lib.es/types → lib/hdk}/capabilities.js +0 -0
  37. package/{lib.es/types → lib/hdk}/capabilities.js.map +1 -1
  38. package/lib/{types → hdk}/dht-ops.d.ts +3 -3
  39. package/{lib.es/types → lib/hdk}/dht-ops.js +0 -0
  40. package/lib/hdk/dht-ops.js.map +1 -0
  41. package/lib/{types → hdk}/entry.d.ts +2 -2
  42. package/{lib.es/types → lib/hdk}/entry.js +0 -0
  43. package/{lib.es/types → lib/hdk}/entry.js.map +1 -1
  44. package/{lib.es/types → lib/hdk}/header.d.ts +2 -3
  45. package/{lib.es/types → lib/hdk}/header.js +0 -0
  46. package/lib/hdk/header.js.map +1 -0
  47. package/lib/hdk/index.d.ts +4 -0
  48. package/lib/hdk/index.js +5 -0
  49. package/lib/hdk/index.js.map +1 -0
  50. package/lib/index.d.ts +4 -6
  51. package/lib/index.js +4 -18
  52. package/lib/index.js.map +1 -1
  53. package/{lib.es/types/common.d.ts → lib/types.d.ts} +0 -0
  54. package/lib/types.js +2 -0
  55. package/lib/types.js.map +1 -0
  56. package/package.json +29 -24
  57. package/lib/api/admin.d.ts +0 -224
  58. package/lib/api/admin.js +0 -12
  59. package/lib/api/admin.js.map +0 -1
  60. package/lib/api/app.js +0 -3
  61. package/lib/api/app.js.map +0 -1
  62. package/lib/api/state-dump.d.ts +0 -36
  63. package/lib/api/state-dump.js +0 -3
  64. package/lib/api/state-dump.js.map +0 -1
  65. package/lib/api/types.d.ts +0 -39
  66. package/lib/api/types.js +0 -8
  67. package/lib/api/types.js.map +0 -1
  68. package/lib/types/capabilities.d.ts +0 -30
  69. package/lib/types/capabilities.js +0 -3
  70. package/lib/types/capabilities.js.map +0 -1
  71. package/lib/types/common.d.ts +0 -22
  72. package/lib/types/common.js +0 -3
  73. package/lib/types/common.js.map +0 -1
  74. package/lib/types/dht-ops.js +0 -42
  75. package/lib/types/dht-ops.js.map +0 -1
  76. package/lib/types/entry.js +0 -3
  77. package/lib/types/entry.js.map +0 -1
  78. package/lib/types/header.d.ts +0 -108
  79. package/lib/types/header.js +0 -17
  80. package/lib/types/header.js.map +0 -1
  81. package/lib/types/index.d.ts +0 -5
  82. package/lib/types/index.js +0 -18
  83. package/lib/types/index.js.map +0 -1
  84. package/lib/websocket/admin.js +0 -127
  85. package/lib/websocket/admin.js.map +0 -1
  86. package/lib/websocket/app.d.ts +0 -13
  87. package/lib/websocket/app.js +0 -70
  88. package/lib/websocket/app.js.map +0 -1
  89. package/lib/websocket/client.js +0 -129
  90. package/lib/websocket/client.js.map +0 -1
  91. package/lib/websocket/common.d.ts +0 -3
  92. package/lib/websocket/common.js +0 -34
  93. package/lib/websocket/common.js.map +0 -1
  94. package/lib.es/api/admin.js.map +0 -1
  95. package/lib.es/api/app.d.ts +0 -32
  96. package/lib.es/api/app.js +0 -2
  97. package/lib.es/api/app.js.map +0 -1
  98. package/lib.es/api/common.d.ts +0 -16
  99. package/lib.es/api/common.js +0 -17
  100. package/lib.es/api/common.js.map +0 -1
  101. package/lib.es/api/state-dump.d.ts +0 -36
  102. package/lib.es/api/state-dump.js +0 -2
  103. package/lib.es/api/state-dump.js.map +0 -1
  104. package/lib.es/api/types.d.ts +0 -39
  105. package/lib.es/api/types.js +0 -4
  106. package/lib.es/api/types.js.map +0 -1
  107. package/lib.es/environments/launcher.d.ts +0 -8
  108. package/lib.es/environments/launcher.js +0 -35
  109. package/lib.es/environments/launcher.js.map +0 -1
  110. package/lib.es/index.d.ts +0 -6
  111. package/lib.es/index.js +0 -7
  112. package/lib.es/index.js.map +0 -1
  113. package/lib.es/types/common.js +0 -2
  114. package/lib.es/types/common.js.map +0 -1
  115. package/lib.es/types/dht-ops.d.ts +0 -45
  116. package/lib.es/types/dht-ops.js.map +0 -1
  117. package/lib.es/types/entry.d.ts +0 -16
  118. package/lib.es/types/header.js.map +0 -1
  119. package/lib.es/types/index.d.ts +0 -5
  120. package/lib.es/types/index.js +0 -6
  121. package/lib.es/types/index.js.map +0 -1
  122. package/lib.es/websocket/admin.d.ts +0 -47
  123. package/lib.es/websocket/admin.js +0 -104
  124. package/lib.es/websocket/admin.js.map +0 -1
  125. package/lib.es/websocket/app.js.map +0 -1
  126. package/lib.es/websocket/client.d.ts +0 -25
  127. package/lib.es/websocket/client.js.map +0 -1
  128. package/lib.es/websocket/common.d.ts +0 -3
  129. package/lib.es/websocket/common.js +0 -29
  130. package/lib.es/websocket/common.js.map +0 -1
package/README.md CHANGED
@@ -1,13 +1,12 @@
1
- # Holochain Client - JavaScript
2
-
3
1
  [![Project](https://img.shields.io/badge/Project-Holochain-blue.svg?style=flat-square)](http://holochain.org/)
4
2
  [![Forum](https://img.shields.io/badge/Forum-forum%2eholochain%2enet-blue.svg?style=flat-square)](https://forum.holochain.org)
5
3
  [![License: CAL 1.0](https://img.shields.io/badge/License-CAL%201.0-blue.svg)](https://github.com/holochain/cryptographic-autonomy-license)
6
4
  ![Test](https://github.com/holochain/holochain-client-js/actions/workflows/test.yml/badge.svg?branch=main)
7
-
8
5
  [![Twitter Follow](https://img.shields.io/twitter/follow/holochain.svg?style=social&label=Follow)](https://twitter.com/holochain)
9
6
 
10
- A JavaScript client for the Holochain Conductor API (works with browsers as well as Nodejs)
7
+ # Holochain Client - JavaScript
8
+
9
+ A JavaScript client for the Holochain Conductor API (works with browsers as well as Nodejs).
11
10
 
12
11
  > Holochain's Conductor API is under active development. This client package tracks that development fairly closely but sometimes gets behind.
13
12
 
@@ -57,11 +56,10 @@ See [docs/API.md](docs/API.md)
57
56
 
58
57
  # Holochain Compatibility
59
58
 
60
- This version of `@holochain/client` is currently working with
61
- - `holochain/holochain` at tag [holochain-0.0.122](https://github.com/holochain/holochain/tree/holochain-0.0.122)
62
- - hdk version [0.0.118 from crates.io](https://crates.io/crates/hdk/0.0.118)
59
+ See [default.nix](./default.nix) for the Holochain version this package is compatible with.
63
60
 
64
- If updating this code, please make changes to the git `rev/sha` above. (You can get this from `hn-introspect` after updating the holonix-hash)
61
+ If updating the Holochain version included in holonix, please use `niv update` as explained in the
62
+ [Holochain Installation Guide](https://developer.holochain.org/install/#upgrading-the-holochain-version).
65
63
 
66
64
  ## Running tests
67
65
 
@@ -76,14 +74,16 @@ nix-shell
76
74
  ```
77
75
 
78
76
  ## Contribute
77
+
79
78
  Holochain is an open source project. We welcome all sorts of participation and are actively working on increasing surface area to accept it. Please see our [contribution guidelines](/CONTRIBUTING.md) for our general practices and protocols on participating in the community, as well as specific expectations around things like code formatting, testing practices, continuous integration, etc.
80
79
 
81
80
  * Connect with us on our [forum](https://forum.holochain.org)
82
81
 
83
82
  ## License
83
+
84
84
  [![License: CAL 1.0](https://img.shields.io/badge/License-CAL%201.0-blue.svg)](https://github.com/holochain/cryptographic-autonomy-license)
85
85
 
86
- Copyright (C) 2020-2021, Holochain Foundation
86
+ Copyright (C) 2020-2022, Holochain Foundation
87
87
 
88
88
  This program is free software: you can redistribute it and/or modify it under the terms of the license
89
89
  provided in the LICENSE file (CAL-1.0). This program is distributed in the hope that it will be useful,
@@ -0,0 +1,2 @@
1
+ export * from "./types.js";
2
+ export * from "./websocket.js";
@@ -0,0 +1,3 @@
1
+ export * from "./types.js";
2
+ export * from "./websocket.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/admin/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  /// <reference types="node" />
2
- import { Requester } from "./common";
3
- import { HoloHash, AgentPubKey, DnaProperties, InstalledAppId, CellId, RoleId } from "../types/common";
4
- import { InstalledAppInfo, MembraneProof } from "./types";
5
- import { FullStateDump } from "./state-dump";
2
+ import { AgentPubKey, CellId, DnaHash, DnaProperties, HeaderHash, HoloHash, InstalledAppId, InstalledCell, KitsuneAgent, KitsuneSpace, RoleId, Signature } from "../../types.js";
3
+ import { DhtOp, Entry, Header } from "../../hdk/index.js";
4
+ import { Requester } from "../common.js";
6
5
  export declare type AttachAppInterfaceRequest = {
7
6
  port: number;
8
7
  };
@@ -22,6 +21,42 @@ export declare type EnableAppResponse = {
22
21
  app: InstalledAppInfo;
23
22
  errors: Array<[CellId, string]>;
24
23
  };
24
+ export declare type DeactivationReason = {
25
+ never_activated: null;
26
+ } | {
27
+ normal: null;
28
+ } | {
29
+ quarantined: {
30
+ error: string;
31
+ };
32
+ };
33
+ export declare type PausedAppReason = {
34
+ error: string;
35
+ };
36
+ export declare type DisabledAppReason = {
37
+ never_started: null;
38
+ } | {
39
+ user: null;
40
+ } | {
41
+ error: string;
42
+ };
43
+ export declare type InstalledAppInfoStatus = {
44
+ paused: {
45
+ reason: PausedAppReason;
46
+ };
47
+ } | {
48
+ disabled: {
49
+ reason: DisabledAppReason;
50
+ };
51
+ } | {
52
+ running: null;
53
+ };
54
+ export declare type InstalledAppInfo = {
55
+ installed_app_id: InstalledAppId;
56
+ cell_data: Array<InstalledCell>;
57
+ status: InstalledAppInfoStatus;
58
+ };
59
+ export declare type MembraneProof = Buffer;
25
60
  export declare type DisableAppRequest = {
26
61
  installed_app_id: InstalledAppId;
27
62
  };
@@ -222,3 +257,35 @@ export declare type Zomes = Array<[string, {
222
257
  export declare type WasmCode = [HoloHash, {
223
258
  code: Array<number>;
224
259
  }];
260
+ export interface AgentInfoDump {
261
+ kitsune_agent: KitsuneAgent;
262
+ kitsune_space: KitsuneSpace;
263
+ dump: string;
264
+ }
265
+ export interface P2pAgentsDump {
266
+ this_agent_info: AgentInfoDump | undefined;
267
+ this_dna: [DnaHash, KitsuneSpace] | undefined;
268
+ this_agent: [AgentPubKey, KitsuneAgent] | undefined;
269
+ peers: Array<AgentInfoDump>;
270
+ }
271
+ export interface FullIntegrationStateDump {
272
+ validation_limbo: Array<DhtOp>;
273
+ integration_limbo: Array<DhtOp>;
274
+ integrated: Array<DhtOp>;
275
+ dht_ops_cursor: number;
276
+ }
277
+ export interface SourceChainJsonElement {
278
+ signature: Signature;
279
+ header_address: HeaderHash;
280
+ header: Header;
281
+ entry: Entry | undefined;
282
+ }
283
+ export interface SourceChainJsonDump {
284
+ elements: Array<SourceChainJsonElement>;
285
+ published_ops_count: number;
286
+ }
287
+ export interface FullStateDump {
288
+ peer_dump: P2pAgentsDump;
289
+ source_chain_dump: SourceChainJsonDump;
290
+ integration_dump: FullIntegrationStateDump;
291
+ }
@@ -6,4 +6,4 @@ export var AppStatusFilter;
6
6
  AppStatusFilter["Stopped"] = "stopped";
7
7
  AppStatusFilter["Paused"] = "paused";
8
8
  })(AppStatusFilter || (AppStatusFilter = {}));
9
- //# sourceMappingURL=admin.js.map
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/admin/types.ts"],"names":[],"mappings":"AAgOA,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,wCAAqB,CAAA;IACrB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;AACnB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B"}
@@ -14,9 +14,9 @@
14
14
  * console.error('problem generating agent:', err)
15
15
  * })
16
16
  */
17
- import * as Api from '../api/admin';
18
- import { WsClient } from './client';
19
- import { Transformer, Requester } from '../api/common';
17
+ import * as Api from "./types.js";
18
+ import { WsClient } from "../client.js";
19
+ import { Transformer, Requester } from "../common.js";
20
20
  export declare class AdminWebsocket implements Api.AdminApi {
21
21
  client: WsClient;
22
22
  defaultTimeout: number;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Defines AdminWebsocket, an easy-to-use websocket implementation of the
3
+ * Conductor Admin API
4
+ *
5
+ * const client = AdminWebsocket.connect(
6
+ * 'ws://localhost:9000'
7
+ * )
8
+ *
9
+ * client.generateAgentPubKey()
10
+ * .then(agentPubKey => {
11
+ * console.log('Agent successfully generated:', agentPubKey)
12
+ * })
13
+ * .catch(err => {
14
+ * console.error('problem generating agent:', err)
15
+ * })
16
+ */
17
+ import * as Api from "./types.js";
18
+ import { WsClient } from "../client.js";
19
+ import { catchError, promiseTimeout, DEFAULT_TIMEOUT } from "../common.js";
20
+ import { requesterTransformer } from "../common.js";
21
+ import { getLauncherEnvironment } from "../../environments/launcher.js";
22
+ export class AdminWebsocket {
23
+ client;
24
+ defaultTimeout;
25
+ constructor(client, defaultTimeout) {
26
+ this.client = client;
27
+ this.defaultTimeout =
28
+ defaultTimeout === undefined ? DEFAULT_TIMEOUT : defaultTimeout;
29
+ }
30
+ static async connect(url, defaultTimeout) {
31
+ // Check if we are in the launcher's environment, and if so, redirect the url to connect to
32
+ const env = await getLauncherEnvironment();
33
+ if (env) {
34
+ url = `ws://localhost:${env.ADMIN_INTERFACE_PORT}`;
35
+ }
36
+ const wsClient = await WsClient.connect(url);
37
+ return new AdminWebsocket(wsClient, defaultTimeout);
38
+ }
39
+ _requester = (tag, transformer) => requesterTransformer((req, timeout) => promiseTimeout(this.client.request(req), tag, timeout || this.defaultTimeout).then(catchError), tag, transformer);
40
+ // the specific request/response types come from the Interface
41
+ // which this class implements
42
+ attachAppInterface = this._requester("attach_app_interface");
43
+ // Deprecated
44
+ activateApp = this._requester("activate_app");
45
+ // Deprecated
46
+ deactivateApp = this._requester("deactivate_app");
47
+ enableApp = this._requester("enable_app");
48
+ disableApp = this._requester("disable_app");
49
+ startApp = this._requester("start_app");
50
+ dumpState = this._requester("dump_state", dumpStateTransform);
51
+ dumpFullState = this._requester("dump_full_state");
52
+ generateAgentPubKey = this._requester("generate_agent_pub_key");
53
+ registerDna = this._requester("register_dna");
54
+ installApp = this._requester("install_app");
55
+ uninstallApp = this._requester("uninstall_app");
56
+ installAppBundle = this._requester("install_app_bundle");
57
+ createCloneCell = this._requester("create_clone_cell");
58
+ listDnas = this._requester("list_dnas");
59
+ listCellIds = this._requester("list_cell_ids");
60
+ // Deprecated
61
+ listActiveApps = this._requester("list_active_apps");
62
+ listApps = this._requester("list_apps", listAppsTransform);
63
+ listAppInterfaces = this._requester("list_app_interfaces");
64
+ requestAgentInfo = this._requester("request_agent_info");
65
+ addAgentInfo = this._requester("add_agent_info");
66
+ }
67
+ const listAppsTransform = {
68
+ input: (req) => {
69
+ const args = {};
70
+ if (req.status_filter) {
71
+ args.status_filter = getAppStatusInApiForm(req.status_filter);
72
+ }
73
+ return args;
74
+ },
75
+ output: (res) => res,
76
+ };
77
+ const dumpStateTransform = {
78
+ input: (req) => req,
79
+ output: (res) => {
80
+ return JSON.parse(res);
81
+ },
82
+ };
83
+ function getAppStatusInApiForm(status_filter) {
84
+ switch (status_filter) {
85
+ case Api.AppStatusFilter.Running:
86
+ return {
87
+ Running: null,
88
+ };
89
+ case Api.AppStatusFilter.Enabled:
90
+ return {
91
+ Enabled: null,
92
+ };
93
+ case Api.AppStatusFilter.Paused:
94
+ return {
95
+ Paused: null,
96
+ };
97
+ case Api.AppStatusFilter.Disabled:
98
+ return {
99
+ Disabled: null,
100
+ };
101
+ case Api.AppStatusFilter.Stopped:
102
+ return {
103
+ Stopped: null,
104
+ };
105
+ }
106
+ }
107
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/admin/websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./types.js";
2
+ export * from "./websocket.js";
@@ -0,0 +1,3 @@
1
+ export * from "./types.js";
2
+ export * from "./websocket.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1,7 +1,7 @@
1
- import { Requester } from "./common";
2
- import { CellId, AgentPubKey, InstalledAppId } from "../types/common";
3
- import { InstalledAppInfo } from "./types";
4
- import { CapSecret } from "../types/capabilities";
1
+ import { CapSecret } from "../../hdk/capabilities.js";
2
+ import { AgentPubKey, CellId, InstalledAppId } from "../../types.js";
3
+ import { Requester } from "../common.js";
4
+ import { InstalledAppInfo } from "../admin/index.js";
5
5
  export declare type CallZomeRequestGeneric<Payload> = {
6
6
  cap_secret: CapSecret | null;
7
7
  cell_id: CellId;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/app/types.ts"],"names":[],"mappings":""}
@@ -1,11 +1,12 @@
1
- import { AppApi, AppInfoRequest, AppInfoResponse, CallZomeRequestGeneric, CallZomeResponseGeneric, AppSignalCb } from '../api/app';
2
- import { WsClient } from './client';
3
- import { Transformer, Requester } from '../api/common';
1
+ import { InstalledAppId } from "../../types.js";
2
+ import { WsClient } from "../client.js";
3
+ import { Requester, Transformer } from "../common.js";
4
+ import { AppApi, AppInfoRequest, AppInfoResponse, AppSignalCb, CallZomeRequestGeneric, CallZomeResponseGeneric } from "./types.js";
4
5
  export declare class AppWebsocket implements AppApi {
5
- protected overrideInstalledAppId?: string | undefined;
6
6
  client: WsClient;
7
7
  defaultTimeout: number;
8
- constructor(client: WsClient, defaultTimeout?: number, overrideInstalledAppId?: string | undefined);
8
+ protected overrideInstalledAppId?: InstalledAppId;
9
+ constructor(client: WsClient, defaultTimeout?: number, overrideInstalledAppId?: InstalledAppId);
9
10
  static connect(url: string, defaultTimeout?: number, signalCb?: AppSignalCb): Promise<AppWebsocket>;
10
11
  _requester: <ReqO, ReqI, ResI, ResO>(tag: string, transformer?: Transformer<ReqO, ReqI, ResI, ResO> | undefined) => (req: ReqO, timeout?: number | undefined) => Promise<ResO>;
11
12
  appInfo: Requester<AppInfoRequest, AppInfoResponse>;
@@ -15,19 +15,19 @@
15
15
  * console.error('problem installing DNA:', err)
16
16
  * })
17
17
  */
18
- import { encode, decode } from '@msgpack/msgpack';
19
- import { WsClient } from './client';
20
- import { catchError, promiseTimeout, DEFAULT_TIMEOUT } from './common';
21
- import { requesterTransformer } from '../api/common';
22
- import { getLauncherEnvironment } from '../environments/launcher';
18
+ import { decode, encode } from "@msgpack/msgpack";
19
+ import { getLauncherEnvironment } from "../../environments/launcher.js";
20
+ import { WsClient } from "../client.js";
21
+ import { catchError, DEFAULT_TIMEOUT, promiseTimeout, requesterTransformer, } from "../common.js";
23
22
  export class AppWebsocket {
23
+ client;
24
+ defaultTimeout;
25
+ overrideInstalledAppId;
24
26
  constructor(client, defaultTimeout, overrideInstalledAppId) {
25
- this.overrideInstalledAppId = overrideInstalledAppId;
26
- this._requester = (tag, transformer) => requesterTransformer((req, timeout) => promiseTimeout(this.client.request(req), tag, timeout || this.defaultTimeout).then(catchError), tag, transformer);
27
- this.appInfo = this._requester('app_info', appInfoTransform(this.overrideInstalledAppId));
28
- this.callZome = this._requester('zome_call', callZomeTransform);
29
27
  this.client = client;
30
- this.defaultTimeout = defaultTimeout === undefined ? DEFAULT_TIMEOUT : defaultTimeout;
28
+ this.defaultTimeout =
29
+ defaultTimeout === undefined ? DEFAULT_TIMEOUT : defaultTimeout;
30
+ this.overrideInstalledAppId = overrideInstalledAppId;
31
31
  }
32
32
  static async connect(url, defaultTimeout, signalCb) {
33
33
  // Check if we are in the launcher's environment, and if so, redirect the url to connect to
@@ -38,6 +38,9 @@ export class AppWebsocket {
38
38
  const wsClient = await WsClient.connect(url, signalCb);
39
39
  return new AppWebsocket(wsClient, defaultTimeout, env ? env.INSTALLED_APP_ID : undefined);
40
40
  }
41
+ _requester = (tag, transformer) => requesterTransformer((req, timeout) => promiseTimeout(this.client.request(req), tag, timeout || this.defaultTimeout).then(catchError), tag, transformer);
42
+ appInfo = this._requester("app_info", appInfoTransform(this.overrideInstalledAppId));
43
+ callZome = this._requester("zome_call", callZomeTransform);
41
44
  }
42
45
  const callZomeTransform = {
43
46
  input: (req) => {
@@ -63,4 +66,4 @@ const appInfoTransform = (overrideInstalledAppId) => ({
63
66
  return res;
64
67
  },
65
68
  });
66
- //# sourceMappingURL=app.js.map
69
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/app/websocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EAEd,oBAAoB,GAErB,MAAM,cAAc,CAAC;AAUtB,MAAM,OAAO,YAAY;IACvB,MAAM,CAAW;IACjB,cAAc,CAAS;IACb,sBAAsB,CAAkB;IAElD,YACE,MAAgB,EAChB,cAAuB,EACvB,sBAAuC;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc;YACjB,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;QAClE,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,GAAW,EACX,cAAuB,EACvB,QAAsB;QAEtB,2FAA2F;QAC3F,MAAM,GAAG,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAE3C,IAAI,GAAG,EAAE;YACP,GAAG,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,EAAE,CAAC;SAClD;QAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO,IAAI,YAAY,CACrB,QAAQ,EACR,cAAc,EACd,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CACvC,CAAC;IACJ,CAAC;IAED,UAAU,GAAG,CACX,GAAW,EACX,WAAiD,EACjD,EAAE,CACF,oBAAoB,CAClB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACf,cAAc,CACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EACxB,GAAG,EACH,OAAO,IAAI,IAAI,CAAC,cAAc,CAC/B,CAAC,IAAI,CAAC,UAAU,CAAC,EACpB,GAAG,EACH,WAAW,CACZ,CAAC;IAEJ,OAAO,GAA+C,IAAI,CAAC,UAAU,CACnE,UAAU,EACV,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAC9C,CAAC;IACF,QAAQ,GAGJ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;CACrD;AAED,MAAM,iBAAiB,GAKnB;IACF,KAAK,EAAE,CACL,GAAgC,EACI,EAAE;QACtC,OAAO;YACL,GAAG,GAAG;YACN,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;SAC7B,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,CACN,GAAwC,EACV,EAAE;QAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,sBAAuC,EAMvC,EAAE,CAAC,CAAC;IACJ,KAAK,EAAE,CAAC,GAAmB,EAAkB,EAAE;QAC7C,IAAI,sBAAsB,EAAE;YAC1B,OAAO;gBACL,gBAAgB,EAAE,sBAAsB;aACzC,CAAC;SACH;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,EAAE,CAAC,GAAoB,EAAmB,EAAE;QAChD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- import Websocket from "isomorphic-ws";
2
1
  import { decode } from "@msgpack/msgpack";
3
- import { AppSignalCb } from "../api/app";
2
+ import Websocket from "isomorphic-ws";
3
+ import { AppSignalCb } from "./app/types.js";
4
4
  /**
5
5
  * A Websocket client which can make requests and receive responses,
6
6
  * as well as send and receive signals
@@ -1,5 +1,5 @@
1
+ import { decode, encode } from "@msgpack/msgpack";
1
2
  import Websocket from "isomorphic-ws";
2
- import { encode, decode } from "@msgpack/msgpack";
3
3
  /**
4
4
  * A Websocket client which can make requests and receive responses,
5
5
  * as well as send and receive signals
@@ -7,6 +7,10 @@ import { encode, decode } from "@msgpack/msgpack";
7
7
  * Uses Holochain's websocket WireMessage for communication.
8
8
  */
9
9
  export class WsClient {
10
+ socket;
11
+ pendingRequests;
12
+ index;
13
+ alreadyWarnedNoSignalCb;
10
14
  constructor(socket, signalCb) {
11
15
  this.socket = socket;
12
16
  this.pendingRequests = {};
@@ -41,11 +45,11 @@ export class WsClient {
41
45
  }
42
46
  else {
43
47
  if (!this.alreadyWarnedNoSignalCb)
44
- console.log('Received signal but no signal callback was set in constructor');
48
+ console.log("Received signal but no signal callback was set in constructor");
45
49
  this.alreadyWarnedNoSignalCb = true;
46
50
  }
47
51
  }
48
- else if (msg.type === 'Response') {
52
+ else if (msg.type === "Response") {
49
53
  this.handleResponse(msg);
50
54
  }
51
55
  else {
@@ -55,7 +59,7 @@ export class WsClient {
55
59
  }
56
60
  emitSignal(data) {
57
61
  const encodedMsg = encode({
58
- type: 'Signal',
62
+ type: "Signal",
59
63
  data: encode(data),
60
64
  });
61
65
  this.socket.send(encodedMsg);
@@ -65,7 +69,7 @@ export class WsClient {
65
69
  this.index += 1;
66
70
  const encodedMsg = encode({
67
71
  id,
68
- type: 'Request',
72
+ type: "Request",
69
73
  data: encode(data),
70
74
  });
71
75
  const promise = new Promise((fulfill, reject) => {
@@ -75,7 +79,7 @@ export class WsClient {
75
79
  this.socket.send(encodedMsg);
76
80
  }
77
81
  else {
78
- return Promise.reject(new Error('Socket is not open'));
82
+ return Promise.reject(new Error("Socket is not open"));
79
83
  }
80
84
  return promise;
81
85
  }
@@ -84,7 +88,7 @@ export class WsClient {
84
88
  if (this.pendingRequests[id]) {
85
89
  // resolve response
86
90
  if (msg.data === null || msg.data === undefined) {
87
- this.pendingRequests[id].reject(new Error('Response canceled by responder'));
91
+ this.pendingRequests[id].reject(new Error("Response canceled by responder"));
88
92
  }
89
93
  else {
90
94
  this.pendingRequests[id].fulfill(decode(msg.data));
@@ -99,7 +103,7 @@ export class WsClient {
99
103
  return this.awaitClose();
100
104
  }
101
105
  awaitClose() {
102
- return new Promise((resolve) => this.socket.on('close', resolve));
106
+ return new Promise((resolve) => this.socket.on("close", resolve));
103
107
  }
104
108
  static connect(url, signalCb) {
105
109
  return new Promise((resolve, reject) => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,4 @@
1
- /**
2
- * Take a Requester function which deals with tagged requests and responses,
3
- * and return a Requester which deals only with the inner data types, also
4
- * with the optional Transformer applied to further modify the input and output.
5
- */
6
- export declare const requesterTransformer: <ReqO, ReqI, ResI, ResO>(requester: Requester<Tagged<ReqI>, Tagged<ResI>>, tag: string, transform?: Transformer<ReqO, ReqI, ResI, ResO>) => (req: ReqO, timeout?: number | undefined) => Promise<ResO>;
1
+ export declare const DEFAULT_TIMEOUT = 15000;
7
2
  export declare type Transformer<ReqO, ReqI, ResI, ResO> = {
8
3
  input: (req: ReqO) => ReqI;
9
4
  output: (res: ResI) => ResO;
@@ -14,3 +9,11 @@ export declare type Tagged<T> = {
14
9
  type: string;
15
10
  data: T;
16
11
  };
12
+ /**
13
+ * Take a Requester function which deals with tagged requests and responses,
14
+ * and return a Requester which deals only with the inner data types, also
15
+ * with the optional Transformer applied to further modify the input and output.
16
+ */
17
+ export declare const requesterTransformer: <ReqO, ReqI, ResI, ResO>(requester: Requester<Tagged<ReqI>, Tagged<ResI>>, tag: string, transform?: Transformer<ReqO, ReqI, ResI, ResO>) => (req: ReqO, timeout?: number) => Promise<ResO>;
18
+ export declare const catchError: (res: any) => Promise<any>;
19
+ export declare const promiseTimeout: (promise: Promise<any>, tag: string, ms: number) => Promise<unknown>;
package/lib/api/common.js CHANGED
@@ -1,21 +1,41 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requesterTransformer = void 0;
1
+ const ERROR_TYPE = "error";
2
+ export const DEFAULT_TIMEOUT = 15000;
4
3
  /**
5
4
  * Take a Requester function which deals with tagged requests and responses,
6
5
  * and return a Requester which deals only with the inner data types, also
7
6
  * with the optional Transformer applied to further modify the input and output.
8
7
  */
9
- const requesterTransformer = (requester, tag, transform = identityTransformer) => (async (req, timeout) => {
8
+ export const requesterTransformer = (requester, tag, transform = identityTransformer) => async (req, timeout) => {
10
9
  const input = { type: tag, data: transform.input(req) };
11
10
  const response = await requester(input, timeout);
12
11
  const output = transform.output(response.data);
13
12
  return output;
14
- });
15
- exports.requesterTransformer = requesterTransformer;
13
+ };
16
14
  const identity = (x) => x;
17
15
  const identityTransformer = {
18
16
  input: identity,
19
17
  output: identity,
20
18
  };
19
+ export const catchError = (res) => {
20
+ return res.type === ERROR_TYPE ? Promise.reject(res) : Promise.resolve(res);
21
+ };
22
+ export const promiseTimeout = (promise, tag, ms) => {
23
+ let id;
24
+ const timeout = new Promise((_, reject) => {
25
+ id = setTimeout(() => {
26
+ clearTimeout(id);
27
+ reject(new Error(`Timed out in ${ms}ms: ${tag}`));
28
+ }, ms);
29
+ });
30
+ return new Promise((res, rej) => {
31
+ Promise.race([promise, timeout])
32
+ .then((a) => {
33
+ clearTimeout(id);
34
+ return res(a);
35
+ })
36
+ .catch((e) => {
37
+ return rej(e);
38
+ });
39
+ });
40
+ };
21
41
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/api/common.ts"],"names":[],"mappings":";;;AACA;;;;GAIG;AACI,MAAM,oBAAoB,GAC/B,CACE,SAAgD,EAChD,GAAW,EACX,YAAiD,mBAAmB,EACpE,EAAE,CAAC,CACH,KAAK,EAAE,GAAS,EAAE,OAAgB,EAAE,EAAE;IACpC,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAA;IACvD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,MAAM,CAAA;AACf,CAAC,CACF,CAAA;AAZU,QAAA,oBAAoB,wBAY9B;AAOH,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAA;AAC9B,MAAM,mBAAmB,GAAG;IAC1B,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;CACjB,CAAA"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/api/common.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAWrC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,CACE,SAAgD,EAChD,GAAW,EACX,YAAiD,mBAAmB,EACpE,EAAE,CACJ,KAAK,EAAE,GAAS,EAAE,OAAgB,EAAE,EAAE;IACpC,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AACJ,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/B,MAAM,mBAAmB,GAAG;IAC1B,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE;IACrC,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAqB,EACrB,GAAW,EACX,EAAU,EACV,EAAE;IACF,IAAI,EAAkB,CAAC;IAEvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACxC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE;YACnB,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./admin/index.js";
2
+ export * from "./app/index.js";
@@ -0,0 +1,3 @@
1
+ export * from "./admin/index.js";
2
+ export * from "./app/index.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { AppBundleSource } from "./api/index.js";
2
+ import { DnaProperties } from "./types.js";
3
+ export declare type HappProperties = {
4
+ [role_id: string]: DnaProperties;
5
+ };
6
+ export declare const appBundleWithProperties: (source: AppBundleSource, properties: HappProperties) => Promise<AppBundleSource>;
package/lib/bundle.js ADDED
@@ -0,0 +1,32 @@
1
+ import { decode } from "@msgpack/msgpack";
2
+ const readAppBundleFromPath = async (path) => {
3
+ const isBrowser = typeof window !== "undefined";
4
+ if (isBrowser) {
5
+ throw new Error("Cannot read app bundle from path in browser context");
6
+ }
7
+ const { promises: { readFile }, } = await import("node:fs");
8
+ const { gunzip } = await import("node:zlib");
9
+ const compressed = await readFile(path);
10
+ const encoded = await new Promise((resolve, reject) => gunzip(compressed, (err, bytes) => err === null ? resolve(bytes) : reject(err)));
11
+ return decode(encoded);
12
+ };
13
+ /// Adds properties to app bundle. Requires node if passed a path.
14
+ export const appBundleWithProperties = async (source, properties) => {
15
+ const originalBundle = "path" in source ? await readAppBundleFromPath(source.path) : source.bundle;
16
+ return {
17
+ bundle: {
18
+ ...originalBundle,
19
+ manifest: {
20
+ ...originalBundle.manifest,
21
+ roles: originalBundle.manifest.roles.map((roleManifest) => ({
22
+ ...roleManifest,
23
+ dna: {
24
+ ...roleManifest.dna,
25
+ properties: properties[roleManifest.id],
26
+ },
27
+ })),
28
+ },
29
+ },
30
+ };
31
+ };
32
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM1C,MAAM,qBAAqB,GAAG,KAAK,EAAE,IAAY,EAAsB,EAAE;IACvE,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IAChD,IAAI,SAAS,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;KACxE;IACD,MAAM,EACJ,QAAQ,EAAE,EAAE,QAAQ,EAAE,GACvB,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAe,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAChE,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAChC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAC5C,CACF,CAAC;IACF,OAAO,MAAM,CAAC,OAAO,CAAc,CAAC;AACtC,CAAC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,MAAuB,EACvB,UAA0B,EACA,EAAE;IAC5B,MAAM,cAAc,GAClB,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9E,OAAO;QACL,MAAM,EAAE;YACN,GAAG,cAAc;YACjB,QAAQ,EAAE;gBACR,GAAG,cAAc,CAAC,QAAQ;gBAC1B,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;oBAC1D,GAAG,YAAY;oBACf,GAAG,EAAE;wBACH,GAAG,YAAY,CAAC,GAAG;wBACnB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;qBACxC;iBACF,CAAC,CAAC;aACJ;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}