@itentialopensource/adapter-docker 0.5.4 → 0.7.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 (57) hide show
  1. package/AUTH.md +35 -0
  2. package/BROKER.md +199 -0
  3. package/CALLS.md +770 -0
  4. package/CHANGELOG.md +51 -15
  5. package/CODE_OF_CONDUCT.md +12 -17
  6. package/CONTRIBUTING.md +3 -148
  7. package/ENHANCE.md +69 -0
  8. package/PROPERTIES.md +641 -0
  9. package/README.md +239 -507
  10. package/SUMMARY.md +9 -0
  11. package/SYSTEMINFO.md +25 -0
  12. package/TROUBLESHOOT.md +47 -0
  13. package/adapter.js +382 -263
  14. package/adapterBase.js +843 -397
  15. package/changelogs/CHANGELOG.md +103 -0
  16. package/entities/.generic/action.json +110 -5
  17. package/entities/.generic/schema.json +6 -1
  18. package/error.json +12 -0
  19. package/metadata.json +57 -0
  20. package/package.json +29 -22
  21. package/pronghorn.json +692 -89
  22. package/propertiesDecorators.json +14 -0
  23. package/propertiesSchema.json +842 -6
  24. package/refs?service=git-upload-pack +0 -0
  25. package/report/adapter-openapi.json +4034 -0
  26. package/report/adapter-openapi.yaml +3121 -0
  27. package/report/adapterInfo.json +10 -0
  28. package/report/updateReport1653089048005.json +120 -0
  29. package/report/updateReport1691507531387.json +120 -0
  30. package/report/updateReport1692202549558.json +120 -0
  31. package/report/updateReport1694461579341.json +120 -0
  32. package/report/updateReport1698420876380.json +120 -0
  33. package/sampleProperties.json +157 -4
  34. package/test/integration/adapterTestBasicGet.js +4 -6
  35. package/test/integration/adapterTestConnectivity.js +91 -42
  36. package/test/integration/adapterTestIntegration.js +158 -104
  37. package/test/unit/adapterBaseTestUnit.js +393 -310
  38. package/test/unit/adapterTestUnit.js +918 -164
  39. package/utils/adapterInfo.js +206 -0
  40. package/utils/addAuth.js +94 -0
  41. package/utils/artifactize.js +1 -1
  42. package/utils/basicGet.js +1 -14
  43. package/utils/checkMigrate.js +1 -1
  44. package/utils/entitiesToDB.js +179 -0
  45. package/utils/findPath.js +1 -1
  46. package/utils/methodDocumentor.js +273 -0
  47. package/utils/modify.js +14 -16
  48. package/utils/packModificationScript.js +2 -2
  49. package/utils/patches2bundledDeps.js +90 -0
  50. package/utils/pre-commit.sh +5 -0
  51. package/utils/removeHooks.js +20 -0
  52. package/utils/taskMover.js +309 -0
  53. package/utils/tbScript.js +129 -53
  54. package/utils/tbUtils.js +152 -35
  55. package/utils/testRunner.js +17 -17
  56. package/utils/troubleshootingAdapter.js +10 -31
  57. package/workflows/README.md +0 -3
