@23blocks/block-authentication 0.1.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 (59) hide show
  1. package/dist/index.js +8 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/lib/authentication.block.js +102 -0
  4. package/dist/lib/authentication.block.js.map +1 -0
  5. package/dist/lib/mappers/api-key.mapper.js +57 -0
  6. package/dist/lib/mappers/api-key.mapper.js.map +1 -0
  7. package/dist/lib/mappers/app.mapper.js +98 -0
  8. package/dist/lib/mappers/app.mapper.js.map +1 -0
  9. package/dist/lib/mappers/company.mapper.js +128 -0
  10. package/dist/lib/mappers/company.mapper.js.map +1 -0
  11. package/dist/lib/mappers/geography.mapper.js +129 -0
  12. package/dist/lib/mappers/geography.mapper.js.map +1 -0
  13. package/dist/lib/mappers/guest.mapper.js +176 -0
  14. package/dist/lib/mappers/guest.mapper.js.map +1 -0
  15. package/dist/lib/mappers/index.js +18 -0
  16. package/dist/lib/mappers/index.js.map +1 -0
  17. package/dist/lib/mappers/subscription.mapper.js +134 -0
  18. package/dist/lib/mappers/subscription.mapper.js.map +1 -0
  19. package/dist/lib/mappers/user.mapper.js +163 -0
  20. package/dist/lib/mappers/user.mapper.js.map +1 -0
  21. package/dist/lib/mappers/utils.js +54 -0
  22. package/dist/lib/mappers/utils.js.map +1 -0
  23. package/dist/lib/services/api-keys.service.js +93 -0
  24. package/dist/lib/services/api-keys.service.js.map +1 -0
  25. package/dist/lib/services/apps.service.js +139 -0
  26. package/dist/lib/services/apps.service.js.map +1 -0
  27. package/dist/lib/services/auth.service.js +147 -0
  28. package/dist/lib/services/auth.service.js.map +1 -0
  29. package/dist/lib/services/geography.service.js +151 -0
  30. package/dist/lib/services/geography.service.js.map +1 -0
  31. package/dist/lib/services/guests.service.js +219 -0
  32. package/dist/lib/services/guests.service.js.map +1 -0
  33. package/dist/lib/services/index.js +14 -0
  34. package/dist/lib/services/index.js.map +1 -0
  35. package/dist/lib/services/roles.service.js +91 -0
  36. package/dist/lib/services/roles.service.js.map +1 -0
  37. package/dist/lib/services/subscriptions.service.js +146 -0
  38. package/dist/lib/services/subscriptions.service.js.map +1 -0
  39. package/dist/lib/services/users.service.js +116 -0
  40. package/dist/lib/services/users.service.js.map +1 -0
  41. package/dist/lib/types/api-key.js +5 -0
  42. package/dist/lib/types/api-key.js.map +1 -0
  43. package/dist/lib/types/app.js +5 -0
  44. package/dist/lib/types/app.js.map +1 -0
  45. package/dist/lib/types/auth.js +5 -0
  46. package/dist/lib/types/auth.js.map +1 -0
  47. package/dist/lib/types/company.js +5 -0
  48. package/dist/lib/types/company.js.map +1 -0
  49. package/dist/lib/types/geography.js +5 -0
  50. package/dist/lib/types/geography.js.map +1 -0
  51. package/dist/lib/types/guest.js +5 -0
  52. package/dist/lib/types/guest.js.map +1 -0
  53. package/dist/lib/types/index.js +4 -0
  54. package/dist/lib/types/index.js.map +1 -0
  55. package/dist/lib/types/subscription.js +5 -0
  56. package/dist/lib/types/subscription.js.map +1 -0
  57. package/dist/lib/types/user.js +13 -0
  58. package/dist/lib/types/user.js.map +1 -0
  59. package/package.json +64 -0
