@milaboratories/pl-client 2.16.26 → 2.16.28

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 (212) hide show
  1. package/README.md +2 -1
  2. package/dist/core/PromiseTracker.cjs +1 -3
  3. package/dist/core/PromiseTracker.cjs.map +1 -1
  4. package/dist/core/PromiseTracker.d.ts.map +1 -1
  5. package/dist/core/PromiseTracker.js +1 -3
  6. package/dist/core/PromiseTracker.js.map +1 -1
  7. package/dist/core/StatefulPromise.cjs +4 -4
  8. package/dist/core/StatefulPromise.cjs.map +1 -1
  9. package/dist/core/StatefulPromise.d.ts +1 -1
  10. package/dist/core/StatefulPromise.d.ts.map +1 -1
  11. package/dist/core/StatefulPromise.js +4 -4
  12. package/dist/core/StatefulPromise.js.map +1 -1
  13. package/dist/core/advisory_locks.cjs +1 -1
  14. package/dist/core/advisory_locks.cjs.map +1 -1
  15. package/dist/core/advisory_locks.js +1 -1
  16. package/dist/core/advisory_locks.js.map +1 -1
  17. package/dist/core/auth.cjs.map +1 -1
  18. package/dist/core/auth.d.ts +1 -1
  19. package/dist/core/auth.js.map +1 -1
  20. package/dist/core/cache.d.ts +1 -1
  21. package/dist/core/client.cjs +14 -14
  22. package/dist/core/client.cjs.map +1 -1
  23. package/dist/core/client.d.ts +11 -11
  24. package/dist/core/client.d.ts.map +1 -1
  25. package/dist/core/client.js +14 -14
  26. package/dist/core/client.js.map +1 -1
  27. package/dist/core/config.cjs +39 -39
  28. package/dist/core/config.cjs.map +1 -1
  29. package/dist/core/config.d.ts +5 -5
  30. package/dist/core/config.js +39 -39
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/default_client.cjs +23 -23
  33. package/dist/core/default_client.cjs.map +1 -1
  34. package/dist/core/default_client.d.ts +3 -3
  35. package/dist/core/default_client.js +23 -23
  36. package/dist/core/default_client.js.map +1 -1
  37. package/dist/core/driver.cjs +1 -1
  38. package/dist/core/driver.cjs.map +1 -1
  39. package/dist/core/driver.d.ts +5 -5
  40. package/dist/core/driver.js +1 -1
  41. package/dist/core/driver.js.map +1 -1
  42. package/dist/core/error_resource.cjs +2 -2
  43. package/dist/core/error_resource.cjs.map +1 -1
  44. package/dist/core/error_resource.d.ts +1 -1
  45. package/dist/core/error_resource.js +2 -2
  46. package/dist/core/error_resource.js.map +1 -1
  47. package/dist/core/errors.cjs +24 -24
  48. package/dist/core/errors.cjs.map +1 -1
  49. package/dist/core/errors.d.ts +1 -1
  50. package/dist/core/errors.d.ts.map +1 -1
  51. package/dist/core/errors.js +24 -24
  52. package/dist/core/errors.js.map +1 -1
  53. package/dist/core/final.cjs +43 -43
  54. package/dist/core/final.cjs.map +1 -1
  55. package/dist/core/final.d.ts +3 -3
  56. package/dist/core/final.d.ts.map +1 -1
  57. package/dist/core/final.js +43 -43
  58. package/dist/core/final.js.map +1 -1
  59. package/dist/core/ll_client.cjs +50 -43
  60. package/dist/core/ll_client.cjs.map +1 -1
  61. package/dist/core/ll_client.d.ts +9 -9
  62. package/dist/core/ll_client.d.ts.map +1 -1
  63. package/dist/core/ll_client.js +50 -43
  64. package/dist/core/ll_client.js.map +1 -1
  65. package/dist/core/ll_transaction.cjs +9 -9
  66. package/dist/core/ll_transaction.cjs.map +1 -1
  67. package/dist/core/ll_transaction.d.ts +7 -7
  68. package/dist/core/ll_transaction.d.ts.map +1 -1
  69. package/dist/core/ll_transaction.js +9 -9
  70. package/dist/core/ll_transaction.js.map +1 -1
  71. package/dist/core/stat.cjs.map +1 -1
  72. package/dist/core/stat.d.ts +1 -1
  73. package/dist/core/stat.js.map +1 -1
  74. package/dist/core/transaction.cjs +46 -46
  75. package/dist/core/transaction.cjs.map +1 -1
  76. package/dist/core/transaction.d.ts +7 -7
  77. package/dist/core/transaction.d.ts.map +1 -1
  78. package/dist/core/transaction.js +46 -46
  79. package/dist/core/transaction.js.map +1 -1
  80. package/dist/core/type_conversion.cjs +22 -22
  81. package/dist/core/type_conversion.cjs.map +1 -1
  82. package/dist/core/type_conversion.d.ts +3 -3
  83. package/dist/core/type_conversion.d.ts.map +1 -1
  84. package/dist/core/type_conversion.js +22 -22
  85. package/dist/core/type_conversion.js.map +1 -1
  86. package/dist/core/types.cjs +25 -25
  87. package/dist/core/types.cjs.map +1 -1
  88. package/dist/core/types.d.ts +7 -7
  89. package/dist/core/types.js +25 -25
  90. package/dist/core/types.js.map +1 -1
  91. package/dist/core/unauth_client.cjs +6 -4
  92. package/dist/core/unauth_client.cjs.map +1 -1
  93. package/dist/core/unauth_client.d.ts +4 -4
  94. package/dist/core/unauth_client.d.ts.map +1 -1
  95. package/dist/core/unauth_client.js +6 -4
  96. package/dist/core/unauth_client.js.map +1 -1
  97. package/dist/core/websocket_stream.cjs +22 -20
  98. package/dist/core/websocket_stream.cjs.map +1 -1
  99. package/dist/core/websocket_stream.d.ts +3 -3
  100. package/dist/core/websocket_stream.d.ts.map +1 -1
  101. package/dist/core/websocket_stream.js +22 -20
  102. package/dist/core/websocket_stream.js.map +1 -1
  103. package/dist/core/wire.d.ts +6 -6
  104. package/dist/core/wire.d.ts.map +1 -1
  105. package/dist/helpers/pl.cjs +19 -19
  106. package/dist/helpers/pl.cjs.map +1 -1
  107. package/dist/helpers/pl.d.ts +2 -2
  108. package/dist/helpers/pl.js +19 -19
  109. package/dist/helpers/pl.js.map +1 -1
  110. package/dist/helpers/poll.cjs +6 -6
  111. package/dist/helpers/poll.cjs.map +1 -1
  112. package/dist/helpers/poll.d.ts +4 -4
  113. package/dist/helpers/poll.d.ts.map +1 -1
  114. package/dist/helpers/poll.js +6 -6
  115. package/dist/helpers/poll.js.map +1 -1
  116. package/dist/helpers/retry_strategy.cjs +1 -1
  117. package/dist/helpers/retry_strategy.cjs.map +1 -1
  118. package/dist/helpers/retry_strategy.d.ts.map +1 -1
  119. package/dist/helpers/retry_strategy.js +1 -1
  120. package/dist/helpers/retry_strategy.js.map +1 -1
  121. package/dist/helpers/state_helpers.d.ts +2 -2
  122. package/dist/helpers/tx_helpers.cjs +2 -2
  123. package/dist/helpers/tx_helpers.cjs.map +1 -1
  124. package/dist/helpers/tx_helpers.d.ts +2 -2
  125. package/dist/helpers/tx_helpers.d.ts.map +1 -1
  126. package/dist/helpers/tx_helpers.js +2 -2
  127. package/dist/helpers/tx_helpers.js.map +1 -1
  128. package/dist/index.d.ts +16 -16
  129. package/dist/proto-grpc/google/protobuf/struct.d.ts +1 -1
  130. package/dist/proto-grpc/google/protobuf/struct.d.ts.map +1 -1
  131. package/dist/proto-rest/index.cjs +4 -5
  132. package/dist/proto-rest/index.cjs.map +1 -1
  133. package/dist/proto-rest/index.d.ts +4 -4
  134. package/dist/proto-rest/index.d.ts.map +1 -1
  135. package/dist/proto-rest/index.js +4 -5
  136. package/dist/proto-rest/index.js.map +1 -1
  137. package/dist/proto-rest/plapi.d.ts.map +1 -1
  138. package/dist/test/tcp-proxy.cjs +11 -10
  139. package/dist/test/tcp-proxy.cjs.map +1 -1
  140. package/dist/test/tcp-proxy.d.ts +1 -1
  141. package/dist/test/tcp-proxy.d.ts.map +1 -1
  142. package/dist/test/tcp-proxy.js +11 -10
  143. package/dist/test/tcp-proxy.js.map +1 -1
  144. package/dist/test/test_config.cjs +21 -17
  145. package/dist/test/test_config.cjs.map +1 -1
  146. package/dist/test/test_config.d.ts +6 -6
  147. package/dist/test/test_config.d.ts.map +1 -1
  148. package/dist/test/test_config.js +21 -17
  149. package/dist/test/test_config.js.map +1 -1
  150. package/dist/util/pl.cjs +1 -1
  151. package/dist/util/pl.cjs.map +1 -1
  152. package/dist/util/pl.js +1 -1
  153. package/dist/util/pl.js.map +1 -1
  154. package/dist/util/util.cjs +1 -1
  155. package/dist/util/util.cjs.map +1 -1
  156. package/dist/util/util.js +1 -1
  157. package/dist/util/util.js.map +1 -1
  158. package/package.json +23 -23
  159. package/src/core/PromiseTracker.ts +3 -4
  160. package/src/core/StatefulPromise.ts +17 -8
  161. package/src/core/abstract_stream.ts +3 -4
  162. package/src/core/advisory_locks.ts +1 -1
  163. package/src/core/auth.ts +2 -2
  164. package/src/core/cache.ts +1 -1
  165. package/src/core/client.test.ts +25 -21
  166. package/src/core/client.ts +54 -45
  167. package/src/core/config.test.ts +44 -44
  168. package/src/core/config.ts +49 -49
  169. package/src/core/connectivity.test.ts +69 -63
  170. package/src/core/default_client.ts +46 -46
  171. package/src/core/driver.ts +6 -6
  172. package/src/core/error.test.ts +5 -5
  173. package/src/core/error_resource.ts +3 -3
  174. package/src/core/errors.ts +39 -31
  175. package/src/core/final.ts +48 -55
  176. package/src/core/ll_client.test.ts +53 -36
  177. package/src/core/ll_client.ts +125 -81
  178. package/src/core/ll_transaction.test.ts +75 -49
  179. package/src/core/ll_transaction.ts +37 -35
  180. package/src/core/stat.ts +1 -1
  181. package/src/core/transaction.test.ts +65 -65
  182. package/src/core/transaction.ts +91 -84
  183. package/src/core/type_conversion.ts +30 -31
  184. package/src/core/types.test.ts +6 -6
  185. package/src/core/types.ts +35 -35
  186. package/src/core/unauth_client.test.ts +18 -14
  187. package/src/core/unauth_client.ts +14 -12
  188. package/src/core/websocket_stream.test.ts +52 -52
  189. package/src/core/websocket_stream.ts +41 -37
  190. package/src/core/wire.ts +10 -8
  191. package/src/helpers/pl.ts +22 -22
  192. package/src/helpers/poll.ts +13 -27
  193. package/src/helpers/retry_strategy.ts +2 -4
  194. package/src/helpers/rich_resource_types.test.ts +2 -2
  195. package/src/helpers/state_helpers.ts +3 -3
  196. package/src/helpers/tx_helpers.ts +9 -7
  197. package/src/index.ts +16 -16
  198. package/src/proto-grpc/google/protobuf/struct.ts +1 -1
  199. package/src/proto-rest/index.ts +17 -18
  200. package/src/proto-rest/plapi.ts +1472 -1472
  201. package/src/test/tcp-proxy.ts +55 -54
  202. package/src/test/test_config.test.ts +3 -3
  203. package/src/test/test_config.ts +51 -46
  204. package/src/util/pl.ts +1 -1
  205. package/src/util/util.test.ts +5 -5
  206. package/src/util/util.ts +1 -1
  207. package/dist/helpers/rich_resource_types.d.ts +0 -2
  208. package/dist/helpers/rich_resource_types.d.ts.map +0 -1
  209. package/dist/helpers/smart_accessors.d.ts +0 -2
  210. package/dist/helpers/smart_accessors.d.ts.map +0 -1
  211. package/src/helpers/rich_resource_types.ts +0 -84
  212. package/src/helpers/smart_accessors.ts +0 -146