@@ -0,0 +1,103 @@
1
+
2
+ ## 0.6.0 [05-21-2022]
3
+
4
+ * Migration to the latest Adapter Foundation
5
+
6
+ See merge request itentialopensource/adapters/cloud/adapter-docker!9
7
+
8
+ ---
9
+
10
+ ## 0.5.4 [03-04-2021]
11
+
12
+ - Migration to bring up to the latest foundation
13
+ - Change to .eslintignore (adapter_modification directory)
14
+ - Change to README.md (new properties, new scripts, new processes)
15
+ - Changes to adapterBase.js (new methods)
16
+ - Changes to package.json (new scripts, dependencies)
17
+ - Changes to propertiesSchema.json (new properties and changes to existing)
18
+ - Changes to the Unit test
19
+ - Adding several test files, utils files and .generic entity
20
+ - Fix order of scripts and dependencies in package.json
21
+ - Fix order of properties in propertiesSchema.json
22
+ - Update sampleProperties, unit and integration tests to have all new properties.
23
+ - Add all new calls to adapter.js and pronghorn.json
24
+ - Add suspend piece to older methods
25
+
26
+ See merge request itentialopensource/adapters/cloud/adapter-docker!8
27
+
28
+ ---
29
+
30
+ ## 0.5.3 [07-07-2020]
31
+
32
+ - Update to the latest adapter foundation
33
+
34
+ See merge request itentialopensource/adapters/cloud/adapter-docker!7
35
+
36
+ ---
37
+
38
+ ## 0.5.2 [01-09-2020]
39
+
40
+ - Bring the adapter up to the latest foundation
41
+
42
+ See merge request itentialopensource/adapters/cloud/adapter-docker!6
43
+
44
+ ---
45
+
46
+ ## 0.5.1 [11-18-2019]
47
+
48
+ - Changes the healthcheck entity path to a path we know works. Also clean up the format of the entitypaths in general.
49
+
50
+ See merge request itentialopensource/adapters/cloud/adapter-docker!5
51
+
52
+ ---
53
+
54
+ ## 0.5.0 [11-07-2019]
55
+
56
+ - Update the adapter to the latest adapter foundation.
57
+ - Updating to adapter-utils 4.24.3 (automatic)
58
+ - Add sample token schemas (manual)
59
+ - Adding placement property to getToken response schema (manual - before encrypt)
60
+ - Adding sso default into action.json for getToken (manual - before response object)
61
+ - Add new adapter properties for metrics & mock (save_metric, mongo and return_raw) (automatic - check place manual before stub)
62
+ - Update sample properties to include new properties (manual)
63
+ - Update integration test for raw mockdata (automatic)
64
+ - Update test properties (manual)
65
+ - Changes to artifactize (automatic)
66
+ - Update type in sampleProperties so it is correct for the adapter (manual)
67
+ - Update the readme (automatic)
68
+
69
+ See merge request itentialopensource/adapters/cloud/adapter-docker!4
70
+
71
+ ---
72
+
73
+ ## 0.4.0 [09-13-2019]
74
+
75
+ - Update the adapter to the latest adapter foundation
76
+
77
+ See merge request itentialopensource/adapters/cloud/adapter-docker!3
78
+
79
+ ---
80
+
81
+ ## 0.3.0 [07-30-2019] & 0.2.0 [07-18-2019]
82
+
83
+ - Migrate to the latest adapter foundation, categorize and prepare for app artifact
84
+
85
+ See merge request itentialopensource/adapters/cloud/adapter-docker!2
86
+
87
+ ---
88
+
89
+ ## 0.1.2 [04-23-2019]
90
+
91
+ - Added keys to the repo and fixed the versions that the adapter was built with
92
+
93
+ See merge request itentialopensource/adapters/adapter-docker!1
94
+
95
+ ---
96
+
97
+ ## 0.1.1 [04-23-2019]
98
+
99
+ - Initial Commit
100
+
101
+ See commit e4666d2
102
+
103
+ ---
@@ -4,7 +4,7 @@
4
4
  "name": "getGenerics",
5
5
  "protocol": "REST",
6
6
  "method": "GET",
7
- "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
7
+ "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
8
8
  "requestSchema": "schema.json",
9
9
  "responseSchema": "schema.json",
10
10
  "timeout": 0,
@@ -25,7 +25,7 @@
25
25
  "name": "createGeneric",
26
26
  "protocol": "REST",
27
27
  "method": "POST",
28
- "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
28
+ "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
29
29
  "requestSchema": "schema.json",
30
30
  "responseSchema": "schema.json",
31
31
  "timeout": 0,
@@ -46,7 +46,7 @@
46
46
  "name": "updateGeneric",
47
47
  "protocol": "REST",
48
48
  "method": "PUT",
49
- "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
49
+ "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
50
50
  "requestSchema": "schema.json",
51
51
  "responseSchema": "schema.json",
52
52
  "timeout": 0,
@@ -67,7 +67,7 @@
67
67
  "name": "patchGeneric",
68
68
  "protocol": "REST",
