@meshmakers/octo-services 3.3.590 → 3.3.610

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.
@@ -215,6 +215,26 @@ class ProgressValue {
215
215
  class ProgressWindowService {
216
216
  }
217
217
 
218
+ var IdentityProviderType;
219
+ (function (IdentityProviderType) {
220
+ IdentityProviderType[IdentityProviderType["Google"] = 0] = "Google";
221
+ IdentityProviderType[IdentityProviderType["Microsoft"] = 1] = "Microsoft";
222
+ IdentityProviderType[IdentityProviderType["MicrosoftAzureAd"] = 2] = "MicrosoftAzureAd";
223
+ IdentityProviderType[IdentityProviderType["MicrosoftActiveDirectory"] = 3] = "MicrosoftActiveDirectory";
224
+ IdentityProviderType[IdentityProviderType["OpenLdap"] = 4] = "OpenLdap";
225
+ IdentityProviderType[IdentityProviderType["Facebook"] = 5] = "Facebook";
226
+ IdentityProviderType[IdentityProviderType["OctoTenant"] = 6] = "OctoTenant";
227
+ })(IdentityProviderType || (IdentityProviderType = {}));
228
+ const IDENTITY_PROVIDER_TYPE_LABELS = {
229
+ [IdentityProviderType.Google]: 'Google',
230
+ [IdentityProviderType.Microsoft]: 'Microsoft',
231
+ [IdentityProviderType.MicrosoftAzureAd]: 'Azure Entra ID',
232
+ [IdentityProviderType.MicrosoftActiveDirectory]: 'Microsoft Active Directory',
233
+ [IdentityProviderType.OpenLdap]: 'OpenLDAP',
234
+ [IdentityProviderType.Facebook]: 'Facebook',
235
+ [IdentityProviderType.OctoTenant]: 'Octo Tenant'
236
+ };
237
+
218
238
  /**
219
239
  * Communication service DTOs for adapter and pipeline management.
220
240
  */
@@ -2789,14 +2809,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
2789
2809
  }]
2790
2810
  }] });
2791
2811
 
