@temporalio/cloud 1.11.3
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/LICENSE.md +23 -0
- package/README.md +8 -0
- package/lib/cloud-operations-client.d.ts +335 -0
- package/lib/cloud-operations-client.js +392 -0
- package/lib/cloud-operations-client.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -0
- package/lib/pkg.d.ts +5 -0
- package/lib/pkg.js +12 -0
- package/lib/pkg.js.map +1 -0
- package/lib/types.d.ts +3 -0
- package/lib/types.js +29 -0
- package/lib/types.js.map +1 -0
- package/package.json +40 -0
- package/src/cloud-operations-client.ts +600 -0
- package/src/index.ts +7 -0
- package/src/pkg.ts +7 -0
- package/src/types.ts +4 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.CloudOperationsConnection = exports.CloudOperationsClient = void 0;
|
|
30
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
31
|
+
const grpc = __importStar(require("@grpc/grpc-js"));
|
|
32
|
+
const internal_non_workflow_1 = require("@temporalio/common/lib/internal-non-workflow");
|
|
33
|
+
const time_1 = require("@temporalio/common/lib/time");
|
|
34
|
+
const client_1 = require("@temporalio/client");
|
|
35
|
+
const pkg_1 = __importDefault(require("./pkg"));
|
|
36
|
+
const types_1 = require("./types");
|
|
37
|
+
/**
|
|
38
|
+
* High level client for the Temporal Cloud API.
|
|
39
|
+
*
|
|
40
|
+
* @experimental
|
|
41
|
+
*/
|
|
42
|
+
class CloudOperationsClient {
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.connection = options.connection;
|
|
45
|
+
this.options = (0, internal_non_workflow_1.filterNullAndUndefined)(options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Set a deadline for any service requests executed in `fn`'s scope.
|
|
49
|
+
*
|
|
50
|
+
* The deadline is a point in time after which any pending gRPC request will be considered as failed;
|
|
51
|
+
* this will locally result in the request call throwing a {@link grpc.ServiceError|ServiceError}
|
|
52
|
+
* with code {@link grpc.status.DEADLINE_EXCEEDED|DEADLINE_EXCEEDED}.
|
|
53
|
+
*
|
|
54
|
+
* It is stronly recommended to explicitly set deadlines. If no deadline is set, then it is
|
|
55
|
+
* possible for the client to end up waiting forever for a response.
|
|
56
|
+
*
|
|
57
|
+
* This method is only a convenience wrapper around {@link CloudOperationsConnection.withDeadline}.
|
|
58
|
+
*
|
|
59
|
+
* @param deadline a point in time after which the request will be considered as failed; either a
|
|
60
|
+
* Date object, or a number of milliseconds since the Unix epoch (UTC).
|
|
61
|
+
* @returns the value returned from `fn`
|
|
62
|
+
*
|
|
63
|
+
* @see https://grpc.io/docs/guides/deadlines/
|
|
64
|
+
*/
|
|
65
|
+
async withDeadline(deadline, fn) {
|
|
66
|
+
Date.now;
|
|
67
|
+
return await this.connection.withDeadline(deadline, fn);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Set an {@link AbortSignal} that, when aborted, cancels any ongoing service requests executed in
|
|
71
|
+
* `fn`'s scope. This will locally result in the request call throwing a {@link grpc.ServiceError|ServiceError}
|
|
72
|
+
* with code {@link grpc.status.CANCELLED|CANCELLED}.
|
|
73
|
+
*
|
|
74
|
+
* This method is only a convenience wrapper around {@link CloudOperationsConnection.withAbortSignal}.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
*
|
|
78
|
+
* ```ts
|
|
79
|
+
* const ctrl = new AbortController();
|
|
80
|
+
* setTimeout(() => ctrl.abort(), 10_000);
|
|
81
|
+
* // 👇 throws if incomplete by the timeout.
|
|
82
|
+
* await conn.withAbortSignal(ctrl.signal, () => client.cloudService.getNamespace({ namespace }));
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @returns value returned from `fn`
|
|
86
|
+
*
|
|
87
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
|
|
88
|
+
*/
|
|
89
|
+
async withAbortSignal(abortSignal, fn) {
|
|
90
|
+
return await this.connection.withAbortSignal(abortSignal, fn);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Set metadata for any service requests executed in `fn`'s scope.
|
|
94
|
+
*
|
|
95
|
+
* @returns returned value of `fn`
|
|
96
|
+
*
|
|
97
|
+
* This method is only a convenience wrapper around {@link CloudOperationsConnection.withMetadata}.
|
|
98
|
+
*/
|
|
99
|
+
async withMetadata(metadata, fn) {
|
|
100
|
+
return await this.connection.withMetadata(metadata, fn);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Raw gRPC access to the Temporal Cloud Operations service.
|
|
104
|
+
*
|
|
105
|
+
* **NOTE**: The Temporal Cloud Operations service API Version provided in {@link options} is
|
|
106
|
+
* **not** automatically set on requests made via the raw gRPC service object. If the namespace
|
|
107
|
+
* requires it, you may need to do the following:
|
|
108
|
+
*
|
|
109
|
+
* ```
|
|
110
|
+
* const metadata: Metadata = { ['temporal-cloud-api-version']: apiVersion }
|
|
111
|
+
* const response = await client.withMetadata(metadata, async () => {
|
|
112
|
+
* return client.cloudService.getNamespace({ namespace });
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
get cloudService() {
|
|
117
|
+
return this.connection.cloudService;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.CloudOperationsClient = CloudOperationsClient;
|
|
121
|
+
/**
|
|
122
|
+
* - Convert {@link ConnectionOptions.tls} to {@link grpc.ChannelCredentials}
|
|
123
|
+
* - Add the grpc.ssl_target_name_override GRPC {@link ConnectionOptions.channelArgs | channel arg}
|
|
124
|
+
* - Add default port to address if port not specified
|
|
125
|
+
* - Set `Authorization` header based on {@link ConnectionOptions.apiKey}
|
|
126
|
+
*/
|
|
127
|
+
function normalizeGRPCConfig(options) {
|
|
128
|
+
const { address: addressFromConfig, tls: tlsFromConfig, channelArgs, interceptors, connectTimeout, ...rest } = options;
|
|
129
|
+
const address = addressFromConfig ? (0, internal_non_workflow_1.normalizeGrpcEndpointAddress)(addressFromConfig, 443) : 'saas-api.tmprl.cloud:443';
|
|
130
|
+
const tls = (0, internal_non_workflow_1.normalizeTlsConfig)(tlsFromConfig) ?? {};
|
|
131
|
+
return {
|
|
132
|
+
address,
|
|
133
|
+
credentials: grpc.credentials.combineChannelCredentials(grpc.credentials.createSsl()),
|
|
134
|
+
channelArgs: {
|
|
135
|
+
'grpc.keepalive_permit_without_calls': 1,
|
|
136
|
+
'grpc.keepalive_time_ms': 30000,
|
|
137
|
+
'grpc.keepalive_timeout_ms': 15000,
|
|
138
|
+
max_receive_message_length: 128 * 1024 * 1024, // 128 MB
|
|
139
|
+
...channelArgs,
|
|
140
|
+
...(tls.serverNameOverride
|
|
141
|
+
? {
|
|
142
|
+
'grpc.ssl_target_name_override': tls.serverNameOverride,
|
|
143
|
+
'grpc.default_authority': tls.serverNameOverride,
|
|
144
|
+
}
|
|
145
|
+
: undefined),
|
|
146
|
+
},
|
|
147
|
+
interceptors: interceptors ?? [(0, client_1.makeGrpcRetryInterceptor)((0, client_1.defaultGrpcRetryOptions)())],
|
|
148
|
+
metadata: {},
|
|
149
|
+
connectTimeoutMs: (0, time_1.msOptionalToNumber)(connectTimeout) ?? 10000,
|
|
150
|
+
...(0, internal_non_workflow_1.filterNullAndUndefined)(rest),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Client connection to the Temporal Cloud Operations Service endpoint.
|
|
155
|
+
*
|
|
156
|
+
* ⚠️ Connections are expensive to construct and should be reused.
|
|
157
|
+
* Make sure to {@link close} any unused connections to avoid leaking resources.
|
|
158
|
+
*
|
|
159
|
+
* @experimental
|
|
160
|
+
*/
|
|
161
|
+
class CloudOperationsConnection {
|
|
162
|
+
static createCtorOptions(options) {
|
|
163
|
+
const normalizedOptions = normalizeGRPCConfig(options);
|
|
164
|
+
const apiKeyFnRef = {};
|
|
165
|
+
if (typeof normalizedOptions.apiKey === 'string') {
|
|
166
|
+
const apiKey = normalizedOptions.apiKey;
|
|
167
|
+
apiKeyFnRef.fn = () => apiKey;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
apiKeyFnRef.fn = normalizedOptions.apiKey;
|
|
171
|
+
}
|
|
172
|
+
// Allow overriding this
|
|
173
|
+
normalizedOptions.metadata['client-name'] ??= 'temporal-typescript';
|
|
174
|
+
normalizedOptions.metadata['client-version'] ??= pkg_1.default.version;
|
|
175
|
+
const client = new this.Client(normalizedOptions.address, normalizedOptions.credentials, normalizedOptions.channelArgs);
|
|
176
|
+
const callContextStorage = new node_async_hooks_1.AsyncLocalStorage();
|
|
177
|
+
const cloudRpcImpl = this.generateRPCImplementation({
|
|
178
|
+
serviceName: 'temporal.api.cloud.cloudservice.v1.CloudService',
|
|
179
|
+
client,
|
|
180
|
+
callContextStorage,
|
|
181
|
+
interceptors: normalizedOptions?.interceptors,
|
|
182
|
+
staticMetadata: normalizedOptions.metadata,
|
|
183
|
+
apiKeyFnRef,
|
|
184
|
+
});
|
|
185
|
+
const cloudService = types_1.CloudService.create(cloudRpcImpl, false, false);
|
|
186
|
+
const healthRpcImpl = this.generateRPCImplementation({
|
|
187
|
+
serviceName: 'grpc.health.v1.Health',
|
|
188
|
+
client,
|
|
189
|
+
callContextStorage,
|
|
190
|
+
interceptors: normalizedOptions?.interceptors,
|
|
191
|
+
staticMetadata: normalizedOptions.metadata,
|
|
192
|
+
apiKeyFnRef,
|
|
193
|
+
});
|
|
194
|
+
const healthService = client_1.HealthService.create(healthRpcImpl, false, false);
|
|
195
|
+
return {
|
|
196
|
+
client,
|
|
197
|
+
callContextStorage,
|
|
198
|
+
cloudService,
|
|
199
|
+
healthService,
|
|
200
|
+
options: normalizedOptions,
|
|
201
|
+
apiKeyFnRef,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Create a lazy `CloudOperationsConnection` instance.
|
|
206
|
+
*
|
|
207
|
+
* This method does not verify connectivity with the server. We recommend using {@link connect} instead.
|
|
208
|
+
*/
|
|
209
|
+
static lazy(options) {
|
|
210
|
+
return new this(this.createCtorOptions(options));
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Establish a connection with the server and return a `CloudOperationsConnection` instance.
|
|
214
|
+
*
|
|
215
|
+
* This is the preferred method of creating connections as it verifies connectivity.
|
|
216
|
+
*/
|
|
217
|
+
static async connect(options) {
|
|
218
|
+
const conn = this.lazy(options);
|
|
219
|
+
await conn.ensureConnected();
|
|
220
|
+
return conn;
|
|
221
|
+
}
|
|
222
|
+
constructor({ options, client, cloudService, healthService, callContextStorage, apiKeyFnRef, }) {
|
|
223
|
+
this.options = options;
|
|
224
|
+
this.client = client;
|
|
225
|
+
this.cloudService = cloudService;
|
|
226
|
+
this.healthService = healthService;
|
|
227
|
+
this.callContextStorage = callContextStorage;
|
|
228
|
+
this.apiKeyFnRef = apiKeyFnRef;
|
|
229
|
+
}
|
|
230
|
+
static generateRPCImplementation({ serviceName, client, callContextStorage, interceptors, staticMetadata, apiKeyFnRef, }) {
|
|
231
|
+
return (method, requestData, callback) => {
|
|
232
|
+
const metadataContainer = new grpc.Metadata();
|
|
233
|
+
const { metadata, deadline, abortSignal } = callContextStorage.getStore() ?? {};
|
|
234
|
+
if (apiKeyFnRef.fn) {
|
|
235
|
+
const apiKey = apiKeyFnRef.fn();
|
|
236
|
+
if (apiKey)
|
|
237
|
+
metadataContainer.set('Authorization', `Bearer ${apiKey}`);
|
|
238
|
+
}
|
|
239
|
+
for (const [k, v] of Object.entries(staticMetadata)) {
|
|
240
|
+
metadataContainer.set(k, v);
|
|
241
|
+
}
|
|
242
|
+
if (metadata != null) {
|
|
243
|
+
for (const [k, v] of Object.entries(metadata)) {
|
|
244
|
+
metadataContainer.set(k, v);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const call = client.makeUnaryRequest(`/${serviceName}/${method.name}`, (arg) => arg, (arg) => arg, requestData, metadataContainer, { interceptors, deadline }, callback);
|
|
248
|
+
if (abortSignal != null) {
|
|
249
|
+
const listener = () => call.cancel();
|
|
250
|
+
abortSignal.addEventListener('abort', listener);
|
|
251
|
+
call.on('status', () => abortSignal.removeEventListener('abort', listener));
|
|
252
|
+
}
|
|
253
|
+
return call;
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Ensure connection can be established.
|
|
258
|
+
*/
|
|
259
|
+
async ensureConnected() {
|
|
260
|
+
if (this.connectPromise == null) {
|
|
261
|
+
const deadline = Date.now() + this.options.connectTimeoutMs;
|
|
262
|
+
this.connectPromise = (async () => {
|
|
263
|
+
await this.untilReady(deadline);
|
|
264
|
+
})();
|
|
265
|
+
}
|
|
266
|
+
return this.connectPromise;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Set a deadline for any service requests executed in `fn`'s scope.
|
|
270
|
+
*
|
|
271
|
+
* The deadline is a point in time after which any pending gRPC request will be considered as failed;
|
|
272
|
+
* this will locally result in the request call throwing a {@link grpc.ServiceError|ServiceError}
|
|
273
|
+
* with code {@link grpc.status.DEADLINE_EXCEEDED|DEADLINE_EXCEEDED}.
|
|
274
|
+
*
|
|
275
|
+
* It is stronly recommended to explicitly set deadlines. If no deadline is set, then it is
|
|
276
|
+
* possible for the client to end up waiting forever for a response.
|
|
277
|
+
*
|
|
278
|
+
* @param deadline a point in time after which the request will be considered as failed; either a
|
|
279
|
+
* Date object, or a number of milliseconds since the Unix epoch (UTC).
|
|
280
|
+
* @returns the value returned from `fn`
|
|
281
|
+
*
|
|
282
|
+
* @see https://grpc.io/docs/guides/deadlines/
|
|
283
|
+
*/
|
|
284
|
+
async withDeadline(deadline, fn) {
|
|
285
|
+
const cc = this.callContextStorage.getStore();
|
|
286
|
+
return await this.callContextStorage.run({ ...cc, deadline }, fn);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Set an {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal | `AbortSignal`} that, when aborted,
|
|
290
|
+
* cancels any ongoing requests executed in `fn`'s scope.
|
|
291
|
+
*
|
|
292
|
+
* @returns value returned from `fn`
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
*
|
|
296
|
+
* ```ts
|
|
297
|
+
* const ctrl = new AbortController();
|
|
298
|
+
* setTimeout(() => ctrl.abort(), 10_000);
|
|
299
|
+
* // 👇 throws if incomplete by the timeout.
|
|
300
|
+
* await conn.withAbortSignal(ctrl.signal, () => client.cloudService.someOperation(...));
|
|
301
|
+
* ```
|
|
302
|
+
*/
|
|
303
|
+
async withAbortSignal(abortSignal, fn) {
|
|
304
|
+
const cc = this.callContextStorage.getStore();
|
|
305
|
+
return await this.callContextStorage.run({ ...cc, abortSignal }, fn);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Set metadata for any service requests executed in `fn`'s scope.
|
|
309
|
+
*
|
|
310
|
+
* The provided metadata is merged on top of any existing metadata in current scope.
|
|
311
|
+
*
|
|
312
|
+
* @returns value returned from `fn`
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
*
|
|
316
|
+
* ```ts
|
|
317
|
+
* const result = await conn.withMetadata({ someMetadata: 'value' }, () =>
|
|
318
|
+
* conn.withMetadata({ otherKey: 'set' }, () => client.cloudService.someOperation(...)))
|
|
319
|
+
* );
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
async withMetadata(metadata, fn) {
|
|
323
|
+
const cc = this.callContextStorage.getStore();
|
|
324
|
+
return await this.callContextStorage.run({
|
|
325
|
+
...cc,
|
|
326
|
+
metadata: { ...cc?.metadata, ...metadata },
|
|
327
|
+
}, fn);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Set the apiKey for any service requests executed in `fn`'s scope (thus changing the `Authorization` header).
|
|
331
|
+
*
|
|
332
|
+
* @returns value returned from `fn`
|
|
333
|
+
*
|
|
334
|
+
* @example
|
|
335
|
+
*
|
|
336
|
+
* ```ts
|
|
337
|
+
* const workflowHandle = await conn.withApiKey('secret', () =>
|
|
338
|
+
* conn.withMetadata({ otherKey: 'set' }, () => client.start(options)))
|
|
339
|
+
* );
|
|
340
|
+
* ```
|
|
341
|
+
*/
|
|
342
|
+
async withApiKey(apiKey, fn) {
|
|
343
|
+
const cc = this.callContextStorage.getStore();
|
|
344
|
+
return await this.callContextStorage.run({
|
|
345
|
+
...cc,
|
|
346
|
+
metadata: { ...cc?.metadata, Authorization: `Bearer ${apiKey}` },
|
|
347
|
+
}, fn);
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Set the {@link ConnectionOptions.apiKey} for all subsequent requests.
|
|
351
|
+
* A static string or a callback function may be provided.
|
|
352
|
+
*/
|
|
353
|
+
setApiKey(apiKey) {
|
|
354
|
+
if (typeof apiKey === 'string') {
|
|
355
|
+
if (apiKey === '') {
|
|
356
|
+
throw new TypeError('`apiKey` must not be an empty string');
|
|
357
|
+
}
|
|
358
|
+
this.apiKeyFnRef.fn = () => apiKey;
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
this.apiKeyFnRef.fn = apiKey;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Wait for successful connection to the server.
|
|
366
|
+
*
|
|
367
|
+
* @see https://grpc.github.io/grpc/node/grpc.Client.html#waitForReady__anchor
|
|
368
|
+
*/
|
|
369
|
+
async untilReady(deadline) {
|
|
370
|
+
return new Promise((resolve, reject) => {
|
|
371
|
+
this.client.waitForReady(deadline, (err) => {
|
|
372
|
+
if (err) {
|
|
373
|
+
reject(err);
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
resolve();
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Close the underlying gRPC client.
|
|
383
|
+
*
|
|
384
|
+
* Make sure to call this method to ensure proper resource cleanup.
|
|
385
|
+
*/
|
|
386
|
+
close() {
|
|
387
|
+
this.client.close();
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
exports.CloudOperationsConnection = CloudOperationsConnection;
|
|
391
|
+
CloudOperationsConnection.Client = grpc.makeGenericClientConstructor({}, 'CloudService', {});
|
|
392
|
+
//# sourceMappingURL=cloud-operations-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-operations-client.js","sourceRoot":"","sources":["../src/cloud-operations-client.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudOperationsConnection = exports.CloudOperationsClient = void 0;
|
|
4
|
+
/** @experimental */
|
|
5
|
+
var cloud_operations_client_1 = require("./cloud-operations-client");
|
|
6
|
+
Object.defineProperty(exports, "CloudOperationsClient", { enumerable: true, get: function () { return cloud_operations_client_1.CloudOperationsClient; } });
|
|
7
|
+
Object.defineProperty(exports, "CloudOperationsConnection", { enumerable: true, get: function () { return cloud_operations_client_1.CloudOperationsConnection; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACpB,qEAKmC;AAJjC,gIAAA,qBAAqB,OAAA;AACrB,oIAAA,yBAAyB,OAAA"}
|
package/lib/pkg.d.ts
ADDED
package/lib/pkg.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// ../package.json is outside of the TS project rootDir which causes TS to complain about this import.
|
|
7
|
+
// We do not want to change the rootDir because it messes up the output structure.
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
11
|
+
exports.default = package_json_1.default;
|
|
12
|
+
//# sourceMappingURL=pkg.js.map
|
package/lib/pkg.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../src/pkg.ts"],"names":[],"mappings":";;;;;AAAA,sGAAsG;AACtG,kFAAkF;AAClF,6DAA6D;AAC7D,aAAa;AACb,mEAAkC;AAElC,kBAAe,sBAAwC,CAAC"}
|
package/lib/types.d.ts
ADDED
package/lib/types.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.CloudService = void 0;
|
|
27
|
+
const proto = __importStar(require("@temporalio/proto"));
|
|
28
|
+
exports.CloudService = proto.temporal.api.cloud.cloudservice.v1.CloudService;
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAG5B,oBAAY,GAAK,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,cAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@temporalio/cloud",
|
|
3
|
+
"version": "1.11.3",
|
|
4
|
+
"description": "Temporal.io SDK — Temporal Cloud Client",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"types": "./lib/index.d.ts",
|
|
7
|
+
"scripts": {},
|
|
8
|
+
"keywords": [
|
|
9
|
+
"temporal",
|
|
10
|
+
"workflow",
|
|
11
|
+
"client",
|
|
12
|
+
"temporal cloud"
|
|
13
|
+
],
|
|
14
|
+
"author": "Temporal Technologies Inc. <sdk@temporal.io>",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@grpc/grpc-js": "^1.10.7",
|
|
18
|
+
"@temporalio/client": "1.11.3",
|
|
19
|
+
"@temporalio/common": "1.11.3",
|
|
20
|
+
"@temporalio/proto": "1.11.3",
|
|
21
|
+
"abort-controller": "^3.0.0"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/temporalio/sdk-typescript/issues"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/temporalio/sdk-typescript.git",
|
|
29
|
+
"directory": "packages/cloud"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/temporalio/sdk-typescript/tree/main/packages/cloud",
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"src",
|
|
37
|
+
"lib"
|
|
38
|
+
],
|
|
39
|
+
"gitHead": "4c90f9d844710abf7e085662373aac226ec09017"
|
|
40
|
+
}
|