@salesforce/core 3.31.4 → 3.31.7

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 (153) hide show
  1. package/LICENSE.txt +11 -11
  2. package/README.md +222 -222
  3. package/lib/config/aliasesConfig.d.ts +12 -12
  4. package/lib/config/aliasesConfig.js +27 -27
  5. package/lib/config/authInfoConfig.d.ts +19 -19
  6. package/lib/config/authInfoConfig.js +34 -34
  7. package/lib/config/config.d.ts +311 -311
  8. package/lib/config/config.js +574 -574
  9. package/lib/config/configAggregator.d.ts +232 -232
  10. package/lib/config/configAggregator.js +379 -379
  11. package/lib/config/configFile.d.ts +199 -199
  12. package/lib/config/configFile.js +340 -340
  13. package/lib/config/configGroup.d.ts +141 -141
  14. package/lib/config/configGroup.js +224 -224
  15. package/lib/config/configStore.d.ts +241 -241
  16. package/lib/config/configStore.js +352 -352
  17. package/lib/config/envVars.d.ts +101 -101
  18. package/lib/config/envVars.js +456 -456
  19. package/lib/config/orgUsersConfig.d.ts +31 -31
  20. package/lib/config/orgUsersConfig.js +41 -41
  21. package/lib/config/sandboxOrgConfig.d.ts +37 -37
  22. package/lib/config/sandboxOrgConfig.js +50 -50
  23. package/lib/config/sandboxProcessCache.d.ts +16 -16
  24. package/lib/config/sandboxProcessCache.js +37 -37
  25. package/lib/config/tokensConfig.d.ts +10 -10
  26. package/lib/config/tokensConfig.js +28 -28
  27. package/lib/config/ttlConfig.d.ts +34 -34
  28. package/lib/config/ttlConfig.js +54 -54
  29. package/lib/crypto/crypto.d.ts +54 -54
  30. package/lib/crypto/crypto.js +220 -220
  31. package/lib/crypto/keyChain.d.ts +8 -8
  32. package/lib/crypto/keyChain.js +61 -61
  33. package/lib/crypto/keyChainImpl.d.ts +116 -116
  34. package/lib/crypto/keyChainImpl.js +486 -486
  35. package/lib/crypto/secureBuffer.d.ts +46 -46
  36. package/lib/crypto/secureBuffer.js +82 -82
  37. package/lib/deviceOauthService.d.ts +71 -71
  38. package/lib/deviceOauthService.js +191 -191
  39. package/lib/exported.d.ts +38 -38
  40. package/lib/exported.js +118 -118
  41. package/lib/global.d.ts +70 -70
  42. package/lib/global.js +109 -109
  43. package/lib/lifecycleEvents.d.ts +93 -93
  44. package/lib/lifecycleEvents.js +188 -188
  45. package/lib/logger.d.ts +381 -381
  46. package/lib/logger.js +734 -734
  47. package/lib/messages.d.ts +291 -291
  48. package/lib/messages.js +543 -543
  49. package/lib/org/authInfo.d.ts +344 -344
  50. package/lib/org/authInfo.js +892 -892
  51. package/lib/org/authRemover.d.ts +88 -88
  52. package/lib/org/authRemover.js +182 -182
  53. package/lib/org/connection.d.ts +197 -197
  54. package/lib/org/connection.js +395 -395
  55. package/lib/org/index.d.ts +6 -6
  56. package/lib/org/index.js +28 -28
  57. package/lib/org/org.d.ts +558 -558
  58. package/lib/org/org.js +1267 -1267
  59. package/lib/org/orgConfigProperties.d.ts +69 -69
  60. package/lib/org/orgConfigProperties.js +136 -136
  61. package/lib/org/permissionSetAssignment.d.ts +35 -35
  62. package/lib/org/permissionSetAssignment.js +125 -125
  63. package/lib/org/scratchOrgCache.d.ts +20 -20
  64. package/lib/org/scratchOrgCache.js +32 -32
  65. package/lib/org/scratchOrgCreate.d.ts +54 -54
  66. package/lib/org/scratchOrgCreate.js +216 -216
  67. package/lib/org/scratchOrgErrorCodes.d.ts +10 -10
  68. package/lib/org/scratchOrgErrorCodes.js +88 -88
  69. package/lib/org/scratchOrgFeatureDeprecation.d.ts +26 -26
  70. package/lib/org/scratchOrgFeatureDeprecation.js +109 -109
  71. package/lib/org/scratchOrgInfoApi.d.ts +68 -68
  72. package/lib/org/scratchOrgInfoApi.js +413 -413
  73. package/lib/org/scratchOrgInfoGenerator.d.ts +64 -64
  74. package/lib/org/scratchOrgInfoGenerator.js +241 -241
  75. package/lib/org/scratchOrgLifecycleEvents.d.ts +10 -10
  76. package/lib/org/scratchOrgLifecycleEvents.js +40 -40
  77. package/lib/org/scratchOrgSettingsGenerator.d.ts +78 -78
  78. package/lib/org/scratchOrgSettingsGenerator.js +276 -276
  79. package/lib/org/scratchOrgTypes.d.ts +43 -43
  80. package/lib/org/scratchOrgTypes.js +8 -8
  81. package/lib/org/user.d.ts +187 -187
  82. package/lib/org/user.js +448 -448
  83. package/lib/schema/printer.d.ts +79 -79
  84. package/lib/schema/printer.js +260 -260
  85. package/lib/schema/validator.d.ts +70 -70
  86. package/lib/schema/validator.js +169 -169
  87. package/lib/sfError.d.ts +73 -73
  88. package/lib/sfError.js +136 -136
  89. package/lib/sfProject.d.ts +357 -357
  90. package/lib/sfProject.js +671 -671
  91. package/lib/stateAggregator/accessors/aliasAccessor.d.ts +98 -98
  92. package/lib/stateAggregator/accessors/aliasAccessor.js +145 -145
  93. package/lib/stateAggregator/accessors/orgAccessor.d.ts +101 -101
  94. package/lib/stateAggregator/accessors/orgAccessor.js +240 -240
  95. package/lib/stateAggregator/accessors/sandboxAccessor.d.ts +8 -8
  96. package/lib/stateAggregator/accessors/sandboxAccessor.js +27 -27
  97. package/lib/stateAggregator/accessors/tokenAccessor.d.ts +63 -63
  98. package/lib/stateAggregator/accessors/tokenAccessor.js +79 -79
  99. package/lib/stateAggregator/index.d.ts +4 -4
  100. package/lib/stateAggregator/index.js +26 -26
  101. package/lib/stateAggregator/stateAggregator.d.ts +25 -25
  102. package/lib/stateAggregator/stateAggregator.js +45 -45
  103. package/lib/status/myDomainResolver.d.ts +66 -66
  104. package/lib/status/myDomainResolver.js +124 -124
  105. package/lib/status/pollingClient.d.ts +85 -85
  106. package/lib/status/pollingClient.js +115 -115
  107. package/lib/status/streamingClient.d.ts +244 -244
  108. package/lib/status/streamingClient.js +436 -436
  109. package/lib/status/types.d.ts +89 -89
  110. package/lib/status/types.js +17 -17
  111. package/lib/testSetup.d.ts +553 -553
  112. package/lib/testSetup.js +871 -871
  113. package/lib/util/cache.d.ts +11 -11
  114. package/lib/util/cache.js +69 -69
  115. package/lib/util/checkLightningDomain.d.ts +1 -1
  116. package/lib/util/checkLightningDomain.js +28 -28
  117. package/lib/util/directoryWriter.d.ts +12 -12
  118. package/lib/util/directoryWriter.js +53 -53
  119. package/lib/util/getJwtAudienceUrl.d.ts +4 -4
  120. package/lib/util/getJwtAudienceUrl.js +18 -18
  121. package/lib/util/internal.d.ts +58 -58
  122. package/lib/util/internal.js +118 -118
  123. package/lib/util/jsonXmlTools.d.ts +14 -14
  124. package/lib/util/jsonXmlTools.js +38 -38
  125. package/lib/util/mapKeys.d.ts +14 -14
  126. package/lib/util/mapKeys.js +51 -51
  127. package/lib/util/sfdc.d.ts +52 -52
  128. package/lib/util/sfdc.js +85 -85
  129. package/lib/util/sfdcUrl.d.ts +72 -72
  130. package/lib/util/sfdcUrl.js +215 -215
  131. package/lib/util/structuredWriter.d.ts +9 -9
  132. package/lib/util/structuredWriter.js +2 -2
  133. package/lib/util/zipWriter.d.ts +16 -16
  134. package/lib/util/zipWriter.js +67 -67
  135. package/lib/webOAuthServer.d.ts +156 -156
  136. package/lib/webOAuthServer.js +388 -388
  137. package/messages/auth.md +37 -37
  138. package/messages/config.md +156 -156
  139. package/messages/connection.md +30 -30
  140. package/messages/core.json +20 -20
  141. package/messages/core.md +67 -67
  142. package/messages/encryption.md +85 -85
  143. package/messages/envVars.md +303 -303
  144. package/messages/org.md +63 -63
  145. package/messages/permissionSetAssignment.md +31 -31
  146. package/messages/scratchOrgCreate.md +23 -23
  147. package/messages/scratchOrgErrorCodes.md +115 -115
  148. package/messages/scratchOrgFeatureDeprecation.md +11 -11
  149. package/messages/scratchOrgInfoApi.md +15 -15
  150. package/messages/scratchOrgInfoGenerator.md +23 -23
  151. package/messages/streaming.md +23 -23
  152. package/messages/user.md +35 -35
  153. package/package.json +97 -97