2812
+ /**
2813
+ * Injection token for providing the current tenant ID.
2814
+ * This is required for operations that need tenant context, such as:
2815
+ * - Exporting/importing runtime models
2816
+ * - Asset repository operations
2817
+ * - Job management
2818
+ *
2819
+ * @example
2820
+ * ```typescript
2821
+ * // app.config.ts
2822
+ * import { TENANT_ID_PROVIDER } from '@meshmakers/octo-services';
2823
+ * import { ActivatedRoute } from '@angular/router';
2824
+ * import { firstValueFrom } from 'rxjs';
2825
+ *
2826
+ * export const appConfig: ApplicationConfig = {
2827
+ * providers: [
2828
+ * {
2829
+ * provide: TENANT_ID_PROVIDER,
2830
+ * useFactory: () => {
2831
+ * const route = inject(ActivatedRoute);
2832
+ * const configService = inject(CONFIGURATION_SERVICE);
2833
+ * return async (): Promise<string | null> => {
2834
+ * if (route.firstChild) {
2835
+ * const params = await firstValueFrom(route.firstChild.params);
2836
+ * const tenantId = params['tenantId'] as string;
2837
+ * if (tenantId) {
2838
+ * return tenantId;
2839
+ * }
2840
+ * }
2841
+ * return configService.config?.systemTenantId ?? null;
2842
+ * };
2843
+ * }
2844
+ * }
2845
+ * ]
2846
+ * };
2847
+ * ```
2848
+ */
2849
+ const TENANT_ID_PROVIDER = new InjectionToken('TENANT_ID_PROVIDER');
2850
+
2792
2851
  class AssetRepoService {
2793
2852
  httpClient = inject(HttpClient);
2794
2853
  configurationService = inject(CONFIGURATION_SERVICE);
2854
+ tenantIdProvider = inject(TENANT_ID_PROVIDER, { optional: true });
2855
+ async getTenantApiBaseUrl() {
2856
+ if (!this.configurationService.config?.assetServices)
2857
+ return null;
2858
+ let tenantId = 'octosystem';
2859
+ if (this.tenantIdProvider) {
2860
+ tenantId = await this.tenantIdProvider() ?? 'octosystem';
2861
+ }
2862
+ return `${this.configurationService.config.assetServices}${tenantId}/v1/tenants`;
2863
+ }
2795
2864
  async getTenants(skip, take) {
2796
2865
  const params = new HttpParams().set('skip', '' + skip.toString()).set('take', '' + take.toString());
2797
- if (this.configurationService.config?.assetServices) {
2866
+ const baseUrl = await this.getTenantApiBaseUrl();
2867
+ if (baseUrl) {
2798
2868
  const r = await firstValueFrom(this.httpClient
2799
- .get(this.configurationService.config.assetServices + 'system/v1/tenants', {
2869
+ .get(baseUrl, {
2800
2870
  params,
2801
2871
  observe: 'response'
2802
2872
  }));
@@ -2804,10 +2874,11 @@ class AssetRepoService {
2804
2874
  }
2805
2875
  return null;
2806
2876
  }
2807
- async getTenantDetails(tenantId) {
2808
- if (this.configurationService.config?.assetServices) {
2877
+ async getTenantDetails(childTenantId) {
2878
+ const baseUrl = await this.getTenantApiBaseUrl();
2879
+ if (baseUrl) {
2809
2880
  const r = await firstValueFrom(this.httpClient
2810
- .get(this.configurationService.config.assetServices + `system/v1/tenants/${tenantId}`, {
2881
+ .get(`${baseUrl}/${childTenantId}`, {
2811
2882
  observe: 'response'
2812
2883
  }));
2813
2884
  return r.body;
@@ -2815,36 +2886,40 @@ class AssetRepoService {
2815
2886
  return null;
2816
2887
  }
2817
2888
  async createTenant(tenantDto) {
2818
- const params = new HttpParams().set('tenantId', tenantDto.tenantId).set('databaseName', tenantDto.database);
2819
- if (this.configurationService.config?.assetServices) {
2820
- await firstValueFrom(this.httpClient.post(this.configurationService.config.assetServices + 'system/v1/tenants', null, {
2889
+ const params = new HttpParams().set('childTenantId', tenantDto.tenantId).set('databaseName', tenantDto.database);
2890
+ const baseUrl = await this.getTenantApiBaseUrl();
2891
+ if (baseUrl) {
2892
+ await firstValueFrom(this.httpClient.post(baseUrl, null, {
2821
2893
  params,
2822
2894
  observe: 'response'
2823
2895
  }));
2824
2896
  }
2825
2897
  }
2826
2898
  async attachTenant(dataSourceDto) {
2827
- const params = new HttpParams().set('tenantId', dataSourceDto.tenantId).set('databaseName', dataSourceDto.database);
2828
- if (this.configurationService.config?.assetServices) {
2829
- await firstValueFrom(this.httpClient.post(this.configurationService.config.assetServices + 'system/v1/tenants/attach', null, {
2899
+ const params = new HttpParams().set('childTenantId', dataSourceDto.tenantId).set('databaseName', dataSourceDto.database);
2900
+ const baseUrl = await this.getTenantApiBaseUrl();
2901
+ if (baseUrl) {
2902
+ await firstValueFrom(this.httpClient.post(`${baseUrl}/attach`, null, {
2830
2903
  params,
2831
2904
  observe: 'response'
2832
2905
  }));
2833
2906
  }
2834
2907
  }
2835
- async detachTenant(tenantId) {
2836
- const params = new HttpParams().set('tenantId', tenantId);
2837
- if (this.configurationService.config?.assetServices) {
2838
- await firstValueFrom(this.httpClient.post(this.configurationService.config.assetServices + 'system/v1/tenants/detach', null, {
2908
+ async detachTenant(childTenantId) {
2909
+ const params = new HttpParams().set('childTenantId', childTenantId);
2910
+ const baseUrl = await this.getTenantApiBaseUrl();
2911
+ if (baseUrl) {
2912
+ await firstValueFrom(this.httpClient.post(`${baseUrl}/detach`, null, {
2839
2913
  params,
2840
2914
  observe: 'response'
2841
2915
  }));
2842
2916
  }
2843
2917
  }
2844
- async deleteTenant(tenantId) {
2845
- const params = new HttpParams().set('tenantId', tenantId);
2846
- if (this.configurationService.config?.assetServices) {
2847
- await firstValueFrom(this.httpClient.delete(this.configurationService.config.assetServices + 'system/v1/tenants', {
2918
+ async deleteTenant(childTenantId) {
2919
+ const params = new HttpParams().set('childTenantId', childTenantId);
2920
+ const baseUrl = await this.getTenantApiBaseUrl();
2921
+ if (baseUrl) {
2922
+ await firstValueFrom(this.httpClient.delete(baseUrl, {
2848
2923
  params,
2849
2924
  observe: 'response'
2850
2925
  }));
@@ -2852,12 +2927,11 @@ class AssetRepoService {
2852
2927
  }
2853
2928
  async importRtModel(tenantId, file, importStrategy = ImportStrategyDto.InsertOnly) {
2854
2929
  const params = new HttpParams()
2855
- .set('tenantId', tenantId)
2856
2930
  .set('importStrategy', importStrategy.toString());
2857
2931
  if (this.configurationService.config?.assetServices) {
2858
2932
  const formData = new FormData();
2859
2933
  formData.append("file", file);
2860
- const r = await firstValueFrom(this.httpClient.post(this.configurationService.config.assetServices + 'system/v1/Models/ImportRt', formData, {
2934
+ const r = await firstValueFrom(this.httpClient.post(this.configurationService.config.assetServices + tenantId + '/v1/Models/ImportRt', formData, {
2861
2935
  params,
2862
2936
  observe: 'response'
2863
2937
  }));
@@ -2867,12 +2941,11 @@ class AssetRepoService {
2867
2941
  }
2868
2942
  async importCkModel(tenantId, file, importStrategy = ImportStrategyDto.InsertOnly) {
2869
2943
  const params = new HttpParams()
2870
- .set('tenantId', tenantId)
2871
2944
  .set('importStrategy', importStrategy.toString());
2872
2945
  if (this.configurationService.config?.assetServices) {
2873
2946
  const formData = new FormData();
2874
2947
  formData.append("file", file);
2875
- const r = await firstValueFrom(this.httpClient.post(this.configurationService.config.assetServices + 'system/v1/Models/ImportCk', formData, {
2948
+ const r = await firstValueFrom(this.httpClient.post(this.configurationService.config.assetServices + tenantId + '/v1/Models/ImportCk', formData, {
2876
2949
  params,
2877
2950
  observe: 'response'
2878
2951
  }));
@@ -2881,11 +2954,9 @@ class AssetRepoService {
2881
2954
  return null;
2882
2955
  }
2883
2956
  async exportRtModelByQuery(tenantId, queryId) {
2884
- const params = new HttpParams().set('tenantId', tenantId);
2885
2957
  if (this.configurationService.config?.assetServices) {
2886
2958
  const r = await firstValueFrom(this.httpClient
2887
- .post(this.configurationService.config.assetServices + 'system/v1/Models/ExportRtByQuery', { queryId }, {
2888
- params,
2959
+ .post(this.configurationService.config.assetServices + tenantId + '/v1/Models/ExportRtByQuery', { queryId }, {
2889
2960
  observe: 'response'
2890
2961
  }));
2891
2962
  return r.body?.jobId ?? null;
@@ -2893,11 +2964,9 @@ class AssetRepoService {
2893
2964
  return null;
2894
2965
  }
2895
2966
  async exportRtModelDeepGraph(tenantId, originRtIds, originCkTypeId) {
2896
- const params = new HttpParams().set('tenantId', tenantId);
2897
2967
  if (this.configurationService.config?.assetServices) {
2898
2968
  const r = await firstValueFrom(this.httpClient
2899
- .post(this.configurationService.config.assetServices + 'system/v1/Models/ExportRtByDeepGraph', { originRtIds, originCkTypeId }, {
2900
- params,
2969
+ .post(this.configurationService.config.assetServices + tenantId + '/v1/Models/ExportRtByDeepGraph', { originRtIds, originCkTypeId }, {
2901
2970
  observe: 'response'
2902
2971
  }));
2903
2972
  return r.body?.jobId ?? null;
@@ -3037,16 +3106,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3037
3106
  class IdentityService {
3038
3107
  httpClient = inject(HttpClient);
3039
3108
  configurationService = inject(CONFIGURATION_SERVICE);
3109
+ tenantIdProvider = inject(TENANT_ID_PROVIDER, { optional: true });
3110
+ async getApiBaseUrl() {
3111
+ if (!this.configurationService.config?.issuer)
3112
+ return null;
3113
+ let tenantId = 'octosystem';
3114
+ if (this.tenantIdProvider) {
3115
+ tenantId = await this.tenantIdProvider() ?? 'octosystem';
3116
+ }
3117
+ return `${this.configurationService.config.issuer}${tenantId}/v1/`;
3118
+ }
3040
3119
  async userDiagnostics() {
3041
- if (this.configurationService.config?.issuer) {
3042
- return await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + 'system/v1/Diagnostics'));
3120
+ const baseUrl = await this.getApiBaseUrl();
3121
+ if (baseUrl) {
3122
+ return await firstValueFrom(this.httpClient.get(baseUrl + 'Diagnostics'));
3043
3123
  }
3044
3124
  return null;
3045
3125
  }
3046
3126
  async getUsers(skip, take) {
3047
3127
  const params = new HttpParams().set('skip', '' + skip.toString()).set('take', '' + take.toString());
3048
- if (this.configurationService.config?.issuer) {
3049
- const response = await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + 'system/v1/users/getPaged', {
3128
+ const baseUrl = await this.getApiBaseUrl();
3129
+ if (baseUrl) {
3130
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + 'users/getPaged', {
3050
3131
  params,
3051
3132
  observe: 'response'
3052
3133
  }));
@@ -3055,8 +3136,9 @@ class IdentityService {
3055
3136
  return null;
3056
3137
  }
3057
3138
  async getUserDetails(userName) {
3058
- if (this.configurationService.config?.issuer) {
3059
- const response = await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + `system/v1/users/${userName}`, {
3139
+ const baseUrl = await this.getApiBaseUrl();
3140
+ if (baseUrl) {
3141
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `users/${userName}`, {
3060
3142
  observe: 'response'
3061
3143
  }));
3062
3144
  return response.body;
@@ -3064,29 +3146,43 @@ class IdentityService {
3064
3146
  return null;
3065
3147
  }
3066
3148
  async createUser(userDto) {
3067
- if (this.configurationService.config?.issuer) {
3068
- await firstValueFrom(this.httpClient.post(this.configurationService.config.issuer + 'system/v1/users', userDto, {
3149
+ const baseUrl = await this.getApiBaseUrl();
3150
+ if (baseUrl) {
3151
+ await firstValueFrom(this.httpClient.post(baseUrl + 'users', userDto, {
3069
3152
  observe: 'response'
3070
3153
  }));
3071
3154
  }
3072
3155
  }
3073
3156
  async updateUser(userName, userDto) {
3074
- if (this.configurationService.config?.issuer) {
3075
- await firstValueFrom(this.httpClient.put(this.configurationService.config.issuer + `system/v1/users/${userName}`, userDto, {
3157
+ const baseUrl = await this.getApiBaseUrl();
3158
+ if (baseUrl) {
3159
+ await firstValueFrom(this.httpClient.put(baseUrl + `users/${userName}`, userDto, {
3076
3160
  observe: 'response'
3077
3161
  }));
3078
3162
  }
3079
3163
  }
3080
3164
  async deleteUser(userName) {
3081
- if (this.configurationService.config?.issuer) {
3082
- await firstValueFrom(this.httpClient.delete(this.configurationService.config.issuer + `system/v1/users/${userName}`, {
3165
+ const baseUrl = await this.getApiBaseUrl();
3166
+ if (baseUrl) {
3167
+ await firstValueFrom(this.httpClient.delete(baseUrl + `users/${userName}`, {
3083
3168
  observe: 'response'
3084
3169
  }));
3085
3170
  }
3086
3171
  }
3087
3172
  async getUserRoles(userName) {
3088
- if (this.configurationService.config?.issuer) {
3089
- const response = await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + `system/v1/users/${userName}/roles`, {
3173
+ const baseUrl = await this.getApiBaseUrl();
3174
+ if (baseUrl) {
3175
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `users/${userName}/roles`, {
3176
+ observe: 'response'
3177
+ }));
3178
+ return response.body;
3179
+ }
3180
+ return null;
3181
+ }
3182
+ async getUserDirectRoles(userName) {
3183
+ const baseUrl = await this.getApiBaseUrl();
3184
+ if (baseUrl) {
3185
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `users/${userName}/directRoles`, {
3090
3186
  observe: 'response'
3091
3187
  }));
3092
3188
  return response.body;
@@ -3094,37 +3190,42 @@ class IdentityService {
3094
3190
  return null;
3095
3191
  }
3096
3192
  async updateUserRoles(userName, roles) {
3097
- if (this.configurationService.config?.issuer) {
3193
+ const baseUrl = await this.getApiBaseUrl();
3194
+ if (baseUrl) {
3098
3195
  const roleIds = roles.map((role) => role.id);
3099
- await firstValueFrom(this.httpClient.put(this.configurationService.config.issuer + `system/v1/users/${userName}/roles`, roleIds, {
3196
+ await firstValueFrom(this.httpClient.put(baseUrl + `users/${userName}/roles`, roleIds, {
3100
3197
  observe: 'response'
3101
3198
  }));
3102
3199
  }
3103
3200
  }
3104
3201
  async addUserToRole(userName, roleName) {
3105
- if (this.configurationService.config?.issuer) {
3106
- await firstValueFrom(this.httpClient.put(this.configurationService.config.issuer + `system/v1/users/${userName}/roles/${roleName}`, null, {
3202
+ const baseUrl = await this.getApiBaseUrl();
3203
+ if (baseUrl) {
3204
+ await firstValueFrom(this.httpClient.put(baseUrl + `users/${userName}/roles/${roleName}`, null, {
3107
3205
  observe: 'response'
3108
3206
  }));
3109
3207
  }
3110
3208
  }
3111
3209
  async removeRoleFromUser(userName, roleName) {
3112
- if (this.configurationService.config?.issuer) {
3113
- await firstValueFrom(this.httpClient.delete(this.configurationService.config.issuer + `system/v1/users/${userName}/roles/${roleName}`, {
3210
+ const baseUrl = await this.getApiBaseUrl();
3211
+ if (baseUrl) {
3212
+ await firstValueFrom(this.httpClient.delete(baseUrl + `users/${userName}/roles/${roleName}`, {
3114
3213
  observe: 'response'
3115
3214
  }));
3116
3215
  }
3117
3216
  }
3118
3217
  async mergeUsers(targetUserName, sourceUserName) {
3119
- if (this.configurationService.config?.issuer) {
3218
+ const baseUrl = await this.getApiBaseUrl();
3219
+ if (baseUrl) {
3120
3220
  const request = { sourceUserName };
3121
- await firstValueFrom(this.httpClient.post(this.configurationService.config.issuer + `system/v1/users/${encodeURIComponent(targetUserName)}/merge`, request, { observe: 'response' }));
3221
+ await firstValueFrom(this.httpClient.post(baseUrl + `users/${encodeURIComponent(targetUserName)}/merge`, request, { observe: 'response' }));
3122
3222
  }
3123
3223
  }
3124
3224
  async resetPassword(userName, password) {
3125
3225
  const params = new HttpParams().set('userName', userName).set('password', password);
3126
- if (this.configurationService.config?.issuer) {
3127
- const response = await firstValueFrom(this.httpClient.post(this.configurationService.config.issuer + 'system/v1/users/ResetPassword', null, {
3226
+ const baseUrl = await this.getApiBaseUrl();
3227
+ if (baseUrl) {
3228
+ const response = await firstValueFrom(this.httpClient.post(baseUrl + 'users/ResetPassword', null, {
3128
3229
  params,
3129
3230
  observe: 'response'
3130
3231
  }));
@@ -3134,8 +3235,9 @@ class IdentityService {
3134
3235
  }
3135
3236
  async getClients(skip, take) {
3136
3237
  const params = new HttpParams().set('skip', '' + skip.toString()).set('take', '' + take.toString());
3137
- if (this.configurationService.config?.issuer) {
3138
- const response = await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + 'system/v1/clients/getPaged', {
3238
+ const baseUrl = await this.getApiBaseUrl();
3239
+ if (baseUrl) {
3240
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + 'clients/getPaged', {
3139
3241
  params,
3140
3242
  observe: 'response'
3141
3243
  }));
@@ -3144,8 +3246,9 @@ class IdentityService {
3144
3246
  return null;
3145
3247
  }
3146
3248
  async getClientDetails(clientId) {
3147
- if (this.configurationService.config?.issuer) {
3148
- const response = await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + `system/v1/clients/${clientId}`, {
3249
+ const baseUrl = await this.getApiBaseUrl();
3250
+ if (baseUrl) {
3251
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `clients/${clientId}`, {
3149
3252
  observe: 'response'
3150
3253
  }));
3151
3254
  return response.body;
@@ -3153,31 +3256,35 @@ class IdentityService {
3153
3256
  return null;
3154
3257
  }
3155
3258
  async createClient(clientDto) {
3156
- if (this.configurationService.config?.issuer) {
3157
- await firstValueFrom(this.httpClient.post(this.configurationService.config.issuer + 'system/v1/clients', clientDto, {
3259
+ const baseUrl = await this.getApiBaseUrl();
3260
+ if (baseUrl) {
3261
+ await firstValueFrom(this.httpClient.post(baseUrl + 'clients', clientDto, {
3158
3262
  observe: 'response'
3159
3263
  }));
3160
3264
  }
3161
3265
  }
3162
3266
  async updateClient(clientId, clientDto) {
3163
- if (this.configurationService.config?.issuer) {
3164
- await firstValueFrom(this.httpClient.put(this.configurationService.config.issuer + `system/v1/clients/${clientId}`, clientDto, {
3267
+ const baseUrl = await this.getApiBaseUrl();
3268
+ if (baseUrl) {
3269
+ await firstValueFrom(this.httpClient.put(baseUrl + `clients/${clientId}`, clientDto, {
3165
3270
  observe: 'response'
3166
3271
  }));
3167
3272
  }
3168
3273
  }
3169
3274
  async deleteClient(clientId) {
3170
- if (this.configurationService.config?.issuer) {
3171
- await firstValueFrom(this.httpClient.delete(this.configurationService.config.issuer + `system/v1/clients/${clientId}`, {
3275
+ const baseUrl = await this.getApiBaseUrl();
3276
+ if (baseUrl) {
3277
+ await firstValueFrom(this.httpClient.delete(baseUrl + `clients/${clientId}`, {
3172
3278
  observe: 'response'
3173
3279
  }));
3174
3280
  }
3175
3281
  }
3176
3282
  async generatePassword() {
3177
3283
  const params = new HttpParams();
3178
- if (this.configurationService.config?.issuer) {
3284
+ const baseUrl = await this.getApiBaseUrl();
3285
+ if (baseUrl) {
3179
3286
  const r = await firstValueFrom(this.httpClient
3180
- .get(this.configurationService.config.issuer + 'system/v1/tools/generatePassword', {
3287
+ .get(baseUrl + 'tools/generatePassword', {
3181
3288
  params,
3182
3289
  observe: 'response'
3183
3290
  }));
@@ -3190,8 +3297,9 @@ class IdentityService {
3190
3297
  // ========================================
3191
3298
  async getRoles(skip, take) {
3192
3299
  const params = new HttpParams().set('skip', '' + skip.toString()).set('take', '' + take.toString());
3193
- if (this.configurationService.config?.issuer) {
3194
- const response = await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + 'system/v1/roles/getPaged', {
3300
+ const baseUrl = await this.getApiBaseUrl();
3301
+ if (baseUrl) {
3302
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + 'roles/getPaged', {
3195
3303
  params,
3196
3304
  observe: 'response'
3197
3305
  }));
@@ -3200,8 +3308,9 @@ class IdentityService {
3200
3308
  return null;
3201
3309
  }
3202
3310
  async getRoleDetails(roleName) {
3203
- if (this.configurationService.config?.issuer) {
3204
- const response = await firstValueFrom(this.httpClient.get(this.configurationService.config.issuer + `system/v1/roles/names/${roleName}`, {
3311
+ const baseUrl = await this.getApiBaseUrl();
3312
+ if (baseUrl) {
3313
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `roles/names/${roleName}`, {
3205
3314
  observe: 'response'
3206
3315
  }));
3207
3316
  return response.body;
@@ -3209,22 +3318,292 @@ class IdentityService {
3209
3318
  return null;
3210
3319
  }
3211
3320
  async createRole(roleDto) {
3212
- if (this.configurationService.config?.issuer) {
3213
- await firstValueFrom(this.httpClient.post(this.configurationService.config.issuer + 'system/v1/roles', roleDto, {
3321
+ const baseUrl = await this.getApiBaseUrl();
3322
+ if (baseUrl) {
3323
+ await firstValueFrom(this.httpClient.post(baseUrl + 'roles', roleDto, {
3214
3324
  observe: 'response'
3215
3325
  }));
3216
3326
  }
3217
3327
  }
3218
3328
  async updateRole(roleName, roleDto) {
3219
- if (this.configurationService.config?.issuer) {
3220
- await firstValueFrom(this.httpClient.put(this.configurationService.config.issuer + `system/v1/roles/${roleName}`, roleDto, {
3329
+ const baseUrl = await this.getApiBaseUrl();
3330
+ if (baseUrl) {
3331
+ await firstValueFrom(this.httpClient.put(baseUrl + `roles/${roleName}`, roleDto, {
3221
3332
  observe: 'response'
3222
3333
  }));
3223
3334
  }
3224
3335
  }
3225
3336
  async deleteRole(roleName) {
3226
- if (this.configurationService.config?.issuer) {
3227
- await firstValueFrom(this.httpClient.delete(this.configurationService.config.issuer + `system/v1/roles/${roleName}`, {
3337
+ const baseUrl = await this.getApiBaseUrl();
3338
+ if (baseUrl) {
3339
+ await firstValueFrom(this.httpClient.delete(baseUrl + `roles/${roleName}`, {
3340
+ observe: 'response'
3341
+ }));
3342
+ }
3343
+ }
3344
+ // ========================================
3345
+ // Identity Provider Management
3346
+ // ========================================
3347
+ async getIdentityProviders() {
3348
+ const baseUrl = await this.getApiBaseUrl();
3349
+ if (baseUrl) {
3350
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + 'identityproviders', {
3351
+ observe: 'response'
3352
+ }));
3353
+ return response.body;
3354
+ }
3355
+ return null;
3356
+ }
3357
+ async getIdentityProviderDetails(rtId) {
3358
+ const baseUrl = await this.getApiBaseUrl();
3359
+ if (baseUrl) {
3360
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `identityproviders/${rtId}`, {
3361
+ observe: 'response'
3362
+ }));
3363
+ return response.body;
3364
+ }
3365
+ return null;
3366
+ }
3367
+ async createIdentityProvider(dto) {
3368
+ const baseUrl = await this.getApiBaseUrl();
3369
+ if (baseUrl) {
3370
+ const response = await firstValueFrom(this.httpClient.post(baseUrl + 'identityproviders', dto, {
3371
+ observe: 'response'
3372
+ }));
3373
+ return response.body;
3374
+ }
3375
+ return null;
3376
+ }
3377
+ async updateIdentityProvider(rtId, dto) {
3378
+ const baseUrl = await this.getApiBaseUrl();
3379
+ if (baseUrl) {
3380
+ await firstValueFrom(this.httpClient.put(baseUrl + `identityproviders/${rtId}`, dto, {
3381
+ observe: 'response'
3382
+ }));
3383
+ }
3384
+ }
3385
+ async deleteIdentityProvider(rtId) {
3386
+ const baseUrl = await this.getApiBaseUrl();
3387
+ if (baseUrl) {
3388
+ await firstValueFrom(this.httpClient.delete(baseUrl + `identityproviders/${rtId}`, {
3389
+ observe: 'response'
3390
+ }));
3391
+ }
3392
+ }
3393
+ // ========================================
3394
+ // Email Domain Group Rules
3395
+ // ========================================
3396
+ async getEmailDomainGroupRules() {
3397
+ const baseUrl = await this.getApiBaseUrl();
3398
+ if (baseUrl) {
3399
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + 'emaildomaingrouprules', {
3400
+ observe: 'response'
3401
+ }));
3402
+ return response.body;
3403
+ }
3404
+ return null;
3405
+ }
3406
+ async getEmailDomainGroupRuleDetails(rtId) {
3407
+ const baseUrl = await this.getApiBaseUrl();
3408
+ if (baseUrl) {
3409
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `emaildomaingrouprules/${rtId}`, {
3410
+ observe: 'response'
3411
+ }));
3412
+ return response.body;
3413
+ }
3414
+ return null;
3415
+ }
3416
+ async createEmailDomainGroupRule(dto) {
3417
+ const baseUrl = await this.getApiBaseUrl();
3418
+ if (baseUrl) {
3419
+ const response = await firstValueFrom(this.httpClient.post(baseUrl + 'emaildomaingrouprules', dto, {
3420
+ observe: 'response'
3421
+ }));
3422
+ return response.body;
3423
+ }
3424
+ return null;
3425
+ }
3426
+ async updateEmailDomainGroupRule(rtId, dto) {
3427
+ const baseUrl = await this.getApiBaseUrl();
3428
+ if (baseUrl) {
3429
+ await firstValueFrom(this.httpClient.put(baseUrl + `emaildomaingrouprules/${rtId}`, dto, {
3430
+ observe: 'response'
3431
+ }));
3432
+ }
3433
+ }
3434
+ async deleteEmailDomainGroupRule(rtId) {
3435
+ const baseUrl = await this.getApiBaseUrl();
3436
+ if (baseUrl) {
3437
+ await firstValueFrom(this.httpClient.delete(baseUrl + `emaildomaingrouprules/${rtId}`, {
3438
+ observe: 'response'
3439
+ }));
3440
+ }
3441
+ }
3442
+ // ========================================
3443
+ // Group Management
3444
+ // ========================================
3445
+ async getGroups() {
3446
+ const baseUrl = await this.getApiBaseUrl();
3447
+ if (baseUrl) {
3448
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + 'groups', {
3449
+ observe: 'response'
3450
+ }));
3451
+ return response.body;
3452
+ }
3453
+ return null;
3454
+ }
3455
+ async getGroupsPaged(skip, take) {
3456
+ const params = new HttpParams().set('skip', skip.toString()).set('take', take.toString());
3457
+ const baseUrl = await this.getApiBaseUrl();
3458
+ if (baseUrl) {
3459
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + 'groups/getPaged', {
3460
+ params,
3461
+ observe: 'response'
3462
+ }));
3463
+ return response.body;
3464
+ }
3465
+ return null;
3466
+ }
3467
+ async getGroupById(rtId) {
3468
+ const baseUrl = await this.getApiBaseUrl();
3469
+ if (baseUrl) {
3470
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `groups/${rtId}`, {
3471
+ observe: 'response'
3472
+ }));
3473
+ return response.body;
3474
+ }
3475
+ return null;
3476
+ }
3477
+ async getGroupByName(groupName) {
3478
+ const baseUrl = await this.getApiBaseUrl();
3479
+ if (baseUrl) {
3480
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `groups/names/${encodeURIComponent(groupName)}`, {
3481
+ observe: 'response'
3482
+ }));
3483
+ return response.body;
3484
+ }
3485
+ return null;
3486
+ }
3487
+ async createGroup(dto) {
3488
+ const baseUrl = await this.getApiBaseUrl();
3489
+ if (baseUrl) {
3490
+ const response = await firstValueFrom(this.httpClient.post(baseUrl + 'groups', dto, {
3491
+ observe: 'response'
3492
+ }));
3493
+ return response.body;
3494
+ }
3495
+ return null;
3496
+ }
3497
+ async updateGroup(rtId, dto) {
3498
+ const baseUrl = await this.getApiBaseUrl();
3499
+ if (baseUrl) {
3500
+ const response = await firstValueFrom(this.httpClient.put(baseUrl + `groups/${rtId}`, dto, {
3501
+ observe: 'response'
3502
+ }));
3503
+ return response.body;
3504
+ }
3505
+ return null;
3506
+ }
3507
+ async deleteGroup(rtId) {
3508
+ const baseUrl = await this.getApiBaseUrl();
3509
+ if (baseUrl) {
3510
+ await firstValueFrom(this.httpClient.delete(baseUrl + `groups/${rtId}`, {
3511
+ observe: 'response'
3512
+ }));
3513
+ }
3514
+ }
3515
+ async getGroupRoles(rtId) {
3516
+ const baseUrl = await this.getApiBaseUrl();
3517
+ if (baseUrl) {
3518
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `groups/${rtId}/roles`, {
3519
+ observe: 'response'
3520
+ }));
3521
+ return response.body;
3522
+ }
3523
+ return null;
3524
+ }
3525
+ async updateGroupRoles(rtId, roleIds) {
3526
+ const baseUrl = await this.getApiBaseUrl();
3527
+ if (baseUrl) {
3528
+ await firstValueFrom(this.httpClient.put(baseUrl + `groups/${rtId}/roles`, roleIds, {
3529
+ observe: 'response'
3530
+ }));
3531
+ }
3532
+ }
3533
+ async addUserToGroup(rtId, userId) {
3534
+ const baseUrl = await this.getApiBaseUrl();
3535
+ if (baseUrl) {
3536
+ await firstValueFrom(this.httpClient.put(baseUrl + `groups/${rtId}/members/users/${userId}`, null, {
3537
+ observe: 'response'
3538
+ }));
3539
+ }
3540
+ }
3541
+ async removeUserFromGroup(rtId, userId) {
3542
+ const baseUrl = await this.getApiBaseUrl();
3543
+ if (baseUrl) {
3544
+ await firstValueFrom(this.httpClient.delete(baseUrl + `groups/${rtId}/members/users/${userId}`, {
3545
+ observe: 'response'
3546
+ }));
3547
+ }
3548
+ }
3549
+ async addGroupToGroup(rtId, childGroupId) {
3550
+ const baseUrl = await this.getApiBaseUrl();
3551
+ if (baseUrl) {
3552
+ await firstValueFrom(this.httpClient.put(baseUrl + `groups/${rtId}/members/groups/${childGroupId}`, null, {
3553
+ observe: 'response'
3554
+ }));
3555
+ }
3556
+ }
3557
+ async removeGroupFromGroup(rtId, childGroupId) {
3558
+ const baseUrl = await this.getApiBaseUrl();
3559
+ if (baseUrl) {
3560
+ await firstValueFrom(this.httpClient.delete(baseUrl + `groups/${rtId}/members/groups/${childGroupId}`, {
3561
+ observe: 'response'
3562
+ }));
3563
+ }
3564
+ }
3565
+ // ========================================
3566
+ // Admin Provisioning (via system tenant)
3567
+ // ========================================
3568
+ getSystemTenantBaseUrl() {
3569
+ if (!this.configurationService.config?.issuer)
3570
+ return null;
3571
+ return `${this.configurationService.config.issuer}octosystem/v1/`;
3572
+ }
3573
+ async getAdminProvisionedUsers(targetTenantId) {
3574
+ const baseUrl = this.getSystemTenantBaseUrl();
3575
+ if (baseUrl) {
3576
+ const response = await firstValueFrom(this.httpClient.get(baseUrl + `adminProvisioning/${encodeURIComponent(targetTenantId)}`, {
3577
+ observe: 'response'
3578
+ }));
3579
+ return response.body;
3580
+ }
3581
+ return null;
3582
+ }
3583
+ async provisionCurrentUser(targetTenantId) {
3584
+ const baseUrl = this.getSystemTenantBaseUrl();
3585
+ if (baseUrl) {
3586
+ const response = await firstValueFrom(this.httpClient.post(baseUrl + `adminProvisioning/${encodeURIComponent(targetTenantId)}/provisionCurrentUser`, null, {
3587
+ observe: 'response'
3588
+ }));
3589
+ return response.body;
3590
+ }
3591
+ return null;
3592
+ }
3593
+ async createAdminProvisioning(targetTenantId, dto) {
3594
+ const baseUrl = this.getSystemTenantBaseUrl();
3595
+ if (baseUrl) {
3596
+ const response = await firstValueFrom(this.httpClient.post(baseUrl + `adminProvisioning/${encodeURIComponent(targetTenantId)}`, dto, {
3597
+ observe: 'response'
3598
+ }));
3599
+ return response.body;
3600
+ }
3601
+ return null;
3602
+ }
3603
+ async deleteAdminProvisioning(targetTenantId, mappingRtId) {
3604
+ const baseUrl = this.getSystemTenantBaseUrl();
3605
+ if (baseUrl) {
3606
+ await firstValueFrom(this.httpClient.delete(baseUrl + `adminProvisioning/${encodeURIComponent(targetTenantId)}/${encodeURIComponent(mappingRtId)}`, {
3228
3607
  observe: 'response'
3229
3608
  }));
3230
3609
  }
@@ -3652,45 +4031,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3652
4031
  }]
3653
4032
  }] });
3654
4033
 
3655
- /**
3656
- * Injection token for providing the current tenant ID.
3657
- * This is required for operations that need tenant context, such as:
3658
- * - Exporting/importing runtime models
3659
- * - Asset repository operations
3660
- * - Job management
3661
- *
3662
- * @example
3663
- * ```typescript
3664
- * // app.config.ts
3665
- * import { TENANT_ID_PROVIDER } from '@meshmakers/octo-services';
3666
- * import { ActivatedRoute } from '@angular/router';
3667
- * import { firstValueFrom } from 'rxjs';
3668
- *
3669
- * export const appConfig: ApplicationConfig = {
3670
- * providers: [
3671
- * {
3672
- * provide: TENANT_ID_PROVIDER,
3673
- * useFactory: () => {
3674
- * const route = inject(ActivatedRoute);
3675
- * const configService = inject(CONFIGURATION_SERVICE);
3676
- * return async (): Promise<string | null> => {
3677
- * if (route.firstChild) {
3678
- * const params = await firstValueFrom(route.firstChild.params);
3679
- * const tenantId = params['tenantId'] as string;
3680
- * if (tenantId) {
3681
- * return tenantId;
3682
- * }
3683
- * }
3684
- * return configService.config?.systemTenantId ?? null;
3685
- * };
3686
- * }
3687
- * }
3688
- * ]
3689
- * };
3690
- * ```
3691
- */
3692
- const TENANT_ID_PROVIDER = new InjectionToken('TENANT_ID_PROVIDER');
3693
-
3694
4034
  const GetEntitiesByCkTypeDocumentDto = gql `
3695
4035
  query getEntitiesByCkType($ckTypeId: String!, $rtId: OctoObjectId, $after: String, $first: Int, $searchFilter: SearchFilter, $fieldFilters: [FieldFilter], $sort: [Sort]) {
3696
4036
  runtime {
@@ -4122,5 +4462,5 @@ function provideOctoServices(octoServiceOptions) {
4122
4462
  * Generated bundle index. Do not edit.
4123
4463
  */
4124
4464
 
4125
- export { AggregationInputTypesDto, AggregationTypeDto, AggregationTypesDto, AssetRepoGraphQlDataSource, AssetRepoService, AssociationModOptionsDto, AttributeSelectorService, AttributeValueTypeDto, BasicLegalEntityTypeDto, BasicSalutationDto, BasicTypeOfTelephoneBasicDto, BasicTypeOfTelephoneEnhancedDto, BasicUnitOfMeasureDto, BotService, CONFIGURATION_SERVICE, CkExtensionUpdateOperationsDto, CkModelService, CkTypeAttributeService, CkTypeMetaData, CkTypeSelectorService, CommunicationService, DeleteStrategiesDto, DeploymentState, EnergyCommunityBillingCycleDto, EnergyCommunityBillingDocumentStateDto, EnergyCommunityBillingTypeDto, EnergyCommunityDataQualityDto, EnergyCommunityFacilityTypeDto, EnergyCommunityProductionTypeDto, EnergyCommunityStateDto, EnergyCommunityTaxProcedureCreditNoteDto, EnvironmentGoalStateDto, FieldFilterOperatorsDto, GetCkModelByIdDocumentDto, GetCkModelByIdDtoGQL, GetCkRecordAttributesDocumentDto, GetCkRecordAttributesDtoGQL, GetCkTypeAttributesDocumentDto, GetCkTypeAttributesDtoGQL, GetCkTypeAvailableQueryColumnsDocumentDto, GetCkTypeAvailableQueryColumnsDtoGQL, GetCkTypesDocumentDto, GetCkTypesDtoGQL, GetDerivedCkTypesDocumentDto, GetDerivedCkTypesDtoGQL, GetEntitiesByCkTypeDocumentDto, GetEntitiesByCkTypeDtoGQL, GraphDirectionDto, GraphQL, GraphQLCloneIgnoredProperties, GraphQLCommonIgnoredProperties, GraphQlDataSource, HealthService, HealthStatus, IdentityService, ImportStrategyDto, IndustryBasicAlarmPriorityDto, IndustryBasicAlarmSourceTypeDto, IndustryBasicAlarmStateDto, IndustryBasicAlarmTypeDto, IndustryBasicIecDataTypeDto, IndustryBasicMachineCapabilitiesDto, IndustryBasicMachineStateDto, IndustryMaintenanceAggregationTypeDto, IndustryMaintenanceCostCategoryDto, IndustryMaintenanceEnergyBalanceGroupDto, IndustryMaintenanceEnergyBalanceProductDto, IndustryMaintenanceEnergyBalanceUnitDto, IndustryMaintenanceOrderPriorityDto, IndustryMaintenanceOrderStateDto, IndustryMaintenanceOrderTypeDto, IndustryMaintenanceServiceTypeDto, JobManagementService, LevelMetaData, LoggerSeverity, ModelStateDto, MultiplicitiesDto, NavigationFilterModeDto, OctoErrorLink, OctoGraphQLServiceBase, OctoSdkDemoCustomerStatusDto, OctoSdkDemoNetworkOperatorDto, OctoSdkDemoOperatingStatusDto, OctoServiceOptions, OctoServicesModule, PagedGraphResultDto, ProgressValue, ProgressWindowService, QueryModeDto, RtAssociationMetaData, RuntimeEntityDialogDataSource, RuntimeEntitySelectDataSource, SearchFilterTypesDto, SortOrderDto, SortOrdersDto, SystemAggregationTypesDto, SystemCommunicationCommunicationStateDto, SystemCommunicationConfigurationStateDto, SystemCommunicationDeploymentStateDto, SystemCommunicationPipelineExecutionStatusDto, SystemCommunicationPipelineTriggerTypeDto, SystemEnvironmentModesDto, SystemFieldFilterOperatorDto, SystemIdentityTokenExpirationDto, SystemIdentityTokenTypeDto, SystemIdentityTokenUsageDto, SystemMaintenanceLevelsDto, SystemNavigationFilterModesDto, SystemNotificationEventLevelsDto, SystemNotificationEventSourcesDto, SystemNotificationEventStatesDto, SystemNotificationNotificationTypesDto, SystemNotificationRenderingTypesDto, SystemQueryTypesDto, SystemSortOrdersDto, TENANT_ID_PROVIDER, TusUploadService, UpdateTypeDto, result as possibleTypes, provideOctoServices };
4465
+ export { AggregationInputTypesDto, AggregationTypeDto, AggregationTypesDto, AssetRepoGraphQlDataSource, AssetRepoService, AssociationModOptionsDto, AttributeSelectorService, AttributeValueTypeDto, BasicLegalEntityTypeDto, BasicSalutationDto, BasicTypeOfTelephoneBasicDto, BasicTypeOfTelephoneEnhancedDto, BasicUnitOfMeasureDto, BotService, CONFIGURATION_SERVICE, CkExtensionUpdateOperationsDto, CkModelService, CkTypeAttributeService, CkTypeMetaData, CkTypeSelectorService, CommunicationService, DeleteStrategiesDto, DeploymentState, EnergyCommunityBillingCycleDto, EnergyCommunityBillingDocumentStateDto, EnergyCommunityBillingTypeDto, EnergyCommunityDataQualityDto, EnergyCommunityFacilityTypeDto, EnergyCommunityProductionTypeDto, EnergyCommunityStateDto, EnergyCommunityTaxProcedureCreditNoteDto, EnvironmentGoalStateDto, FieldFilterOperatorsDto, GetCkModelByIdDocumentDto, GetCkModelByIdDtoGQL, GetCkRecordAttributesDocumentDto, GetCkRecordAttributesDtoGQL, GetCkTypeAttributesDocumentDto, GetCkTypeAttributesDtoGQL, GetCkTypeAvailableQueryColumnsDocumentDto, GetCkTypeAvailableQueryColumnsDtoGQL, GetCkTypesDocumentDto, GetCkTypesDtoGQL, GetDerivedCkTypesDocumentDto, GetDerivedCkTypesDtoGQL, GetEntitiesByCkTypeDocumentDto, GetEntitiesByCkTypeDtoGQL, GraphDirectionDto, GraphQL, GraphQLCloneIgnoredProperties, GraphQLCommonIgnoredProperties, GraphQlDataSource, HealthService, HealthStatus, IDENTITY_PROVIDER_TYPE_LABELS, IdentityProviderType, IdentityService, ImportStrategyDto, IndustryBasicAlarmPriorityDto, IndustryBasicAlarmSourceTypeDto, IndustryBasicAlarmStateDto, IndustryBasicAlarmTypeDto, IndustryBasicIecDataTypeDto, IndustryBasicMachineCapabilitiesDto, IndustryBasicMachineStateDto, IndustryMaintenanceAggregationTypeDto, IndustryMaintenanceCostCategoryDto, IndustryMaintenanceEnergyBalanceGroupDto, IndustryMaintenanceEnergyBalanceProductDto, IndustryMaintenanceEnergyBalanceUnitDto, IndustryMaintenanceOrderPriorityDto, IndustryMaintenanceOrderStateDto, IndustryMaintenanceOrderTypeDto, IndustryMaintenanceServiceTypeDto, JobManagementService, LevelMetaData, LoggerSeverity, ModelStateDto, MultiplicitiesDto, NavigationFilterModeDto, OctoErrorLink, OctoGraphQLServiceBase, OctoSdkDemoCustomerStatusDto, OctoSdkDemoNetworkOperatorDto, OctoSdkDemoOperatingStatusDto, OctoServiceOptions, OctoServicesModule, PagedGraphResultDto, ProgressValue, ProgressWindowService, QueryModeDto, RtAssociationMetaData, RuntimeEntityDialogDataSource, RuntimeEntitySelectDataSource, SearchFilterTypesDto, SortOrderDto, SortOrdersDto, SystemAggregationTypesDto, SystemCommunicationCommunicationStateDto, SystemCommunicationConfigurationStateDto, SystemCommunicationDeploymentStateDto, SystemCommunicationPipelineExecutionStatusDto, SystemCommunicationPipelineTriggerTypeDto, SystemEnvironmentModesDto, SystemFieldFilterOperatorDto, SystemIdentityTokenExpirationDto, SystemIdentityTokenTypeDto, SystemIdentityTokenUsageDto, SystemMaintenanceLevelsDto, SystemNavigationFilterModesDto, SystemNotificationEventLevelsDto, SystemNotificationEventSourcesDto, SystemNotificationEventStatesDto, SystemNotificationNotificationTypesDto, SystemNotificationRenderingTypesDto, SystemQueryTypesDto, SystemSortOrdersDto, TENANT_ID_PROVIDER, TusUploadService, UpdateTypeDto, result as possibleTypes, provideOctoServices };
4126
4466
  //# sourceMappingURL=meshmakers-octo-services.mjs.map