@or-sdk/identifiers 0.25.0-beta.848.0 → 0.25.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 (42) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/dist/cjs/__tests__/identifiers.spec.js +44 -0
  3. package/dist/cjs/__tests__/identifiers.spec.js.map +1 -0
  4. package/dist/cjs/constants.js +1 -2
  5. package/dist/cjs/constants.js.map +1 -1
  6. package/dist/cjs/identifiers.errors.js +46 -0
  7. package/dist/cjs/identifiers.errors.js.map +1 -0
  8. package/dist/cjs/{Identifiers.js → identifiers.js} +52 -82
  9. package/dist/cjs/identifiers.js.map +1 -0
  10. package/dist/cjs/index.js +2 -2
  11. package/dist/esm/__tests__/identifiers.spec.js +43 -0
  12. package/dist/esm/__tests__/identifiers.spec.js.map +1 -0
  13. package/dist/esm/constants.js +0 -1
  14. package/dist/esm/constants.js.map +1 -1
  15. package/dist/esm/identifiers.errors.js +19 -0
  16. package/dist/esm/identifiers.errors.js.map +1 -0
  17. package/dist/esm/{Identifiers.js → identifiers.js} +46 -58
  18. package/dist/esm/identifiers.js.map +1 -0
  19. package/dist/esm/index.js +1 -1
  20. package/dist/types/__tests__/identifiers.spec.d.ts +2 -0
  21. package/dist/types/__tests__/identifiers.spec.d.ts.map +1 -0
  22. package/dist/types/constants.d.ts +0 -1
  23. package/dist/types/constants.d.ts.map +1 -1
  24. package/dist/types/{Identifiers.d.ts → identifiers.d.ts} +8 -10
  25. package/dist/types/identifiers.d.ts.map +1 -0
  26. package/dist/types/identifiers.errors.d.ts +13 -0
  27. package/dist/types/identifiers.errors.d.ts.map +1 -0
  28. package/dist/types/index.d.ts +1 -1
  29. package/dist/types/types.d.ts +9 -24
  30. package/dist/types/types.d.ts.map +1 -1
  31. package/package.json +12 -6
  32. package/src/__tests__/identifiers.spec.ts +59 -0
  33. package/src/constants.ts +0 -1
  34. package/src/identifiers.errors.ts +20 -0
  35. package/src/identifiers.ts +338 -0
  36. package/src/index.ts +1 -1
  37. package/src/types.ts +20 -42
  38. package/vitest.config.js +24 -0
  39. package/dist/cjs/Identifiers.js.map +0 -1
  40. package/dist/esm/Identifiers.js.map +0 -1
  41. package/dist/types/Identifiers.d.ts.map +0 -1
  42. package/src/Identifiers.ts +0 -270
