@biorate/schema-registry 0.29.1 → 0.30.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.
- package/CHANGELOG.md +11 -0
- package/coverage/lcov-report/schema-registry/src/api.ts.html +241 -0
- package/coverage/lcov-report/schema-registry/src/index.html +131 -0
- package/coverage/lcov-report/schema-registry/src/index.ts.html +175 -0
- package/dist/src/api.js +190 -0
- package/dist/src/api.js.map +1 -0
- package/dist/src/errors.js +19 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/index.js +51 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interfaces.js +3 -0
- package/dist/src/interfaces.js.map +1 -0
- package/package.json +7 -7
- package/tests/__mocks__/index.ts +22 -0
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,17 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
# [0.30.0](https://github.com/biorate/core/compare/v0.29.1...v0.30.0) (2022-06-20)
|
7
|
+
|
8
|
+
|
9
|
+
### Bug Fixes
|
10
|
+
|
11
|
+
* *.ts into npmignore ([6a6be03](https://github.com/biorate/core/commit/6a6be030a1e8923df4b03d518f08618e759d06fa))
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
6
17
|
## [0.29.1](https://github.com/biorate/core/compare/v0.29.0...v0.29.1) (2022-06-20)
|
7
18
|
|
8
19
|
**Note:** Version bump only for package @biorate/schema-registry
|
@@ -0,0 +1,241 @@
|
|
1
|
+
|
2
|
+
<!doctype html>
|
3
|
+
<html lang="en">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<title>Code coverage report for schema-registry/src/api.ts</title>
|
7
|
+
<meta charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
12
|
+
<style type='text/css'>
|
13
|
+
.coverage-summary .sorter {
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
15
|
+
}
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<div class='wrapper'>
|
21
|
+
<div class='pad1'>
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">schema-registry/src</a> api.ts</h1>
|
23
|
+
<div class='clearfix'>
|
24
|
+
|
25
|
+
<div class='fl pad1y space-right2'>
|
26
|
+
<span class="strong">100% </span>
|
27
|
+
<span class="quiet">Statements</span>
|
28
|
+
<span class='fraction'>17/17</span>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
|
32
|
+
<div class='fl pad1y space-right2'>
|
33
|
+
<span class="strong">100% </span>
|
34
|
+
<span class="quiet">Branches</span>
|
35
|
+
<span class='fraction'>0/0</span>
|
36
|
+
</div>
|
37
|
+
|
38
|
+
|
39
|
+
<div class='fl pad1y space-right2'>
|
40
|
+
<span class="strong">100% </span>
|
41
|
+
<span class="quiet">Functions</span>
|
42
|
+
<span class='fraction'>8/8</span>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
|
46
|
+
<div class='fl pad1y space-right2'>
|
47
|
+
<span class="strong">100% </span>
|
48
|
+
<span class="quiet">Lines</span>
|
49
|
+
<span class='fraction'>16/16</span>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
|
53
|
+
</div>
|
54
|
+
<p class="quiet">
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
56
|
+
</p>
|
57
|
+
<template id="filterTemplate">
|
58
|
+
<div class="quiet">
|
59
|
+
Filter:
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
61
|
+
</div>
|
62
|
+
</template>
|
63
|
+
</div>
|
64
|
+
<div class='status-line high'></div>
|
65
|
+
<pre><table class="coverage">
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
119
|
+
<span class="cline-any cline-neutral"> </span>
|
120
|
+
<span class="cline-any cline-neutral"> </span>
|
121
|
+
<span class="cline-any cline-yes">1x</span>
|
122
|
+
<span class="cline-any cline-neutral"> </span>
|
123
|
+
<span class="cline-any cline-yes">7x</span>
|
124
|
+
<span class="cline-any cline-neutral"> </span>
|
125
|
+
<span class="cline-any cline-neutral"> </span>
|
126
|
+
<span class="cline-any cline-neutral"> </span>
|
127
|
+
<span class="cline-any cline-yes">1x</span>
|
128
|
+
<span class="cline-any cline-yes">1x</span>
|
129
|
+
<span class="cline-any cline-neutral"> </span>
|
130
|
+
<span class="cline-any cline-neutral"> </span>
|
131
|
+
<span class="cline-any cline-neutral"> </span>
|
132
|
+
<span class="cline-any cline-yes">1x</span>
|
133
|
+
<span class="cline-any cline-yes">1x</span>
|
134
|
+
<span class="cline-any cline-neutral"> </span>
|
135
|
+
<span class="cline-any cline-neutral"> </span>
|
136
|
+
<span class="cline-any cline-neutral"> </span>
|
137
|
+
<span class="cline-any cline-yes">1x</span>
|
138
|
+
<span class="cline-any cline-yes">1x</span>
|
139
|
+
<span class="cline-any cline-neutral"> </span>
|
140
|
+
<span class="cline-any cline-neutral"> </span>
|
141
|
+
<span class="cline-any cline-neutral"> </span>
|
142
|
+
<span class="cline-any cline-yes">1x</span>
|
143
|
+
<span class="cline-any cline-yes">1x</span>
|
144
|
+
<span class="cline-any cline-neutral"> </span>
|
145
|
+
<span class="cline-any cline-neutral"> </span>
|
146
|
+
<span class="cline-any cline-neutral"> </span>
|
147
|
+
<span class="cline-any cline-yes">1x</span>
|
148
|
+
<span class="cline-any cline-yes">1x</span>
|
149
|
+
<span class="cline-any cline-neutral"> </span>
|
150
|
+
<span class="cline-any cline-neutral"> </span>
|
151
|
+
<span class="cline-any cline-neutral"> </span>
|
152
|
+
<span class="cline-any cline-yes">1x</span>
|
153
|
+
<span class="cline-any cline-yes">1x</span>
|
154
|
+
<span class="cline-any cline-neutral"> </span>
|
155
|
+
<span class="cline-any cline-neutral"> </span>
|
156
|
+
<span class="cline-any cline-yes">1x</span>
|
157
|
+
<span class="cline-any cline-neutral"> </span>
|
158
|
+
<span class="cline-any cline-neutral"> </span>
|
159
|
+
<span class="cline-any cline-neutral"> </span>
|
160
|
+
<span class="cline-any cline-neutral"> </span>
|
161
|
+
<span class="cline-any cline-neutral"> </span>
|
162
|
+
<span class="cline-any cline-neutral"> </span>
|
163
|
+
<span class="cline-any cline-neutral"> </span>
|
164
|
+
<span class="cline-any cline-neutral"> </span>
|
165
|
+
<span class="cline-any cline-neutral"> </span>
|
166
|
+
<span class="cline-any cline-neutral"> </span>
|
167
|
+
<span class="cline-any cline-neutral"> </span>
|
168
|
+
<span class="cline-any cline-neutral"> </span>
|
169
|
+
<span class="cline-any cline-neutral"> </span>
|
170
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Axios } from '@biorate/axios';
|
171
|
+
import { ISchemaRegistryConfig } from './interfaces';
|
172
|
+
|
173
|
+
export const create = (config: ISchemaRegistryConfig) => {
|
174
|
+
class SchemaRegistryApi<D = any> extends Axios {
|
175
|
+
public baseURL = config.baseURL;
|
176
|
+
}
|
177
|
+
|
178
|
+
class GetSchemasById extends SchemaRegistryApi {
|
179
|
+
public url = '/schemas/ids/:id';
|
180
|
+
public method = 'get';
|
181
|
+
|
182
|
+
public static fetch(id: string | number, ...args) {
|
183
|
+
return this._fetch<string>({ path: { id } }, ...args);
|
184
|
+
}
|
185
|
+
}
|
186
|
+
|
187
|
+
class GetSchemasTypes extends SchemaRegistryApi<string[]> {
|
188
|
+
public url = '/schemas/types';
|
189
|
+
public method = 'get';
|
190
|
+
}
|
191
|
+
|
192
|
+
class GetSchemasVersionsById extends SchemaRegistryApi {
|
193
|
+
public url = '/schemas/ids/:id/versions';
|
194
|
+
public method = 'get';
|
195
|
+
}
|
196
|
+
|
197
|
+
class GetSubjects extends SchemaRegistryApi {
|
198
|
+
public url = '/subjects';
|
199
|
+
public method = 'get';
|
200
|
+
}
|
201
|
+
|
202
|
+
class GetSubjectsVersions extends SchemaRegistryApi {
|
203
|
+
public url = '/subjects/:subject/versions';
|
204
|
+
public method = 'get';
|
205
|
+
}
|
206
|
+
|
207
|
+
class DeleteSubjects extends SchemaRegistryApi<{ version: number }[]> {
|
208
|
+
public url = '/subjects/:subject';
|
209
|
+
public method = 'delete';
|
210
|
+
}
|
211
|
+
|
212
|
+
return {
|
213
|
+
SchemaRegistryApi,
|
214
|
+
GetSchemasById,
|
215
|
+
GetSchemasTypes,
|
216
|
+
GetSchemasVersionsById,
|
217
|
+
GetSubjects,
|
218
|
+
GetSubjectsVersions,
|
219
|
+
DeleteSubjects,
|
220
|
+
};
|
221
|
+
};
|
222
|
+
</pre></td></tr></table></pre>
|
223
|
+
|
224
|
+
<div class='push'></div><!-- for sticky footer -->
|
225
|
+
</div><!-- /wrapper -->
|
226
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
227
|
+
Code coverage generated by
|
228
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
229
|
+
at Sat Apr 09 2022 13:27:38 GMT+0300 (GMT+03:00)
|
230
|
+
</div>
|
231
|
+
<script src="../../prettify.js"></script>
|
232
|
+
<script>
|
233
|
+
window.onload = function () {
|
234
|
+
prettyPrint();
|
235
|
+
};
|
236
|
+
</script>
|
237
|
+
<script src="../../sorter.js"></script>
|
238
|
+
<script src="../../block-navigation.js"></script>
|
239
|
+
</body>
|
240
|
+
</html>
|
241
|
+
|
@@ -0,0 +1,131 @@
|
|
1
|
+
|
2
|
+
<!doctype html>
|
3
|
+
<html lang="en">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<title>Code coverage report for schema-registry/src</title>
|
7
|
+
<meta charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
12
|
+
<style type='text/css'>
|
13
|
+
.coverage-summary .sorter {
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
15
|
+
}
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<div class='wrapper'>
|
21
|
+
<div class='pad1'>
|
22
|
+
<h1><a href="../../index.html">All files</a> schema-registry/src</h1>
|
23
|
+
<div class='clearfix'>
|
24
|
+
|
25
|
+
<div class='fl pad1y space-right2'>
|
26
|
+
<span class="strong">100% </span>
|
27
|
+
<span class="quiet">Statements</span>
|
28
|
+
<span class='fraction'>28/28</span>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
|
32
|
+
<div class='fl pad1y space-right2'>
|
33
|
+
<span class="strong">100% </span>
|
34
|
+
<span class="quiet">Branches</span>
|
35
|
+
<span class='fraction'>0/0</span>
|
36
|
+
</div>
|
37
|
+
|
38
|
+
|
39
|
+
<div class='fl pad1y space-right2'>
|
40
|
+
<span class="strong">100% </span>
|
41
|
+
<span class="quiet">Functions</span>
|
42
|
+
<span class='fraction'>10/10</span>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
|
46
|
+
<div class='fl pad1y space-right2'>
|
47
|
+
<span class="strong">100% </span>
|
48
|
+
<span class="quiet">Lines</span>
|
49
|
+
<span class='fraction'>25/25</span>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
|
53
|
+
</div>
|
54
|
+
<p class="quiet">
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
56
|
+
</p>
|
57
|
+
<template id="filterTemplate">
|
58
|
+
<div class="quiet">
|
59
|
+
Filter:
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
61
|
+
</div>
|
62
|
+
</template>
|
63
|
+
</div>
|
64
|
+
<div class='status-line high'></div>
|
65
|
+
<div class="pad1">
|
66
|
+
<table class="coverage-summary">
|
67
|
+
<thead>
|
68
|
+
<tr>
|
69
|
+
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
|
70
|
+
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
|
71
|
+
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
|
72
|
+
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
|
73
|
+
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
|
74
|
+
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
|
75
|
+
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
|
76
|
+
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
|
77
|
+
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
|
78
|
+
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
|
79
|
+
</tr>
|
80
|
+
</thead>
|
81
|
+
<tbody><tr>
|
82
|
+
<td class="file high" data-value="api.ts"><a href="api.ts.html">api.ts</a></td>
|
83
|
+
<td data-value="100" class="pic high">
|
84
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
85
|
+
</td>
|
86
|
+
<td data-value="100" class="pct high">100%</td>
|
87
|
+
<td data-value="17" class="abs high">17/17</td>
|
88
|
+
<td data-value="100" class="pct high">100%</td>
|
89
|
+
<td data-value="0" class="abs high">0/0</td>
|
90
|
+
<td data-value="100" class="pct high">100%</td>
|
91
|
+
<td data-value="8" class="abs high">8/8</td>
|
92
|
+
<td data-value="100" class="pct high">100%</td>
|
93
|
+
<td data-value="16" class="abs high">16/16</td>
|
94
|
+
</tr>
|
95
|
+
|
96
|
+
<tr>
|
97
|
+
<td class="file high" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
|
98
|
+
<td data-value="100" class="pic high">
|
99
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
100
|
+
</td>
|
101
|
+
<td data-value="100" class="pct high">100%</td>
|
102
|
+
<td data-value="11" class="abs high">11/11</td>
|
103
|
+
<td data-value="100" class="pct high">100%</td>
|
104
|
+
<td data-value="0" class="abs high">0/0</td>
|
105
|
+
<td data-value="100" class="pct high">100%</td>
|
106
|
+
<td data-value="2" class="abs high">2/2</td>
|
107
|
+
<td data-value="100" class="pct high">100%</td>
|
108
|
+
<td data-value="9" class="abs high">9/9</td>
|
109
|
+
</tr>
|
110
|
+
|
111
|
+
</tbody>
|
112
|
+
</table>
|
113
|
+
</div>
|
114
|
+
<div class='push'></div><!-- for sticky footer -->
|
115
|
+
</div><!-- /wrapper -->
|
116
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
117
|
+
Code coverage generated by
|
118
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
119
|
+
at Sat Apr 09 2022 13:27:38 GMT+0300 (GMT+03:00)
|
120
|
+
</div>
|
121
|
+
<script src="../../prettify.js"></script>
|
122
|
+
<script>
|
123
|
+
window.onload = function () {
|
124
|
+
prettyPrint();
|
125
|
+
};
|
126
|
+
</script>
|
127
|
+
<script src="../../sorter.js"></script>
|
128
|
+
<script src="../../block-navigation.js"></script>
|
129
|
+
</body>
|
130
|
+
</html>
|
131
|
+
|
@@ -0,0 +1,175 @@
|
|
1
|
+
|
2
|
+
<!doctype html>
|
3
|
+
<html lang="en">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<title>Code coverage report for schema-registry/src/index.ts</title>
|
7
|
+
<meta charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
12
|
+
<style type='text/css'>
|
13
|
+
.coverage-summary .sorter {
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
15
|
+
}
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<div class='wrapper'>
|
21
|
+
<div class='pad1'>
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">schema-registry/src</a> index.ts</h1>
|
23
|
+
<div class='clearfix'>
|
24
|
+
|
25
|
+
<div class='fl pad1y space-right2'>
|
26
|
+
<span class="strong">100% </span>
|
27
|
+
<span class="quiet">Statements</span>
|
28
|
+
<span class='fraction'>11/11</span>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
|
32
|
+
<div class='fl pad1y space-right2'>
|
33
|
+
<span class="strong">100% </span>
|
34
|
+
<span class="quiet">Branches</span>
|
35
|
+
<span class='fraction'>0/0</span>
|
36
|
+
</div>
|
37
|
+
|
38
|
+
|
39
|
+
<div class='fl pad1y space-right2'>
|
40
|
+
<span class="strong">100% </span>
|
41
|
+
<span class="quiet">Functions</span>
|
42
|
+
<span class='fraction'>2/2</span>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
|
46
|
+
<div class='fl pad1y space-right2'>
|
47
|
+
<span class="strong">100% </span>
|
48
|
+
<span class="quiet">Lines</span>
|
49
|
+
<span class='fraction'>9/9</span>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
|
53
|
+
</div>
|
54
|
+
<p class="quiet">
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
56
|
+
</p>
|
57
|
+
<template id="filterTemplate">
|
58
|
+
<div class="quiet">
|
59
|
+
Filter:
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
61
|
+
</div>
|
62
|
+
</template>
|
63
|
+
</div>
|
64
|
+
<div class='status-line high'></div>
|
65
|
+
<pre><table class="coverage">
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
97
|
+
<span class="cline-any cline-neutral"> </span>
|
98
|
+
<span class="cline-any cline-neutral"> </span>
|
99
|
+
<span class="cline-any cline-yes">1x</span>
|
100
|
+
<span class="cline-any cline-neutral"> </span>
|
101
|
+
<span class="cline-any cline-yes">1x</span>
|
102
|
+
<span class="cline-any cline-yes">1x</span>
|
103
|
+
<span class="cline-any cline-yes">1x</span>
|
104
|
+
<span class="cline-any cline-yes">1x</span>
|
105
|
+
<span class="cline-any cline-neutral"> </span>
|
106
|
+
<span class="cline-any cline-neutral"> </span>
|
107
|
+
<span class="cline-any cline-neutral"> </span>
|
108
|
+
<span class="cline-any cline-neutral"> </span>
|
109
|
+
<span class="cline-any cline-neutral"> </span>
|
110
|
+
<span class="cline-any cline-neutral"> </span>
|
111
|
+
<span class="cline-any cline-neutral"> </span>
|
112
|
+
<span class="cline-any cline-neutral"> </span>
|
113
|
+
<span class="cline-any cline-neutral"> </span>
|
114
|
+
<span class="cline-any cline-neutral"> </span>
|
115
|
+
<span class="cline-any cline-neutral"> </span>
|
116
|
+
<span class="cline-any cline-neutral"> </span>
|
117
|
+
<span class="cline-any cline-yes">1x</span>
|
118
|
+
<span class="cline-any cline-neutral"> </span>
|
119
|
+
<span class="cline-any cline-neutral"> </span>
|
120
|
+
<span class="cline-any cline-neutral"> </span>
|
121
|
+
<span class="cline-any cline-yes">1x</span>
|
122
|
+
<span class="cline-any cline-neutral"> </span>
|
123
|
+
<span class="cline-any cline-yes">1x</span>
|
124
|
+
<span class="cline-any cline-neutral"> </span>
|
125
|
+
<span class="cline-any cline-neutral"> </span>
|
126
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { init, inject, injectable, Types } from '@biorate/inversion';
|
127
|
+
import { IConfig } from '@biorate/config';
|
128
|
+
import { ISchemaRegistryConfig, ISchemaRegistryConnection } from './interfaces';
|
129
|
+
import { Connector } from '@biorate/connector';
|
130
|
+
// import { ConnectorConnectionNotExistsError } from './errors';
|
131
|
+
import { create } from './api';
|
132
|
+
export * from './api';
|
133
|
+
export * from './errors';
|
134
|
+
export * from './interfaces';
|
135
|
+
|
136
|
+
/**
|
137
|
+
* @description Schema registry connector
|
138
|
+
*
|
139
|
+
* ### Features:
|
140
|
+
* - connector manager for schema registry
|
141
|
+
*
|
142
|
+
* @example
|
143
|
+
* ```
|
144
|
+
* ```
|
145
|
+
*/
|
146
|
+
@injectable()
|
147
|
+
export class SchemaRegistryConnector extends Connector<
|
148
|
+
ISchemaRegistryConfig,
|
149
|
+
ISchemaRegistryConnection
|
150
|
+
> {
|
151
|
+
protected readonly namespace = 'SchemaRegistry';
|
152
|
+
protected async connect(config) {
|
153
|
+
return create(config);
|
154
|
+
}
|
155
|
+
}
|
156
|
+
</pre></td></tr></table></pre>
|
157
|
+
|
158
|
+
<div class='push'></div><!-- for sticky footer -->
|
159
|
+
</div><!-- /wrapper -->
|
160
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
161
|
+
Code coverage generated by
|
162
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
163
|
+
at Sat Apr 09 2022 13:27:38 GMT+0300 (GMT+03:00)
|
164
|
+
</div>
|
165
|
+
<script src="../../prettify.js"></script>
|
166
|
+
<script>
|
167
|
+
window.onload = function () {
|
168
|
+
prettyPrint();
|
169
|
+
};
|
170
|
+
</script>
|
171
|
+
<script src="../../sorter.js"></script>
|
172
|
+
<script src="../../block-navigation.js"></script>
|
173
|
+
</body>
|
174
|
+
</html>
|
175
|
+
|
package/dist/src/api.js
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.create = void 0;
|
4
|
+
const axios_1 = require("@biorate/axios");
|
5
|
+
const avsc_1 = require("avsc");
|
6
|
+
const errors_1 = require("./errors");
|
7
|
+
const create = (config) => {
|
8
|
+
const cache = new Map();
|
9
|
+
class SchemaRegistryApi extends axios_1.Axios {
|
10
|
+
constructor() {
|
11
|
+
super(...arguments);
|
12
|
+
this.baseURL = config.baseURL;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
class Ping extends SchemaRegistryApi {
|
16
|
+
constructor() {
|
17
|
+
super(...arguments);
|
18
|
+
this.url = '/';
|
19
|
+
this.method = 'get';
|
20
|
+
}
|
21
|
+
static fetch() {
|
22
|
+
return this._fetch({});
|
23
|
+
}
|
24
|
+
}
|
25
|
+
class GetSchemasById extends SchemaRegistryApi {
|
26
|
+
constructor() {
|
27
|
+
super(...arguments);
|
28
|
+
this.url = '/schemas/ids/:id';
|
29
|
+
this.method = 'get';
|
30
|
+
}
|
31
|
+
static fetch(id) {
|
32
|
+
return this._fetch({ path: { id } });
|
33
|
+
}
|
34
|
+
}
|
35
|
+
class GetSchemasTypes extends SchemaRegistryApi {
|
36
|
+
constructor() {
|
37
|
+
super(...arguments);
|
38
|
+
this.url = '/schemas/types';
|
39
|
+
this.method = 'get';
|
40
|
+
}
|
41
|
+
static fetch() {
|
42
|
+
return this._fetch({});
|
43
|
+
}
|
44
|
+
}
|
45
|
+
class GetSchemasVersionsById extends SchemaRegistryApi {
|
46
|
+
constructor() {
|
47
|
+
super(...arguments);
|
48
|
+
this.url = '/schemas/ids/:id/versions';
|
49
|
+
this.method = 'get';
|
50
|
+
}
|
51
|
+
static fetch(id) {
|
52
|
+
return this._fetch({ path: { id } });
|
53
|
+
}
|
54
|
+
}
|
55
|
+
class GetSubjects extends SchemaRegistryApi {
|
56
|
+
constructor() {
|
57
|
+
super(...arguments);
|
58
|
+
this.url = '/subjects';
|
59
|
+
this.method = 'get';
|
60
|
+
}
|
61
|
+
static fetch() {
|
62
|
+
return this._fetch({});
|
63
|
+
}
|
64
|
+
}
|
65
|
+
class GetSubjectsVersions extends SchemaRegistryApi {
|
66
|
+
constructor() {
|
67
|
+
super(...arguments);
|
68
|
+
this.url = '/subjects/:subject/versions';
|
69
|
+
this.method = 'get';
|
70
|
+
}
|
71
|
+
static fetch(subject) {
|
72
|
+
return this._fetch({ path: { subject } });
|
73
|
+
}
|
74
|
+
}
|
75
|
+
class DeleteSubjects extends SchemaRegistryApi {
|
76
|
+
constructor() {
|
77
|
+
super(...arguments);
|
78
|
+
this.url = '/subjects/:subject';
|
79
|
+
this.method = 'delete';
|
80
|
+
}
|
81
|
+
static fetch(data) {
|
82
|
+
return this._fetch({
|
83
|
+
path: { subject: data.subject },
|
84
|
+
params: { permanent: !!data.permanent },
|
85
|
+
});
|
86
|
+
}
|
87
|
+
}
|
88
|
+
class GetSubjectsByVersion extends SchemaRegistryApi {
|
89
|
+
constructor() {
|
90
|
+
super(...arguments);
|
91
|
+
this.url = '/subjects/:subject/versions/:version';
|
92
|
+
this.method = 'get';
|
93
|
+
}
|
94
|
+
static fetch(data) {
|
95
|
+
return this._fetch({ path: data });
|
96
|
+
}
|
97
|
+
}
|
98
|
+
class GetSchemaBySubjectsAndVersion extends SchemaRegistryApi {
|
99
|
+
constructor() {
|
100
|
+
super(...arguments);
|
101
|
+
this.url = '/subjects/:subject/versions/:version/schema';
|
102
|
+
this.method = 'get';
|
103
|
+
}
|
104
|
+
static fetch(data) {
|
105
|
+
return this._fetch({ path: data });
|
106
|
+
}
|
107
|
+
}
|
108
|
+
class PostSubjectsVersions extends SchemaRegistryApi {
|
109
|
+
constructor() {
|
110
|
+
super(...arguments);
|
111
|
+
this.url = '/subjects/:subject/versions';
|
112
|
+
this.method = 'post';
|
113
|
+
}
|
114
|
+
static fetch(data) {
|
115
|
+
return this._fetch({
|
116
|
+
path: { subject: data.subject },
|
117
|
+
params: { normalize: !!data.normalize },
|
118
|
+
data: {
|
119
|
+
schema: toStringData(data.schema),
|
120
|
+
schemaType: data.schemaType,
|
121
|
+
reference: data.reference,
|
122
|
+
},
|
123
|
+
});
|
124
|
+
}
|
125
|
+
}
|
126
|
+
class PostSubjects extends SchemaRegistryApi {
|
127
|
+
constructor() {
|
128
|
+
super(...arguments);
|
129
|
+
this.url = '/subjects/:subject';
|
130
|
+
this.method = 'post';
|
131
|
+
}
|
132
|
+
static fetch(data) {
|
133
|
+
return this._fetch({
|
134
|
+
path: { subject: data.subject },
|
135
|
+
params: { normalize: !!data.normalize },
|
136
|
+
data: {
|
137
|
+
schema: toStringData(data.schema),
|
138
|
+
schemaType: data.schemaType,
|
139
|
+
reference: data.reference,
|
140
|
+
},
|
141
|
+
});
|
142
|
+
}
|
143
|
+
}
|
144
|
+
async function encode(subject, data, version = 'latest') {
|
145
|
+
const errors = [];
|
146
|
+
const response = await GetSubjectsByVersion.fetch({ subject, version });
|
147
|
+
const header = Buffer.alloc(5);
|
148
|
+
const schema = avsc_1.Type.forSchema(JSON.parse(response.data.schema));
|
149
|
+
schema.isValid(data, {
|
150
|
+
errorHook: (path, value) => {
|
151
|
+
errors.push(`${path.join('.')}: ${value} (${typeof value})`);
|
152
|
+
},
|
153
|
+
});
|
154
|
+
if (errors.length)
|
155
|
+
throw new errors_1.SchemaRegistryAvroSchemaParseError(errors);
|
156
|
+
header.writeInt32BE(response.data.id, 1);
|
157
|
+
return Buffer.concat([header, schema.toBuffer(data)]);
|
158
|
+
}
|
159
|
+
async function decode(buffer) {
|
160
|
+
const id = buffer.readInt32BE(1);
|
161
|
+
let data = cache.get(id);
|
162
|
+
if (!data) {
|
163
|
+
const response = await GetSchemasById.fetch(id);
|
164
|
+
data = avsc_1.Type.forSchema(JSON.parse(response.data.schema));
|
165
|
+
cache.set(id, data);
|
166
|
+
}
|
167
|
+
const schema = avsc_1.Type.forSchema(data);
|
168
|
+
return schema.fromBuffer(buffer.slice(5));
|
169
|
+
}
|
170
|
+
function toStringData(data) {
|
171
|
+
return typeof data === 'string' ? data : JSON.stringify(data);
|
172
|
+
}
|
173
|
+
return {
|
174
|
+
ping: Ping.fetch.bind(Ping),
|
175
|
+
getSchemasById: (GetSchemasById.fetch.bind(GetSchemasById)),
|
176
|
+
getSchemasTypes: (GetSchemasTypes.fetch.bind(GetSchemasTypes)),
|
177
|
+
getSchemasVersionsById: (GetSchemasVersionsById.fetch.bind(GetSchemasVersionsById)),
|
178
|
+
getSubjects: GetSubjects.fetch.bind(GetSubjects),
|
179
|
+
getSubjectsVersions: (GetSubjectsVersions.fetch.bind(GetSubjectsVersions)),
|
180
|
+
deleteSubjects: (DeleteSubjects.fetch.bind(DeleteSubjects)),
|
181
|
+
getSubjectsByVersion: (GetSubjectsByVersion.fetch.bind(GetSubjectsByVersion)),
|
182
|
+
getSchemaBySubjectsAndVersion: (GetSchemaBySubjectsAndVersion.fetch.bind(GetSchemaBySubjectsAndVersion)),
|
183
|
+
postSubjects: PostSubjects.fetch.bind(PostSubjects),
|
184
|
+
postSubjectsVersions: (PostSubjectsVersions.fetch.bind(PostSubjectsVersions)),
|
185
|
+
encode,
|
186
|
+
decode,
|
187
|
+
};
|
188
|
+
};
|
189
|
+
exports.create = create;
|
190
|
+
//# sourceMappingURL=api.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.SchemaRegistryAvroSchemaParseError = exports.SchemaRegistryCantConnectError = void 0;
|
4
|
+
const errors_1 = require("@biorate/errors");
|
5
|
+
class SchemaRegistryCantConnectError extends errors_1.BaseError {
|
6
|
+
constructor(e) {
|
7
|
+
super(`Can't connect to schema registry: [%s]`, [e.message]);
|
8
|
+
}
|
9
|
+
}
|
10
|
+
exports.SchemaRegistryCantConnectError = SchemaRegistryCantConnectError;
|
11
|
+
class SchemaRegistryAvroSchemaParseError extends errors_1.BaseError {
|
12
|
+
constructor(errors) {
|
13
|
+
super('%s', [errors.join('; ')], {
|
14
|
+
status: 400,
|
15
|
+
});
|
16
|
+
}
|
17
|
+
}
|
18
|
+
exports.SchemaRegistryAvroSchemaParseError = SchemaRegistryAvroSchemaParseError;
|
19
|
+
//# sourceMappingURL=errors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAE5C,MAAa,8BAA+B,SAAQ,kBAAS;IAC3D,YAAmB,CAAQ;QACzB,KAAK,CAAC,wCAAwC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AAJD,wEAIC;AAED,MAAa,kCAAmC,SAAQ,kBAAS;IAC/D,YAAmB,MAAgB;QACjC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YAC/B,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;CACF;AAND,gFAMC"}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
14
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
16
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
17
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
18
|
+
};
|
19
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
21
|
+
};
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
23
|
+
exports.SchemaRegistryConnector = void 0;
|
24
|
+
const inversion_1 = require("@biorate/inversion");
|
25
|
+
const connector_1 = require("@biorate/connector");
|
26
|
+
const errors_1 = require("./errors");
|
27
|
+
const api_1 = require("./api");
|
28
|
+
__exportStar(require("./api"), exports);
|
29
|
+
__exportStar(require("./errors"), exports);
|
30
|
+
__exportStar(require("./interfaces"), exports);
|
31
|
+
let SchemaRegistryConnector = class SchemaRegistryConnector extends connector_1.Connector {
|
32
|
+
constructor() {
|
33
|
+
super(...arguments);
|
34
|
+
this.namespace = 'SchemaRegistry';
|
35
|
+
}
|
36
|
+
async connect(config) {
|
37
|
+
const connection = (0, api_1.create)(config);
|
38
|
+
try {
|
39
|
+
await connection.ping();
|
40
|
+
}
|
41
|
+
catch (e) {
|
42
|
+
throw new errors_1.SchemaRegistryCantConnectError(e);
|
43
|
+
}
|
44
|
+
return connection;
|
45
|
+
}
|
46
|
+
};
|
47
|
+
SchemaRegistryConnector = __decorate([
|
48
|
+
(0, inversion_1.injectable)()
|
49
|
+
], SchemaRegistryConnector);
|
50
|
+
exports.SchemaRegistryConnector = SchemaRegistryConnector;
|
51
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAgD;AAEhD,kDAA+C;AAC/C,qCAA0D;AAC1D,+BAA+B;AAC/B,wCAAsB;AACtB,2CAAyB;AACzB,+CAA6B;AA8D7B,IAAa,uBAAuB,GAApC,MAAa,uBAAwB,SAAQ,qBAG5C;IAHD;;QAIqB,cAAS,GAAG,gBAAgB,CAAC;IAUlD,CAAC;IATW,KAAK,CAAC,OAAO,CAAC,MAAM;QAC5B,MAAM,UAAU,GAAG,IAAA,YAAM,EAAC,MAAM,CAAC,CAAC;QAClC,IAAI;YACF,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;SACzB;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,uCAA8B,CAAC,CAAC,CAAC,CAAC;SAC7C;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAA;AAdY,uBAAuB;IADnC,IAAA,sBAAU,GAAE;GACA,uBAAuB,CAcnC;AAdY,0DAAuB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@biorate/schema-registry",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.30.0",
|
4
4
|
"description": "Schema registry connector",
|
5
5
|
"main": "dist",
|
6
6
|
"scripts": {
|
@@ -26,12 +26,12 @@
|
|
26
26
|
"author": "llevkin",
|
27
27
|
"license": "MIT",
|
28
28
|
"dependencies": {
|
29
|
-
"@biorate/axios": "0.
|
30
|
-
"@biorate/config": "0.
|
31
|
-
"@biorate/connector": "0.
|
32
|
-
"@biorate/errors": "0.
|
33
|
-
"@biorate/inversion": "0.
|
29
|
+
"@biorate/axios": "0.30.0",
|
30
|
+
"@biorate/config": "0.30.0",
|
31
|
+
"@biorate/connector": "0.30.0",
|
32
|
+
"@biorate/errors": "0.30.0",
|
33
|
+
"@biorate/inversion": "0.30.0",
|
34
34
|
"avsc": "^5.7.4"
|
35
35
|
},
|
36
|
-
"gitHead": "
|
36
|
+
"gitHead": "4e2b75f1a37d93bfb4854bd64ed9691781c2b800"
|
37
37
|
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { use } from 'chai';
|
2
|
+
import { jestSnapshotPlugin } from 'mocha-chai-jest-snapshot';
|
3
|
+
import { inject, container, Types, Core } from '@biorate/inversion';
|
4
|
+
import { IConfig, Config } from '@biorate/config';
|
5
|
+
import { SchemaRegistryConnector, ISchemaRegistryConnector } from '../../src';
|
6
|
+
|
7
|
+
use(jestSnapshotPlugin());
|
8
|
+
|
9
|
+
export class Root extends Core() {
|
10
|
+
@inject(SchemaRegistryConnector) public connector: ISchemaRegistryConnector;
|
11
|
+
}
|
12
|
+
|
13
|
+
container.bind<IConfig>(Types.Config).to(Config).inSingletonScope();
|
14
|
+
container
|
15
|
+
.bind<ISchemaRegistryConnector>(SchemaRegistryConnector)
|
16
|
+
.toSelf()
|
17
|
+
.inSingletonScope();
|
18
|
+
container.bind<Root>(Root).toSelf().inSingletonScope();
|
19
|
+
|
20
|
+
container.get<IConfig>(Types.Config).merge({
|
21
|
+
SchemaRegistry: [{ name: 'connection', baseURL: 'http://localhost:8085' }],
|
22
|
+
});
|