69
69
  "method": "PATCH",
70
- "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
70
+ "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
71
71
  "requestSchema": "schema.json",
72
72
  "responseSchema": "schema.json",
73
73
  "timeout": 0,
@@ -88,7 +88,112 @@
88
88
  "name": "deleteGeneric",
89
89
  "protocol": "REST",
90
90
  "method": "DELETE",
91
- "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}?{query}",
91
+ "entitypath": "{base_path}/{version}/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
92
+ "requestSchema": "schema.json",
93
+ "responseSchema": "schema.json",
94
+ "timeout": 0,
95
+ "sendEmpty": false,
96
+ "sendGetBody": false,
97
+ "requestDatatype": "JSON",
98
+ "responseDatatype": "JSON",
99
+ "headers": {},
100
+ "responseObjects": [
101
+ {
102
+ "type": "default",
103
+ "key": "",
104
+ "mockFile": ""
105
+ }
106
+ ]
107
+ },
108
+ {
109
+ "name": "getGenericsNoBase",
110
+ "protocol": "REST",
111
+ "method": "GET",
112
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
113
+ "requestSchema": "schema.json",
114
+ "responseSchema": "schema.json",
115
+ "timeout": 0,
116
+ "sendEmpty": false,
117
+ "sendGetBody": false,
118
+ "requestDatatype": "JSON",
119
+ "responseDatatype": "JSON",
120
+ "headers": {},
121
+ "responseObjects": [
122
+ {
123
+ "type": "default",
124
+ "key": "",
125
+ "mockFile": ""
126
+ }
127
+ ]
128
+ },
129
+ {
130
+ "name": "createGenericNoBase",
131
+ "protocol": "REST",
132
+ "method": "POST",
133
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
134
+ "requestSchema": "schema.json",
135
+ "responseSchema": "schema.json",
136
+ "timeout": 0,
137
+ "sendEmpty": false,
138
+ "sendGetBody": false,
139
+ "requestDatatype": "JSON",
140
+ "responseDatatype": "JSON",
141
+ "headers": {},
142
+ "responseObjects": [
143
+ {
144
+ "type": "default",
145
+ "key": "",
146
+ "mockFile": ""
147
+ }
148
+ ]
149
+ },
150
+ {
151
+ "name": "updateGenericNoBase",
152
+ "protocol": "REST",
153
+ "method": "PUT",
154
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
155
+ "requestSchema": "schema.json",
156
+ "responseSchema": "schema.json",
157
+ "timeout": 0,
158
+ "sendEmpty": false,
159
+ "sendGetBody": false,
160
+ "requestDatatype": "JSON",
161
+ "responseDatatype": "JSON",
162
+ "headers": {},
163
+ "responseObjects": [
164
+ {
165
+ "type": "default",
166
+ "key": "",
167
+ "mockFile": ""
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "name": "patchGenericNoBase",
173
+ "protocol": "REST",
174
+ "method": "PATCH",
175
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
176
+ "requestSchema": "schema.json",
177
+ "responseSchema": "schema.json",
178
+ "timeout": 0,
179
+ "sendEmpty": false,
180
+ "sendGetBody": false,
181
+ "requestDatatype": "JSON",
182
+ "responseDatatype": "JSON",
183
+ "headers": {},
184
+ "responseObjects": [
185
+ {
186
+ "type": "default",
187
+ "key": "",
188
+ "mockFile": ""
189
+ }
190
+ ]
191
+ },
192
+ {
193
+ "name": "deleteGenericNoBase",
194
+ "protocol": "REST",
195
+ "method": "DELETE",
196
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
92
197
  "requestSchema": "schema.json",
93
198
  "responseSchema": "schema.json",
94
199
  "timeout": 0,
@@ -14,7 +14,12 @@
14
14
  "createGeneric",
15
15
  "updateGeneric",
16
16
  "patchGeneric",
17
- "deleteGeneric"
17
+ "deleteGeneric",
18
+ "getGenericsNoBase",
19
+ "createGenericNoBase",
20
+ "updateGenericNoBase",
21
+ "patchGenericNoBase",
22
+ "deleteGenericNoBase"
18
23
  ],
19
24
  "external_name": "ph_request_type"
20
25
  }
package/error.json CHANGED
@@ -96,6 +96,12 @@
96
96
  "displayString": "Invalid properties: $VARIABLE$",
97
97
  "recommendation": "Verify the properties for the adapter"
98
98
  },