@@ -1,14 +1,15 @@
1
- import type { Status } from '../proto-grpc/github.com/googleapis/googleapis/google/rpc/status';
2
- import { Aborted } from '@milaboratories/ts-helpers';
3
- import { Code } from '../proto-grpc/google/rpc/code';
1
+ import type { Status } from "../proto-grpc/github.com/googleapis/googleapis/google/rpc/status";
2
+ import { Aborted } from "@milaboratories/ts-helpers";
3
+ import { Code } from "../proto-grpc/google/rpc/code";
4
4
 
5
5
  export function isConnectionProblem(err: unknown, nested: boolean = false): boolean {
6
6
  if (err === undefined || err === null) return false;
7
7
 
8
8
  if (err instanceof DisconnectedError) return true;
9
- if ((err as any).name == 'RpcError' && (err as any).code == 'UNAVAILABLE') return true;
10
- if ((err as any).name == 'RESTError' && (err as any).status.code == Code.UNAVAILABLE) return true;
11
- if ((err as any).cause !== undefined && !nested) return isConnectionProblem((err as any).cause, true);
9
+ if ((err as any).name == "RpcError" && (err as any).code == "UNAVAILABLE") return true;
10
+ if ((err as any).name == "RESTError" && (err as any).status.code == Code.UNAVAILABLE) return true;
11
+ if ((err as any).cause !== undefined && !nested)
12
+ return isConnectionProblem((err as any).cause, true);
12
13
  return false;
13
14
  }