@@ -1,125 +1,125 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2020, salesforce.com, inc.
4
- * All rights reserved.
5
- * Licensed under the BSD 3-Clause license.
6
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.MyDomainResolver = void 0;
10
- const dns_1 = require("dns");
11
- const url_1 = require("url");
12
- const util_1 = require("util");
13
- const ts_types_1 = require("@salesforce/ts-types");
14
- const kit_1 = require("@salesforce/kit");
15
- const logger_1 = require("../logger");
16
- const sfdcUrl_1 = require("../util/sfdcUrl");
17
- const pollingClient_1 = require("./pollingClient");
18
- // Timeout for DNS lookup polling defaults to 3 seconds and should always be at least 3 seconds
19
- const DNS_TIMEOUT = Math.max(3, new kit_1.Env().getNumber('SFDX_DNS_TIMEOUT', 3));
20
- // Retry frequency for DNS lookup polling defaults to 1 second and should be at least 1 second
21
- const DNS_RETRY_FREQ = Math.max(1, new kit_1.Env().getNumber('SFDX_DNS_RETRY_FREQUENCY', 1));
22
- /**
23
- * A class used to resolve MyDomains. After a ScratchOrg is created its host name my not be propagated to the
24
- * Salesforce DNS service. This service is not exclusive to Salesforce My Domain URL and could be used for any hostname.
25
- *
26
- * ```
27
- * (async () => {
28
- * const options: MyDomainResolver.Options = {
29
- * url: new URL('http://mydomain.salesforce.com'),
30
- * timeout: Duration.minutes(5),
31
- * frequency: Duration.seconds(10)
32
- * };
33
- * const resolver: MyDomainResolver = await MyDomainResolver.create(options);
34
- * const ipAddress: AnyJson = await resolver.resolve();
35
- * console.log(`Successfully resolved host: ${options.url} to address: ${ipAddress}`);
36
- * })();
37
- * ```
38
- */
39
- class MyDomainResolver extends kit_1.AsyncOptionalCreatable {
40
- /**
41
- * Constructor
42
- * **Do not directly construct instances of this class -- use {@link MyDomainResolver.create} instead.**
43
- *
44
- * @param options The options for the class instance
45
- */
46
- constructor(options) {
47
- super(options);
48
- this.options = options ?? { url: MyDomainResolver.DEFAULT_DOMAIN };
49
- }
50
- getTimeout() {
51
- return this.options.timeout ?? kit_1.Duration.seconds(DNS_TIMEOUT);
52
- }
53
- getFrequency() {
54
- return this.options.frequency ?? kit_1.Duration.seconds(DNS_RETRY_FREQ);
55
- }
56
- /**
57
- * Method that performs the dns lookup of the host. If the lookup fails the internal polling client will try again
58
- * given the optional interval. Returns the resolved ip address.
59
- *
60
- * If SFDX_DISABLE_DNS_CHECK environment variable is set to true, it will immediately return the host without
61
- * executing the dns loookup.
62
- */
63
- async resolve() {
64
- if (new kit_1.Env().getBoolean('SFDX_DISABLE_DNS_CHECK', false)) {
65
- this.logger.debug('SFDX_DISABLE_DNS_CHECK set to true. Skipping DNS check...');
66
- return this.options.url.host;
67
- }
68
- // eslint-disable-next-line @typescript-eslint/no-this-alias
69
- const self = this;
70
- const pollingOptions = {
71
- async poll() {
72
- const { host } = self.options.url;
73
- let dnsResult;
74
- try {
75
- self.logger.debug(`Attempting to resolve url: ${host}`);
76
- if (new sfdcUrl_1.SfdcUrl(self.options.url).isLocalUrl()) {
77
- return {
78
- completed: true,
79
- payload: '127.0.0.1',
80
- };
81
- }
82
- dnsResult = await (0, util_1.promisify)(dns_1.lookup)(host);
83
- self.logger.debug(`Successfully resolved host: ${host} result: ${JSON.stringify(dnsResult)}`);
84
- return {
85
- completed: true,
86
- payload: dnsResult.address,
87
- };
88
- }
89
- catch (e) {
90
- self.logger.debug(`An error occurred trying to resolve: ${host}`);
91
- self.logger.debug(`Error: ${e.message}`);
92
- self.logger.debug('Re-trying dns lookup again....');
93
- return {
94
- completed: false,
95
- };
96
- }
97
- },
98
- timeout: this.getTimeout(),
99
- frequency: this.getFrequency(),
100
- timeoutErrorName: 'MyDomainResolverTimeoutError',
101
- };
102
- const client = await pollingClient_1.PollingClient.create(pollingOptions);
103
- return (0, ts_types_1.ensureString)(await client.subscribe());
104
- }
105
- async getCnames() {
106
- try {
107
- await this.resolve();
108
- return await (0, util_1.promisify)(dns_1.resolveCname)(this.options.url.host);
109
- }
110
- catch (e) {
111
- this.logger.debug(`An error occurred trying to resolve: ${this.options.url.host}`);
112
- this.logger.debug(`Error: ${e.message}`);
113
- return [];
114
- }
115
- }
116
- /**
117
- * Used to initialize asynchronous components.
118
- */
119
- async init() {
120
- this.logger = await logger_1.Logger.child('MyDomainResolver');
121
- }
122
- }
123
- exports.MyDomainResolver = MyDomainResolver;
124
- MyDomainResolver.DEFAULT_DOMAIN = new url_1.URL('https://login.salesforce.com');
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2020, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MyDomainResolver = void 0;
10
+ const dns_1 = require("dns");
11
+ const url_1 = require("url");
12
+ const util_1 = require("util");
13
+ const ts_types_1 = require("@salesforce/ts-types");
14
+ const kit_1 = require("@salesforce/kit");
15
+ const logger_1 = require("../logger");
16
+ const sfdcUrl_1 = require("../util/sfdcUrl");
17
+ const pollingClient_1 = require("./pollingClient");
18
+ // Timeout for DNS lookup polling defaults to 3 seconds and should always be at least 3 seconds
19
+ const DNS_TIMEOUT = Math.max(3, new kit_1.Env().getNumber('SFDX_DNS_TIMEOUT', 3));
20
+ // Retry frequency for DNS lookup polling defaults to 1 second and should be at least 1 second
21
+ const DNS_RETRY_FREQ = Math.max(1, new kit_1.Env().getNumber('SFDX_DNS_RETRY_FREQUENCY', 1));
22
+ /**
23
+ * A class used to resolve MyDomains. After a ScratchOrg is created its host name my not be propagated to the
24
+ * Salesforce DNS service. This service is not exclusive to Salesforce My Domain URL and could be used for any hostname.
25
+ *
26
+ * ```
27
+ * (async () => {
28
+ * const options: MyDomainResolver.Options = {
29
+ * url: new URL('http://mydomain.salesforce.com'),
30
+ * timeout: Duration.minutes(5),
31
+ * frequency: Duration.seconds(10)
32
+ * };
33
+ * const resolver: MyDomainResolver = await MyDomainResolver.create(options);
34
+ * const ipAddress: AnyJson = await resolver.resolve();
35
+ * console.log(`Successfully resolved host: ${options.url} to address: ${ipAddress}`);
36
+ * })();
37
+ * ```
38
+ */
39
+ class MyDomainResolver extends kit_1.AsyncOptionalCreatable {
40
+ /**
41
+ * Constructor
42
+ * **Do not directly construct instances of this class -- use {@link MyDomainResolver.create} instead.**
43
+ *
44
+ * @param options The options for the class instance
45
+ */
46
+ constructor(options) {
47
+ super(options);
48
+ this.options = options ?? { url: MyDomainResolver.DEFAULT_DOMAIN };
49
+ }
50
+ getTimeout() {
51
+ return this.options.timeout ?? kit_1.Duration.seconds(DNS_TIMEOUT);
52
+ }
53
+ getFrequency() {
54
+ return this.options.frequency ?? kit_1.Duration.seconds(DNS_RETRY_FREQ);
55
+ }
56
+ /**
57
+ * Method that performs the dns lookup of the host. If the lookup fails the internal polling client will try again
58
+ * given the optional interval. Returns the resolved ip address.
59
+ *
60
+ * If SFDX_DISABLE_DNS_CHECK environment variable is set to true, it will immediately return the host without
61
+ * executing the dns loookup.
62
+ */
63
+ async resolve() {
64
+ if (new kit_1.Env().getBoolean('SFDX_DISABLE_DNS_CHECK', false)) {
65
+ this.logger.debug('SFDX_DISABLE_DNS_CHECK set to true. Skipping DNS check...');
66
+ return this.options.url.host;
67
+ }
68
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
69
+ const self = this;
70
+ const pollingOptions = {
71
+ async poll() {
72
+ const { host } = self.options.url;
73
+ let dnsResult;
74
+ try {
75
+ self.logger.debug(`Attempting to resolve url: ${host}`);
76
+ if (new sfdcUrl_1.SfdcUrl(self.options.url).isLocalUrl()) {
77
+ return {
78
+ completed: true,
79
+ payload: '127.0.0.1',
80
+ };
81
+ }
82
+ dnsResult = await (0, util_1.promisify)(dns_1.lookup)(host);
83
+ self.logger.debug(`Successfully resolved host: ${host} result: ${JSON.stringify(dnsResult)}`);
84
+ return {
85
+ completed: true,
86
+ payload: dnsResult.address,
87
+ };
88
+ }
89
+ catch (e) {
90
+ self.logger.debug(`An error occurred trying to resolve: ${host}`);
91
+ self.logger.debug(`Error: ${e.message}`);
92
+ self.logger.debug('Re-trying dns lookup again....');
93
+ return {
94
+ completed: false,
95
+ };
96
+ }
97
+ },
98
+ timeout: this.getTimeout(),
99
+ frequency: this.getFrequency(),
100
+ timeoutErrorName: 'MyDomainResolverTimeoutError',
101
+ };
102
+ const client = await pollingClient_1.PollingClient.create(pollingOptions);
103
+ return (0, ts_types_1.ensureString)(await client.subscribe());
104
+ }
105
+ async getCnames() {
106
+ try {
107
+ await this.resolve();
108
+ return await (0, util_1.promisify)(dns_1.resolveCname)(this.options.url.host);
109
+ }
110
+ catch (e) {
111
+ this.logger.debug(`An error occurred trying to resolve: ${this.options.url.host}`);
112
+ this.logger.debug(`Error: ${e.message}`);
113
+ return [];
114
+ }
115
+ }
116
+ /**
117
+ * Used to initialize asynchronous components.
118
+ */
119
+ async init() {
120
+ this.logger = await logger_1.Logger.child('MyDomainResolver');
121
+ }
122
+ }
123
+ exports.MyDomainResolver = MyDomainResolver;
124
+ MyDomainResolver.DEFAULT_DOMAIN = new url_1.URL('https://login.salesforce.com');
125
125
  //# sourceMappingURL=myDomainResolver.js.map