@@ -0,0 +1,151 @@
1
+ import { decodeOne, decodeMany, decodePageResult } from '@23blocks/jsonapi-codec';
2
+ import { countryMapper, stateMapper, countyMapper, cityMapper, currencyMapper } from '../mappers/index.js';
3
+ /**
4
+ * Build filter params for list operations
5
+ */ function buildListParams(params) {
6
+ if (!params) return {};
7
+ const queryParams = {};
8
+ if (params.page) {
9
+ queryParams['page[number]'] = params.page;
10
+ }
11
+ if (params.perPage) {
12
+ queryParams['page[size]'] = params.perPage;
13
+ }
14
+ if (params.sort) {
15
+ const sorts = Array.isArray(params.sort) ? params.sort : [
16
+ params.sort
17
+ ];
18
+ queryParams['sort'] = sorts.map((s)=>s.direction === 'desc' ? `-${s.field}` : s.field).join(',');
19
+ }
20
+ if (params.filter) {
21
+ for (const [key, value] of Object.entries(params.filter)){
22
+ queryParams[`filter[${key}]`] = value;
23
+ }
24
+ }
25
+ if (params.include) {
26
+ queryParams['include'] = params.include.join(',');
27
+ }
28
+ return queryParams;
29
+ }
30
+ /**
31
+ * Create the countries service
32
+ */ export function createCountriesService(transport, _config) {
33
+ return {
34
+ async list (params) {
35
+ const response = await transport.get('/countries', {
36
+ params: buildListParams(params)
37
+ });
38
+ return decodePageResult(response, countryMapper);
39
+ },
40
+ async get (id) {
41
+ const response = await transport.get(`/countries/${id}`);
42
+ return decodeOne(response, countryMapper);
43
+ },
44
+ async getByIsoCode (isoCode) {
45
+ const response = await transport.get(`/countries/by_iso_code/${isoCode}`);
46
+ return decodeOne(response, countryMapper);
47
+ },
48
+ async all () {
49
+ const response = await transport.get('/countries/all');
50
+ return decodeMany(response, countryMapper);
51
+ }
52
+ };
53
+ }
54
+ /**
55
+ * Create the states service
56
+ */ export function createStatesService(transport, _config) {
57
+ return {
58
+ async list (params) {
59
+ const response = await transport.get('/states', {
60
+ params: buildListParams(params)
61
+ });
62
+ return decodePageResult(response, stateMapper);
63
+ },
64
+ async get (id) {
65
+ const response = await transport.get(`/states/${id}`);
66
+ return decodeOne(response, stateMapper);
67
+ },
68
+ async forCountry (countryId) {
69
+ const response = await transport.get(`/countries/${countryId}/states`);
70
+ return decodeMany(response, stateMapper);
71
+ }
72
+ };
73
+ }
74
+ /**
75
+ * Create the counties service
76
+ */ export function createCountiesService(transport, _config) {
77
+ return {
78
+ async list (params) {
79
+ const response = await transport.get('/counties', {
80
+ params: buildListParams(params)
81
+ });
82
+ return decodePageResult(response, countyMapper);
83
+ },
84
+ async get (id) {
85
+ const response = await transport.get(`/counties/${id}`);
86
+ return decodeOne(response, countyMapper);
87
+ },
88
+ async forState (stateId) {
89
+ const response = await transport.get(`/states/${stateId}/counties`);
90
+ return decodeMany(response, countyMapper);
91
+ }
92
+ };
93
+ }
94
+ /**
95
+ * Create the cities service
96
+ */ export function createCitiesService(transport, _config) {
97
+ return {
98
+ async list (params) {
99
+ const response = await transport.get('/cities', {
100
+ params: buildListParams(params)
101
+ });
102
+ return decodePageResult(response, cityMapper);
103
+ },
104
+ async get (id) {
105
+ const response = await transport.get(`/cities/${id}`);
106
+ return decodeOne(response, cityMapper);
107
+ },
108
+ async forState (stateId) {
109
+ const response = await transport.get(`/states/${stateId}/cities`);
110
+ return decodeMany(response, cityMapper);
111
+ },
112
+ async forCounty (countyId) {
113
+ const response = await transport.get(`/counties/${countyId}/cities`);
114
+ return decodeMany(response, cityMapper);
115
+ },
116
+ async search (query, params) {
117
+ const queryParams = buildListParams(params);
118
+ queryParams['q'] = query;
119
+ const response = await transport.get('/cities/search', {
120
+ params: queryParams
121
+ });
122
+ return decodePageResult(response, cityMapper);
123
+ }
124
+ };
125
+ }
126
+ /**
127
+ * Create the currencies service
128
+ */ export function createCurrenciesService(transport, _config) {
129
+ return {
130
+ async list (params) {
131
+ const response = await transport.get('/currencies', {
132
+ params: buildListParams(params)
133
+ });
134
+ return decodePageResult(response, currencyMapper);
135
+ },
136
+ async get (id) {
137
+ const response = await transport.get(`/currencies/${id}`);
138
+ return decodeOne(response, currencyMapper);
139
+ },
140
+ async getByCode (code) {
141
+ const response = await transport.get(`/currencies/by_code/${code}`);
142
+ return decodeOne(response, currencyMapper);
143
+ },
144
+ async all () {
145
+ const response = await transport.get('/currencies/all');
146
+ return decodeMany(response, currencyMapper);
147
+ }
148
+ };
149
+ }
150
+
151
+ //# sourceMappingURL=geography.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/services/geography.service.ts"],"sourcesContent":["import type { Transport, PageResult, ListParams } from '@23blocks/contracts';\nimport type { JsonApiDocument } from '@23blocks/jsonapi-codec';\nimport { decodeOne, decodeMany, decodePageResult } from '@23blocks/jsonapi-codec';\nimport type { Country, State, County, City, Currency } from '../types/index.js';\nimport {\n countryMapper,\n stateMapper,\n countyMapper,\n cityMapper,\n currencyMapper,\n} from '../mappers/index.js';\nimport type { AuthenticationBlockConfig } from '../authentication.block.js';\n\n/**\n * Countries service interface\n */\nexport interface CountriesService {\n /**\n * List countries\n */\n list(params?: ListParams): Promise<PageResult<Country>>;\n\n /**\n * Get a country by ID\n */\n get(id: string): Promise<Country>;\n\n /**\n * Get a country by ISO code\n */\n getByIsoCode(isoCode: string): Promise<Country>;\n\n /**\n * Get all countries (no pagination)\n */\n all(): Promise<Country[]>;\n}\n\n/**\n * States service interface\n */\nexport interface StatesService {\n /**\n * List states\n */\n list(params?: ListParams): Promise<PageResult<State>>;\n\n /**\n * Get a state by ID\n */\n get(id: string): Promise<State>;\n\n /**\n * Get states for a country\n */\n forCountry(countryId: string): Promise<State[]>;\n}\n\n/**\n * Counties service interface\n */\nexport interface CountiesService {\n /**\n * List counties\n */\n list(params?: ListParams): Promise<PageResult<County>>;\n\n /**\n * Get a county by ID\n */\n get(id: string): Promise<County>;\n\n /**\n * Get counties for a state\n */\n forState(stateId: string): Promise<County[]>;\n}\n\n/**\n * Cities service interface\n */\nexport interface CitiesService {\n /**\n * List cities\n */\n list(params?: ListParams): Promise<PageResult<City>>;\n\n /**\n * Get a city by ID\n */\n get(id: string): Promise<City>;\n\n /**\n * Get cities for a state\n */\n forState(stateId: string): Promise<City[]>;\n\n /**\n * Get cities for a county\n */\n forCounty(countyId: string): Promise<City[]>;\n\n /**\n * Search cities by name\n */\n search(query: string, params?: ListParams): Promise<PageResult<City>>;\n}\n\n/**\n * Currencies service interface\n */\nexport interface CurrenciesService {\n /**\n * List currencies\n */\n list(params?: ListParams): Promise<PageResult<Currency>>;\n\n /**\n * Get a currency by ID\n */\n get(id: string): Promise<Currency>;\n\n /**\n * Get a currency by code\n */\n getByCode(code: string): Promise<Currency>;\n\n /**\n * Get all currencies (no pagination)\n */\n all(): Promise<Currency[]>;\n}\n\n/**\n * Build filter params for list operations\n */\nfunction buildListParams(params?: ListParams): Record<string, string | number | boolean | string[] | undefined> {\n if (!params) return {};\n\n const queryParams: Record<string, string | number | boolean | string[] | undefined> = {};\n\n if (params.page) {\n queryParams['page[number]'] = params.page;\n }\n if (params.perPage) {\n queryParams['page[size]'] = params.perPage;\n }\n\n if (params.sort) {\n const sorts = Array.isArray(params.sort) ? params.sort : [params.sort];\n queryParams['sort'] = sorts\n .map((s) => (s.direction === 'desc' ? `-${s.field}` : s.field))\n .join(',');\n }\n\n if (params.filter) {\n for (const [key, value] of Object.entries(params.filter)) {\n queryParams[`filter[${key}]`] = value;\n }\n }\n\n if (params.include) {\n queryParams['include'] = params.include.join(',');\n }\n\n return queryParams;\n}\n\n/**\n * Create the countries service\n */\nexport function createCountriesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): CountriesService {\n return {\n async list(params?: ListParams): Promise<PageResult<Country>> {\n const response = await transport.get<JsonApiDocument>(\n '/countries',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, countryMapper);\n },\n\n async get(id: string): Promise<Country> {\n const response = await transport.get<JsonApiDocument>(`/countries/${id}`);\n return decodeOne(response, countryMapper);\n },\n\n async getByIsoCode(isoCode: string): Promise<Country> {\n const response = await transport.get<JsonApiDocument>(\n `/countries/by_iso_code/${isoCode}`\n );\n return decodeOne(response, countryMapper);\n },\n\n async all(): Promise<Country[]> {\n const response = await transport.get<JsonApiDocument>(\n '/countries/all'\n );\n return decodeMany(response, countryMapper);\n },\n };\n}\n\n/**\n * Create the states service\n */\nexport function createStatesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): StatesService {\n return {\n async list(params?: ListParams): Promise<PageResult<State>> {\n const response = await transport.get<JsonApiDocument>(\n '/states',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, stateMapper);\n },\n\n async get(id: string): Promise<State> {\n const response = await transport.get<JsonApiDocument>(`/states/${id}`);\n return decodeOne(response, stateMapper);\n },\n\n async forCountry(countryId: string): Promise<State[]> {\n const response = await transport.get<JsonApiDocument>(\n `/countries/${countryId}/states`\n );\n return decodeMany(response, stateMapper);\n },\n };\n}\n\n/**\n * Create the counties service\n */\nexport function createCountiesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): CountiesService {\n return {\n async list(params?: ListParams): Promise<PageResult<County>> {\n const response = await transport.get<JsonApiDocument>(\n '/counties',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, countyMapper);\n },\n\n async get(id: string): Promise<County> {\n const response = await transport.get<JsonApiDocument>(`/counties/${id}`);\n return decodeOne(response, countyMapper);\n },\n\n async forState(stateId: string): Promise<County[]> {\n const response = await transport.get<JsonApiDocument>(\n `/states/${stateId}/counties`\n );\n return decodeMany(response, countyMapper);\n },\n };\n}\n\n/**\n * Create the cities service\n */\nexport function createCitiesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): CitiesService {\n return {\n async list(params?: ListParams): Promise<PageResult<City>> {\n const response = await transport.get<JsonApiDocument>(\n '/cities',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, cityMapper);\n },\n\n async get(id: string): Promise<City> {\n const response = await transport.get<JsonApiDocument>(`/cities/${id}`);\n return decodeOne(response, cityMapper);\n },\n\n async forState(stateId: string): Promise<City[]> {\n const response = await transport.get<JsonApiDocument>(\n `/states/${stateId}/cities`\n );\n return decodeMany(response, cityMapper);\n },\n\n async forCounty(countyId: string): Promise<City[]> {\n const response = await transport.get<JsonApiDocument>(\n `/counties/${countyId}/cities`\n );\n return decodeMany(response, cityMapper);\n },\n\n async search(query: string, params?: ListParams): Promise<PageResult<City>> {\n const queryParams = buildListParams(params);\n queryParams['q'] = query;\n\n const response = await transport.get<JsonApiDocument>(\n '/cities/search',\n { params: queryParams }\n );\n return decodePageResult(response, cityMapper);\n },\n };\n}\n\n/**\n * Create the currencies service\n */\nexport function createCurrenciesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): CurrenciesService {\n return {\n async list(params?: ListParams): Promise<PageResult<Currency>> {\n const response = await transport.get<JsonApiDocument>(\n '/currencies',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, currencyMapper);\n },\n\n async get(id: string): Promise<Currency> {\n const response = await transport.get<JsonApiDocument>(`/currencies/${id}`);\n return decodeOne(response, currencyMapper);\n },\n\n async getByCode(code: string): Promise<Currency> {\n const response = await transport.get<JsonApiDocument>(\n `/currencies/by_code/${code}`\n );\n return decodeOne(response, currencyMapper);\n },\n\n async all(): Promise<Currency[]> {\n const response = await transport.get<JsonApiDocument>(\n '/currencies/all'\n );\n return decodeMany(response, currencyMapper);\n },\n };\n}\n"],"names":["decodeOne","decodeMany","decodePageResult","countryMapper","stateMapper","countyMapper","cityMapper","currencyMapper","buildListParams","params","queryParams","page","perPage","sort","sorts","Array","isArray","map","s","direction","field","join","filter","key","value","Object","entries","include","createCountriesService","transport","_config","list","response","get","id","getByIsoCode","isoCode","all","createStatesService","forCountry","countryId","createCountiesService","forState","stateId","createCitiesService","forCounty","countyId","search","query","createCurrenciesService","getByCode","code"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,219 @@
1
+ import { decodeOne, decodeMany, decodePageResult } from '@23blocks/jsonapi-codec';
2
+ import { guestMapper, magicLinkMapper, refreshTokenMapper, userDeviceMapper, tenantUserMapper, mailTemplateMapper } from '../mappers/index.js';
3
+ /**
4
+ * Build filter params for list operations
5
+ */ function buildListParams(params) {
6
+ if (!params) return {};
7
+ const queryParams = {};
8
+ if (params.page) {
9
+ queryParams['page[number]'] = params.page;
10
+ }
11
+ if (params.perPage) {
12
+ queryParams['page[size]'] = params.perPage;
13
+ }
14
+ if (params.sort) {
15
+ const sorts = Array.isArray(params.sort) ? params.sort : [
16
+ params.sort
17
+ ];
18
+ queryParams['sort'] = sorts.map((s)=>s.direction === 'desc' ? `-${s.field}` : s.field).join(',');
19
+ }
20
+ if (params.filter) {
21
+ for (const [key, value] of Object.entries(params.filter)){
22
+ queryParams[`filter[${key}]`] = value;
23
+ }
24
+ }
25
+ if (params.include) {
26
+ queryParams['include'] = params.include.join(',');
27
+ }
28
+ return queryParams;
29
+ }
30
+ /**
31
+ * Create the guests service
32
+ */ export function createGuestsService(transport, _config) {
33
+ return {
34
+ async list (params) {
35
+ const response = await transport.get('/guests', {
36
+ params: buildListParams(params)
37
+ });
38
+ return decodePageResult(response, guestMapper);
39
+ },
40
+ async get (id) {
41
+ const response = await transport.get(`/guests/${id}`);
42
+ return decodeOne(response, guestMapper);
43
+ },
44
+ async track () {
45
+ const response = await transport.post('/guests/track');
46
+ return decodeOne(response, guestMapper);
47
+ },
48
+ async convert (id) {
49
+ const response = await transport.post(`/guests/${id}/convert`);
50
+ return decodeOne(response, guestMapper);
51
+ }
52
+ };
53
+ }
54
+ /**
55
+ * Create the magic links service
56
+ */ export function createMagicLinksService(transport, _config) {
57
+ return {
58
+ async list (params) {
59
+ const response = await transport.get('/magic_links', {
60
+ params: buildListParams(params)
61
+ });
62
+ return decodePageResult(response, magicLinkMapper);
63
+ },
64
+ async get (id) {
65
+ const response = await transport.get(`/magic_links/${id}`);
66
+ return decodeOne(response, magicLinkMapper);
67
+ },
68
+ async create (request) {
69
+ const response = await transport.post('/magic_links', {
70
+ user_unique_id: request.userUniqueId,
71
+ email: request.email,
72
+ target_url: request.targetUrl,
73
+ expired_url: request.expiredUrl,
74
+ expires_in_hours: request.expiresInHours,
75
+ description: request.description,
76
+ payload: request.payload
77
+ });
78
+ return decodeOne(response, magicLinkMapper);
79
+ },
80
+ async validate (token) {
81
+ const response = await transport.post('/magic_links/validate', {
82
+ token
83
+ });
84
+ return decodeOne(response, magicLinkMapper);
85
+ },
86
+ async expire (id) {
87
+ const response = await transport.post(`/magic_links/${id}/expire`);
88
+ return decodeOne(response, magicLinkMapper);
89
+ }
90
+ };
91
+ }
92
+ /**
93
+ * Create the refresh tokens service
94
+ */ export function createRefreshTokensService(transport, _config) {
95
+ return {
96
+ async list (params) {
97
+ const response = await transport.get('/refresh_tokens', {
98
+ params: buildListParams(params)
99
+ });
100
+ return decodePageResult(response, refreshTokenMapper);
101
+ },
102
+ async get (id) {
103
+ const response = await transport.get(`/refresh_tokens/${id}`);
104
+ return decodeOne(response, refreshTokenMapper);
105
+ },
106
+ async revoke (id) {
107
+ const response = await transport.post(`/refresh_tokens/${id}/revoke`);
108
+ return decodeOne(response, refreshTokenMapper);
109
+ },
110
+ async revokeAll () {
111
+ await transport.post('/refresh_tokens/revoke_all');
112
+ },
113
+ async revokeOthers () {
114
+ await transport.post('/refresh_tokens/revoke_others');
115
+ }
116
+ };
117
+ }
118
+ /**
119
+ * Create the user devices service
120
+ */ export function createUserDevicesService(transport, _config) {
121
+ return {
122
+ async list (params) {
123
+ const response = await transport.get('/user_devices', {
124
+ params: buildListParams(params)
125
+ });
126
+ return decodePageResult(response, userDeviceMapper);
127
+ },
128
+ async get (id) {
129
+ const response = await transport.get(`/user_devices/${id}`);
130
+ return decodeOne(response, userDeviceMapper);
131
+ },
132
+ async register (request) {
133
+ const response = await transport.post('/user_devices', {
134
+ device_type: request.deviceType,
135
+ push_id: request.pushId,
136
+ os_type: request.osType,
137
+ default_device: request.defaultDevice,
138
+ location_enabled: request.locationEnabled,
139
+ notifications_enabled: request.notificationsEnabled
140
+ });
141
+ return decodeOne(response, userDeviceMapper);
142
+ },
143
+ async update (id, request) {
144
+ const response = await transport.patch(`/user_devices/${id}`, {
145
+ device_type: request.deviceType,
146
+ push_id: request.pushId,
147
+ os_type: request.osType,
148
+ default_device: request.defaultDevice,
149
+ location_enabled: request.locationEnabled,
150
+ notifications_enabled: request.notificationsEnabled
151
+ });
152
+ return decodeOne(response, userDeviceMapper);
153
+ },
154
+ async unregister (id) {
155
+ await transport.delete(`/user_devices/${id}`);
156
+ },
157
+ async setDefault (id) {
158
+ const response = await transport.post(`/user_devices/${id}/set_default`);
159
+ return decodeOne(response, userDeviceMapper);
160
+ }
161
+ };
162
+ }
163
+ /**
164
+ * Create the tenant users service
165
+ */ export function createTenantUsersService(transport, _config) {
166
+ return {
167
+ async current () {
168
+ const response = await transport.get('/tenant_users/current');
169
+ return decodeOne(response, tenantUserMapper);
170
+ },
171
+ async get (userUniqueId) {
172
+ const response = await transport.get(`/tenant_users/${userUniqueId}`);
173
+ return decodeOne(response, tenantUserMapper);
174
+ },
175
+ async list (params) {
176
+ const response = await transport.get('/tenant_users', {
177
+ params: buildListParams(params)
178
+ });
179
+ return decodeMany(response, tenantUserMapper);
180
+ }
181
+ };
182
+ }
183
+ /**
184
+ * Create the mail templates service
185
+ */ export function createMailTemplatesService(transport, _config) {
186
+ return {
187
+ async list (params) {
188
+ const response = await transport.get('/mail_templates', {
189
+ params: buildListParams(params)
190
+ });
191
+ return decodePageResult(response, mailTemplateMapper);
192
+ },
193
+ async get (id) {
194
+ const response = await transport.get(`/mail_templates/${id}`);
195
+ return decodeOne(response, mailTemplateMapper);
196
+ },
197
+ async getByEvent (eventName) {
198
+ const response = await transport.get(`/mail_templates/by_event/${eventName}`);
199
+ return decodeOne(response, mailTemplateMapper);
200
+ },
201
+ async update (id, template) {
202
+ const response = await transport.patch(`/mail_templates/${id}`, {
203
+ template_name: template.templateName,
204
+ template_html: template.templateHtml,
205
+ template_text: template.templateText,
206
+ from_domain: template.fromDomain,
207
+ from_address: template.fromAddress,
208
+ from_name: template.fromName,
209
+ from_subject: template.fromSubject,
210
+ payload: template.payload,
211
+ preferred_language: template.preferredLanguage,
212
+ provider: template.provider
213
+ });
214
+ return decodeOne(response, mailTemplateMapper);
215
+ }
216
+ };
217
+ }
218
+
219
+ //# sourceMappingURL=guests.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/services/guests.service.ts"],"sourcesContent":["import type { Transport, PageResult, ListParams } from '@23blocks/contracts';\nimport type { JsonApiDocument } from '@23blocks/jsonapi-codec';\nimport { decodeOne, decodeMany, decodePageResult } from '@23blocks/jsonapi-codec';\nimport type {\n Guest,\n MagicLink,\n RefreshToken,\n UserDevice,\n TenantUser,\n MailTemplate,\n CreateMagicLinkRequest,\n RegisterDeviceRequest,\n} from '../types/index.js';\nimport {\n guestMapper,\n magicLinkMapper,\n refreshTokenMapper,\n userDeviceMapper,\n tenantUserMapper,\n mailTemplateMapper,\n} from '../mappers/index.js';\nimport type { AuthenticationBlockConfig } from '../authentication.block.js';\n\n/**\n * Guests service interface\n */\nexport interface GuestsService {\n /**\n * List guests\n */\n list(params?: ListParams): Promise<PageResult<Guest>>;\n\n /**\n * Get a guest by ID\n */\n get(id: string): Promise<Guest>;\n\n /**\n * Track a guest visit\n */\n track(): Promise<Guest>;\n\n /**\n * Convert guest to user (registration)\n */\n convert(id: string): Promise<Guest>;\n}\n\n/**\n * Magic links service interface\n */\nexport interface MagicLinksService {\n /**\n * List magic links\n */\n list(params?: ListParams): Promise<PageResult<MagicLink>>;\n\n /**\n * Get a magic link by ID\n */\n get(id: string): Promise<MagicLink>;\n\n /**\n * Create a magic link\n */\n create(request: CreateMagicLinkRequest): Promise<MagicLink>;\n\n /**\n * Validate a magic link token\n */\n validate(token: string): Promise<MagicLink>;\n\n /**\n * Expire a magic link\n */\n expire(id: string): Promise<MagicLink>;\n}\n\n/**\n * Refresh tokens service interface\n */\nexport interface RefreshTokensService {\n /**\n * List refresh tokens for the current user\n */\n list(params?: ListParams): Promise<PageResult<RefreshToken>>;\n\n /**\n * Get a refresh token by ID\n */\n get(id: string): Promise<RefreshToken>;\n\n /**\n * Revoke a refresh token\n */\n revoke(id: string): Promise<RefreshToken>;\n\n /**\n * Revoke all refresh tokens for current user\n */\n revokeAll(): Promise<void>;\n\n /**\n * Revoke all refresh tokens except current\n */\n revokeOthers(): Promise<void>;\n}\n\n/**\n * User devices service interface\n */\nexport interface UserDevicesService {\n /**\n * List devices for current user\n */\n list(params?: ListParams): Promise<PageResult<UserDevice>>;\n\n /**\n * Get a device by ID\n */\n get(id: string): Promise<UserDevice>;\n\n /**\n * Register a new device\n */\n register(request: RegisterDeviceRequest): Promise<UserDevice>;\n\n /**\n * Update device settings\n */\n update(id: string, request: Partial<RegisterDeviceRequest>): Promise<UserDevice>;\n\n /**\n * Unregister a device\n */\n unregister(id: string): Promise<void>;\n\n /**\n * Set default device\n */\n setDefault(id: string): Promise<UserDevice>;\n}\n\n/**\n * Tenant users service interface\n */\nexport interface TenantUsersService {\n /**\n * Get current tenant user context\n */\n current(): Promise<TenantUser>;\n\n /**\n * Get tenant user by user ID\n */\n get(userUniqueId: string): Promise<TenantUser>;\n\n /**\n * List tenant users\n */\n list(params?: ListParams): Promise<TenantUser[]>;\n}\n\n/**\n * Mail templates service interface\n */\nexport interface MailTemplatesService {\n /**\n * List mail templates\n */\n list(params?: ListParams): Promise<PageResult<MailTemplate>>;\n\n /**\n * Get a mail template by ID\n */\n get(id: string): Promise<MailTemplate>;\n\n /**\n * Get a mail template by event name\n */\n getByEvent(eventName: string): Promise<MailTemplate>;\n\n /**\n * Update a mail template\n */\n update(id: string, template: Partial<MailTemplate>): Promise<MailTemplate>;\n}\n\n/**\n * Build filter params for list operations\n */\nfunction buildListParams(params?: ListParams): Record<string, string | number | boolean | string[] | undefined> {\n if (!params) return {};\n\n const queryParams: Record<string, string | number | boolean | string[] | undefined> = {};\n\n if (params.page) {\n queryParams['page[number]'] = params.page;\n }\n if (params.perPage) {\n queryParams['page[size]'] = params.perPage;\n }\n\n if (params.sort) {\n const sorts = Array.isArray(params.sort) ? params.sort : [params.sort];\n queryParams['sort'] = sorts\n .map((s) => (s.direction === 'desc' ? `-${s.field}` : s.field))\n .join(',');\n }\n\n if (params.filter) {\n for (const [key, value] of Object.entries(params.filter)) {\n queryParams[`filter[${key}]`] = value;\n }\n }\n\n if (params.include) {\n queryParams['include'] = params.include.join(',');\n }\n\n return queryParams;\n}\n\n/**\n * Create the guests service\n */\nexport function createGuestsService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): GuestsService {\n return {\n async list(params?: ListParams): Promise<PageResult<Guest>> {\n const response = await transport.get<JsonApiDocument>(\n '/guests',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, guestMapper);\n },\n\n async get(id: string): Promise<Guest> {\n const response = await transport.get<JsonApiDocument>(`/guests/${id}`);\n return decodeOne(response, guestMapper);\n },\n\n async track(): Promise<Guest> {\n const response = await transport.post<JsonApiDocument>('/guests/track');\n return decodeOne(response, guestMapper);\n },\n\n async convert(id: string): Promise<Guest> {\n const response = await transport.post<JsonApiDocument>(\n `/guests/${id}/convert`\n );\n return decodeOne(response, guestMapper);\n },\n };\n}\n\n/**\n * Create the magic links service\n */\nexport function createMagicLinksService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): MagicLinksService {\n return {\n async list(params?: ListParams): Promise<PageResult<MagicLink>> {\n const response = await transport.get<JsonApiDocument>(\n '/magic_links',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, magicLinkMapper);\n },\n\n async get(id: string): Promise<MagicLink> {\n const response = await transport.get<JsonApiDocument>(\n `/magic_links/${id}`\n );\n return decodeOne(response, magicLinkMapper);\n },\n\n async create(request: CreateMagicLinkRequest): Promise<MagicLink> {\n const response = await transport.post<JsonApiDocument>('/magic_links', {\n user_unique_id: request.userUniqueId,\n email: request.email,\n target_url: request.targetUrl,\n expired_url: request.expiredUrl,\n expires_in_hours: request.expiresInHours,\n description: request.description,\n payload: request.payload,\n });\n return decodeOne(response, magicLinkMapper);\n },\n\n async validate(token: string): Promise<MagicLink> {\n const response = await transport.post<JsonApiDocument>(\n '/magic_links/validate',\n { token }\n );\n return decodeOne(response, magicLinkMapper);\n },\n\n async expire(id: string): Promise<MagicLink> {\n const response = await transport.post<JsonApiDocument>(\n `/magic_links/${id}/expire`\n );\n return decodeOne(response, magicLinkMapper);\n },\n };\n}\n\n/**\n * Create the refresh tokens service\n */\nexport function createRefreshTokensService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): RefreshTokensService {\n return {\n async list(params?: ListParams): Promise<PageResult<RefreshToken>> {\n const response = await transport.get<JsonApiDocument>(\n '/refresh_tokens',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, refreshTokenMapper);\n },\n\n async get(id: string): Promise<RefreshToken> {\n const response = await transport.get<JsonApiDocument>(\n `/refresh_tokens/${id}`\n );\n return decodeOne(response, refreshTokenMapper);\n },\n\n async revoke(id: string): Promise<RefreshToken> {\n const response = await transport.post<JsonApiDocument>(\n `/refresh_tokens/${id}/revoke`\n );\n return decodeOne(response, refreshTokenMapper);\n },\n\n async revokeAll(): Promise<void> {\n await transport.post('/refresh_tokens/revoke_all');\n },\n\n async revokeOthers(): Promise<void> {\n await transport.post('/refresh_tokens/revoke_others');\n },\n };\n}\n\n/**\n * Create the user devices service\n */\nexport function createUserDevicesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): UserDevicesService {\n return {\n async list(params?: ListParams): Promise<PageResult<UserDevice>> {\n const response = await transport.get<JsonApiDocument>(\n '/user_devices',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, userDeviceMapper);\n },\n\n async get(id: string): Promise<UserDevice> {\n const response = await transport.get<JsonApiDocument>(\n `/user_devices/${id}`\n );\n return decodeOne(response, userDeviceMapper);\n },\n\n async register(request: RegisterDeviceRequest): Promise<UserDevice> {\n const response = await transport.post<JsonApiDocument>('/user_devices', {\n device_type: request.deviceType,\n push_id: request.pushId,\n os_type: request.osType,\n default_device: request.defaultDevice,\n location_enabled: request.locationEnabled,\n notifications_enabled: request.notificationsEnabled,\n });\n return decodeOne(response, userDeviceMapper);\n },\n\n async update(\n id: string,\n request: Partial<RegisterDeviceRequest>\n ): Promise<UserDevice> {\n const response = await transport.patch<JsonApiDocument>(\n `/user_devices/${id}`,\n {\n device_type: request.deviceType,\n push_id: request.pushId,\n os_type: request.osType,\n default_device: request.defaultDevice,\n location_enabled: request.locationEnabled,\n notifications_enabled: request.notificationsEnabled,\n }\n );\n return decodeOne(response, userDeviceMapper);\n },\n\n async unregister(id: string): Promise<void> {\n await transport.delete(`/user_devices/${id}`);\n },\n\n async setDefault(id: string): Promise<UserDevice> {\n const response = await transport.post<JsonApiDocument>(\n `/user_devices/${id}/set_default`\n );\n return decodeOne(response, userDeviceMapper);\n },\n };\n}\n\n/**\n * Create the tenant users service\n */\nexport function createTenantUsersService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): TenantUsersService {\n return {\n async current(): Promise<TenantUser> {\n const response = await transport.get<JsonApiDocument>(\n '/tenant_users/current'\n );\n return decodeOne(response, tenantUserMapper);\n },\n\n async get(userUniqueId: string): Promise<TenantUser> {\n const response = await transport.get<JsonApiDocument>(\n `/tenant_users/${userUniqueId}`\n );\n return decodeOne(response, tenantUserMapper);\n },\n\n async list(params?: ListParams): Promise<TenantUser[]> {\n const response = await transport.get<JsonApiDocument>(\n '/tenant_users',\n { params: buildListParams(params) }\n );\n return decodeMany(response, tenantUserMapper);\n },\n };\n}\n\n/**\n * Create the mail templates service\n */\nexport function createMailTemplatesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): MailTemplatesService {\n return {\n async list(params?: ListParams): Promise<PageResult<MailTemplate>> {\n const response = await transport.get<JsonApiDocument>(\n '/mail_templates',\n { params: buildListParams(params) }\n );\n return decodePageResult(response, mailTemplateMapper);\n },\n\n async get(id: string): Promise<MailTemplate> {\n const response = await transport.get<JsonApiDocument>(\n `/mail_templates/${id}`\n );\n return decodeOne(response, mailTemplateMapper);\n },\n\n async getByEvent(eventName: string): Promise<MailTemplate> {\n const response = await transport.get<JsonApiDocument>(\n `/mail_templates/by_event/${eventName}`\n );\n return decodeOne(response, mailTemplateMapper);\n },\n\n async update(id: string, template: Partial<MailTemplate>): Promise<MailTemplate> {\n const response = await transport.patch<JsonApiDocument>(\n `/mail_templates/${id}`,\n {\n template_name: template.templateName,\n template_html: template.templateHtml,\n template_text: template.templateText,\n from_domain: template.fromDomain,\n from_address: template.fromAddress,\n from_name: template.fromName,\n from_subject: template.fromSubject,\n payload: template.payload,\n preferred_language: template.preferredLanguage,\n provider: template.provider,\n }\n );\n return decodeOne(response, mailTemplateMapper);\n },\n };\n}\n"],"names":["decodeOne","decodeMany","decodePageResult","guestMapper","magicLinkMapper","refreshTokenMapper","userDeviceMapper","tenantUserMapper","mailTemplateMapper","buildListParams","params","queryParams","page","perPage","sort","sorts","Array","isArray","map","s","direction","field","join","filter","key","value","Object","entries","include","createGuestsService","transport","_config","list","response","get","id","track","post","convert","createMagicLinksService","create","request","user_unique_id","userUniqueId","email","target_url","targetUrl","expired_url","expiredUrl","expires_in_hours","expiresInHours","description","payload","validate","token","expire","createRefreshTokensService","revoke","revokeAll","revokeOthers","createUserDevicesService","register","device_type","deviceType","push_id","pushId","os_type","osType","default_device","defaultDevice","location_enabled","locationEnabled","notifications_enabled","notificationsEnabled","update","patch","unregister","delete","setDefault","createTenantUsersService","current","createMailTemplatesService","getByEvent","eventName","template","template_name","templateName","template_html","templateHtml","template_text","templateText","from_domain","fromDomain","from_address","fromAddress","from_name","fromName","from_subject","fromSubject","preferred_language","preferredLanguage","provider"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,SAAS,EAAEC,UAAU,EAAEC,gBAAgB,QAAQ,0BAA0B;AAWlF,SACEC,WAAW,EACXC,eAAe,EACfC,kBAAkB,EAClBC,gBAAgB,EAChBC,gBAAgB,EAChBC,kBAAkB,QACb,sBAAsB;AAwK7B;;CAEC,GACD,SAASC,gBAAgBC,MAAmB;IAC1C,IAAI,CAACA,QAAQ,OAAO,CAAC;IAErB,MAAMC,cAAgF,CAAC;IAEvF,IAAID,OAAOE,IAAI,EAAE;QACfD,WAAW,CAAC,eAAe,GAAGD,OAAOE,IAAI;IAC3C;IACA,IAAIF,OAAOG,OAAO,EAAE;QAClBF,WAAW,CAAC,aAAa,GAAGD,OAAOG,OAAO;IAC5C;IAEA,IAAIH,OAAOI,IAAI,EAAE;QACf,MAAMC,QAAQC,MAAMC,OAAO,CAACP,OAAOI,IAAI,IAAIJ,OAAOI,IAAI,GAAG;YAACJ,OAAOI,IAAI;SAAC;QACtEH,WAAW,CAAC,OAAO,GAAGI,MACnBG,GAAG,CAAC,CAACC,IAAOA,EAAEC,SAAS,KAAK,SAAS,CAAC,CAAC,EAAED,EAAEE,KAAK,CAAC,CAAC,GAAGF,EAAEE,KAAK,EAC5DC,IAAI,CAAC;IACV;IAEA,IAAIZ,OAAOa,MAAM,EAAE;QACjB,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACjB,OAAOa,MAAM,EAAG;YACxDZ,WAAW,CAAC,CAAC,OAAO,EAAEa,IAAI,CAAC,CAAC,CAAC,GAAGC;QAClC;IACF;IAEA,IAAIf,OAAOkB,OAAO,EAAE;QAClBjB,WAAW,CAAC,UAAU,GAAGD,OAAOkB,OAAO,CAACN,IAAI,CAAC;IAC/C;IAEA,OAAOX;AACT;AAEA;;CAEC,GACD,OAAO,SAASkB,oBACdC,SAAoB,EACpBC,OAAkC;IAElC,OAAO;QACL,MAAMC,MAAKtB,MAAmB;YAC5B,MAAMuB,WAAW,MAAMH,UAAUI,GAAG,CAClC,WACA;gBAAExB,QAAQD,gBAAgBC;YAAQ;YAEpC,OAAOR,iBAAiB+B,UAAU9B;QACpC;QAEA,MAAM+B,KAAIC,EAAU;YAClB,MAAMF,WAAW,MAAMH,UAAUI,GAAG,CAAkB,CAAC,QAAQ,EAAEC,GAAG,CAAC;YACrE,OAAOnC,UAAUiC,UAAU9B;QAC7B;QAEA,MAAMiC;YACJ,MAAMH,WAAW,MAAMH,UAAUO,IAAI,CAAkB;YACvD,OAAOrC,UAAUiC,UAAU9B;QAC7B;QAEA,MAAMmC,SAAQH,EAAU;YACtB,MAAMF,WAAW,MAAMH,UAAUO,IAAI,CACnC,CAAC,QAAQ,EAAEF,GAAG,QAAQ,CAAC;YAEzB,OAAOnC,UAAUiC,UAAU9B;QAC7B;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASoC,wBACdT,SAAoB,EACpBC,OAAkC;IAElC,OAAO;QACL,MAAMC,MAAKtB,MAAmB;YAC5B,MAAMuB,WAAW,MAAMH,UAAUI,GAAG,CAClC,gBACA;gBAAExB,QAAQD,gBAAgBC;YAAQ;YAEpC,OAAOR,iBAAiB+B,UAAU7B;QACpC;QAEA,MAAM8B,KAAIC,EAAU;YAClB,MAAMF,WAAW,MAAMH,UAAUI,GAAG,CAClC,CAAC,aAAa,EAAEC,GAAG,CAAC;YAEtB,OAAOnC,UAAUiC,UAAU7B;QAC7B;QAEA,MAAMoC,QAAOC,OAA+B;YAC1C,MAAMR,WAAW,MAAMH,UAAUO,IAAI,CAAkB,gBAAgB;gBACrEK,gBAAgBD,QAAQE,YAAY;gBACpCC,OAAOH,QAAQG,KAAK;gBACpBC,YAAYJ,QAAQK,SAAS;gBAC7BC,aAAaN,QAAQO,UAAU;gBAC/BC,kBAAkBR,QAAQS,cAAc;gBACxCC,aAAaV,QAAQU,WAAW;gBAChCC,SAASX,QAAQW,OAAO;YAC1B;YACA,OAAOpD,UAAUiC,UAAU7B;QAC7B;QAEA,MAAMiD,UAASC,KAAa;YAC1B,MAAMrB,WAAW,MAAMH,UAAUO,IAAI,CACnC,yBACA;gBAAEiB;YAAM;YAEV,OAAOtD,UAAUiC,UAAU7B;QAC7B;QAEA,MAAMmD,QAAOpB,EAAU;YACrB,MAAMF,WAAW,MAAMH,UAAUO,IAAI,CACnC,CAAC,aAAa,EAAEF,GAAG,OAAO,CAAC;YAE7B,OAAOnC,UAAUiC,UAAU7B;QAC7B;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASoD,2BACd1B,SAAoB,EACpBC,OAAkC;IAElC,OAAO;QACL,MAAMC,MAAKtB,MAAmB;YAC5B,MAAMuB,WAAW,MAAMH,UAAUI,GAAG,CAClC,mBACA;gBAAExB,QAAQD,gBAAgBC;YAAQ;YAEpC,OAAOR,iBAAiB+B,UAAU5B;QACpC;QAEA,MAAM6B,KAAIC,EAAU;YAClB,MAAMF,WAAW,MAAMH,UAAUI,GAAG,CAClC,CAAC,gBAAgB,EAAEC,GAAG,CAAC;YAEzB,OAAOnC,UAAUiC,UAAU5B;QAC7B;QAEA,MAAMoD,QAAOtB,EAAU;YACrB,MAAMF,WAAW,MAAMH,UAAUO,IAAI,CACnC,CAAC,gBAAgB,EAAEF,GAAG,OAAO,CAAC;YAEhC,OAAOnC,UAAUiC,UAAU5B;QAC7B;QAEA,MAAMqD;YACJ,MAAM5B,UAAUO,IAAI,CAAC;QACvB;QAEA,MAAMsB;YACJ,MAAM7B,UAAUO,IAAI,CAAC;QACvB;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASuB,yBACd9B,SAAoB,EACpBC,OAAkC;IAElC,OAAO;QACL,MAAMC,MAAKtB,MAAmB;YAC5B,MAAMuB,WAAW,MAAMH,UAAUI,GAAG,CAClC,iBACA;gBAAExB,QAAQD,gBAAgBC;YAAQ;YAEpC,OAAOR,iBAAiB+B,UAAU3B;QACpC;QAEA,MAAM4B,KAAIC,EAAU;YAClB,MAAMF,WAAW,MAAMH,UAAUI,GAAG,CAClC,CAAC,cAAc,EAAEC,GAAG,CAAC;YAEvB,OAAOnC,UAAUiC,UAAU3B;QAC7B;QAEA,MAAMuD,UAASpB,OAA8B;YAC3C,MAAMR,WAAW,MAAMH,UAAUO,IAAI,CAAkB,iBAAiB;gBACtEyB,aAAarB,QAAQsB,UAAU;gBAC/BC,SAASvB,QAAQwB,MAAM;gBACvBC,SAASzB,QAAQ0B,MAAM;gBACvBC,gBAAgB3B,QAAQ4B,aAAa;gBACrCC,kBAAkB7B,QAAQ8B,eAAe;gBACzCC,uBAAuB/B,QAAQgC,oBAAoB;YACrD;YACA,OAAOzE,UAAUiC,UAAU3B;QAC7B;QAEA,MAAMoE,QACJvC,EAAU,EACVM,OAAuC;YAEvC,MAAMR,WAAW,MAAMH,UAAU6C,KAAK,CACpC,CAAC,cAAc,EAAExC,GAAG,CAAC,EACrB;gBACE2B,aAAarB,QAAQsB,UAAU;gBAC/BC,SAASvB,QAAQwB,MAAM;gBACvBC,SAASzB,QAAQ0B,MAAM;gBACvBC,gBAAgB3B,QAAQ4B,aAAa;gBACrCC,kBAAkB7B,QAAQ8B,eAAe;gBACzCC,uBAAuB/B,QAAQgC,oBAAoB;YACrD;YAEF,OAAOzE,UAAUiC,UAAU3B;QAC7B;QAEA,MAAMsE,YAAWzC,EAAU;YACzB,MAAML,UAAU+C,MAAM,CAAC,CAAC,cAAc,EAAE1C,GAAG,CAAC;QAC9C;QAEA,MAAM2C,YAAW3C,EAAU;YACzB,MAAMF,WAAW,MAAMH,UAAUO,IAAI,CACnC,CAAC,cAAc,EAAEF,GAAG,YAAY,CAAC;YAEnC,OAAOnC,UAAUiC,UAAU3B;QAC7B;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASyE,yBACdjD,SAAoB,EACpBC,OAAkC;IAElC,OAAO;QACL,MAAMiD;YACJ,MAAM/C,WAAW,MAAMH,UAAUI,GAAG,CAClC;YAEF,OAAOlC,UAAUiC,UAAU1B;QAC7B;QAEA,MAAM2B,KAAIS,YAAoB;YAC5B,MAAMV,WAAW,MAAMH,UAAUI,GAAG,CAClC,CAAC,cAAc,EAAES,aAAa,CAAC;YAEjC,OAAO3C,UAAUiC,UAAU1B;QAC7B;QAEA,MAAMyB,MAAKtB,MAAmB;YAC5B,MAAMuB,WAAW,MAAMH,UAAUI,GAAG,CAClC,iBACA;gBAAExB,QAAQD,gBAAgBC;YAAQ;YAEpC,OAAOT,WAAWgC,UAAU1B;QAC9B;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAAS0E,2BACdnD,SAAoB,EACpBC,OAAkC;IAElC,OAAO;QACL,MAAMC,MAAKtB,MAAmB;YAC5B,MAAMuB,WAAW,MAAMH,UAAUI,GAAG,CAClC,mBACA;gBAAExB,QAAQD,gBAAgBC;YAAQ;YAEpC,OAAOR,iBAAiB+B,UAAUzB;QACpC;QAEA,MAAM0B,KAAIC,EAAU;YAClB,MAAMF,WAAW,MAAMH,UAAUI,GAAG,CAClC,CAAC,gBAAgB,EAAEC,GAAG,CAAC;YAEzB,OAAOnC,UAAUiC,UAAUzB;QAC7B;QAEA,MAAM0E,YAAWC,SAAiB;YAChC,MAAMlD,WAAW,MAAMH,UAAUI,GAAG,CAClC,CAAC,yBAAyB,EAAEiD,UAAU,CAAC;YAEzC,OAAOnF,UAAUiC,UAAUzB;QAC7B;QAEA,MAAMkE,QAAOvC,EAAU,EAAEiD,QAA+B;YACtD,MAAMnD,WAAW,MAAMH,UAAU6C,KAAK,CACpC,CAAC,gBAAgB,EAAExC,GAAG,CAAC,EACvB;gBACEkD,eAAeD,SAASE,YAAY;gBACpCC,eAAeH,SAASI,YAAY;gBACpCC,eAAeL,SAASM,YAAY;gBACpCC,aAAaP,SAASQ,UAAU;gBAChCC,cAAcT,SAASU,WAAW;gBAClCC,WAAWX,SAASY,QAAQ;gBAC5BC,cAAcb,SAASc,WAAW;gBAClC9C,SAASgC,SAAShC,OAAO;gBACzB+C,oBAAoBf,SAASgB,iBAAiB;gBAC9CC,UAAUjB,SAASiB,QAAQ;YAC7B;YAEF,OAAOrG,UAAUiC,UAAUzB;QAC7B;IACF;AACF"}
@@ -0,0 +1,14 @@
1
+ export { createAuthService } from './auth.service.js';
2
+ export { createUsersService } from './users.service.js';
3
+ export { createRolesService } from './roles.service.js';
4
+ export { createApiKeysService } from './api-keys.service.js';
5
+ // Apps and services
6
+ export { createAppsService, createBlocksService, createServicesRegistryService } from './apps.service.js';
7
+ // Subscriptions
8
+ export { createSubscriptionModelsService, createUserSubscriptionsService, createCompanySubscriptionsService } from './subscriptions.service.js';
9
+ // Geography
10
+ export { createCountriesService, createStatesService, createCountiesService, createCitiesService, createCurrenciesService } from './geography.service.js';
11
+ // Guests and related
12
+ export { createGuestsService, createMagicLinksService, createRefreshTokensService, createUserDevicesService, createTenantUsersService, createMailTemplatesService } from './guests.service.js';
13
+
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/services/index.ts"],"sourcesContent":["export { createAuthService, type AuthService } from './auth.service.js';\nexport { createUsersService, type UsersService, type UpdateUserRequest, type UpdateProfileRequest } from './users.service.js';\nexport { createRolesService, type RolesService, type CreateRoleRequest, type UpdateRoleRequest } from './roles.service.js';\nexport { createApiKeysService, type ApiKeysService, type ApiKeyUsageStats } from './api-keys.service.js';\n\n// Apps and services\nexport {\n createAppsService,\n createBlocksService,\n createServicesRegistryService,\n type AppsService,\n type BlocksService,\n type ServicesRegistryService,\n} from './apps.service.js';\n\n// Subscriptions\nexport {\n createSubscriptionModelsService,\n createUserSubscriptionsService,\n createCompanySubscriptionsService,\n type SubscriptionModelsService,\n type UserSubscriptionsService,\n type CompanySubscriptionsService,\n type SubscribeRequest,\n} from './subscriptions.service.js';\n\n// Geography\nexport {\n createCountriesService,\n createStatesService,\n createCountiesService,\n createCitiesService,\n createCurrenciesService,\n type CountriesService,\n type StatesService,\n type CountiesService,\n type CitiesService,\n type CurrenciesService,\n} from './geography.service.js';\n\n// Guests and related\nexport {\n createGuestsService,\n createMagicLinksService,\n createRefreshTokensService,\n createUserDevicesService,\n createTenantUsersService,\n createMailTemplatesService,\n type GuestsService,\n type MagicLinksService,\n type RefreshTokensService,\n type UserDevicesService,\n type TenantUsersService,\n type MailTemplatesService,\n} from './guests.service.js';\n"],"names":["createAuthService","createUsersService","createRolesService","createApiKeysService","createAppsService","createBlocksService","createServicesRegistryService","createSubscriptionModelsService","createUserSubscriptionsService","createCompanySubscriptionsService","createCountriesService","createStatesService","createCountiesService","createCitiesService","createCurrenciesService","createGuestsService","createMagicLinksService","createRefreshTokensService","createUserDevicesService","createTenantUsersService","createMailTemplatesService"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,SAASA,iBAAiB,QAA0B,oBAAoB;AACxE,SAASC,kBAAkB,QAA8E,qBAAqB;AAC9H,SAASC,kBAAkB,QAA2E,qBAAqB;AAC3H,SAASC,oBAAoB,QAAoD,wBAAwB;AAEzG,oBAAoB;AACpB,SACEC,iBAAiB,EACjBC,mBAAmB,EACnBC,6BAA6B,QAIxB,oBAAoB;AAE3B,gBAAgB;AAChB,SACEC,+BAA+B,EAC/BC,8BAA8B,EAC9BC,iCAAiC,QAK5B,6BAA6B;AAEpC,YAAY;AACZ,SACEC,sBAAsB,EACtBC,mBAAmB,EACnBC,qBAAqB,EACrBC,mBAAmB,EACnBC,uBAAuB,QAMlB,yBAAyB;AAEhC,qBAAqB;AACrB,SACEC,mBAAmB,EACnBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,wBAAwB,EACxBC,wBAAwB,EACxBC,0BAA0B,QAOrB,sBAAsB"}
@@ -0,0 +1,91 @@
1
+ import { decodeOne, decodeMany, decodePageResult } from '@23blocks/jsonapi-codec';
2
+ import { roleMapper, permissionMapper } from '../mappers/index.js';
3
+ /**
4
+ * Create the roles service
5
+ */ export function createRolesService(transport, _config) {
6
+ return {
7
+ async list (params) {
8
+ const queryParams = {};
9
+ if (params == null ? void 0 : params.page) queryParams['page[number]'] = params.page;
10
+ if (params == null ? void 0 : params.perPage) queryParams['page[size]'] = params.perPage;
11
+ if (params == null ? void 0 : params.include) queryParams['include'] = params.include.join(',');
12
+ const response = await transport.get('/roles', {
13
+ params: queryParams
14
+ });
15
+ return decodePageResult(response, roleMapper);
16
+ },
17
+ async get (id) {
18
+ const response = await transport.get(`/roles/${id}`, {
19
+ params: {
20
+ include: 'permissions'
21
+ }
22
+ });
23
+ return decodeOne(response, roleMapper);
24
+ },
25
+ async getByCode (code) {
26
+ const response = await transport.get(`/roles/by_code/${code}`, {
27
+ params: {
28
+ include: 'permissions'
29
+ }
30
+ });
31
+ return decodeOne(response, roleMapper);
32
+ },
33
+ async create (request) {
34
+ const response = await transport.post('/roles', {
35
+ name: request.name,
36
+ code: request.code,
37
+ description: request.description,
38
+ payload: request.payload,
39
+ on_boarding_unique_id: request.onBoardingUniqueId,
40
+ on_boarding_url: request.onBoardingUrl,
41
+ on_boarding_payload: request.onBoardingPayload
42
+ });
43
+ return decodeOne(response, roleMapper);
44
+ },
45
+ async update (id, request) {
46
+ const response = await transport.patch(`/roles/${id}`, {
47
+ name: request.name,
48
+ code: request.code,
49
+ description: request.description,
50
+ status: request.status,
51
+ payload: request.payload,
52
+ on_boarding_unique_id: request.onBoardingUniqueId,
53
+ on_boarding_url: request.onBoardingUrl,
54
+ on_boarding_payload: request.onBoardingPayload
55
+ });
56
+ return decodeOne(response, roleMapper);
57
+ },
58
+ async delete (id) {
59
+ await transport.delete(`/roles/${id}`);
60
+ },
61
+ async getPermissions (roleId) {
62
+ const response = await transport.get(`/roles/${roleId}/permissions`);
63
+ return decodeMany(response, permissionMapper);
64
+ },
65
+ async setPermissions (roleId, permissionIds) {
66
+ const response = await transport.put(`/roles/${roleId}/permissions`, {
67
+ permission_ids: permissionIds
68
+ });
69
+ return decodeOne(response, roleMapper);
70
+ },
71
+ async addPermission (roleId, permissionId) {
72
+ const response = await transport.post(`/roles/${roleId}/permissions/${permissionId}`);
73
+ return decodeOne(response, roleMapper);
74
+ },
75
+ async removePermission (roleId, permissionId) {
76
+ const response = await transport.delete(`/roles/${roleId}/permissions/${permissionId}`);
77
+ return decodeOne(response, roleMapper);
78
+ },
79
+ async listPermissions (params) {
80
+ const queryParams = {};
81
+ if (params == null ? void 0 : params.page) queryParams['page[number]'] = params.page;
82
+ if (params == null ? void 0 : params.perPage) queryParams['page[size]'] = params.perPage;
83
+ const response = await transport.get('/permissions', {
84
+ params: queryParams
85
+ });
86
+ return decodePageResult(response, permissionMapper);
87
+ }
88
+ };
89
+ }
90
+
91
+ //# sourceMappingURL=roles.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/services/roles.service.ts"],"sourcesContent":["import type { Transport, PageResult, ListParams } from '@23blocks/contracts';\nimport { decodeOne, decodeMany, decodePageResult } from '@23blocks/jsonapi-codec';\nimport type { Role, Permission } from '../types/index.js';\nimport { roleMapper, permissionMapper } from '../mappers/index.js';\nimport type { AuthenticationBlockConfig } from '../authentication.block.js';\n\n/**\n * Create role request\n */\nexport interface CreateRoleRequest {\n name: string;\n code: string;\n description?: string;\n payload?: Record<string, unknown>;\n onBoardingUniqueId?: string;\n onBoardingUrl?: string;\n onBoardingPayload?: Record<string, unknown>;\n}\n\n/**\n * Update role request\n */\nexport interface UpdateRoleRequest {\n name?: string;\n code?: string;\n description?: string;\n status?: string;\n payload?: Record<string, unknown>;\n onBoardingUniqueId?: string;\n onBoardingUrl?: string;\n onBoardingPayload?: Record<string, unknown>;\n}\n\n/**\n * Roles service\n */\nexport interface RolesService {\n /**\n * List all roles\n */\n list(params?: ListParams): Promise<PageResult<Role>>;\n\n /**\n * Get a role by ID\n */\n get(id: string): Promise<Role>;\n\n /**\n * Get a role by code\n */\n getByCode(code: string): Promise<Role>;\n\n /**\n * Create a new role\n */\n create(request: CreateRoleRequest): Promise<Role>;\n\n /**\n * Update a role\n */\n update(id: string, request: UpdateRoleRequest): Promise<Role>;\n\n /**\n * Delete a role\n */\n delete(id: string): Promise<void>;\n\n /**\n * Get permissions for a role\n */\n getPermissions(roleId: string): Promise<Permission[]>;\n\n /**\n * Set permissions for a role\n */\n setPermissions(roleId: string, permissionIds: string[]): Promise<Role>;\n\n /**\n * Add permission to a role\n */\n addPermission(roleId: string, permissionId: string): Promise<Role>;\n\n /**\n * Remove permission from a role\n */\n removePermission(roleId: string, permissionId: string): Promise<Role>;\n\n /**\n * List all permissions\n */\n listPermissions(params?: ListParams): Promise<PageResult<Permission>>;\n}\n\n/**\n * Create the roles service\n */\nexport function createRolesService(\n transport: Transport,\n _config: AuthenticationBlockConfig\n): RolesService {\n return {\n async list(params?: ListParams): Promise<PageResult<Role>> {\n const queryParams: Record<string, unknown> = {};\n\n if (params?.page) queryParams['page[number]'] = params.page;\n if (params?.perPage) queryParams['page[size]'] = params.perPage;\n if (params?.include) queryParams['include'] = params.include.join(',');\n\n const response = await transport.get<{ data: unknown[]; meta?: unknown }>(\n '/roles',\n { params: queryParams as Record<string, string> }\n );\n return decodePageResult(response, roleMapper);\n },\n\n async get(id: string): Promise<Role> {\n const response = await transport.get<{ data: unknown }>(\n `/roles/${id}`,\n { params: { include: 'permissions' } }\n );\n return decodeOne(response, roleMapper);\n },\n\n async getByCode(code: string): Promise<Role> {\n const response = await transport.get<{ data: unknown }>(\n `/roles/by_code/${code}`,\n { params: { include: 'permissions' } }\n );\n return decodeOne(response, roleMapper);\n },\n\n async create(request: CreateRoleRequest): Promise<Role> {\n const response = await transport.post<{ data: unknown }>(\n '/roles',\n {\n name: request.name,\n code: request.code,\n description: request.description,\n payload: request.payload,\n on_boarding_unique_id: request.onBoardingUniqueId,\n on_boarding_url: request.onBoardingUrl,\n on_boarding_payload: request.onBoardingPayload,\n }\n );\n return decodeOne(response, roleMapper);\n },\n\n async update(id: string, request: UpdateRoleRequest): Promise<Role> {\n const response = await transport.patch<{ data: unknown }>(\n `/roles/${id}`,\n {\n name: request.name,\n code: request.code,\n description: request.description,\n status: request.status,\n payload: request.payload,\n on_boarding_unique_id: request.onBoardingUniqueId,\n on_boarding_url: request.onBoardingUrl,\n on_boarding_payload: request.onBoardingPayload,\n }\n );\n return decodeOne(response, roleMapper);\n },\n\n async delete(id: string): Promise<void> {\n await transport.delete(`/roles/${id}`);\n },\n\n async getPermissions(roleId: string): Promise<Permission[]> {\n const response = await transport.get<{ data: unknown[] }>(\n `/roles/${roleId}/permissions`\n );\n return decodeMany(response, permissionMapper);\n },\n\n async setPermissions(roleId: string, permissionIds: string[]): Promise<Role> {\n const response = await transport.put<{ data: unknown }>(\n `/roles/${roleId}/permissions`,\n { permission_ids: permissionIds }\n );\n return decodeOne(response, roleMapper);\n },\n\n async addPermission(roleId: string, permissionId: string): Promise<Role> {\n const response = await transport.post<{ data: unknown }>(\n `/roles/${roleId}/permissions/${permissionId}`\n );\n return decodeOne(response, roleMapper);\n },\n\n async removePermission(roleId: string, permissionId: string): Promise<Role> {\n const response = await transport.delete<{ data: unknown }>(\n `/roles/${roleId}/permissions/${permissionId}`\n );\n return decodeOne(response, roleMapper);\n },\n\n async listPermissions(params?: ListParams): Promise<PageResult<Permission>> {\n const queryParams: Record<string, unknown> = {};\n\n if (params?.page) queryParams['page[number]'] = params.page;\n if (params?.perPage) queryParams['page[size]'] = params.perPage;\n\n const response = await transport.get<{ data: unknown[]; meta?: unknown }>(\n '/permissions',\n { params: queryParams as Record<string, string> }\n );\n return decodePageResult(response, permissionMapper);\n },\n };\n}\n"],"names":["decodeOne","decodeMany","decodePageResult","roleMapper","permissionMapper","createRolesService","transport","_config","list","params","queryParams","page","perPage","include","join","response","get","id","getByCode","code","create","request","post","name","description","payload","on_boarding_unique_id","onBoardingUniqueId","on_boarding_url","onBoardingUrl","on_boarding_payload","onBoardingPayload","update","patch","status","delete","getPermissions","roleId","setPermissions","permissionIds","put","permission_ids","addPermission","permissionId","removePermission","listPermissions"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}