14
15
 
@@ -16,18 +17,21 @@ export function isUnauthenticated(err: unknown, nested: boolean = false): boolea
16
17
  if (err === undefined || err === null) return false;
17
18
 
18
19
  if (err instanceof UnauthenticatedError) return true;
19
- if ((err as any).name == 'RpcError' && (err as any).code == 'UNAUTHENTICATED') return true;
20
- if ((err as any).name == 'RESTError' && (err as any).status.code == Code.UNAUTHENTICATED) return true;
21
- if ((err as any).cause !== undefined && !nested) return isUnauthenticated((err as any).cause, true);
20
+ if ((err as any).name == "RpcError" && (err as any).code == "UNAUTHENTICATED") return true;
21
+ if ((err as any).name == "RESTError" && (err as any).status.code == Code.UNAUTHENTICATED)
22
+ return true;
23
+ if ((err as any).cause !== undefined && !nested)
24
+ return isUnauthenticated((err as any).cause, true);
22
25
  return false;
23
26
  }
24
27
 
25
28
  export function isTimeoutError(err: unknown, nested: boolean = false): boolean {
26
29
  if (err === undefined || err === null) return false;
27
30
 
28
- if ((err as any).name == 'TimeoutError') return true;
29
- if ((err as any).name == 'RpcError' && (err as any).code == 'DEADLINE_EXCEEDED') return true;
30
- if ((err as any).name == 'RESTError' && (err as any).status.code == Code.DEADLINE_EXCEEDED) return true;
31
+ if ((err as any).name == "TimeoutError") return true;
32
+ if ((err as any).name == "RpcError" && (err as any).code == "DEADLINE_EXCEEDED") return true;
33
+ if ((err as any).name == "RESTError" && (err as any).status.code == Code.DEADLINE_EXCEEDED)
34
+ return true;
31
35
  if ((err as any).cause !== undefined && !nested) return isTimeoutError((err as any).cause, true);
32
36
  return false;
33
37
  }