@@ -1,85 +1,85 @@
1
- import { AsyncOptionalCreatable, Duration } from '@salesforce/kit';
2
- import { AnyJson } from '@salesforce/ts-types';
3
- import { Logger } from '../logger';
4
- import { StatusResult } from './types';
5
- /**
6
- * This is a polling client that can be used to poll the status of long running tasks. It can be used as a replacement
7
- * for Streaming when streaming topics are not available or when streaming handshakes are failing. Why wouldn't you
8
- * want to use this? It can impact Salesforce API usage.
9
- *
10
- * ```
11
- * const options: PollingClient.Options = {
12
- * async poll(): Promise<StatusResult> {
13
- * return Promise.resolve({ completed: true, payload: 'Hello World' });
14
- * },
15
- * frequency: Duration.milliseconds(10),
16
- * timeout: Duration.minutes(1)
17
- * };
18
- * const client = await PollingClient.create(options);
19
- * const pollResult = await client.subscribe();
20
- * console.log(`pollResult: ${pollResult}`);
21
- * ```
22
- */
23
- export declare class PollingClient extends AsyncOptionalCreatable<PollingClient.Options> {
24
- protected logger: Logger;
25
- private options;
26
- /**
27
- * Constructor
28
- *
29
- * @param options Polling client options
30
- * @ignore
31
- */
32
- constructor(options?: PollingClient.Options);
33
- /**
34
- * Asynchronous initializer.
35
- */
36
- init(): Promise<void>;
37
- /**
38
- * Returns a promise to call the specified polling function using the interval and timeout specified
39
- * in the polling options.
40
- */
41
- subscribe<T = AnyJson>(): Promise<T>;
42
- }
43
- export declare namespace PollingClient {
44
- /**
45
- * Options for the polling client.
46
- */
47
- interface Options {
48
- /**
49
- * Polling function.
50
- */
51
- poll: () => Promise<StatusResult>;
52
- /**
53
- * How frequent should the polling function be called.
54
- */
55
- frequency: Duration;
56
- /**
57
- * Hard timeout for polling.
58
- */
59
- timeout: Duration;
60
- /**
61
- * Change the name of the timeout error.
62
- *
63
- * ```
64
- * if (err.name === 'MyChangedName) ...
65
- * ```
66
- */
67
- timeoutErrorName?: string;
68
- }
69
- /**
70
- * Default options set for polling. The default options specify a timeout of 3 minutes and polling frequency of 15
71
- * seconds;
72
- */
73
- class DefaultPollingOptions implements PollingClient.Options {
74
- frequency: Duration;
75
- poll: () => Promise<StatusResult>;
76
- timeout: Duration;
77
- /**
78
- * constructor
79
- *
80
- * @param poll The function used for polling status.
81
- * {@link StatusResult}
82
- */
83
- constructor(poll: () => Promise<StatusResult>);
84
- }
85
- }
1
+ import { AsyncOptionalCreatable, Duration } from '@salesforce/kit';
2
+ import { AnyJson } from '@salesforce/ts-types';
3
+ import { Logger } from '../logger';
4
+ import { StatusResult } from './types';
5
+ /**
6
+ * This is a polling client that can be used to poll the status of long running tasks. It can be used as a replacement
7
+ * for Streaming when streaming topics are not available or when streaming handshakes are failing. Why wouldn't you
8
+ * want to use this? It can impact Salesforce API usage.
9
+ *
10
+ * ```
11
+ * const options: PollingClient.Options = {
12
+ * async poll(): Promise<StatusResult> {
13
+ * return Promise.resolve({ completed: true, payload: 'Hello World' });
14
+ * },
15
+ * frequency: Duration.milliseconds(10),
16
+ * timeout: Duration.minutes(1)
17
+ * };
18
+ * const client = await PollingClient.create(options);
19
+ * const pollResult = await client.subscribe();
20
+ * console.log(`pollResult: ${pollResult}`);
21
+ * ```
22
+ */
23
+ export declare class PollingClient extends AsyncOptionalCreatable<PollingClient.Options> {
24
+ protected logger: Logger;
25
+ private options;
26
+ /**
27
+ * Constructor
28
+ *
29
+ * @param options Polling client options
30
+ * @ignore
31
+ */
32
+ constructor(options?: PollingClient.Options);
33
+ /**
34
+ * Asynchronous initializer.
35
+ */
36
+ init(): Promise<void>;
37
+ /**
38
+ * Returns a promise to call the specified polling function using the interval and timeout specified
39
+ * in the polling options.
40
+ */
41
+ subscribe<T = AnyJson>(): Promise<T>;
42
+ }
43
+ export declare namespace PollingClient {
44
+ /**
45
+ * Options for the polling client.
46
+ */
47
+ interface Options {
48
+ /**
49
+ * Polling function.
50
+ */
51
+ poll: () => Promise<StatusResult>;
52
+ /**
53
+ * How frequent should the polling function be called.
54
+ */
55
+ frequency: Duration;
56
+ /**
57
+ * Hard timeout for polling.
58
+ */
59
+ timeout: Duration;
60
+ /**
61
+ * Change the name of the timeout error.
62
+ *
63
+ * ```
64
+ * if (err.name === 'MyChangedName) ...
65
+ * ```
66
+ */
67
+ timeoutErrorName?: string;
68
+ }
69
+ /**
70
+ * Default options set for polling. The default options specify a timeout of 3 minutes and polling frequency of 15
71
+ * seconds;
72
+ */
73
+ class DefaultPollingOptions implements PollingClient.Options {
74
+ frequency: Duration;
75
+ poll: () => Promise<StatusResult>;
76
+ timeout: Duration;
77
+ /**
78
+ * constructor
79
+ *
80
+ * @param poll The function used for polling status.
81
+ * {@link StatusResult}
82
+ */
83
+ constructor(poll: () => Promise<StatusResult>);
84
+ }
85
+ }
@@ -1,116 +1,116 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PollingClient = void 0;
4
- /*
5
- * Copyright (c) 2020, salesforce.com, inc.
6
- * All rights reserved.
7
- * Licensed under the BSD 3-Clause license.
8
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
9
- */
10
- const kit_1 = require("@salesforce/kit");
11
- const ts_types_1 = require("@salesforce/ts-types");
12
- const ts_retry_promise_1 = require("ts-retry-promise");
13
- const logger_1 = require("../logger");
14
- const sfError_1 = require("../sfError");
15
- const lifecycleEvents_1 = require("../lifecycleEvents");
16
- /**
17
- * This is a polling client that can be used to poll the status of long running tasks. It can be used as a replacement
18
- * for Streaming when streaming topics are not available or when streaming handshakes are failing. Why wouldn't you
19
- * want to use this? It can impact Salesforce API usage.
20
- *
21
- * ```
22
- * const options: PollingClient.Options = {
23
- * async poll(): Promise<StatusResult> {
24
- * return Promise.resolve({ completed: true, payload: 'Hello World' });
25
- * },
26
- * frequency: Duration.milliseconds(10),
27
- * timeout: Duration.minutes(1)
28
- * };
29
- * const client = await PollingClient.create(options);
30
- * const pollResult = await client.subscribe();
31
- * console.log(`pollResult: ${pollResult}`);
32
- * ```
33
- */
34
- class PollingClient extends kit_1.AsyncOptionalCreatable {
35
- /**
36
- * Constructor
37
- *
38
- * @param options Polling client options
39
- * @ignore
40
- */
41
- constructor(options) {
42
- super(options);
43
- this.options = (0, ts_types_1.ensure)(options);
44
- }
45
- /**
46
- * Asynchronous initializer.
47
- */
48
- async init() {
49
- this.logger = await logger_1.Logger.child(this.constructor.name);
50
- }
51
- /**
52
- * Returns a promise to call the specified polling function using the interval and timeout specified
53
- * in the polling options.
54
- */
55
- async subscribe() {
56
- let errorInPollingFunction; // keep this around for returning in the catch block
57
- const doPoll = async () => {
58
- let result;
59
- try {
60
- result = await this.options.poll();
61
- }
62
- catch (error) {
63
- const err = (errorInPollingFunction = error);
64
- if (['ETIMEDOUT', 'ENOTFOUND', 'ECONNRESET', 'socket hang up'].some((retryableNetworkError) => err.message.includes(retryableNetworkError))) {
65
- this.logger.debug('Network error on the request', err);
66
- await lifecycleEvents_1.Lifecycle.getInstance().emitWarning('Network error occurred. Continuing to poll.');
67
- throw sfError_1.SfError.wrap(err);
68
- }
69
- // there was an actual error thrown, so we don't want to keep retrying
70
- throw new ts_retry_promise_1.NotRetryableError(err.name);
71
- }
72
- if (result.completed) {
73
- return result.payload;
74
- }
75
- throw new Error('Operation did not complete. Retrying...'); // triggers a retry
76
- };
77
- const finalResult = (0, ts_retry_promise_1.retryDecorator)(doPoll, {
78
- timeout: this.options.timeout.milliseconds,
79
- delay: this.options.frequency.milliseconds,
80
- retries: 'INFINITELY',
81
- });
82
- try {
83
- return await finalResult();
84
- }
85
- catch (error) {
86
- if (errorInPollingFunction) {
87
- throw errorInPollingFunction;
88
- }
89
- await lifecycleEvents_1.Lifecycle.getInstance().emit('POLLING_TIME_OUT', error);
90
- this.logger.debug('Polling timed out');
91
- throw new sfError_1.SfError('The client has timed out.', this.options.timeoutErrorName ?? 'PollingClientTimeout');
92
- }
93
- }
94
- }
95
- exports.PollingClient = PollingClient;
96
- (function (PollingClient) {
97
- /**
98
- * Default options set for polling. The default options specify a timeout of 3 minutes and polling frequency of 15
99
- * seconds;
100
- */
101
- class DefaultPollingOptions {
102
- /**
103
- * constructor
104
- *
105
- * @param poll The function used for polling status.
106
- * {@link StatusResult}
107
- */
108
- constructor(poll) {
109
- this.poll = poll;
110
- this.timeout = kit_1.Duration.minutes(3);
111
- this.frequency = kit_1.Duration.seconds(15);
112
- }
113
- }
114
- PollingClient.DefaultPollingOptions = DefaultPollingOptions;
115
- })(PollingClient = exports.PollingClient || (exports.PollingClient = {}));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PollingClient = void 0;
4
+ /*
5
+ * Copyright (c) 2020, salesforce.com, inc.
6
+ * All rights reserved.
7
+ * Licensed under the BSD 3-Clause license.
8
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
9
+ */
10
+ const kit_1 = require("@salesforce/kit");
11
+ const ts_types_1 = require("@salesforce/ts-types");
12
+ const ts_retry_promise_1 = require("ts-retry-promise");
13
+ const logger_1 = require("../logger");
14
+ const sfError_1 = require("../sfError");
15
+ const lifecycleEvents_1 = require("../lifecycleEvents");
16
+ /**
17
+ * This is a polling client that can be used to poll the status of long running tasks. It can be used as a replacement
18
+ * for Streaming when streaming topics are not available or when streaming handshakes are failing. Why wouldn't you
19
+ * want to use this? It can impact Salesforce API usage.
20
+ *
21
+ * ```
22
+ * const options: PollingClient.Options = {
23
+ * async poll(): Promise<StatusResult> {
24
+ * return Promise.resolve({ completed: true, payload: 'Hello World' });
25
+ * },
26
+ * frequency: Duration.milliseconds(10),
27
+ * timeout: Duration.minutes(1)
28
+ * };
29
+ * const client = await PollingClient.create(options);
30
+ * const pollResult = await client.subscribe();
31
+ * console.log(`pollResult: ${pollResult}`);
32
+ * ```
33
+ */
34
+ class PollingClient extends kit_1.AsyncOptionalCreatable {
35
+ /**
36
+ * Constructor
37
+ *
38
+ * @param options Polling client options
39
+ * @ignore
40
+ */
41
+ constructor(options) {
42
+ super(options);
43
+ this.options = (0, ts_types_1.ensure)(options);
44
+ }
45
+ /**
46
+ * Asynchronous initializer.
47
+ */
48
+ async init() {
49
+ this.logger = await logger_1.Logger.child(this.constructor.name);
50
+ }
51
+ /**
52
+ * Returns a promise to call the specified polling function using the interval and timeout specified
53
+ * in the polling options.
54
+ */
55
+ async subscribe() {
56
+ let errorInPollingFunction; // keep this around for returning in the catch block
57
+ const doPoll = async () => {
58
+ let result;
59
+ try {
60
+ result = await this.options.poll();
61
+ }
62
+ catch (error) {
63
+ const err = (errorInPollingFunction = error);
64
+ if (['ETIMEDOUT', 'ENOTFOUND', 'ECONNRESET', 'socket hang up'].some((retryableNetworkError) => err.message.includes(retryableNetworkError))) {
65
+ this.logger.debug('Network error on the request', err);
66
+ await lifecycleEvents_1.Lifecycle.getInstance().emitWarning('Network error occurred. Continuing to poll.');
67
+ throw sfError_1.SfError.wrap(err);
68
+ }
69
+ // there was an actual error thrown, so we don't want to keep retrying
70
+ throw new ts_retry_promise_1.NotRetryableError(err.name);
71
+ }
72
+ if (result.completed) {
73
+ return result.payload;
74
+ }
75
+ throw new Error('Operation did not complete. Retrying...'); // triggers a retry
76
+ };
77
+ const finalResult = (0, ts_retry_promise_1.retryDecorator)(doPoll, {
78
+ timeout: this.options.timeout.milliseconds,
79
+ delay: this.options.frequency.milliseconds,
80
+ retries: 'INFINITELY',
81
+ });
82
+ try {
83
+ return await finalResult();
84
+ }
85
+ catch (error) {
86
+ if (errorInPollingFunction) {
87
+ throw errorInPollingFunction;
88
+ }
89
+ await lifecycleEvents_1.Lifecycle.getInstance().emit('POLLING_TIME_OUT', error);
90
+ this.logger.debug('Polling timed out');
91
+ throw new sfError_1.SfError('The client has timed out.', this.options.timeoutErrorName ?? 'PollingClientTimeout');
92
+ }
93
+ }
94
+ }
95
+ exports.PollingClient = PollingClient;
96
+ (function (PollingClient) {
97
+ /**
98
+ * Default options set for polling. The default options specify a timeout of 3 minutes and polling frequency of 15
99
+ * seconds;
100
+ */
101
+ class DefaultPollingOptions {
102
+ /**
103
+ * constructor
104
+ *
105
+ * @param poll The function used for polling status.
106
+ * {@link StatusResult}
107
+ */
108
+ constructor(poll) {
109
+ this.poll = poll;
110
+ this.timeout = kit_1.Duration.minutes(3);
111
+ this.frequency = kit_1.Duration.seconds(15);
112
+ }
113
+ }
114
+ PollingClient.DefaultPollingOptions = DefaultPollingOptions;
115
+ })(PollingClient = exports.PollingClient || (exports.PollingClient = {}));
116
116
  //# sourceMappingURL=pollingClient.js.map