@azure/arm-containerinstance 6.3.0 → 8.0.0

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 (154) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/{LICENSE.txt → LICENSE} +2 -2
  3. package/README.md +70 -78
  4. package/dist/index.js +3335 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.min.js +1 -0
  7. package/dist/index.min.js.map +1 -0
  8. package/dist-esm/src/containerInstanceManagementClient.d.ts +22 -0
  9. package/dist-esm/src/containerInstanceManagementClient.d.ts.map +1 -0
  10. package/dist-esm/src/containerInstanceManagementClient.js +55 -0
  11. package/dist-esm/src/containerInstanceManagementClient.js.map +1 -0
  12. package/dist-esm/src/index.d.ts +5 -0
  13. package/dist-esm/src/index.d.ts.map +1 -0
  14. package/dist-esm/src/index.js +12 -0
  15. package/dist-esm/src/index.js.map +1 -0
  16. package/dist-esm/src/lroImpl.d.ts +16 -0
  17. package/dist-esm/src/lroImpl.d.ts.map +1 -0
  18. package/dist-esm/src/lroImpl.js +29 -0
  19. package/dist-esm/src/lroImpl.js.map +1 -0
  20. package/dist-esm/src/models/index.d.ts +964 -0
  21. package/dist-esm/src/models/index.d.ts.map +1 -0
  22. package/dist-esm/src/models/index.js +70 -0
  23. package/dist-esm/src/models/index.js.map +1 -0
  24. package/dist-esm/src/models/mappers.d.ts +54 -0
  25. package/dist-esm/src/models/mappers.d.ts.map +1 -0
  26. package/{esm → dist-esm/src}/models/mappers.js +799 -788
  27. package/dist-esm/src/models/mappers.js.map +1 -0
  28. package/dist-esm/src/models/parameters.d.ts +17 -0
  29. package/dist-esm/src/models/parameters.d.ts.map +1 -0
  30. package/{esm → dist-esm/src}/models/parameters.js +67 -37
  31. package/dist-esm/src/models/parameters.js.map +1 -0
  32. package/dist-esm/src/operations/containerGroups.d.ts +159 -0
  33. package/dist-esm/src/operations/containerGroups.d.ts.map +1 -0
  34. package/dist-esm/src/operations/containerGroups.js +678 -0
  35. package/dist-esm/src/operations/containerGroups.js.map +1 -0
  36. package/dist-esm/src/operations/containers.d.ts +40 -0
  37. package/dist-esm/src/operations/containers.d.ts.map +1 -0
  38. package/dist-esm/src/operations/containers.js +134 -0
  39. package/dist-esm/src/operations/containers.js.map +1 -0
  40. package/{esm → dist-esm/src}/operations/index.d.ts +0 -0
  41. package/dist-esm/src/operations/index.d.ts.map +1 -0
  42. package/{esm → dist-esm/src}/operations/index.js +1 -2
  43. package/dist-esm/src/operations/index.js.map +1 -0
  44. package/dist-esm/src/operations/location.d.ts +70 -0
  45. package/dist-esm/src/operations/location.d.ts.map +1 -0
  46. package/dist-esm/src/operations/location.js +310 -0
  47. package/dist-esm/src/operations/location.js.map +1 -0
  48. package/dist-esm/src/operations/operations.d.ts +32 -0
  49. package/dist-esm/src/operations/operations.d.ts.map +1 -0
  50. package/dist-esm/src/operations/operations.js +120 -0
  51. package/dist-esm/src/operations/operations.js.map +1 -0
  52. package/dist-esm/src/operationsInterfaces/containerGroups.d.ts +119 -0
  53. package/dist-esm/src/operationsInterfaces/containerGroups.d.ts.map +1 -0
  54. package/{src/models/operationsMappers.ts → dist-esm/src/operationsInterfaces/containerGroups.js} +2 -7
  55. package/dist-esm/src/operationsInterfaces/containerGroups.js.map +1 -0
  56. package/dist-esm/src/operationsInterfaces/containers.d.ts +32 -0
  57. package/dist-esm/src/operationsInterfaces/containers.d.ts.map +1 -0
  58. package/{esm/models/operationsMappers.js → dist-esm/src/operationsInterfaces/containers.js} +2 -2
  59. package/dist-esm/src/operationsInterfaces/containers.js.map +1 -0
  60. package/dist-esm/src/operationsInterfaces/index.d.ts +5 -0
  61. package/dist-esm/src/operationsInterfaces/index.d.ts.map +1 -0
  62. package/dist-esm/src/operationsInterfaces/index.js +12 -0
  63. package/dist-esm/src/operationsInterfaces/index.js.map +1 -0
  64. package/dist-esm/src/operationsInterfaces/location.d.ts +24 -0
  65. package/dist-esm/src/operationsInterfaces/location.d.ts.map +1 -0
  66. package/{esm/models/index.js → dist-esm/src/operationsInterfaces/location.js} +2 -1
  67. package/dist-esm/src/operationsInterfaces/location.js.map +1 -0
  68. package/dist-esm/src/operationsInterfaces/operations.d.ts +11 -0
  69. package/dist-esm/src/operationsInterfaces/operations.d.ts.map +1 -0
  70. package/{src/models/containersMappers.ts → dist-esm/src/operationsInterfaces/operations.js} +2 -9
  71. package/dist-esm/src/operationsInterfaces/operations.js.map +1 -0
  72. package/dist-esm/test/containerinstance_examples.d.ts +4 -0
  73. package/dist-esm/test/containerinstance_examples.d.ts.map +1 -0
  74. package/dist-esm/test/containerinstance_examples.js +156 -0
  75. package/dist-esm/test/containerinstance_examples.js.map +1 -0
  76. package/package.json +65 -32
  77. package/review/arm-containerinstance.api.md +752 -0
  78. package/rollup.config.js +181 -30
  79. package/src/containerInstanceManagementClient.ts +78 -40
  80. package/src/index.ts +12 -0
  81. package/src/lroImpl.ts +34 -0
  82. package/src/models/index.ts +734 -1215
  83. package/src/models/mappers.ts +808 -793
  84. package/src/models/parameters.ts +90 -38
  85. package/src/operations/containerGroups.ts +660 -424
  86. package/src/operations/containers.ts +89 -143
  87. package/src/operations/index.ts +1 -2
  88. package/src/operations/location.ts +262 -179
  89. package/src/operations/operations.ts +85 -73
  90. package/src/operationsInterfaces/containerGroups.ts +212 -0
  91. package/src/operationsInterfaces/containers.ts +64 -0
  92. package/src/operationsInterfaces/index.ts +12 -0
  93. package/src/operationsInterfaces/location.ts +49 -0
  94. package/src/operationsInterfaces/operations.ts +22 -0
  95. package/tsconfig.json +3 -3
  96. package/types/arm-containerinstance.d.ts +1282 -0
  97. package/types/tsdoc-metadata.json +11 -0
  98. package/dist/arm-containerinstance.js +0 -3019
  99. package/dist/arm-containerinstance.js.map +0 -1
  100. package/dist/arm-containerinstance.min.js +0 -1
  101. package/dist/arm-containerinstance.min.js.map +0 -1
  102. package/esm/containerInstanceManagementClient.d.ts +0 -28
  103. package/esm/containerInstanceManagementClient.d.ts.map +0 -1
  104. package/esm/containerInstanceManagementClient.js +0 -41
  105. package/esm/containerInstanceManagementClient.js.map +0 -1
  106. package/esm/containerInstanceManagementClientContext.d.ts +0 -23
  107. package/esm/containerInstanceManagementClientContext.d.ts.map +0 -1
  108. package/esm/containerInstanceManagementClientContext.js +0 -61
  109. package/esm/containerInstanceManagementClientContext.js.map +0 -1
  110. package/esm/models/containerGroupsMappers.d.ts +0 -2
  111. package/esm/models/containerGroupsMappers.d.ts.map +0 -1
  112. package/esm/models/containerGroupsMappers.js +0 -9
  113. package/esm/models/containerGroupsMappers.js.map +0 -1
  114. package/esm/models/containersMappers.d.ts +0 -2
  115. package/esm/models/containersMappers.d.ts.map +0 -1
  116. package/esm/models/containersMappers.js +0 -9
  117. package/esm/models/containersMappers.js.map +0 -1
  118. package/esm/models/index.d.ts +0 -1469
  119. package/esm/models/index.d.ts.map +0 -1
  120. package/esm/models/index.js.map +0 -1
  121. package/esm/models/locationMappers.d.ts +0 -2
  122. package/esm/models/locationMappers.d.ts.map +0 -1
  123. package/esm/models/locationMappers.js +0 -9
  124. package/esm/models/locationMappers.js.map +0 -1
  125. package/esm/models/mappers.d.ts +0 -54
  126. package/esm/models/mappers.d.ts.map +0 -1
  127. package/esm/models/mappers.js.map +0 -1
  128. package/esm/models/operationsMappers.d.ts +0 -2
  129. package/esm/models/operationsMappers.d.ts.map +0 -1
  130. package/esm/models/operationsMappers.js.map +0 -1
  131. package/esm/models/parameters.d.ts +0 -12
  132. package/esm/models/parameters.d.ts.map +0 -1
  133. package/esm/models/parameters.js.map +0 -1
  134. package/esm/operations/containerGroups.d.ts +0 -247
  135. package/esm/operations/containerGroups.d.ts.map +0 -1
  136. package/esm/operations/containerGroups.js +0 -455
  137. package/esm/operations/containerGroups.js.map +0 -1
  138. package/esm/operations/containers.d.ts +0 -94
  139. package/esm/operations/containers.d.ts.map +0 -1
  140. package/esm/operations/containers.js +0 -133
  141. package/esm/operations/containers.js.map +0 -1
  142. package/esm/operations/index.d.ts.map +0 -1
  143. package/esm/operations/index.js.map +0 -1
  144. package/esm/operations/location.d.ts +0 -107
  145. package/esm/operations/location.d.ts.map +0 -1
  146. package/esm/operations/location.js +0 -171
  147. package/esm/operations/location.js.map +0 -1
  148. package/esm/operations/operations.d.ts +0 -46
  149. package/esm/operations/operations.d.ts.map +0 -1
  150. package/esm/operations/operations.js +0 -79
  151. package/esm/operations/operations.js.map +0 -1
  152. package/src/containerInstanceManagementClientContext.ts +0 -68
  153. package/src/models/containerGroupsMappers.ts +0 -46
  154. package/src/models/locationMappers.ts +0 -19