99
+ {
100
+ "key": "Missing Properties",
101
+ "icode": "AD.306",
102
+ "displayString": "Property $VARIABLE$ is required",
103
+ "recommendation": "Please provide the required property"
104
+ },
99
105
  {
100
106
  "key": "Query Not Translated",
101
107
  "icode": "AD.310",
@@ -168,6 +174,12 @@
168
174
  "displayString": "Failure response received for $VARIABLE$",
169
175
  "recommendation": "Check the reason for failure in the stack trace"
170
176
  },
177
+ {
178
+ "key": "Suspended Adapter",
179
+ "icode": "AD.600",
180
+ "displayString": "Adapter is suspended",
181
+ "recommendation": "Check if external system is functional and unsuspend if appropriate"
182
+ },
171
183
  {
172
184
  "key": "Caught Exception",
173
185
  "icode": "AD.900",
package/metadata.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "adapter-docker",
3
+ "webName": "Adapter for Integration to Docker Engine",
4
+ "vendor": "Docker",
5
+ "product": "Docker Engine",
6
+ "osVersion": [],
7
+ "apiVersions": [],
8
+ "iapVersions": [
9
+ "2021.1.x",
10
+ "2021.2.x",
11
+ "2022.1.x",
12
+ "2023.1.x"
13
+ ],
14
+ "method": "REST",
15
+ "type": "Adapter",
16
+ "domains": [
17
+ "Cloud"
18
+ ],
19
+ "tags": [
20
+ "Cloud Networking",
21
+ "Containerization",
22
+ "Volume Management"
23
+ ],
24
+ "useCases": [
25
+ "Deploy or Manage Containerized Applications",
26
+ "Add and Remove Inventory Items"
27
+ ],
28
+ "deprecated": {
29
+ "isDeprecated": false
30
+ },
31
+ "brokerSince": "",
32
+ "documentation": {
33
+ "storeLink": "",
34
+ "npmLink": "https://www.npmjs.com/package/@itentialopensource/adapter-docker",
35
+ "repoLink": "https://gitlab.com/itentialopensource/adapters/cloud/adapter-docker.git",
36
+ "docLink": "https://docs.itential.com/opensource/docs/docker",
37
+ "demoLinks": [],
38
+ "faqLink": "https://docs.itential.com/opensource/docs/troubleshooting-an-adapter",
39
+ "contributeLink": "https://gitlab.com/itentialopensource/adapters/contributing-guide",
40
+ "issueLink": "https://itential.atlassian.net/servicedesk/customer/portals",
41
+ "webLink": "https://www.itential.com/adapters/docker/",
42
+ "vendorLink": "https://www.docker.com/",
43
+ "productLink": "https://docs.docker.com/engine/",
44
+ "apiLinks": [
45
+ "https://docs.docker.com/engine/api/"
46
+ ]
47
+ },
48
+ "assets": [],
49
+ "relatedItems": {
50
+ "adapters": [],
51
+ "integrations": [],
52
+ "ecosystemApplications": [],
53
+ "workflowProjects": [],
54
+ "transformationProjects": [],
55
+ "exampleProjects": []
56
+ }
57
+ }
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "@itentialopensource/adapter-docker",
3
- "version": "0.5.4",
3
+ "version": "0.7.0",
4
4
  "description": "This adapter integrates with system Docker",
5
5
  "main": "adapter.js",