@@ -35,8 +39,8 @@ export function isTimeoutError(err: unknown, nested: boolean = false): boolean {
35
39
  export function isCancelError(err: unknown, nested: boolean = false): boolean {
36
40
  if (err === undefined || err === null) return false;
37
41
 
38
- if ((err as any).name == 'RpcError' && (err as any).code == 'CANCELLED') return true;
39
- if ((err as any).name == 'RESTError' && (err as any).status.code == Code.CANCELLED) return true;
42
+ if ((err as any).name == "RpcError" && (err as any).code == "CANCELLED") return true;
43
+ if ((err as any).name == "RESTError" && (err as any).status.code == Code.CANCELLED) return true;
40
44
  if ((err as any).cause !== undefined && !nested) return isCancelError((err as any).cause, true);
41
45
  return false;
42
46
  }
@@ -44,11 +48,11 @@ export function isCancelError(err: unknown, nested: boolean = false): boolean {
44
48
  export function isAbortedError(err: unknown, nested: boolean = false): boolean {
45
49
  if (err === undefined || err === null) return false;
46
50
 
47
- if (err instanceof Aborted || (err as any).name == 'AbortError') return true;
48
- if ((err as any).code == 'ABORT_ERR') return true;
51
+ if (err instanceof Aborted || (err as any).name == "AbortError") return true;
52
+ if ((err as any).code == "ABORT_ERR") return true;
49
53
  if (err instanceof DOMException && err.code === DOMException.ABORT_ERR) return true; // WebSocket error
50
- if ((err as any).name == 'RpcError' && (err as any).code == 'ABORTED') return true;
51
- if ((err as any).name == 'RESTError' && (err as any).status.code == Code.ABORTED) return true;
54
+ if ((err as any).name == "RpcError" && (err as any).code == "ABORTED") return true;
55
+ if ((err as any).name == "RESTError" && (err as any).status.code == Code.ABORTED) return true;
52
56
  if ((err as any).cause !== undefined && !nested) isAbortedError((err as any).cause, true);
53
57
  return false;
54
58
  }
@@ -59,15 +63,16 @@ export function isTimeoutOrCancelError(err: unknown, nested: boolean = false): b
59
63
  if (isAbortedError(err, true)) return true;
60
64
  if (isTimeoutError(err, true)) return true;
61
65
  if (isCancelError(err, true)) return true;
62
- if ((err as any).cause !== undefined && !nested) return isTimeoutOrCancelError((err as any).cause, true);
66
+ if ((err as any).cause !== undefined && !nested)
67
+ return isTimeoutOrCancelError((err as any).cause, true);
63
68
  return false;
64
69
  }
65
70
 
66
71
  export function isNotFoundError(err: unknown, nested: boolean = false): boolean {
67
72
  if (err === undefined || err === null) return false;
68
73
 
69
- if ((err as any).name == 'RpcError' && (err as any).code == 'NOT_FOUND') return true;
70
- if ((err as any).name == 'RESTError' && (err as any).status.code == Code.NOT_FOUND) return true;
74
+ if ((err as any).name == "RpcError" && (err as any).code == "NOT_FOUND") return true;
75
+ if ((err as any).name == "RESTError" && (err as any).status.code == Code.NOT_FOUND) return true;
71
76
  if ((err as any).cause !== undefined && !nested) return isNotFoundError((err as any).cause, true);
72
77
  return err instanceof RecoverablePlError && err.status.code === PlErrorCodeNotFound;
73
78
  }
@@ -75,8 +80,11 @@ export function isNotFoundError(err: unknown, nested: boolean = false): boolean
75
80
  export const PlErrorCodeNotFound: number = Code.NOT_FOUND;
76
81
 
77
82
  export class PlError extends Error {
78
- name = 'PlError';
79
- constructor(public readonly status: Status, opts?: ErrorOptions) {
83
+ name = "PlError";
84
+ constructor(
85
+ public readonly status: Status,
86
+ opts?: ErrorOptions,
87
+ ) {
80
88
  super(`code=${status.code} ${status.message}`, opts);
81
89
  }
82
90
  }
@@ -86,35 +94,35 @@ export function throwPlNotFoundError(message: string): never {
86
94
  }
87
95
 
88
96
  export class RecoverablePlError extends PlError {
89
- name = 'RecoverablePlError';
97
+ name = "RecoverablePlError";
90
98
  constructor(status: Status) {
91
99
  super(status);
92
100
  }
93
101
  }
94
102
 
95
103
  export class UnrecoverablePlError extends PlError {
96
- name = 'UnrecoverablePlError';
104
+ name = "UnrecoverablePlError";
97
105
  constructor(status: Status) {
98
106
  super(status);
99
107
  }
100
108
  }
101
109
 
102
110
  export class UnauthenticatedError extends Error {
103
- name = 'UnauthenticatedError';
111
+ name = "UnauthenticatedError";
104
112
  constructor(message: string) {
105
- super('LoginFailed: ' + message);
113
+ super("LoginFailed: " + message);
106
114
  }
107
115
  }
108
116
 
109
117
  export class DisconnectedError extends Error {
110
- name = 'DisconnectedError';
118
+ name = "DisconnectedError";
111
119
  constructor(message: string) {
112
- super('Disconnected: ' + message);
120
+ super("Disconnected: " + message);
113
121
  }
114
122
  }
115
123
 
116
124
  export class RESTError extends PlError {
117
- name = 'RESTError';
125
+ name = "RESTError";
118
126
  constructor(status: Status, opts?: ErrorOptions) {
119
127
  super(status, opts);
120
128
  }
@@ -131,7 +139,7 @@ export function rethrowMeaningfulError(error: any, wrapIfUnknown: boolean = fals
131
139
  }
132
140
  if (isTimeoutOrCancelError(error)) throw new Aborted(error);
133
141
  if (wrapIfUnknown) {
134
- const message = error.message || String(error) || 'Unknown error';
142
+ const message = error.message || String(error) || "Unknown error";
135
143
  throw new Error(message, { cause: error });
136
144
  } else throw error;
137
145
  }
package/src/core/final.ts CHANGED
@@ -1,13 +1,6 @@
1
- import type { Optional } from 'utility-types';
2
- import type {
3
- BasicResourceData,
4
- ResourceData,
5
- } from './types';
6
- import {
7
- getField,
8
- isNotNullResourceId,
9
- isNullResourceId,
10
- } from './types';
1
+ import type { Optional } from "utility-types";
2
+ import type { BasicResourceData, ResourceData } from "./types";
3
+ import { getField, isNotNullResourceId, isNullResourceId } from "./types";
11
4
 
12
5
  /**
13
6
  * Function is used to guide multiple layers of caching in pl-client and derived pl-tree.
@@ -19,7 +12,7 @@ import {
19
12
  * "final" state should be calculated for "basic" part of resource data only.
20
13
  */
21
14
  export type FinalResourceDataPredicate = (
22
- resourceData: Optional<ResourceData, 'fields'>
15
+ resourceData: Optional<ResourceData, "fields">,
23
16
  ) => boolean;
24
17
 
25
18
  function readyOrDuplicateOrError(r: ResourceData | BasicResourceData): boolean {
@@ -28,7 +21,7 @@ function readyOrDuplicateOrError(r: ResourceData | BasicResourceData): boolean {
28
21
  );
29
22
  }
30
23
 
31
- function readyAndHasAllOutputsFilled(r: Optional<ResourceData, 'fields'>): boolean {
24
+ function readyAndHasAllOutputsFilled(r: Optional<ResourceData, "fields">): boolean {
32
25
  if (!readyOrDuplicateOrError(r)) return false;
33
26
  if (!r.outputsLocked) return false;
34
27
  if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future
@@ -43,65 +36,65 @@ const unknownResourceTypeNames = new Set<string>();
43
36
  /** Default implementation, defining behaviour for built-in resource types. */
44
37
  export const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r): boolean => {
45
38
  switch (r.type.name) {
46
- case 'StreamManager': {
39
+ case "StreamManager": {
47
40
  if (!readyOrDuplicateOrError(r)) return false;
48
41
  if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future
49
42
  if (isNotNullResourceId(r.error)) return true;
50
- const downloadable = getField(r as ResourceData, 'downloadable');
51
- const stream = getField(r as ResourceData, 'stream');
43
+ const downloadable = getField(r as ResourceData, "downloadable");
44
+ const stream = getField(r as ResourceData, "stream");
52
45
  return stream.value === downloadable.value;
53
46
  }
54
- case 'StdMap':
55
- case 'std/map':
56
- case 'EphStdMap':
57
- case 'PFrame':
58
- case 'ParquetChunk':
59
- case 'BContext':
60
- case 'BlockPackCustom':
61
- case 'BinaryMap':
62
- case 'BinaryValue':
63
- case 'BlobMap':
64
- case 'BResolveSingle':
65
- case 'BResolveSingleNoResult':
66
- case 'BQueryResult':
67
- case 'TengoTemplate':
68
- case 'TengoLib':
69
- case 'SoftwareInfo':
70
- case 'Dummy':
47
+ case "StdMap":
48
+ case "std/map":
49
+ case "EphStdMap":
50
+ case "PFrame":
51
+ case "ParquetChunk":
52
+ case "BContext":
53
+ case "BlockPackCustom":
54
+ case "BinaryMap":
55
+ case "BinaryValue":
56
+ case "BlobMap":
57
+ case "BResolveSingle":
58
+ case "BResolveSingleNoResult":
59
+ case "BQueryResult":
60
+ case "TengoTemplate":
61
+ case "TengoLib":
62
+ case "SoftwareInfo":
63
+ case "Dummy":
71
64
  return readyOrDuplicateOrError(r);
72
- case 'json/resourceError':
73
- return r.type.version === '1';
74
- case 'json/object':
75
- case 'json-gz/object':
76
- case 'json/string':
77
- case 'json/array':
78
- case 'json/number':
79
- case 'BContextEnd':
80
- case 'Frontend/FromUrl':
81
- case 'Frontend/FromFolder':
82
- case 'BObjectSpec':
83
- case 'Blob':
84
- case 'Null':
85
- case 'binary':
86
- case 'LSProvider':
65
+ case "json/resourceError":
66
+ return r.type.version === "1";
67
+ case "json/object":
68
+ case "json-gz/object":
69
+ case "json/string":
70
+ case "json/array":
71
+ case "json/number":
72
+ case "BContextEnd":
73
+ case "Frontend/FromUrl":
74
+ case "Frontend/FromFolder":
75
+ case "BObjectSpec":
76
+ case "Blob":
77
+ case "Null":
78
+ case "binary":
79
+ case "LSProvider":
87
80
  return true;
88
- case 'UserProject':
89
- case 'Projects':
90
- case 'ClientRoot':
81
+ case "UserProject":
82
+ case "Projects":
83
+ case "ClientRoot":
91
84
  return false;
92
85
  default:
93
- if (r.type.name.startsWith('Blob/')) return true;
94
- else if (r.type.name.startsWith('BlobUpload/') || r.type.name.startsWith('BlobIndex/')) {
86
+ if (r.type.name.startsWith("Blob/")) return true;
87
+ else if (r.type.name.startsWith("BlobUpload/") || r.type.name.startsWith("BlobIndex/")) {
95
88
  return readyAndHasAllOutputsFilled(r);
96
- } else if (r.type.name.startsWith('PColumnData/')) {
89
+ } else if (r.type.name.startsWith("PColumnData/")) {
97
90
  return readyOrDuplicateOrError(r);
98
- } else if (r.type.name.startsWith('StreamWorkdir/')) {
91
+ } else if (r.type.name.startsWith("StreamWorkdir/")) {
99
92
  return readyOrDuplicateOrError(r);
100
93
  } else {
101
94
  // Unknown resource type detected
102
95
  // Set used to log this message only once
103
96
  if (!unknownResourceTypeNames.has(r.type.name)) {
104
- console.log('UNKNOWN RESOURCE TYPE: ' + r.type.name);
97
+ console.log("UNKNOWN RESOURCE TYPE: " + r.type.name);
105
98
  unknownResourceTypeNames.add(r.type.name);
106
99
  }
107
100
  }
@@ -1,37 +1,46 @@
1
- import { LLPlClient } from './ll_client';
2
- import { getTestConfig, plAddressToTestConfig, getTestLLClient, getTestClientConf } from '../test/test_config';
3
- import { TxAPI_Open_Request_WritableTx } from '../proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api';
4
- import { request } from 'undici';
5
- import * as tp from 'node:timers/promises';
6
- import { test, expect } from 'vitest';
7
-
8
- import { UnauthenticatedError } from './errors';
9
-
10
- test('wire protocol detection', async () => {
1
+ import { LLPlClient } from "./ll_client";
2
+ import {
3
+ getTestConfig,
4
+ plAddressToTestConfig,
5
+ getTestLLClient,
6
+ getTestClientConf,
7
+ } from "../test/test_config";
8
+ import { TxAPI_Open_Request_WritableTx } from "../proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api";
9
+ import { request } from "undici";
10
+ import * as tp from "node:timers/promises";
11
+ import { test, expect } from "vitest";
12
+
13
+ import { UnauthenticatedError } from "./errors";
14
+
15
+ test("wire protocol detection", async () => {
11
16
  const { conf, auth } = await getTestClientConf();
12
- const expectedWireProtocol = conf.wireProtocol ?? 'grpc';
17
+ const expectedWireProtocol = conf.wireProtocol ?? "grpc";
13
18
  conf.wireProtocol = undefined;
14
19
 
15
20
  const client = await LLPlClient.build(conf, { auth });
16
21
  expect(client.wireProtocol).toBe(expectedWireProtocol);
17
22
  });
18
23
 
19
- test('authenticated instance test', async () => {
24
+ test("authenticated instance test", async () => {
20
25
  const client = await getTestLLClient();
21
26
  const tx = client.createTx(true);
22
27
  const response = await tx.send(
23
28
  {
24
- oneofKind: 'txOpen',
25
- txOpen: { name: 'test', writable: TxAPI_Open_Request_WritableTx.WRITABLE, enableFormattedErrors: false }
29
+ oneofKind: "txOpen",
30
+ txOpen: {
31
+ name: "test",
32
+ writable: TxAPI_Open_Request_WritableTx.WRITABLE,
33
+ enableFormattedErrors: false,
34
+ },
26
35
  },
27
- false
36
+ false,
28
37
  );
29
38
  expect(response.txOpen.tx?.isValid).toBeTruthy();
30
39
  await tx.complete();
31
40
  await tx.await();
32
41
  });
33
42
 
34
- test('unauthenticated status change', async () => {
43
+ test("unauthenticated status change", async () => {
35
44
  const cfg = getTestConfig();
36
45
  if (cfg.test_password === undefined) {
37
46
  console.log("skipping test because target server doesn't support authentication");
@@ -39,17 +48,21 @@ test('unauthenticated status change', async () => {
39
48
  }
40
49
 
41
50
  const client = await LLPlClient.build(plAddressToTestConfig(cfg.address));
42
- expect(client.status).toBe('OK');
51
+ expect(client.status).toBe("OK");
43
52
 
44
53
  const tx = client.createTx(true);
45
54
 
46
55
  await expect(async () => {
47
56
  await tx.send(
48
57
  {
49
- oneofKind: 'txOpen',
50
- txOpen: { name: 'test', writable: TxAPI_Open_Request_WritableTx.WRITABLE, enableFormattedErrors: false }
58
+ oneofKind: "txOpen",
59
+ txOpen: {
60
+ name: "test",
61
+ writable: TxAPI_Open_Request_WritableTx.WRITABLE,
62
+ enableFormattedErrors: false,
63
+ },
51
64
  },
52
- false
65
+ false,
53
66
  );
54
67
  }).rejects.toThrow(UnauthenticatedError);
55
68
 
@@ -59,10 +72,10 @@ test('unauthenticated status change', async () => {
59
72
 
60
73
  await tp.setImmediate();
61
74
 
62
- expect(client.status).toEqual('Unauthenticated');
75
+ expect(client.status).toEqual("Unauthenticated");
63
76
  });
64
77
 
65
- test('automatic token update', async () => {
78
+ test("automatic token update", async () => {
66
79
  const cfg = getTestConfig();
67
80
  if (cfg.test_password === undefined) {
68
81
  console.log("skipping test because target server doesn't support authentication");
@@ -78,18 +91,22 @@ test('automatic token update', async () => {
78
91
  onUpdate: (auth) => {
79
92
  console.log(auth);
80
93
  ++numberOfAuthUpdates;
81
- }
82
- }
94
+ },
95
+ },
83
96
  });
84
97
 
85
98
  for (let i = 0; i < 6; i++) {
86
99
  const tx = client.createTx(true);
87
100
  const response = await tx.send(
88
101
  {
89
- oneofKind: 'txOpen',
90
- txOpen: { name: 'test', writable: TxAPI_Open_Request_WritableTx.WRITABLE, enableFormattedErrors: false }
102
+ oneofKind: "txOpen",
103
+ txOpen: {
104
+ name: "test",
105
+ writable: TxAPI_Open_Request_WritableTx.WRITABLE,
106
+ enableFormattedErrors: false,
107
+ },
91
108
  },
92
- false
109
+ false,
93
110
  );
94
111
  expect(response.txOpen.tx?.isValid).toBeTruthy();
95
112
  await tx.complete();
@@ -103,25 +120,25 @@ test('automatic token update', async () => {
103
120
  }
104
121
  }, 5000);
105
122
 
106
- test('test simple https call', async () => {
123
+ test("test simple https call", async () => {
107
124
  const client = await getTestLLClient();
108
- const response = await request('https://cdn.milaboratory.com/ping', {
109
- dispatcher: client.httpDispatcher
125
+ const response = await request("https://cdn.milaboratory.com/ping", {
126
+ dispatcher: client.httpDispatcher,
110
127
  });
111
128
  const text = await response.body.text();
112
- expect(text).toEqual('pong');
129
+ expect(text).toEqual("pong");
113
130
  });
114
131
 
115
- test('test https call via proxy', async () => {
132
+ test("test https call via proxy", async () => {
116
133
  const testConfig = getTestConfig();
117
134
  if (testConfig.test_proxy === undefined) {
118
- console.log('skipped');
135
+ console.log("skipped");
119
136
  return;
120
137
  }
121
138
  const client = await getTestLLClient({ httpProxy: testConfig.test_proxy });
122
- const response = await request('https://cdn.milaboratory.com/ping', {
123
- dispatcher: client.httpDispatcher
139
+ const response = await request("https://cdn.milaboratory.com/ping", {
140
+ dispatcher: client.httpDispatcher,
124
141
  });
125
142
  const text = await response.body.text();
126
- expect(text).toEqual('pong');
143
+ expect(text).toEqual("pong");
127
144
  });