@epilot/blueprint-manifest-client 2.2.5 → 2.2.6

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/README.md CHANGED
@@ -1,18 +1,18 @@
1
1
  # @epilot/blueprint-manifest-client
2
2
 
3
3
  [![CI](https://github.com/epilot-dev/sdk-js/workflows/CI/badge.svg)](https://github.com/epilot-dev/sdk-js/actions?query=workflow%3ACI)
4
- [![npm version](https://img.shields.io/npm/v/@epilot/tf-blueprints-client.svg)](https://www.npmjs.com/package/@epilot/tf-blueprints-client)
5
- [![bundle size](https://img.shields.io/bundlephobia/minzip/@epilot/tf-blueprints-client?label=gzip%20bundle)](https://bundlephobia.com/package/@epilot/tf-blueprints-client)
4
+ [![npm version](https://img.shields.io/npm/v/@epilot/blueprint-manifest-client.svg)](https://www.npmjs.com/package/@epilot/blueprint-manifest-client)
5
+ [![bundle size](https://img.shields.io/bundlephobia/minzip/@epilot/blueprint-manifest-client?label=gzip%20bundle)](https://bundlephobia.com/package/@epilot/blueprint-manifest-client)
6
6
  [![License](http://img.shields.io/:license-mit-blue.svg)](https://github.com/epilot-dev/sdk-js/blob/main/LICENSE)
7
7
 
8
8
  Client library for epilot [Blueprint Manifest API](https://docs.epilot.io/api/blueprint-manifest)
9
9
 
10
- Uses [`openapi-client-axios`](https://github.com/anttiviljami/openapi-client-axios)
10
+ Uses [`openapi-client-axios`](https://github.com/openapistack/openapi-client-axios)
11
11
 
12
12
  ## Installation
13
13
 
14
14
  ```bash
15
- npm install --save @epilot/tf-blueprints-client
15
+ npm install --save @epilot/blueprint-manifest-client
16
16
  ```
17
17
 
18
18
  ## Usage
@@ -1 +1 @@
1
- (()=>{"use strict";var e={914:function(e,t,o){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var n=r(o(240));t.default=n.default},240:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"servers":[{"url":"https://blueprint-manifest.sls.epilot.io"}],"paths":{"/v1/blueprint-manifest/jobs/{job_id}":{"get":{"operationId":"getJob","parameters":[{"$ref":"#/components/parameters/JobID"}]}},"/v1/blueprint-manifest/jobs:createExport":{"post":{"operationId":"createExport","requestBody":{"content":{"application/json":{}}}}},"/v1/blueprint-manifest/jobs/{job_id}:exportManifest":{"post":{"operationId":"exportManifest","parameters":[{"$ref":"#/components/parameters/JobID"}],"requestBody":{"content":{"application/json":{}}}}},"/v1/blueprint-manifest:uploadManifest":{"post":{"operationId":"uploadManifest","requestBody":{"content":{"application/json":{}}}}},"/v1/blueprint-manifest/jobs:createPlan":{"post":{"operationId":"createPlan","requestBody":{"content":{"application/json":{}}}}},"/v1/blueprint-manifest/jobs/{job_id}:applyPlan":{"post":{"operationId":"applyPlan","parameters":[{"$ref":"#/components/parameters/JobID"}],"requestBody":{"content":{"application/json":{}}}}}},"components":{"parameters":{"JobID":{"name":"job_id","in":"path","required":true}}}}')}},t={},o=function o(r){var n=t[r];if(void 0!==n)return n.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,o),a.exports}(914),r=exports;for(var n in o)r[n]=o[n];o.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
1
+ (()=>{"use strict";var e={914:function(e,t,s){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var n=o(s(240));t.default=n.default},240:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"servers":[{"url":"https://blueprint-manifest.sls.epilot.io"}],"paths":{"/v1/blueprint-manifest/jobs/{job_id}":{"get":{"operationId":"getJob","parameters":[{"$ref":"#/components/parameters/JobID"}],"responses":{}}},"/v1/blueprint-manifest/jobs:createExport":{"post":{"operationId":"createExport","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/blueprint-manifest/jobs/{job_id}:exportManifest":{"post":{"operationId":"exportManifest","parameters":[{"$ref":"#/components/parameters/JobID"}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/blueprint-manifest:uploadManifest":{"post":{"operationId":"uploadManifest","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/blueprint-manifest/jobs:createPlan":{"post":{"operationId":"createPlan","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/blueprint-manifest/jobs/{job_id}:applyPlan":{"post":{"operationId":"applyPlan","parameters":[{"$ref":"#/components/parameters/JobID"}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/blueprint-manifest/manifests":{"get":{"operationId":"listInstalledManifests","responses":{}}},"/v1/blueprint-manifest/manifests/{manifest_id}":{"get":{"operationId":"getManifest","parameters":[{"in":"path","required":true,"name":"manifest_id"}],"responses":{}},"delete":{"operationId":"deleteManifest","parameters":[{"in":"path","required":true,"name":"manifest_id"}],"responses":{}}}},"components":{"parameters":{"JobID":{"name":"job_id","in":"path","required":true}}}}')}},t={},s=function s(o){var n=t[o];if(void 0!==n)return n.exports;var r=t[o]={exports:{}};return e[o].call(r.exports,r,r.exports,s),r.exports}(914),o=exports;for(var n in s)o[n]=s[n];s.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
@@ -17,7 +17,8 @@
17
17
  {
18
18
  "$ref": "#/components/parameters/JobID"
19
19
  }
20
- ]
20
+ ],
21
+ "responses": {}
21
22
  }
22
23
  },
23
24
  "/v1/blueprint-manifest/jobs:createExport": {
@@ -27,7 +28,8 @@
27
28
  "content": {
28
29
  "application/json": {}
29
30
  }
30
- }
31
+ },
32
+ "responses": {}
31
33
  }
32
34
  },
33
35
  "/v1/blueprint-manifest/jobs/{job_id}:exportManifest": {
@@ -42,7 +44,8 @@
42
44
  "content": {
43
45
  "application/json": {}
44
46
  }
45
- }
47
+ },
48
+ "responses": {}
46
49
  }
47
50
  },
48
51
  "/v1/blueprint-manifest:uploadManifest": {
@@ -52,7 +55,8 @@
52
55
  "content": {
53
56
  "application/json": {}
54
57
  }
55
- }
58
+ },
59
+ "responses": {}
56
60
  }
57
61
  },
58
62
  "/v1/blueprint-manifest/jobs:createPlan": {
@@ -62,7 +66,8 @@
62
66
  "content": {
63
67
  "application/json": {}
64
68
  }
65
- }
69
+ },
70
+ "responses": {}
66
71
  }
67
72
  },
68
73
  "/v1/blueprint-manifest/jobs/{job_id}:applyPlan": {
@@ -77,7 +82,38 @@
77
82
  "content": {
78
83
  "application/json": {}
79
84
  }
80
- }
85
+ },
86
+ "responses": {}
87
+ }
88
+ },
89
+ "/v1/blueprint-manifest/manifests": {
90
+ "get": {
91
+ "operationId": "listInstalledManifests",
92
+ "responses": {}
93
+ }
94
+ },
95
+ "/v1/blueprint-manifest/manifests/{manifest_id}": {
96
+ "get": {
97
+ "operationId": "getManifest",
98
+ "parameters": [
99
+ {
100
+ "in": "path",
101
+ "required": true,
102
+ "name": "manifest_id"
103
+ }
104
+ ],
105
+ "responses": {}
106
+ },
107
+ "delete": {
108
+ "operationId": "deleteManifest",
109
+ "parameters": [
110
+ {
111
+ "in": "path",
112
+ "required": true,
113
+ "name": "manifest_id"
114
+ }
115
+ ],
116
+ "responses": {}
81
117
  }
82
118
  }
83
119
  },
package/dist/openapi.d.ts CHANGED
@@ -11,7 +11,7 @@ import type {
11
11
  declare namespace Components {
12
12
  namespace Parameters {
13
13
  export type JobID = /**
14
- * ID of an import or export job
14
+ * ID of an import or export job (state machine)
15
15
  * example:
16
16
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
17
17
  */
@@ -21,14 +21,79 @@ declare namespace Components {
21
21
  JobID?: Parameters.JobID;
22
22
  }
23
23
  namespace Schemas {
24
+ export interface CommonImportFields {
25
+ /**
26
+ * An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import
27
+ */
28
+ imported_resources?: /* An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import */ RootResourceNode[] | RootResourceNode;
29
+ /**
30
+ * An URL to download the imported resources when the resources are too large to be included in the response
31
+ * example:
32
+ * https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/large.json
33
+ */
34
+ large_imported_resources_url?: string; // uri
35
+ }
36
+ export interface CommonManifestFields {
37
+ manifest_id?: /**
38
+ * ID of an imported / installed manifest
39
+ * example:
40
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
41
+ */
42
+ ManifestID;
43
+ /**
44
+ * example:
45
+ * Solar B2B
46
+ */
47
+ source_blueprint_name?: string;
48
+ /**
49
+ * URL slug of a blueprint from the epilot marketplace
50
+ * example:
51
+ * solar-b2b
52
+ */
53
+ source_blueprint_slug?: string;
54
+ /**
55
+ * Version of the blueprint (semver)
56
+ * example:
57
+ * 1.0.0
58
+ */
59
+ source_blueprint_version?: string;
60
+ }
61
+ export interface CommonMarkdownFields {
62
+ /**
63
+ * Markdown content part of a manifest file
64
+ */
65
+ markdown?: {
66
+ /**
67
+ * Markdown content shown before installing the manifest
68
+ * example:
69
+ * This is the content of the manifest.md file which contains the manifest descripton.
70
+ *
71
+ */
72
+ manifest?: string;
73
+ /**
74
+ * Markdown content to be displayed when showing the plan to install blueprint
75
+ * example:
76
+ * This is the content of the preinstall.md file
77
+ *
78
+ */
79
+ preinstall?: string;
80
+ /**
81
+ * Markdown content to be displayed when showing the plan to install blueprint
82
+ * example:
83
+ * This is the content of the postinstall.md file
84
+ *
85
+ */
86
+ postinstall?: string;
87
+ };
88
+ }
24
89
  export interface Job {
25
- job_status?: JobStatus;
26
90
  job_id?: /**
27
- * ID of an import or export job
91
+ * ID of an import or export job (state machine)
28
92
  * example:
29
93
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
30
94
  */
31
95
  JobID;
96
+ job_status?: JobStatus;
32
97
  message?: string;
33
98
  timestamp?: string; // date-time
34
99
  /**
@@ -57,9 +122,21 @@ declare namespace Components {
57
122
  imported_resources?: /* An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import */ RootResourceNode[] | RootResourceNode;
58
123
  /**
59
124
  * An URL to download the imported resources when the resources are too large to be included in the response
125
+ * example:
126
+ * https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/large.json
127
+ */
128
+ large_imported_resources_url?: string; // uri
129
+ /**
130
+ * Markdown content part of a manifest file
60
131
  */
61
- large_imported_resources_url?: string;
62
132
  markdown?: {
133
+ /**
134
+ * Markdown content shown before installing the manifest
135
+ * example:
136
+ * This is the content of the manifest.md file which contains the manifest descripton.
137
+ *
138
+ */
139
+ manifest?: string;
63
140
  /**
64
141
  * Markdown content to be displayed when showing the plan to install blueprint
65
142
  * example:
@@ -75,14 +152,155 @@ declare namespace Components {
75
152
  */
76
153
  postinstall?: string;
77
154
  };
155
+ manifest_id?: /**
156
+ * ID of an imported / installed manifest
157
+ * example:
158
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
159
+ */
160
+ ManifestID;
161
+ /**
162
+ * example:
163
+ * Solar B2B
164
+ */
165
+ source_blueprint_name?: string;
166
+ /**
167
+ * URL slug of a blueprint from the epilot marketplace
168
+ * example:
169
+ * solar-b2b
170
+ */
171
+ source_blueprint_slug?: string;
172
+ /**
173
+ * Version of the blueprint (semver)
174
+ * example:
175
+ * 1.0.0
176
+ */
177
+ source_blueprint_version?: string;
78
178
  }
79
179
  /**
80
- * ID of an import or export job
180
+ * ID of an import or export job (state machine)
81
181
  * example:
82
182
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
83
183
  */
84
184
  export type JobID = string;
85
185
  export type JobStatus = "STARTED" | "WAITING_USER_ACTION" | "CANCELED" | "IN_PROGRESS" | "SUCCESS" | "FAILED";
186
+ export interface Manifest {
187
+ manifest_id?: /**
188
+ * ID of an imported / installed manifest
189
+ * example:
190
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
191
+ */
192
+ ManifestID;
193
+ /**
194
+ * example:
195
+ * Solar B2B
196
+ */
197
+ source_blueprint_name?: string;
198
+ /**
199
+ * URL slug of a blueprint from the epilot marketplace
200
+ * example:
201
+ * solar-b2b
202
+ */
203
+ source_blueprint_slug?: string;
204
+ /**
205
+ * Version of the blueprint (semver)
206
+ * example:
207
+ * 1.0.0
208
+ */
209
+ source_blueprint_version?: string;
210
+ /**
211
+ * Markdown content part of a manifest file
212
+ */
213
+ markdown?: {
214
+ /**
215
+ * Markdown content shown before installing the manifest
216
+ * example:
217
+ * This is the content of the manifest.md file which contains the manifest descripton.
218
+ *
219
+ */
220
+ manifest?: string;
221
+ /**
222
+ * Markdown content to be displayed when showing the plan to install blueprint
223
+ * example:
224
+ * This is the content of the preinstall.md file
225
+ *
226
+ */
227
+ preinstall?: string;
228
+ /**
229
+ * Markdown content to be displayed when showing the plan to install blueprint
230
+ * example:
231
+ * This is the content of the postinstall.md file
232
+ *
233
+ */
234
+ postinstall?: string;
235
+ };
236
+ /**
237
+ * An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import
238
+ */
239
+ imported_resources?: /* An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import */ RootResourceNode[] | RootResourceNode;
240
+ /**
241
+ * An URL to download the imported resources when the resources are too large to be included in the response
242
+ * example:
243
+ * https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/large.json
244
+ */
245
+ large_imported_resources_url?: string; // uri
246
+ /**
247
+ * When the manifest was first installed (applied)
248
+ */
249
+ created_at?: string; // date-time
250
+ /**
251
+ * When the manifest was last updated (applied)
252
+ */
253
+ updated_at?: string; // date-time
254
+ }
255
+ /**
256
+ * ID of an imported / installed manifest
257
+ * example:
258
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
259
+ */
260
+ export type ManifestID = string;
261
+ export interface ManifestItem {
262
+ manifest_id?: /**
263
+ * ID of an imported / installed manifest
264
+ * example:
265
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
266
+ */
267
+ ManifestID;
268
+ /**
269
+ * example:
270
+ * Solar B2B
271
+ */
272
+ source_blueprint_name?: string;
273
+ /**
274
+ * URL slug of a blueprint from the epilot marketplace
275
+ * example:
276
+ * solar-b2b
277
+ */
278
+ source_blueprint_slug?: string;
279
+ /**
280
+ * Version of the blueprint (semver)
281
+ * example:
282
+ * 1.0.0
283
+ */
284
+ source_blueprint_version?: string;
285
+ /**
286
+ * When the manifest was first installed (applied)
287
+ */
288
+ created_at?: string; // date-time
289
+ /**
290
+ * When the manifest was last updated (applied)
291
+ */
292
+ updated_at?: string; // date-time
293
+ }
294
+ export interface ManifestTimestampFields {
295
+ /**
296
+ * When the manifest was first installed (applied)
297
+ */
298
+ created_at?: string; // date-time
299
+ /**
300
+ * When the manifest was last updated (applied)
301
+ */
302
+ updated_at?: string; // date-time
303
+ }
86
304
  export interface ResourceNode {
87
305
  id: string;
88
306
  type: ResourceNodeType;
@@ -108,7 +326,7 @@ declare namespace Components {
108
326
  export interface S3Reference {
109
327
  /**
110
328
  * example:
111
- * epilot-dev-blueprints
329
+ * blueprint-manifest-prod-blueprintsv2bucket-sybpsryropzw
112
330
  */
113
331
  bucket?: string;
114
332
  /**
@@ -143,7 +361,7 @@ declare namespace Paths {
143
361
  namespace ApplyPlan {
144
362
  namespace Parameters {
145
363
  export type JobId = /**
146
- * ID of an import or export job
364
+ * ID of an import or export job (state machine)
147
365
  * example:
148
366
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
149
367
  */
@@ -160,7 +378,14 @@ declare namespace Paths {
160
378
  manifestFilePath?: string;
161
379
  }
162
380
  namespace Responses {
163
- export type $200 = string;
381
+ export interface $200 {
382
+ jobId?: /**
383
+ * ID of an import or export job (state machine)
384
+ * example:
385
+ * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
386
+ */
387
+ Components.Schemas.JobID;
388
+ }
164
389
  }
165
390
  }
166
391
  namespace CreateExport {
@@ -193,16 +418,21 @@ declare namespace Paths {
193
418
  string?,
194
419
  string?
195
420
  ];
421
+ jobId?: /**
422
+ * ID of an import or export job (state machine)
423
+ * example:
424
+ * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
425
+ */
426
+ Components.Schemas.JobID;
196
427
  /**
197
428
  * Temporary flag to indicate if multiple resources are being exported
198
429
  */
199
430
  isExportingMultipleResources?: boolean;
200
- jobId?: string;
201
431
  }
202
432
  namespace Responses {
203
433
  export interface $200 {
204
434
  jobId?: /**
205
- * ID of an import or export job
435
+ * ID of an import or export job (state machine)
206
436
  * example:
207
437
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
208
438
  */
@@ -211,14 +441,36 @@ declare namespace Paths {
211
441
  }
212
442
  }
213
443
  namespace CreatePlan {
214
- export interface RequestBody {
444
+ export type RequestBody = {
215
445
  /**
216
- * Path to the manifest file uploaded via `uploadManifest`
446
+ * s3ref of manifest file uploaded via `uploadManifest`
447
+ */
448
+ s3ref: {
449
+ /**
450
+ * example:
451
+ * blueprint-manifest-prod-blueprintsv2bucket-sybpsryropzw
452
+ */
453
+ bucket?: string;
454
+ /**
455
+ * example:
456
+ * templates/main.tf
457
+ */
458
+ key?: string;
459
+ };
460
+ /**
461
+ * ID of an imported / installed manifest
462
+ * example:
463
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
464
+ */
465
+ manifest_id?: string;
466
+ } | {
467
+ /**
468
+ * Manifest file key uploaded via `uploadManifest`
217
469
  * example:
218
470
  * example.tf
219
471
  */
220
- manifestFilePath?: string;
221
- }
472
+ manifestFilePath: string;
473
+ };
222
474
  namespace Responses {
223
475
  export interface $200 {
224
476
  /**
@@ -229,10 +481,26 @@ declare namespace Paths {
229
481
  }
230
482
  }
231
483
  }
484
+ namespace DeleteManifest {
485
+ namespace Parameters {
486
+ export type ManifestId = /**
487
+ * ID of an imported / installed manifest
488
+ * example:
489
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
490
+ */
491
+ Components.Schemas.ManifestID;
492
+ }
493
+ export interface PathParameters {
494
+ manifest_id: Parameters.ManifestId;
495
+ }
496
+ namespace Responses {
497
+ export type $200 = Components.Schemas.Manifest;
498
+ }
499
+ }
232
500
  namespace ExportManifest {
233
501
  namespace Parameters {
234
502
  export type JobId = /**
235
- * ID of an import or export job
503
+ * ID of an import or export job (state machine)
236
504
  * example:
237
505
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
238
506
  */
@@ -259,7 +527,7 @@ declare namespace Paths {
259
527
  namespace Responses {
260
528
  export interface $200 {
261
529
  jobId?: /**
262
- * ID of an import or export job
530
+ * ID of an import or export job (state machine)
263
531
  * example:
264
532
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
265
533
  */
@@ -270,7 +538,7 @@ declare namespace Paths {
270
538
  namespace GetJob {
271
539
  namespace Parameters {
272
540
  export type JobId = /**
273
- * ID of an import or export job
541
+ * ID of an import or export job (state machine)
274
542
  * example:
275
543
  * 4854bb2a-94f9-424d-a968-3fb17fb0bf89
276
544
  */
@@ -283,6 +551,34 @@ declare namespace Paths {
283
551
  export type $200 = Components.Schemas.Job;
284
552
  }
285
553
  }
554
+ namespace GetManifest {
555
+ namespace Parameters {
556
+ export type ManifestId = /**
557
+ * ID of an imported / installed manifest
558
+ * example:
559
+ * c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341
560
+ */
561
+ Components.Schemas.ManifestID;
562
+ }
563
+ export interface PathParameters {
564
+ manifest_id: Parameters.ManifestId;
565
+ }
566
+ namespace Responses {
567
+ export type $200 = Components.Schemas.Manifest;
568
+ }
569
+ }
570
+ namespace ListInstalledManifests {
571
+ namespace Responses {
572
+ export interface $200 {
573
+ /**
574
+ * example:
575
+ * 1
576
+ */
577
+ total?: number;
578
+ results?: Components.Schemas.ManifestItem[];
579
+ }
580
+ }
581
+ }
286
582
  namespace UploadManifest {
287
583
  export type RequestBody = Components.Schemas.UploadFilePayload;
288
584
  namespace Responses {
@@ -314,6 +610,8 @@ export interface OperationMethods {
314
610
  *
315
611
  * Creates a new Export Job with a list of available resources to export from the passed root resource.
316
612
  *
613
+ * Multiple root resources can be added by calling this multiple times with the same jobId
614
+ *
317
615
  */
318
616
  'createExport'(
319
617
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -344,7 +642,10 @@ export interface OperationMethods {
344
642
  /**
345
643
  * createPlan - createPlan
346
644
  *
347
- * Creates a new import job from an uploaded manifest file and returns the plan
645
+ * Creates a new import job from an uploaded manifest file and returns the plan.
646
+ *
647
+ * Creates an updated plan for an installed manifest when `manifest_id` is passed
648
+ *
348
649
  */
349
650
  'createPlan'(
350
651
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -354,13 +655,46 @@ export interface OperationMethods {
354
655
  /**
355
656
  * applyPlan - applyPlan
356
657
  *
357
- * Apply a plan returned by `createPlan`
658
+ * Apply a plan returned by `createPlan`.
358
659
  */
359
660
  'applyPlan'(
360
661
  parameters?: Parameters<Paths.ApplyPlan.PathParameters> | null,
361
662
  data?: Paths.ApplyPlan.RequestBody,
362
663
  config?: AxiosRequestConfig
363
664
  ): OperationResponse<Paths.ApplyPlan.Responses.$200>
665
+ /**
666
+ * listInstalledManifests - listInstalledManifests
667
+ *
668
+ * List Blueprint Manifests installed to the organization
669
+ */
670
+ 'listInstalledManifests'(
671
+ parameters?: Parameters<UnknownParamsObject> | null,
672
+ data?: any,
673
+ config?: AxiosRequestConfig
674
+ ): OperationResponse<Paths.ListInstalledManifests.Responses.$200>
675
+ /**
676
+ * getManifest - getManifest
677
+ *
678
+ * Get installed Manifest by ID
679
+ */
680
+ 'getManifest'(
681
+ parameters?: Parameters<Paths.GetManifest.PathParameters> | null,
682
+ data?: any,
683
+ config?: AxiosRequestConfig
684
+ ): OperationResponse<Paths.GetManifest.Responses.$200>
685
+ /**
686
+ * deleteManifest - deleteManifest
687
+ *
688
+ * Remove installed manifest from the org
689
+ *
690
+ * Note that this does not delete the installed resources of the Manifest!
691
+ *
692
+ */
693
+ 'deleteManifest'(
694
+ parameters?: Parameters<Paths.DeleteManifest.PathParameters> | null,
695
+ data?: any,
696
+ config?: AxiosRequestConfig
697
+ ): OperationResponse<Paths.DeleteManifest.Responses.$200>
364
698
  }
365
699
 
366
700
  export interface PathsDictionary {
@@ -382,6 +716,8 @@ export interface PathsDictionary {
382
716
  *
383
717
  * Creates a new Export Job with a list of available resources to export from the passed root resource.
384
718
  *
719
+ * Multiple root resources can be added by calling this multiple times with the same jobId
720
+ *
385
721
  */
386
722
  'post'(
387
723
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -418,7 +754,10 @@ export interface PathsDictionary {
418
754
  /**
419
755
  * createPlan - createPlan
420
756
  *
421
- * Creates a new import job from an uploaded manifest file and returns the plan
757
+ * Creates a new import job from an uploaded manifest file and returns the plan.
758
+ *
759
+ * Creates an updated plan for an installed manifest when `manifest_id` is passed
760
+ *
422
761
  */
423
762
  'post'(
424
763
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -430,7 +769,7 @@ export interface PathsDictionary {
430
769
  /**
431
770
  * applyPlan - applyPlan
432
771
  *
433
- * Apply a plan returned by `createPlan`
772
+ * Apply a plan returned by `createPlan`.
434
773
  */
435
774
  'post'(
436
775
  parameters?: Parameters<Paths.ApplyPlan.PathParameters> | null,
@@ -438,13 +777,57 @@ export interface PathsDictionary {
438
777
  config?: AxiosRequestConfig
439
778
  ): OperationResponse<Paths.ApplyPlan.Responses.$200>
440
779
  }
780
+ ['/v1/blueprint-manifest/manifests']: {
781
+ /**
782
+ * listInstalledManifests - listInstalledManifests
783
+ *
784
+ * List Blueprint Manifests installed to the organization
785
+ */
786
+ 'get'(
787
+ parameters?: Parameters<UnknownParamsObject> | null,
788
+ data?: any,
789
+ config?: AxiosRequestConfig
790
+ ): OperationResponse<Paths.ListInstalledManifests.Responses.$200>
791
+ }
792
+ ['/v1/blueprint-manifest/manifests/{manifest_id}']: {
793
+ /**
794
+ * getManifest - getManifest
795
+ *
796
+ * Get installed Manifest by ID
797
+ */
798
+ 'get'(
799
+ parameters?: Parameters<Paths.GetManifest.PathParameters> | null,
800
+ data?: any,
801
+ config?: AxiosRequestConfig
802
+ ): OperationResponse<Paths.GetManifest.Responses.$200>
803
+ /**
804
+ * deleteManifest - deleteManifest
805
+ *
806
+ * Remove installed manifest from the org
807
+ *
808
+ * Note that this does not delete the installed resources of the Manifest!
809
+ *
810
+ */
811
+ 'delete'(
812
+ parameters?: Parameters<Paths.DeleteManifest.PathParameters> | null,
813
+ data?: any,
814
+ config?: AxiosRequestConfig
815
+ ): OperationResponse<Paths.DeleteManifest.Responses.$200>
816
+ }
441
817
  }
442
818
 
443
819
  export type Client = OpenAPIClient<OperationMethods, PathsDictionary>
444
820
 
821
+ export type CommonImportFields = Components.Schemas.CommonImportFields;
822
+ export type CommonManifestFields = Components.Schemas.CommonManifestFields;
823
+ export type CommonMarkdownFields = Components.Schemas.CommonMarkdownFields;
445
824
  export type Job = Components.Schemas.Job;
446
825
  export type JobID = Components.Schemas.JobID;
447
826
  export type JobStatus = Components.Schemas.JobStatus;
827
+ export type Manifest = Components.Schemas.Manifest;
828
+ export type ManifestID = Components.Schemas.ManifestID;
829
+ export type ManifestItem = Components.Schemas.ManifestItem;
830
+ export type ManifestTimestampFields = Components.Schemas.ManifestTimestampFields;
448
831
  export type ResourceNode = Components.Schemas.ResourceNode;
449
832
  export type ResourceNodeType = Components.Schemas.ResourceNodeType;
450
833
  export type RootResourceNode = Components.Schemas.RootResourceNode;
package/dist/openapi.json CHANGED
@@ -16,7 +16,11 @@
16
16
  },
17
17
  {
18
18
  "name": "Import",
19
- "description": "Import a Blueprint Manifest"
19
+ "description": "Install or update a Blueprint Manifest"
20
+ },
21
+ {
22
+ "name": "Manifests",
23
+ "description": "Manage installed Manifests"
20
24
  }
21
25
  ],
22
26
  "security": [
@@ -64,7 +68,7 @@
64
68
  "post": {
65
69
  "operationId": "createExport",
66
70
  "summary": "createExport",
67
- "description": "Creates a new Export Job with a list of available resources to export from the passed root resource.\n",
71
+ "description": "Creates a new Export Job with a list of available resources to export from the passed root resource.\n\nMultiple root resources can be added by calling this multiple times with the same jobId\n",
68
72
  "tags": [
69
73
  "Export"
70
74
  ],
@@ -103,12 +107,12 @@
103
107
  "minItems": 1,
104
108
  "maxItems": 25
105
109
  },
110
+ "jobId": {
111
+ "$ref": "#/components/schemas/JobID"
112
+ },
106
113
  "isExportingMultipleResources": {
107
114
  "type": "boolean",
108
115
  "description": "Temporary flag to indicate if multiple resources are being exported"
109
- },
110
- "jobId": {
111
- "type": "string"
112
116
  }
113
117
  }
114
118
  }
@@ -237,7 +241,7 @@
237
241
  "post": {
238
242
  "operationId": "createPlan",
239
243
  "summary": "createPlan",
240
- "description": "Creates a new import job from an uploaded manifest file and returns the plan",
244
+ "description": "Creates a new import job from an uploaded manifest file and returns the plan.\n\nCreates an updated plan for an installed manifest when `manifest_id` is passed\n",
241
245
  "tags": [
242
246
  "Import"
243
247
  ],
@@ -245,14 +249,50 @@
245
249
  "content": {
246
250
  "application/json": {
247
251
  "schema": {
248
- "type": "object",
249
- "properties": {
250
- "manifestFilePath": {
251
- "description": "Path to the manifest file uploaded via `uploadManifest`",
252
- "type": "string",
253
- "example": "example.tf"
252
+ "oneOf": [
253
+ {
254
+ "type": "object",
255
+ "properties": {
256
+ "s3ref": {
257
+ "allOf": [
258
+ {
259
+ "description": "s3ref of manifest file uploaded via `uploadManifest`"
260
+ },
261
+ {
262
+ "$ref": "#/components/schemas/S3Reference"
263
+ }
264
+ ]
265
+ },
266
+ "manifest_id": {
267
+ "allOf": [
268
+ {
269
+ "description": "Update an existing manifest (optional)"
270
+ },
271
+ {
272
+ "$ref": "#/components/schemas/ManifestID"
273
+ }
274
+ ]
275
+ }
276
+ },
277
+ "required": [
278
+ "s3ref"
279
+ ]
280
+ },
281
+ {
282
+ "type": "object",
283
+ "properties": {
284
+ "manifestFilePath": {
285
+ "deprecated": true,
286
+ "description": "Manifest file key uploaded via `uploadManifest`",
287
+ "type": "string",
288
+ "example": "example.tf"
289
+ }
290
+ },
291
+ "required": [
292
+ "manifestFilePath"
293
+ ]
254
294
  }
255
- }
295
+ ]
256
296
  }
257
297
  }
258
298
  }
@@ -281,7 +321,7 @@
281
321
  "post": {
282
322
  "operationId": "applyPlan",
283
323
  "summary": "applyPlan",
284
- "description": "Apply a plan returned by `createPlan`",
324
+ "description": "Apply a plan returned by `createPlan`.",
285
325
  "tags": [
286
326
  "Import"
287
327
  ],
@@ -307,11 +347,112 @@
307
347
  },
308
348
  "responses": {
309
349
  "200": {
310
- "description": "Success",
350
+ "description": "Applied Import Job ID",
311
351
  "content": {
312
352
  "application/json": {
313
353
  "schema": {
314
- "type": "string"
354
+ "type": "object",
355
+ "properties": {
356
+ "jobId": {
357
+ "$ref": "#/components/schemas/JobID"
358
+ }
359
+ }
360
+ }
361
+ }
362
+ }
363
+ }
364
+ }
365
+ }
366
+ },
367
+ "/v1/blueprint-manifest/manifests": {
368
+ "get": {
369
+ "operationId": "listInstalledManifests",
370
+ "summary": "listInstalledManifests",
371
+ "description": "List Blueprint Manifests installed to the organization",
372
+ "tags": [
373
+ "Manifests"
374
+ ],
375
+ "responses": {
376
+ "200": {
377
+ "description": "Installed Blueprint Manifests in the organization",
378
+ "content": {
379
+ "application/json": {
380
+ "schema": {
381
+ "type": "object",
382
+ "properties": {
383
+ "total": {
384
+ "type": "integer",
385
+ "example": 1
386
+ },
387
+ "results": {
388
+ "type": "array",
389
+ "items": {
390
+ "$ref": "#/components/schemas/ManifestItem"
391
+ }
392
+ }
393
+ }
394
+ }
395
+ }
396
+ }
397
+ }
398
+ }
399
+ }
400
+ },
401
+ "/v1/blueprint-manifest/manifests/{manifest_id}": {
402
+ "get": {
403
+ "operationId": "getManifest",
404
+ "summary": "getManifest",
405
+ "description": "Get installed Manifest by ID",
406
+ "tags": [
407
+ "Manifests"
408
+ ],
409
+ "parameters": [
410
+ {
411
+ "in": "path",
412
+ "required": true,
413
+ "name": "manifest_id",
414
+ "schema": {
415
+ "$ref": "#/components/schemas/ManifestID"
416
+ }
417
+ }
418
+ ],
419
+ "responses": {
420
+ "200": {
421
+ "description": "Installed Blueprint Manifest in the Organization",
422
+ "content": {
423
+ "application/json": {
424
+ "schema": {
425
+ "$ref": "#/components/schemas/Manifest"
426
+ }
427
+ }
428
+ }
429
+ }
430
+ }
431
+ },
432
+ "delete": {
433
+ "operationId": "deleteManifest",
434
+ "summary": "deleteManifest",
435
+ "description": "Remove installed manifest from the org\n\nNote that this does not delete the installed resources of the Manifest!\n",
436
+ "tags": [
437
+ "Manifests"
438
+ ],
439
+ "parameters": [
440
+ {
441
+ "in": "path",
442
+ "required": true,
443
+ "name": "manifest_id",
444
+ "schema": {
445
+ "$ref": "#/components/schemas/ManifestID"
446
+ }
447
+ }
448
+ ],
449
+ "responses": {
450
+ "200": {
451
+ "description": "The deleted Manifest",
452
+ "content": {
453
+ "application/json": {
454
+ "schema": {
455
+ "$ref": "#/components/schemas/Manifest"
315
456
  }
316
457
  }
317
458
  }
@@ -322,6 +463,42 @@
322
463
  },
323
464
  "components": {
324
465
  "schemas": {
466
+ "ManifestID": {
467
+ "type": "string",
468
+ "description": "ID of an imported / installed manifest",
469
+ "example": "c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341"
470
+ },
471
+ "JobID": {
472
+ "type": "string",
473
+ "description": "ID of an import or export job (state machine)",
474
+ "example": "4854bb2a-94f9-424d-a968-3fb17fb0bf89"
475
+ },
476
+ "Manifest": {
477
+ "allOf": [
478
+ {
479
+ "$ref": "#/components/schemas/CommonManifestFields"
480
+ },
481
+ {
482
+ "$ref": "#/components/schemas/CommonMarkdownFields"
483
+ },
484
+ {
485
+ "$ref": "#/components/schemas/CommonImportFields"
486
+ },
487
+ {
488
+ "$ref": "#/components/schemas/ManifestTimestampFields"
489
+ }
490
+ ]
491
+ },
492
+ "ManifestItem": {
493
+ "allOf": [
494
+ {
495
+ "$ref": "#/components/schemas/CommonManifestFields"
496
+ },
497
+ {
498
+ "$ref": "#/components/schemas/ManifestTimestampFields"
499
+ }
500
+ ]
501
+ },
325
502
  "JobStatus": {
326
503
  "type": "string",
327
504
  "enum": [
@@ -473,67 +650,148 @@
473
650
  "type"
474
651
  ]
475
652
  },
476
- "JobID": {
477
- "type": "string",
478
- "description": "ID of an import or export job",
479
- "example": "4854bb2a-94f9-424d-a968-3fb17fb0bf89"
480
- },
481
653
  "Job": {
482
- "type": "object",
483
- "properties": {
484
- "job_status": {
485
- "$ref": "#/components/schemas/JobStatus"
654
+ "allOf": [
655
+ {
656
+ "type": "object",
657
+ "properties": {
658
+ "job_id": {
659
+ "$ref": "#/components/schemas/JobID"
660
+ },
661
+ "job_status": {
662
+ "$ref": "#/components/schemas/JobStatus"
663
+ },
664
+ "message": {
665
+ "type": "string"
666
+ },
667
+ "timestamp": {
668
+ "type": "string",
669
+ "format": "date-time"
670
+ },
671
+ "plan_file_content": {
672
+ "type": "string",
673
+ "description": "An URL to download the plan file"
674
+ },
675
+ "resources_to_export": {
676
+ "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
677
+ "oneOf": [
678
+ {
679
+ "type": "array",
680
+ "items": {
681
+ "$ref": "#/components/schemas/RootResourceNode"
682
+ }
683
+ },
684
+ {
685
+ "$ref": "#/components/schemas/RootResourceNode"
686
+ }
687
+ ]
688
+ },
689
+ "large_resources_to_export_url": {
690
+ "type": "string",
691
+ "description": "An URL to download the resources to export when the resources are too large to be included in the response"
692
+ },
693
+ "resources_to_import": {
694
+ "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
695
+ "oneOf": [
696
+ {
697
+ "type": "array",
698
+ "items": {
699
+ "$ref": "#/components/schemas/RootResourceNode"
700
+ }
701
+ },
702
+ {
703
+ "$ref": "#/components/schemas/RootResourceNode"
704
+ }
705
+ ]
706
+ },
707
+ "large_resources_to_import_url": {
708
+ "type": "string",
709
+ "description": "An URL to download the resources to import when the resources are too large to be included in the response"
710
+ }
711
+ }
486
712
  },
487
- "job_id": {
488
- "$ref": "#/components/schemas/JobID"
713
+ {
714
+ "$ref": "#/components/schemas/CommonImportFields"
489
715
  },
490
- "message": {
491
- "type": "string"
716
+ {
717
+ "$ref": "#/components/schemas/CommonMarkdownFields"
492
718
  },
493
- "timestamp": {
719
+ {
720
+ "$ref": "#/components/schemas/CommonManifestFields"
721
+ }
722
+ ]
723
+ },
724
+ "UploadFilePayload": {
725
+ "type": "object",
726
+ "properties": {
727
+ "filename": {
494
728
  "type": "string",
495
- "format": "date-time"
729
+ "example": "main.tf"
496
730
  },
497
- "plan_file_content": {
731
+ "mime_type": {
732
+ "description": "MIME type of file",
498
733
  "type": "string",
499
- "description": "An URL to download the plan file"
734
+ "example": "application/pdf",
735
+ "default": "application/octet-stream"
736
+ }
737
+ },
738
+ "required": [
739
+ "filename"
740
+ ]
741
+ },
742
+ "S3Reference": {
743
+ "type": "object",
744
+ "properties": {
745
+ "bucket": {
746
+ "type": "string",
747
+ "example": "blueprint-manifest-prod-blueprintsv2bucket-sybpsryropzw"
500
748
  },
501
- "resources_to_export": {
502
- "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
503
- "oneOf": [
504
- {
505
- "type": "array",
506
- "items": {
507
- "$ref": "#/components/schemas/RootResourceNode"
508
- }
509
- },
510
- {
511
- "$ref": "#/components/schemas/RootResourceNode"
512
- }
513
- ]
749
+ "key": {
750
+ "type": "string",
751
+ "example": "templates/main.tf"
752
+ }
753
+ }
754
+ },
755
+ "CommonManifestFields": {
756
+ "type": "object",
757
+ "properties": {
758
+ "manifest_id": {
759
+ "$ref": "#/components/schemas/ManifestID"
514
760
  },
515
- "large_resources_to_export_url": {
761
+ "source_blueprint_name": {
516
762
  "type": "string",
517
- "description": "An URL to download the resources to export when the resources are too large to be included in the response"
763
+ "example": "Solar B2B"
518
764
  },
519
- "resources_to_import": {
520
- "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
521
- "oneOf": [
522
- {
523
- "type": "array",
524
- "items": {
525
- "$ref": "#/components/schemas/RootResourceNode"
526
- }
527
- },
528
- {
529
- "$ref": "#/components/schemas/RootResourceNode"
530
- }
531
- ]
765
+ "source_blueprint_slug": {
766
+ "type": "string",
767
+ "description": "URL slug of a blueprint from the epilot marketplace",
768
+ "example": "solar-b2b"
532
769
  },
533
- "large_resources_to_import_url": {
770
+ "source_blueprint_version": {
771
+ "type": "string",
772
+ "description": "Version of the blueprint (semver)",
773
+ "example": "1.0.0"
774
+ }
775
+ }
776
+ },
777
+ "ManifestTimestampFields": {
778
+ "type": "object",
779
+ "properties": {
780
+ "created_at": {
781
+ "description": "When the manifest was first installed (applied)",
534
782
  "type": "string",
535
- "description": "An URL to download the resources to import when the resources are too large to be included in the response"
783
+ "format": "date-time"
536
784
  },
785
+ "updated_at": {
786
+ "description": "When the manifest was last updated (applied)",
787
+ "type": "string",
788
+ "format": "date-time"
789
+ }
790
+ }
791
+ },
792
+ "CommonImportFields": {
793
+ "type": "object",
794
+ "properties": {
537
795
  "imported_resources": {
538
796
  "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
539
797
  "oneOf": [
@@ -550,13 +808,27 @@
550
808
  },
551
809
  "large_imported_resources_url": {
552
810
  "type": "string",
553
- "description": "An URL to download the imported resources when the resources are too large to be included in the response"
554
- },
811
+ "format": "uri",
812
+ "description": "An URL to download the imported resources when the resources are too large to be included in the response",
813
+ "example": "https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/large.json"
814
+ }
815
+ }
816
+ },
817
+ "CommonMarkdownFields": {
818
+ "type": "object",
819
+ "properties": {
555
820
  "markdown": {
556
821
  "type": "object",
822
+ "description": "Markdown content part of a manifest file",
557
823
  "properties": {
824
+ "manifest": {
825
+ "type": "string",
826
+ "description": "Markdown content shown before installing the manifest",
827
+ "example": "This is the content of the manifest.md file which contains the manifest descripton. \n"
828
+ },
558
829
  "preinstall": {
559
830
  "type": "string",
831
+ "deprecated": true,
560
832
  "description": "Markdown content to be displayed when showing the plan to install blueprint",
561
833
  "example": "This is the content of the preinstall.md file\n"
562
834
  },
@@ -568,37 +840,6 @@
568
840
  }
569
841
  }
570
842
  }
571
- },
572
- "UploadFilePayload": {
573
- "type": "object",
574
- "properties": {
575
- "filename": {
576
- "type": "string",
577
- "example": "main.tf"
578
- },
579
- "mime_type": {
580
- "description": "MIME type of file",
581
- "type": "string",
582
- "example": "application/pdf",
583
- "default": "application/octet-stream"
584
- }
585
- },
586
- "required": [
587
- "filename"
588
- ]
589
- },
590
- "S3Reference": {
591
- "type": "object",
592
- "properties": {
593
- "bucket": {
594
- "type": "string",
595
- "example": "epilot-dev-blueprints"
596
- },
597
- "key": {
598
- "type": "string",
599
- "example": "templates/main.tf"
600
- }
601
- }
602
843
  }
603
844
  },
604
845
  "parameters": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/blueprint-manifest-client",
3
- "version": "2.2.5",
3
+ "version": "2.2.6",
4
4
  "description": "Client for epilot Terraform Blueprint Manifest API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -18,7 +18,6 @@
18
18
  "keywords": [
19
19
  "blueprint",
20
20
  "manifest",
21
- "tf-blueprints",
22
21
  "terraform"
23
22
  ],
24
23
  "scripts": {
@@ -28,7 +27,7 @@
28
27
  "openapi:local": "node ../../scripts/update-openapi.js ../../../blueprint-manifest-api/lambda/TerraformHandlerFunction/openapi.yml",
29
28
  "typegen": "openapi typegen src/openapi.json --client -b '/* eslint-disable */' > src/openapi.d.ts",
30
29
  "build": "tsc && npm run build:patch && npm run bundle-definition",
31
- "build:patch": "sed -i '/^__exportStar.*openapi.*$/d' dist/index.js",
30
+ "build:patch": "sed -i'' -e '/^__exportStar.*openapi.*$/d' dist/index.js",
32
31
  "build:watch": "npm run build && tsc -w",
33
32
  "prepublishOnly": "npm run typegen && npm run build",
34
33
  "lint": "../../node_modules/eslint/bin/eslint.js src"
@@ -72,5 +71,5 @@
72
71
  "webpack": "^5.18.0",
73
72
  "webpack-cli": "^4.4.0"
74
73
  },
75
- "gitHead": "cb7e6acc938eb178e531c19834ea8bd0d6445e6f"
74
+ "gitHead": "39426e86cfb320fa3227dc03f60ee6a10848e7c7"
76
75
  }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2022 epilot GmbH
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.