6
- "wizardVersion": "2.43.12",
7
- "engineVersion": "1.58.3",
6
+ "systemName": "Docker Engine",
7
+ "wizardVersion": "2.44.7",
8
+ "engineVersion": "1.67.10",
9
+ "adapterType": "http",
8
10
  "scripts": {
9
11
  "artifactize": "npm i && node utils/packModificationScript.js",
10
12
  "preinstall": "node utils/setup.js",
13
+ "deinstall": "node utils/removeHooks.js",
11
14
  "lint": "node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js",
12
15
  "lint:errors": "node --max_old_space_size=4096 ./node_modules/eslint/bin/eslint.js . --ext .json --ext .js --quiet",
13
16
  "test:baseunit": "mocha test/unit/adapterBaseTestUnit.js --LOG=error",
@@ -15,17 +18,17 @@
15
18
  "test:integration": "mocha test/integration/adapterTestIntegration.js --LOG=error",
16
19
  "test:cover": "nyc --reporter html --reporter text mocha --reporter dot test/*",
17
20
  "test": "npm run test:baseunit && npm run test:unit && npm run test:integration",
18
- "adapter:install": "node utils/tbScript.js install",
21
+ "adapter:install": "npm i && node utils/tbScript.js install",
19
22
  "adapter:checkMigrate": "node utils/checkMigrate.js",
20
23
  "adapter:findPath": "node utils/findPath.js",
21
24
  "adapter:migrate": "node utils/modify.js -m",
22
25
  "adapter:update": "node utils/modify.js -u",
23
26
  "adapter:revert": "node utils/modify.js -r",
24
- "troubleshoot": "node utils/tbScript.js",
27
+ "troubleshoot": "node utils/tbScript.js troubleshoot",
25
28
  "healthcheck": "node utils/tbScript.js healthcheck",
26
29
  "basicget": "node utils/tbScript.js basicget",
27
30
  "connectivity": "node utils/tbScript.js connectivity",
28
- "deploy": "npm publish --registry=http://registry.npmjs.org --access=public",
31
+ "deploy": "npm publish --registry=https://registry.npmjs.org --access=public",
29
32
  "build": "npm run deploy"
30
33
  },
31
34
  "keywords": [
@@ -51,27 +54,31 @@
51
54
  "author": "Itential",
52
55
  "homepage": "https://gitlab.com/itentialopensource/adapters/cloud/adapter-docker#readme",
53
56
  "dependencies": {
54
- "@itentialopensource/adapter-utils": "^4.39.1",
55
- "ajv": "^6.12.0",
56
- "axios": "^0.21.0",
57
- "commander": "^2.20.0",
58
- "fs-extra": "^8.1.0",
59
- "mocha": "^8.1.1",
57
+ "@itentialopensource/adapter-utils": "^5.3.0",
58
+ "acorn": "^8.10.0",
59
+ "ajv": "^8.12.0",
60
+ "axios": "^1.4.0",
61
+ "commander": "^11.0.0",
62
+ "dns-lookup-promise": "^1.0.4",
63
+ "fs-extra": "^11.1.1",
64
+ "json-query": "^2.2.2",
65
+ "mocha": "^10.2.0",
60
66
  "mocha-param": "^2.0.1",
61
- "network-diagnostics": "^0.5.3",
67
+ "mongodb": "^4.16.0",
62
68
  "nyc": "^15.1.0",
69
+ "ping": "^0.4.4",
70
+ "prompts": "^2.4.2",
63
71
  "readline-sync": "^1.4.10",
64
- "semver": "^7.3.2",
65
- "winston": "^3.3.3"
72
+ "semver": "^7.5.3",
73
+ "winston": "^3.9.0"
66
74
  },
67
75
  "devDependencies": {
68
- "chai": "^4.2.0",
69
- "eslint": "^7.2.0",
70
- "eslint-config-airbnb-base": "^14.2.0",
71
- "eslint-plugin-import": "^2.21.2",
72
- "eslint-plugin-json": "^2.1.1",
73
- "package-json-validator": "^0.6.3",
74
- "testdouble": "^3.16.1"
76
+ "chai": "^4.3.7",
77
+ "eslint": "^8.44.0",
78
+ "eslint-config-airbnb-base": "^15.0.0",
79
+ "eslint-plugin-import": "^2.27.5",
80
+ "eslint-plugin-json": "^3.1.0",
81
+ "testdouble": "^3.18.0"
75
82
  },
76
83
  "private": false
77
84
  }