@@ -1,270 +0,0 @@
1
- import { Base, List, makeList } from '@or-sdk/base';
2
- import { SdkApi } from '@or-sdk/sdk-api';
3
- import { SERVICE_KEY } from './constants';
4
- import {
5
- BuyIdentifierResponse, CreateIdentifierParams, DeleteIdentifierV2, Identifier, IdentifierGroup, IdentifierProvider, IdentifiersConfig, IdentifierV2, ListIdentifiersV2, ListProvidersResponse, ObtainableIdentifier, ObtainableIdentifierRequestParams, SingleIdentifier,
6
- } from './types';
7
- import {
8
- extractIdentifierProvidersResponse, getGroupIdentifiers, getSingleIdentifiers, makeIdentifierGroups,
9
- } from './utils';
10
-
11
- export class Identifiers extends Base {
12
- private readonly sdkApi: SdkApi;
13
-
14
- constructor(params: IdentifiersConfig) {
15
- const { token, discoveryUrl, accountId, sdkUrl, dataHubUrl } = params;
16
- super({
17
- token,
18
- discoveryUrl,
19
- serviceKey: SERVICE_KEY,
20
- accountId,
21
- serviceUrl: dataHubUrl,
22
- });
23
- this.sdkApi = new SdkApi({
24
- token,
25
- discoveryUrl,
26
- accountId,
27
- sdkUrl,
28
- });
29
- }
30
-
31
- async init() {
32
- await this.sdkApi.init();
33
- }
34
-
35
- private async fetchIdentifiers(id?: Identifier['id'], groupDetails = true): Promise<Identifier[]> {
36
- const params = {
37
- fullInfo: true,
38
- groupDetails,
39
- identifier: id ? id : undefined,
40
- ... this.sdkApi.isCrossAccount ? { accountId: this.sdkApi.currentAccountId } : {},
41
- };
42
-
43
- return this.sdkApi.makeRequest<Identifier[]>({
44
- method: 'GET',
45
- route: '/http/provider/identifiers',
46
- params,
47
- });
48
- }
49
-
50
- /**
51
- * List identifiers
52
- * ```typescript
53
- * const identifierList = await identifiers.listIdentifiers();
54
- * ```
55
- */
56
- public async listIdentifiers(): Promise<List<SingleIdentifier>> {
57
- const result = await this.fetchIdentifiers();
58
-
59
- return makeList<SingleIdentifier>(getSingleIdentifiers(result));
60
- }
61
-
62
- /**
63
- * List identifier groups
64
- * ```typescript
65
- * const identifierGroupList = await identifiers.listIdentifierGroups();
66
- * ```
67
- */
68
- public async listIdentifierGroups(): Promise<List<IdentifierGroup>> {
69
- const result = await this.fetchIdentifiers();
70
-
71
- return makeList<IdentifierGroup>(makeIdentifierGroups(result));
72
- }
73
-
74
- /**
75
- * Get identifier
76
- * ```typescript
77
- * const identifier = await identifiers.getIdentifier('identifier-id');
78
- * ```
79
- */
80
- public async getIdentifier(id: Identifier['id']): Promise<SingleIdentifier> {
81
- const result = await this.fetchIdentifiers(id, false);
82
- const singleIdentifiers = getSingleIdentifiers(result);
83
-
84
- if (singleIdentifiers.length === 0) {
85
- throw `Id ${id} doesn't belong to an identifier`;
86
- }
87
-
88
- return singleIdentifiers[0];
89
- }
90
-
91
- /**
92
- * Get identifier group
93
- * ```typescript
94
- * const identifierGroup = await identifiers.getIdentifierGroup('identifier-group-id');
95
- * ```
96
- */
97
- public async getIdentifierGroup(id: Identifier['id']): Promise<IdentifierGroup> {
98
- const result = await this.fetchIdentifiers(id);
99
- const groupIdentifiers = getGroupIdentifiers(result);
100
-
101
- if (groupIdentifiers.length === 0) {
102
- throw `Id ${id} doesn't belong to an identifier group`;
103
- }
104
-
105
- return makeIdentifierGroups(result)[0];
106
- }
107
-
108
- /**
109
- * List obtainable identifiers
110
- * ```typescript
111
- * const obtainableIdentifiers = await identifiers.listObtainableIdentifiers({
112
- * country: 'US',
113
- * type: 'local',
114
- * limit: 30,
115
- * pattern: 'pattern',
116
- * patternType: 'starts',
117
- * capabilities: ['voice','sms','mms'],
118
- * });
119
- * ```
120
- */
121
- public async listObtainableIdentifiers(params: ObtainableIdentifierRequestParams = {}): Promise<List<ObtainableIdentifier>> {
122
- const result = await this.sdkApi.makeRequest<ObtainableIdentifier[]>({
123
- method: 'GET',
124
- route: '/http/provider/obtainable-identifiers',
125
- params: {
126
- ...params,
127
- ... this.sdkApi.isCrossAccount ? { accountId: this.sdkApi.currentAccountId } : {},
128
- },
129
- });
130
-
131
- return makeList<ObtainableIdentifier>(result);
132
- }
133
-
134
- /**
135
- * Remove identifiers
136
- * ```typescript
137
- * await identifiers.releaseIdentifier('identifier-id');
138
- * ```
139
- */
140
- public async releaseIdentifier(id: Identifier['id']): Promise<void> {
141
- const params = {
142
- identifier: id,
143
- ... this.sdkApi.isCrossAccount ? { accountId: this.sdkApi.currentAccountId } : {},
144
- };
145
-
146
- await this.sdkApi.makeRequest<void>({
147
- method: 'DELETE',
148
- route: '/http/provider/identifiers',
149
- params,
150
- });
151
- }
152
-
153
- /**
154
- * Buy identifiers
155
- * ```typescript
156
- * const identifiers = await identifiers.buyIdentifier([ { provider: 'providerName', phoneNumber: 'phoneNumber' } ]);
157
- * ```
158
- */
159
- public async buyIdentifier(identifiers: ObtainableIdentifier | ObtainableIdentifier[]): Promise<BuyIdentifierResponse> {
160
- const data = {
161
- identifiers: Array.isArray(identifiers) ? identifiers : [identifiers],
162
- ... this.sdkApi.isCrossAccount ? { accountId: this.sdkApi.currentAccountId } : {},
163
- };
164
-
165
- return this.sdkApi.makeRequest<BuyIdentifierResponse>({
166
- method: 'POST',
167
- route: '/http/provider/identifiers',
168
- data,
169
- });
170
- }
171
-
172
- /**
173
- * Create new provider
174
- * ```typescript
175
- * await identifiers.createProvider('providerName', { settingKey: 'settingValue' });
176
- * ```
177
- */
178
- public async createProvider(provider: IdentifierProvider['name'], settings: IdentifierProvider['settings'] = {}): Promise<void> {
179
- const data = {
180
- provider,
181
- settings,
182
- ... this.sdkApi.isCrossAccount ? { accountId: this.sdkApi.currentAccountId } : {},
183
- };
184
-
185
- await this.sdkApi.makeRequest<void>({
186
- method: 'POST',
187
- route: '/http/provider/identifier-providers',
188
- data,
189
- });
190
- }
191
-
192
- /**
193
- * List providers
194
- * ```typescript
195
- * const providers = await identifiers.listProviders();
196
- * ```
197
- */
198
- public async listProviders(): Promise<IdentifierProvider[]> {
199
- const params = this.sdkApi.isCrossAccount ? { accountId: this.sdkApi.currentAccountId } : {};
200
-
201
- const data = await this.sdkApi.makeRequest<ListProvidersResponse>({
202
- method: 'GET',
203
- route: '/http/provider/identifier-providers',
204
- params,
205
- });
206
-
207
- return extractIdentifierProvidersResponse(data);
208
- }
209
-
210
- /**
211
- * Delete provider
212
- * ```typescript
213
- * await identifiers.deleteProvider('providerName');
214
- * ```
215
- */
216
- public async deleteProvider(provider: IdentifierProvider['name']): Promise<void> {
217
- const params = {
218
- provider,
219
- ... this.sdkApi.isCrossAccount ? { accountId: this.sdkApi.currentAccountId } : {},
220
- };
221
-
222
- await this.sdkApi.makeRequest<void>({
223
- method: 'DELETE',
224
- route: '/http/provider/identifier-providers',
225
- params,
226
- });
227
- }
228
-
229
- /**
230
- * Create identifierV2
231
- * ```typescript
232
- * const id = await identifiers.createIdentifierV2({data, name, type});
233
- * ```
234
- */
235
- public async createIdentifierV2(data: CreateIdentifierParams): Promise<null> {
236
- return this.callApiV2({
237
- route: `/identifiers/${encodeURIComponent(data.name)}`,
238
- method: 'post',
239
- data,
240
- });
241
- }
242
-
243
- /**
244
- * Delete identifierV2
245
- * ```typescript
246
- * const id = await identifiers.deleteIdentifierV2({name});
247
- * ```
248
- */
249
- public async deleteIdentifierV2(data: DeleteIdentifierV2): Promise<null> {
250
- return this.callApiV2({
251
- route: `/identifiers/${encodeURIComponent(data.name)}`,
252
- method: 'delete',
253
- data,
254
- });
255
- }
256
-
257
- /**
258
- * List identifiersV2
259
- * ```typescript
260
- * const id = await identifiers.listIdentifiersV2({query, projection, sandbox, group, limit, offset, order});
261
- * ```
262
- */
263
- public async listIdentifiersV2(params: ListIdentifiersV2): Promise<IdentifierV2[]> {
264
- return this.callApiV2({
265
- route: '/identifiers',
266
- method: 'get',
267
- params,
268
- });
269
- }
270
- }