package/rollup.config.js CHANGED
@@ -1,37 +1,188 @@
1
- import rollup from "rollup";
2
- import nodeResolve from "rollup-plugin-node-resolve";
3
- import sourcemaps from "rollup-plugin-sourcemaps";
4
-
5
- /**
6
- * @type {rollup.RollupFileOptions}
7
- */
8
- const config = {
9
- input: "./esm/containerInstanceManagementClient.js",
10
- external: [
11
- "@azure/ms-rest-js",
12
- "@azure/ms-rest-azure-js"
13
- ],
14
- output: {
15
- file: "./dist/arm-containerinstance.js",
16
- format: "umd",
17
- name: "Azure.ArmContainerinstance",
18
- sourcemap: true,
19
- globals: {
20
- "@azure/ms-rest-js": "msRest",
21
- "@azure/ms-rest-azure-js": "msRestAzure"
22
- },
23
- banner: `/*
1
+ /*
24
2
  * Copyright (c) Microsoft Corporation.
25
3
  * Licensed under the MIT License.
26
4
  *
27
5
  * Code generated by Microsoft (R) AutoRest Code Generator.
28
6
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
29
- */`
30
- },
31
- plugins: [
32
- nodeResolve({ mainFields: ['module', 'main'] }),
33
- sourcemaps()
34
- ]
7
+ */
8
+
9
+ import nodeResolve from "@rollup/plugin-node-resolve";
10
+ import cjs from "@rollup/plugin-commonjs";
11
+ import sourcemaps from "rollup-plugin-sourcemaps";
12
+ import multiEntry from "@rollup/plugin-multi-entry";
13
+ import json from "@rollup/plugin-json";
14
+
15
+ import nodeBuiltins from "builtin-modules";
16
+
17
+ /**
18
+ * Gets the proper configuration needed for rollup's commonJS plugin for @opentelemetry/api.
19
+ *
20
+ * NOTE: this manual configuration is only needed because OpenTelemetry uses an
21
+ * __exportStar downleveled helper function to declare its exports which confuses
22
+ * rollup's automatic discovery mechanism.
23
+ *
24
+ * @returns an object reference that can be `...`'d into your cjs() configuration.
25
+ */
26
+ export function openTelemetryCommonJs() {
27
+ const namedExports = {};
28
+
29
+ for (const key of [
30
+ "@opentelemetry/api",
31
+ "@azure/core-tracing/node_modules/@opentelemetry/api"
32
+ ]) {
33
+ namedExports[key] = [
34
+ "SpanKind",
35
+ "TraceFlags",
36
+ "getSpan",
37
+ "setSpan",
38
+ "SpanStatusCode",
39
+ "getSpanContext",
40
+ "setSpanContext"
41
+ ];
42
+ }
43
+
44
+ const releasedOpenTelemetryVersions = ["0.10.2", "1.0.0-rc.0"];
45
+
46
+ for (const version of releasedOpenTelemetryVersions) {
47
+ namedExports[
48
+ // working around a limitation in the rollup common.js plugin - it's not able to resolve these modules so the named exports listed above will not get applied. We have to drill down to the actual path.
49
+ `../../../common/temp/node_modules/.pnpm/@opentelemetry/api@${version}/node_modules/@opentelemetry/api/build/src/index.js`
50
+ ] = [
51
+ "SpanKind",
52
+ "TraceFlags",
53
+ "getSpan",
54
+ "setSpan",
55
+ "StatusCode",
56
+ "CanonicalCode",
57
+ "getSpanContext",
58
+ "setSpanContext"
59
+ ];
60
+ }
61
+
62
+ return namedExports;
63
+ }
64
+
65
+ // #region Warning Handler
66
+
67
+ /**
68
+ * A function that can determine whether a rollupwarning should be ignored. If
69
+ * the function returns `true`, then the warning will not be displayed.
70
+ */
71
+
72
+ function ignoreNiseSinonEvalWarnings(warning) {
73
+ return (
74
+ warning.code === "EVAL" &&
75
+ warning.id &&
76
+ (warning.id.includes("node_modules/nise") ||
77
+ warning.id.includes("node_modules/sinon")) === true
78
+ );
79
+ }
80
+
81
+ function ignoreChaiCircularDependencyWarnings(warning) {
82
+ return (
83
+ warning.code === "CIRCULAR_DEPENDENCY" &&
84
+ warning.importer && warning.importer.includes("node_modules/chai") === true
85
+ );
86
+ }
87
+
88
+ const warningInhibitors = [
89
+ ignoreChaiCircularDependencyWarnings,
90
+ ignoreNiseSinonEvalWarnings
91
+ ];
92
+
93
+ /**
94
+ * Construct a warning handler for the shared rollup configuration
95
+ * that ignores certain warnings that are not relevant to testing.
96
+ */
97
+ function makeOnWarnForTesting() {
98
+ return (warning, warn) => {
99
+ // If every inhibitor returns false (i.e. no inhibitors), then show the warning
100
+ if (warningInhibitors.every((inhib) => !inhib(warning))) {
101
+ warn(warning);
102
+ }
103
+ };
104
+ }
105
+
106
+ // #endregion
107
+
108
+ function makeBrowserTestConfig() {
109
+ const config = {
110
+ input: {
111
+ include: ["dist-esm/test/**/*.spec.js"],
112
+ exclude: ["dist-esm/test/**/node/**"]
113
+ },
114
+ output: {
115
+ file: `dist-test/index.browser.js`,
116
+ format: "umd",
117
+ sourcemap: true
118
+ },
119
+ preserveSymlinks: false,
120
+ plugins: [
121
+ multiEntry({ exports: false }),
122
+ nodeResolve({
123
+ mainFields: ["module", "browser"]
124
+ }),
125
+ cjs({
126
+ namedExports: {
127
+ // Chai's strange internal architecture makes it impossible to statically
128
+ // analyze its exports.
129
+ chai: [
130
+ "version",
131
+ "use",
132
+ "util",
133
+ "config",
134
+ "expect",
135
+ "should",
136
+ "assert"
137
+ ],
138
+ ...openTelemetryCommonJs()
139
+ }
140
+ }),
141
+ json(),
142
+ sourcemaps()
143
+ //viz({ filename: "dist-test/browser-stats.html", sourcemap: true })
144
+ ],
145
+ onwarn: makeOnWarnForTesting(),
146
+ // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0,
147
+ // rollup started respecting the "sideEffects" field in package.json. Since
148
+ // our package.json sets "sideEffects=false", this also applies to test
149
+ // code, which causes all tests to be removed by tree-shaking.
150
+ treeshake: false
151
+ };
152
+
153
+ return config;
154
+ }
155
+
156
+ const defaultConfigurationOptions = {
157
+ disableBrowserBundle: false
35
158
  };
36
159
 
37
- export default config;
160
+ export function makeConfig(pkg, options) {
161
+ options = {
162
+ ...defaultConfigurationOptions,
163
+ ...(options || {})
164
+ };
165
+
166
+ const baseConfig = {
167
+ // Use the package's module field if it has one
168
+ input: pkg["module"] || "dist-esm/src/index.js",
169
+ external: [
170
+ ...nodeBuiltins,
171
+ ...Object.keys(pkg.dependencies),
172
+ ...Object.keys(pkg.devDependencies)
173
+ ],
174
+ output: { file: "dist/index.js", format: "cjs", sourcemap: true },
175
+ preserveSymlinks: false,
176
+ plugins: [sourcemaps(), nodeResolve(), cjs()]
177
+ };
178
+
179
+ const config = [baseConfig];
180
+
181
+ if (!options.disableBrowserBundle) {
182
+ config.push(makeBrowserTestConfig());
183
+ }
184
+
185
+ return config;
186
+ }
187
+
188
+ export default makeConfig(require("./package.json"));
@@ -3,52 +3,90 @@
3
3
  * Licensed under the MIT License.
4
4
  *
5
5
  * Code generated by Microsoft (R) AutoRest Code Generator.
6
- * Changes may cause incorrect behavior and will be lost if the code is
7
- * regenerated.
6
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
7
  */
9
8
 
10
- import * as msRest from "@azure/ms-rest-js";
11
- import { TokenCredential } from "@azure/core-auth";
12
- import * as Models from "./models";
13
- import * as Mappers from "./models/mappers";
14
- import * as operations from "./operations";
15
- import { ContainerInstanceManagementClientContext } from "./containerInstanceManagementClientContext";
9
+ import * as coreClient from "@azure/core-client";
10
+ import * as coreAuth from "@azure/core-auth";
11
+ import {
12
+ ContainerGroupsImpl,
13
+ OperationsImpl,
14
+ LocationImpl,
15
+ ContainersImpl
16
+ } from "./operations";
17
+ import {
18
+ ContainerGroups,
19
+ Operations,
20
+ Location,
21
+ Containers
22
+ } from "./operationsInterfaces";
23
+ import { ContainerInstanceManagementClientOptionalParams } from "./models";
16
24
 
17
-
18
- class ContainerInstanceManagementClient extends ContainerInstanceManagementClientContext {
19
- // Operation groups
20
- containerGroups: operations.ContainerGroups;
21
- operations: operations.Operations;
22
- location: operations.Location;
23
- containers: operations.Containers;
25
+ export class ContainerInstanceManagementClient extends coreClient.ServiceClient {
26
+ $host: string;
27
+ subscriptionId: string;
28
+ apiVersion: string;
24
29
 
25
30
  /**
26
31
  * Initializes a new instance of the ContainerInstanceManagementClient class.
27
- * @param credentials Credentials needed for the client to connect to Azure. Credentials
28
- * implementing the TokenCredential interface from the @azure/identity package are recommended. For
29
- * more information about these credentials, see
30
- * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the
31
- * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and
32
- * @azure/ms-rest-browserauth are also supported.
33
- * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure
34
- * subscription. The subscription ID forms part of the URI for every service call.
35
- * @param [options] The parameter options
32
+ * @param credentials Subscription credentials which uniquely identify client subscription.
33
+ * @param subscriptionId Subscription credentials which uniquely identify Microsoft Azure subscription.
34
+ * The subscription ID forms part of the URI for every service call.
35
+ * @param options The parameter options
36
36
  */
37
- constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, subscriptionId: string, options?: Models.ContainerInstanceManagementClientOptions) {
38
- super(credentials, subscriptionId, options);
39
- this.containerGroups = new operations.ContainerGroups(this);
40
- this.operations = new operations.Operations(this);
41
- this.location = new operations.Location(this);
42
- this.containers = new operations.Containers(this);
43
- }
44
- }
37
+ constructor(
38
+ credentials: coreAuth.TokenCredential,
39
+ subscriptionId: string,
40
+ options?: ContainerInstanceManagementClientOptionalParams
41
+ ) {
42
+ if (credentials === undefined) {
43
+ throw new Error("'credentials' cannot be null");
44
+ }
45
+ if (subscriptionId === undefined) {
46
+ throw new Error("'subscriptionId' cannot be null");
47
+ }
48
+
49
+ // Initializing default values for options
50
+ if (!options) {
51
+ options = {};
52
+ }
53
+ const defaults: ContainerInstanceManagementClientOptionalParams = {
54
+ requestContentType: "application/json; charset=utf-8",
55
+ credential: credentials
56
+ };
45
57
 
46
- // Operation Specifications
58
+ const packageDetails = `azsdk-js-arm-containerinstance/8.0.0`;
59
+ const userAgentPrefix =
60
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
61
+ ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
62
+ : `${packageDetails}`;
47
63
 
48
- export {
49
- ContainerInstanceManagementClient,
50
- ContainerInstanceManagementClientContext,
51
- Models as ContainerInstanceManagementModels,
52
- Mappers as ContainerInstanceManagementMappers
53
- };
54
- export * from "./operations";
64
+ if (!options.credentialScopes) {
65
+ options.credentialScopes = ["https://management.azure.com/.default"];
66
+ }
67
+ const optionsWithDefaults = {
68
+ ...defaults,
69
+ ...options,
70
+ userAgentOptions: {
71
+ userAgentPrefix
72
+ },
73
+ baseUri: options.endpoint || "https://management.azure.com"
74
+ };
75
+ super(optionsWithDefaults);
76
+ // Parameter assignments
77
+ this.subscriptionId = subscriptionId;
78
+
79
+ // Assigning values to Constant parameters
80
+ this.$host = options.$host || "https://management.azure.com";
81
+ this.apiVersion = options.apiVersion || "2021-09-01";
82
+ this.containerGroups = new ContainerGroupsImpl(this);
83
+ this.operations = new OperationsImpl(this);
84
+ this.location = new LocationImpl(this);
85
+ this.containers = new ContainersImpl(this);
86
+ }
87
+
88
+ containerGroups: ContainerGroups;
89
+ operations: Operations;
90
+ location: Location;
91
+ containers: Containers;
92
+ }
package/src/index.ts ADDED
@@ -0,0 +1,12 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation.
3
+ * Licensed under the MIT License.
4
+ *
5
+ * Code generated by Microsoft (R) AutoRest Code Generator.
6
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
+ */
8
+
9
+ /// <reference lib="esnext.asynciterable" />
10
+ export * from "./models";
11
+ export { ContainerInstanceManagementClient } from "./containerInstanceManagementClient";
12
+ export * from "./operationsInterfaces";
package/src/lroImpl.ts ADDED
@@ -0,0 +1,34 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation.
3
+ * Licensed under the MIT License.
4
+ *
5
+ * Code generated by Microsoft (R) AutoRest Code Generator.
6
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
+ */
8
+
9
+ import { LongRunningOperation, LroResponse } from "@azure/core-lro";
10
+
11
+ export class LroImpl<T> implements LongRunningOperation<T> {
12
+ constructor(
13
+ private sendOperationFn: (args: any, spec: any) => Promise<LroResponse<T>>,
14
+ private args: Record<string, unknown>,
15
+ private spec: {
16
+ readonly requestBody?: unknown;
17
+ readonly path?: string;
18
+ readonly httpMethod: string;
19
+ } & Record<string, any>,
20
+ public requestPath: string = spec.path!,
21
+ public requestMethod: string = spec.httpMethod
22
+ ) {}
23
+ public async sendInitialRequest(): Promise<LroResponse<T>> {
24
+ return this.sendOperationFn(this.args, this.spec);
25
+ }
26
+ public async sendPollRequest(path: string): Promise<LroResponse<T>> {
27
+ const { requestBody, ...restSpec } = this.spec;
28
+ return this.sendOperationFn(this.args, {
29
+ ...restSpec,
30
+ path,
31
+ httpMethod: "GET"
32
+ });
33
+ }
34
+ }