@naylence/runtime 0.4.6 → 0.4.8

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 (40) hide show
  1. package/dist/browser/index.cjs +120 -107
  2. package/dist/browser/index.mjs +117 -108
  3. package/dist/cjs/naylence/fame/delivery/delivery-profile-factory.js +5 -9
  4. package/dist/cjs/naylence/fame/index.js +1 -0
  5. package/dist/cjs/naylence/fame/node/admission/admission-profile-factory.js +15 -19
  6. package/dist/cjs/naylence/fame/node/node-identity-policy-profile-factory.js +6 -10
  7. package/dist/cjs/naylence/fame/profile/index.js +8 -0
  8. package/dist/cjs/naylence/fame/profile/profile-registry.js +57 -0
  9. package/dist/cjs/naylence/fame/security/auth/authorization-profile-factory.js +9 -13
  10. package/dist/cjs/naylence/fame/security/node-security-profile-factory.js +9 -13
  11. package/dist/cjs/naylence/fame/sentinel/load-balancing/load-balancing-profile-factory.js +10 -13
  12. package/dist/cjs/naylence/fame/sentinel/routing-profile-factory.js +7 -8
  13. package/dist/cjs/naylence/fame/storage/storage-profile-factory.js +8 -12
  14. package/dist/cjs/naylence/fame/telemetry/trace-emitter-profile-factory.js +5 -9
  15. package/dist/cjs/runtime-isomorphic.js +1 -0
  16. package/dist/cjs/version.js +2 -2
  17. package/dist/esm/naylence/fame/delivery/delivery-profile-factory.js +5 -9
  18. package/dist/esm/naylence/fame/index.js +1 -0
  19. package/dist/esm/naylence/fame/node/admission/admission-profile-factory.js +15 -19
  20. package/dist/esm/naylence/fame/node/node-identity-policy-profile-factory.js +6 -10
  21. package/dist/esm/naylence/fame/profile/index.js +1 -0
  22. package/dist/esm/naylence/fame/profile/profile-registry.js +51 -0
  23. package/dist/esm/naylence/fame/security/auth/authorization-profile-factory.js +9 -13
  24. package/dist/esm/naylence/fame/security/node-security-profile-factory.js +9 -13
  25. package/dist/esm/naylence/fame/sentinel/load-balancing/load-balancing-profile-factory.js +10 -13
  26. package/dist/esm/naylence/fame/sentinel/routing-profile-factory.js +7 -8
  27. package/dist/esm/naylence/fame/storage/storage-profile-factory.js +8 -12
  28. package/dist/esm/naylence/fame/telemetry/trace-emitter-profile-factory.js +5 -9
  29. package/dist/esm/runtime-isomorphic.js +1 -0
  30. package/dist/esm/version.js +2 -2
  31. package/dist/node/index.cjs +120 -107
  32. package/dist/node/index.mjs +117 -108
  33. package/dist/node/node.cjs +123 -108
  34. package/dist/node/node.mjs +120 -109
  35. package/dist/types/naylence/fame/index.d.ts +1 -0
  36. package/dist/types/naylence/fame/profile/index.d.ts +2 -0
  37. package/dist/types/naylence/fame/profile/profile-registry.d.ts +9 -0
  38. package/dist/types/runtime-isomorphic.d.ts +1 -0
  39. package/dist/types/version.d.ts +1 -1
  40. package/package.json +2 -2
@@ -523,12 +523,12 @@ async function ensureRuntimeFactoriesRegistered(registry = Registry) {
523
523
  }
524
524
 
525
525
  // This file is auto-generated during build - do not edit manually
526
- // Generated from package.json version: 0.4.6
526
+ // Generated from package.json version: 0.4.8
527
527
  /**
528
528
  * The package version, injected at build time.
529
529
  * @internal
530
530
  */
531
- const VERSION = '0.4.6';
531
+ const VERSION = '0.4.8';
532
532
 
533
533
  let initialized = false;
534
534
  const runtimePlugin = {
@@ -3559,6 +3559,58 @@ class InMemoryFanoutBroker extends TaskSpawner {
3559
3559
  }
3560
3560
  }
3561
3561
 
3562
+ const registry = new Map();
3563
+ function normalizeKey$1(value, label) {
3564
+ if (typeof value !== 'string') {
3565
+ throw new Error(`${label} must be a non-empty string`);
3566
+ }
3567
+ const trimmed = value.trim();
3568
+ if (!trimmed) {
3569
+ throw new Error(`${label} must be a non-empty string`);
3570
+ }
3571
+ return trimmed;
3572
+ }
3573
+ function cloneConfig(value) {
3574
+ return JSON.parse(JSON.stringify(value));
3575
+ }
3576
+ function registerProfile(baseType, name, config, options) {
3577
+ const normalizedBase = normalizeKey$1(baseType, 'baseType');
3578
+ const normalizedName = normalizeKey$1(name, 'profile name');
3579
+ if (!config || typeof config !== 'object' || Array.isArray(config)) {
3580
+ throw new Error(`Profile '${normalizedName}' config must be an object`);
3581
+ }
3582
+ const profiles = registry.get(normalizedBase) ?? new Map();
3583
+ if (profiles.has(normalizedName) && options?.allowOverride !== true) {
3584
+ const sourceLabel = options?.source ? ` (${options.source})` : '';
3585
+ throw new Error(`Profile '${normalizedName}' already registered for ${normalizedBase}${sourceLabel}`);
3586
+ }
3587
+ profiles.set(normalizedName, config);
3588
+ registry.set(normalizedBase, profiles);
3589
+ }
3590
+ function getProfile(baseType, name) {
3591
+ const normalizedBase = normalizeKey$1(baseType, 'baseType');
3592
+ const normalizedName = normalizeKey$1(name, 'profile name');
3593
+ const profiles = registry.get(normalizedBase);
3594
+ if (!profiles) {
3595
+ return null;
3596
+ }
3597
+ const profile = profiles.get(normalizedName);
3598
+ return profile ? cloneConfig(profile) : null;
3599
+ }
3600
+ function listProfiles(baseType) {
3601
+ const normalizedBase = normalizeKey$1(baseType, 'baseType');
3602
+ const profiles = registry.get(normalizedBase);
3603
+ return profiles ? Array.from(profiles.keys()) : [];
3604
+ }
3605
+ function clearProfiles(baseType) {
3606
+ if (!baseType) {
3607
+ registry.clear();
3608
+ return;
3609
+ }
3610
+ const normalizedBase = normalizeKey$1(baseType, 'baseType');
3611
+ registry.delete(normalizedBase);
3612
+ }
3613
+
3562
3614
  class InMemoryKeyValueStore {
3563
3615
  constructor() {
3564
3616
  this.store = new Map();
@@ -4200,15 +4252,8 @@ const INDEXEDDB_PROFILE_CONFIG = {
4200
4252
  ({
4201
4253
  dbDirectory: Expressions.env(ENV_VAR_STORAGE_DB_DIRECTORY, './data/sqlite'),
4202
4254
  masterKey: Expressions.env(ENV_VAR_STORAGE_MASTER_KEY)});
4203
- // Base profile map with browser-safe options
4204
- const BASE_PROFILE_MAP = {
4205
- [PROFILE_NAME_MEMORY]: MEMORY_PROFILE_CONFIG,
4206
- [PROFILE_NAME_INDEXEDDB]: INDEXEDDB_PROFILE_CONFIG,
4207
- };
4208
- // Extended profile map - can be augmented by Node.js environment
4209
- const PROFILE_MAP$7 = {
4210
- ...BASE_PROFILE_MAP,
4211
- };
4255
+ registerProfile(STORAGE_PROVIDER_FACTORY_BASE_TYPE, PROFILE_NAME_MEMORY, MEMORY_PROFILE_CONFIG, { source: 'storage-profile-factory' });
4256
+ registerProfile(STORAGE_PROVIDER_FACTORY_BASE_TYPE, PROFILE_NAME_INDEXEDDB, INDEXEDDB_PROFILE_CONFIG, { source: 'storage-profile-factory' });
4212
4257
  class StorageProfileFactory extends StorageProviderFactory {
4213
4258
  constructor() {
4214
4259
  super(...arguments);
@@ -4221,9 +4266,9 @@ class StorageProfileFactory extends StorageProviderFactory {
4221
4266
  type: 'StorageProfile',
4222
4267
  });
4223
4268
  const profileName = (parsed.profile ?? PROFILE_NAME_MEMORY).toLowerCase();
4224
- const profileConfig = PROFILE_MAP$7[profileName];
4269
+ const profileConfig = getProfile(STORAGE_PROVIDER_FACTORY_BASE_TYPE, profileName);
4225
4270
  if (!profileConfig) {
4226
- throw new Error(`Unknown storage profile '${profileName}'. Supported profiles: ${Object.keys(PROFILE_MAP$7).join(', ')}`);
4271
+ throw new Error(`Unknown storage profile '${profileName}'. Supported profiles: ${listProfiles(STORAGE_PROVIDER_FACTORY_BASE_TYPE).join(', ')}`);
4227
4272
  }
4228
4273
  const createOptions = {
4229
4274
  ...options,
@@ -16191,11 +16236,9 @@ const DEFAULT_PROFILE$1 = {
16191
16236
  const TOKEN_SUBJECT_PROFILE = {
16192
16237
  type: 'TokenSubjectNodeIdentityPolicy',
16193
16238
  };
16194
- const PROFILE_MAP$6 = {
16195
- [PROFILE_NAME_DEFAULT$1]: DEFAULT_PROFILE$1,
16196
- [PROFILE_NAME_TOKEN_SUBJECT]: TOKEN_SUBJECT_PROFILE,
16197
- [PROFILE_NAME_TOKEN_SUBJECT_ALIAS]: TOKEN_SUBJECT_PROFILE,
16198
- };
16239
+ registerProfile(NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_DEFAULT$1, DEFAULT_PROFILE$1, { source: 'node-identity-policy-profile-factory' });
16240
+ registerProfile(NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_TOKEN_SUBJECT, TOKEN_SUBJECT_PROFILE, { source: 'node-identity-policy-profile-factory' });
16241
+ registerProfile(NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_TOKEN_SUBJECT_ALIAS, TOKEN_SUBJECT_PROFILE, { source: 'node-identity-policy-profile-factory' });
16199
16242
  const FACTORY_META$19 = {
16200
16243
  base: NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE,
16201
16244
  key: 'NodeIdentityPolicyProfile',
@@ -16232,14 +16275,11 @@ function normalizeConfig$x(config) {
16232
16275
  return { profile: normalizedProfile };
16233
16276
  }
16234
16277
  function resolveProfileConfig$5(profileName) {
16235
- const profile = PROFILE_MAP$6[profileName];
16278
+ const profile = getProfile(NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, profileName);
16236
16279
  if (!profile) {
16237
16280
  throw new Error(`Unknown node identity policy profile: ${profileName}`);
16238
16281
  }
16239
- return deepClone$5(profile);
16240
- }
16241
- function deepClone$5(value) {
16242
- return JSON.parse(JSON.stringify(value));
16282
+ return profile;
16243
16283
  }
16244
16284
 
16245
16285
  var nodeIdentityPolicyProfileFactory = /*#__PURE__*/Object.freeze({
@@ -22005,14 +22045,12 @@ const POLICY_LOCALFILE_PROFILE = {
22005
22045
  verifier: DEFAULT_VERIFIER_CONFIG,
22006
22046
  policySource: DEFAULT_POLICY_SOURCE,
22007
22047
  };
22008
- const PROFILE_MAP$5 = {
22009
- [PROFILE_NAME_DEFAULT]: DEFAULT_PROFILE,
22010
- [PROFILE_NAME_OAUTH2]: OAUTH2_PROFILE,
22011
- [PROFILE_NAME_OAUTH2_GATED]: OAUTH2_GATED_PROFILE,
22012
- [PROFILE_NAME_OAUTH2_CALLBACK]: OAUTH2_CALLBACK_PROFILE,
22013
- [PROFILE_NAME_POLICY_LOCALFILE]: POLICY_LOCALFILE_PROFILE,
22014
- [PROFILE_NAME_NOOP$2]: NOOP_PROFILE$2,
22015
- };
22048
+ registerProfile(AUTHORIZER_FACTORY_BASE_TYPE, PROFILE_NAME_DEFAULT, DEFAULT_PROFILE, { source: 'authorization-profile-factory' });
22049
+ registerProfile(AUTHORIZER_FACTORY_BASE_TYPE, PROFILE_NAME_OAUTH2, OAUTH2_PROFILE, { source: 'authorization-profile-factory' });
22050
+ registerProfile(AUTHORIZER_FACTORY_BASE_TYPE, PROFILE_NAME_OAUTH2_GATED, OAUTH2_GATED_PROFILE, { source: 'authorization-profile-factory' });
22051
+ registerProfile(AUTHORIZER_FACTORY_BASE_TYPE, PROFILE_NAME_OAUTH2_CALLBACK, OAUTH2_CALLBACK_PROFILE, { source: 'authorization-profile-factory' });
22052
+ registerProfile(AUTHORIZER_FACTORY_BASE_TYPE, PROFILE_NAME_POLICY_LOCALFILE, POLICY_LOCALFILE_PROFILE, { source: 'authorization-profile-factory' });
22053
+ registerProfile(AUTHORIZER_FACTORY_BASE_TYPE, PROFILE_NAME_NOOP$2, NOOP_PROFILE$2, { source: 'authorization-profile-factory' });
22016
22054
  const PROFILE_ALIASES$1 = {
22017
22055
  jwt: PROFILE_NAME_DEFAULT,
22018
22056
  jwks: PROFILE_NAME_DEFAULT,
@@ -22131,14 +22169,11 @@ function canonicalizeProfileName$1(value) {
22131
22169
  return PROFILE_ALIASES$1[normalized] ?? normalized;
22132
22170
  }
22133
22171
  function resolveProfileConfig$4(profileName) {
22134
- const profile = PROFILE_MAP$5[profileName];
22172
+ const profile = getProfile(AUTHORIZER_FACTORY_BASE_TYPE, profileName);
22135
22173
  if (!profile) {
22136
22174
  throw new Error(`Unknown authorization profile: ${profileName}`);
22137
22175
  }
22138
- return deepClone$4(profile);
22139
- }
22140
- function deepClone$4(value) {
22141
- return JSON.parse(JSON.stringify(value));
22176
+ return profile;
22142
22177
  }
22143
22178
 
22144
22179
  var authorizationProfileFactory = /*#__PURE__*/Object.freeze({
@@ -29942,14 +29977,12 @@ const OPEN_PROFILE$1 = {
29942
29977
  profile: Expressions.env(ENV_VAR_AUTHORIZATION_PROFILE, 'noop'),
29943
29978
  },
29944
29979
  };
29945
- const PROFILE_MAP$4 = {
29946
- [PROFILE_NAME_OVERLAY]: OVERLAY_PROFILE,
29947
- [PROFILE_NAME_OVERLAY_CALLBACK]: OVERLAY_CALLBACK_PROFILE,
29948
- [PROFILE_NAME_STRICT_OVERLAY]: STRICT_OVERLAY_PROFILE,
29949
- [PROFILE_NAME_GATED]: GATED_PROFILE,
29950
- [PROFILE_NAME_GATED_CALLBACK]: GATED_CALLBACK_PROFILE,
29951
- [PROFILE_NAME_OPEN$1]: OPEN_PROFILE$1,
29952
- };
29980
+ registerProfile(SECURITY_MANAGER_FACTORY_BASE_TYPE, PROFILE_NAME_OVERLAY, OVERLAY_PROFILE, { source: 'node-security-profile-factory' });
29981
+ registerProfile(SECURITY_MANAGER_FACTORY_BASE_TYPE, PROFILE_NAME_OVERLAY_CALLBACK, OVERLAY_CALLBACK_PROFILE, { source: 'node-security-profile-factory' });
29982
+ registerProfile(SECURITY_MANAGER_FACTORY_BASE_TYPE, PROFILE_NAME_STRICT_OVERLAY, STRICT_OVERLAY_PROFILE, { source: 'node-security-profile-factory' });
29983
+ registerProfile(SECURITY_MANAGER_FACTORY_BASE_TYPE, PROFILE_NAME_GATED, GATED_PROFILE, { source: 'node-security-profile-factory' });
29984
+ registerProfile(SECURITY_MANAGER_FACTORY_BASE_TYPE, PROFILE_NAME_GATED_CALLBACK, GATED_CALLBACK_PROFILE, { source: 'node-security-profile-factory' });
29985
+ registerProfile(SECURITY_MANAGER_FACTORY_BASE_TYPE, PROFILE_NAME_OPEN$1, OPEN_PROFILE$1, { source: 'node-security-profile-factory' });
29953
29986
  const FACTORY_META$13 = {
29954
29987
  base: SECURITY_MANAGER_FACTORY_BASE_TYPE,
29955
29988
  key: 'SecurityProfile',
@@ -30056,14 +30089,11 @@ function normalizeProfile(config) {
30056
30089
  return value.toLowerCase();
30057
30090
  }
30058
30091
  function resolveProfileConfig$3(profileName) {
30059
- const template = PROFILE_MAP$4[profileName];
30092
+ const template = getProfile(SECURITY_MANAGER_FACTORY_BASE_TYPE, profileName);
30060
30093
  if (!template) {
30061
30094
  throw new Error(`Unknown security profile: ${profileName}`);
30062
30095
  }
30063
- return deepClone$3(template);
30064
- }
30065
- function deepClone$3(value) {
30066
- return JSON.parse(JSON.stringify(value));
30096
+ return template;
30067
30097
  }
30068
30098
 
30069
30099
  var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
@@ -33988,10 +34018,8 @@ const AT_LEAST_ONCE_PROFILE = {
33988
34018
  const AT_MOST_ONCE_PROFILE = {
33989
34019
  type: 'AtMostOnceDeliveryPolicy',
33990
34020
  };
33991
- const PROFILE_MAP$3 = {
33992
- [PROFILE_NAME_AT_LEAST_ONCE]: AT_LEAST_ONCE_PROFILE,
33993
- [PROFILE_NAME_AT_MOST_ONCE]: AT_MOST_ONCE_PROFILE,
33994
- };
34021
+ registerProfile(DELIVERY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_AT_LEAST_ONCE, AT_LEAST_ONCE_PROFILE, { source: 'delivery-profile-factory' });
34022
+ registerProfile(DELIVERY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_AT_MOST_ONCE, AT_MOST_ONCE_PROFILE, { source: 'delivery-profile-factory' });
33995
34023
  class DeliveryProfileFactory extends DeliveryPolicyFactory {
33996
34024
  constructor() {
33997
34025
  super(...arguments);
@@ -34040,14 +34068,11 @@ function coerceProfileString$1(value) {
34040
34068
  return trimmed.length > 0 ? trimmed : null;
34041
34069
  }
34042
34070
  function resolveProfileConfig$2(profileName) {
34043
- const profile = PROFILE_MAP$3[profileName];
34071
+ const profile = getProfile(DELIVERY_POLICY_FACTORY_BASE_TYPE, profileName);
34044
34072
  if (!profile) {
34045
34073
  throw new Error(`Unknown delivery profile: ${profileName}`);
34046
34074
  }
34047
- return deepClone$2(profile);
34048
- }
34049
- function deepClone$2(value) {
34050
- return JSON.parse(JSON.stringify(value));
34075
+ return profile;
34051
34076
  }
34052
34077
  const FACTORY_META$S = {
34053
34078
  base: DELIVERY_POLICY_FACTORY_BASE_TYPE,
@@ -34484,20 +34509,18 @@ const NOOP_PROFILE$1 = {
34484
34509
  auto_accept_logicals: true,
34485
34510
  autoAcceptLogicals: true,
34486
34511
  };
34487
- const PROFILE_MAP$2 = {
34488
- [PROFILE_NAME_WELCOME]: WELCOME_SERVICE_PROFILE,
34489
- [PROFILE_NAME_WELCOME_PKCE]: WELCOME_SERVICE_PKCE_PROFILE,
34490
- [PROFILE_NAME_WELCOME_PKCE_ALIAS]: WELCOME_SERVICE_PKCE_PROFILE,
34491
- [PROFILE_NAME_DIRECT]: DIRECT_PROFILE,
34492
- [PROFILE_NAME_DIRECT_PKCE]: DIRECT_PKCE_PROFILE,
34493
- [PROFILE_NAME_DIRECT_PKCE_ALIAS]: DIRECT_PKCE_PROFILE,
34494
- [PROFILE_NAME_DIRECT_HTTP]: DIRECT_HTTP_PROFILE,
34495
- [PROFILE_NAME_DIRECT_INPAGE]: DIRECT_INPAGE_PROFILE,
34496
- [PROFILE_NAME_DIRECT_INPAGE_ALIAS]: DIRECT_INPAGE_PROFILE,
34497
- [PROFILE_NAME_OPEN]: OPEN_PROFILE,
34498
- [PROFILE_NAME_NOOP$1]: NOOP_PROFILE$1,
34499
- [PROFILE_NAME_NONE]: NOOP_PROFILE$1,
34500
- };
34512
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_WELCOME, WELCOME_SERVICE_PROFILE, { source: 'admission-profile-factory' });
34513
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_WELCOME_PKCE, WELCOME_SERVICE_PKCE_PROFILE, { source: 'admission-profile-factory' });
34514
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_WELCOME_PKCE_ALIAS, WELCOME_SERVICE_PKCE_PROFILE, { source: 'admission-profile-factory' });
34515
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT, DIRECT_PROFILE, { source: 'admission-profile-factory' });
34516
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_PKCE, DIRECT_PKCE_PROFILE, { source: 'admission-profile-factory' });
34517
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_PKCE_ALIAS, DIRECT_PKCE_PROFILE, { source: 'admission-profile-factory' });
34518
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_HTTP, DIRECT_HTTP_PROFILE, { source: 'admission-profile-factory' });
34519
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_INPAGE, DIRECT_INPAGE_PROFILE, { source: 'admission-profile-factory' });
34520
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_INPAGE_ALIAS, DIRECT_INPAGE_PROFILE, { source: 'admission-profile-factory' });
34521
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_OPEN, OPEN_PROFILE, { source: 'admission-profile-factory' });
34522
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_NOOP$1, NOOP_PROFILE$1, { source: 'admission-profile-factory' });
34523
+ registerProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_NONE, NOOP_PROFILE$1, { source: 'admission-profile-factory' });
34501
34524
  const FACTORY_META$Q = {
34502
34525
  base: ADMISSION_CLIENT_FACTORY_BASE_TYPE,
34503
34526
  key: 'AdmissionProfile',
@@ -34534,14 +34557,11 @@ function normalizeConfig$p(config) {
34534
34557
  return { profile: normalizedProfile };
34535
34558
  }
34536
34559
  function resolveProfileConfig$1(profileName) {
34537
- const profile = PROFILE_MAP$2[profileName];
34560
+ const profile = getProfile(ADMISSION_CLIENT_FACTORY_BASE_TYPE, profileName);
34538
34561
  if (!profile) {
34539
34562
  throw new Error(`Unknown admission profile: ${profileName}`);
34540
34563
  }
34541
- return deepClone$1(profile);
34542
- }
34543
- function deepClone$1(value) {
34544
- return JSON.parse(JSON.stringify(value));
34564
+ return profile;
34545
34565
  }
34546
34566
 
34547
34567
  var admissionProfileFactory = /*#__PURE__*/Object.freeze({
@@ -38867,6 +38887,11 @@ const STICKY_HRW_PROFILE = {
38867
38887
  const DEVELOPMENT_PROFILE$1 = {
38868
38888
  type: 'RoundRobinLoadBalancingStrategy',
38869
38889
  };
38890
+ registerProfile(LOAD_BALANCING_STRATEGY_FACTORY_BASE, PROFILE_NAME_RANDOM, RANDOM_PROFILE, { source: 'load-balancing-profile-factory' });
38891
+ registerProfile(LOAD_BALANCING_STRATEGY_FACTORY_BASE, PROFILE_NAME_ROUND_ROBIN, ROUND_ROBIN_PROFILE, { source: 'load-balancing-profile-factory' });
38892
+ registerProfile(LOAD_BALANCING_STRATEGY_FACTORY_BASE, PROFILE_NAME_HRW, HRW_PROFILE, { source: 'load-balancing-profile-factory' });
38893
+ registerProfile(LOAD_BALANCING_STRATEGY_FACTORY_BASE, PROFILE_NAME_STICKY_HRW, STICKY_HRW_PROFILE, { source: 'load-balancing-profile-factory' });
38894
+ registerProfile(LOAD_BALANCING_STRATEGY_FACTORY_BASE, PROFILE_NAME_DEVELOPMENT$1, DEVELOPMENT_PROFILE$1, { source: 'load-balancing-profile-factory' });
38870
38895
  const FACTORY_META$7 = {
38871
38896
  base: LOAD_BALANCING_STRATEGY_FACTORY_BASE,
38872
38897
  key: 'LoadBalancingProfile',
@@ -38921,20 +38946,11 @@ class LoadBalancingProfileFactory extends LoadBalancingStrategyFactory {
38921
38946
  return undefined;
38922
38947
  }
38923
38948
  resolveProfile(profile) {
38924
- switch (profile) {
38925
- case PROFILE_NAME_RANDOM:
38926
- return RANDOM_PROFILE;
38927
- case PROFILE_NAME_ROUND_ROBIN:
38928
- return ROUND_ROBIN_PROFILE;
38929
- case PROFILE_NAME_HRW:
38930
- return HRW_PROFILE;
38931
- case PROFILE_NAME_STICKY_HRW:
38932
- return STICKY_HRW_PROFILE;
38933
- case PROFILE_NAME_DEVELOPMENT$1:
38934
- return DEVELOPMENT_PROFILE$1;
38935
- default:
38936
- throw new Error(`Unknown load balancing profile: ${profile}`);
38949
+ const strategyConfig = getProfile(LOAD_BALANCING_STRATEGY_FACTORY_BASE, profile);
38950
+ if (!strategyConfig) {
38951
+ throw new Error(`Unknown load balancing profile: ${profile}`);
38937
38952
  }
38953
+ return strategyConfig;
38938
38954
  }
38939
38955
  }
38940
38956
 
@@ -39103,13 +39119,11 @@ const HYBRID_ONLY_PROFILE = {
39103
39119
  type: 'HybridPathRoutingPolicy',
39104
39120
  loadBalancingStrategy: { type: 'HRWLoadBalancingStrategy' },
39105
39121
  };
39106
- const PROFILE_MAP$1 = {
39107
- [PROFILE_NAME_DEVELOPMENT]: DEVELOPMENT_PROFILE,
39108
- [PROFILE_NAME_PRODUCTION]: PRODUCTION_PROFILE,
39109
- [PROFILE_NAME_BASIC]: BASIC_PROFILE,
39110
- [PROFILE_NAME_CAPABILITY_AWARE]: CAPABILITY_AWARE_PROFILE,
39111
- [PROFILE_NAME_HYBRID_ONLY]: HYBRID_ONLY_PROFILE,
39112
- };
39122
+ registerProfile(ROUTING_POLICY_FACTORY_BASE, PROFILE_NAME_DEVELOPMENT, DEVELOPMENT_PROFILE, { source: 'routing-profile-factory' });
39123
+ registerProfile(ROUTING_POLICY_FACTORY_BASE, PROFILE_NAME_PRODUCTION, PRODUCTION_PROFILE, { source: 'routing-profile-factory' });
39124
+ registerProfile(ROUTING_POLICY_FACTORY_BASE, PROFILE_NAME_BASIC, BASIC_PROFILE, { source: 'routing-profile-factory' });
39125
+ registerProfile(ROUTING_POLICY_FACTORY_BASE, PROFILE_NAME_CAPABILITY_AWARE, CAPABILITY_AWARE_PROFILE, { source: 'routing-profile-factory' });
39126
+ registerProfile(ROUTING_POLICY_FACTORY_BASE, PROFILE_NAME_HYBRID_ONLY, HYBRID_ONLY_PROFILE, { source: 'routing-profile-factory' });
39113
39127
  const FACTORY_META$3 = {
39114
39128
  base: ROUTING_POLICY_FACTORY_BASE,
39115
39129
  key: 'RoutingProfile',
@@ -39164,7 +39178,7 @@ class RoutingProfileFactory extends RoutingPolicyFactory {
39164
39178
  return undefined;
39165
39179
  }
39166
39180
  getProfileConfig(profile) {
39167
- const routingConfig = PROFILE_MAP$1[profile];
39181
+ const routingConfig = getProfile(ROUTING_POLICY_FACTORY_BASE, profile);
39168
39182
  if (!routingConfig) {
39169
39183
  throw new Error('Unknown routing profile');
39170
39184
  }
@@ -39714,10 +39728,8 @@ const OPEN_TELEMETRY_PROFILE = {
39714
39728
  serviceName: Expressions.env(ENV_VAR_TELEMETRY_SERVICE_NAME, 'naylence-service'),
39715
39729
  headers: {},
39716
39730
  };
39717
- const PROFILE_MAP = {
39718
- [PROFILE_NAME_NOOP]: NOOP_PROFILE,
39719
- [PROFILE_NAME_OPEN_TELEMETRY]: OPEN_TELEMETRY_PROFILE,
39720
- };
39731
+ registerProfile(TRACE_EMITTER_FACTORY_BASE_TYPE, PROFILE_NAME_NOOP, NOOP_PROFILE, { source: 'trace-emitter-profile-factory' });
39732
+ registerProfile(TRACE_EMITTER_FACTORY_BASE_TYPE, PROFILE_NAME_OPEN_TELEMETRY, OPEN_TELEMETRY_PROFILE, { source: 'trace-emitter-profile-factory' });
39721
39733
  const FACTORY_META = {
39722
39734
  base: TRACE_EMITTER_FACTORY_BASE_TYPE,
39723
39735
  key: 'TraceEmitterProfile',
@@ -39786,14 +39798,11 @@ function canonicalizeProfileName(value) {
39786
39798
  return PROFILE_ALIASES[normalized] ?? normalized;
39787
39799
  }
39788
39800
  function resolveProfileConfig(profileName) {
39789
- const profile = PROFILE_MAP[profileName];
39801
+ const profile = getProfile(TRACE_EMITTER_FACTORY_BASE_TYPE, profileName);
39790
39802
  if (!profile) {
39791
39803
  throw new Error(`Unknown trace emitter profile: ${profileName}`);
39792
39804
  }
39793
- return deepClone(profile);
39794
- }
39795
- function deepClone(value) {
39796
- return JSON.parse(JSON.stringify(value));
39805
+ return profile;
39797
39806
  }
39798
39807
 
39799
39808
  var traceEmitterProfileFactory = /*#__PURE__*/Object.freeze({
@@ -43827,4 +43836,4 @@ var otelSetup = /*#__PURE__*/Object.freeze({
43827
43836
  setupOtel: setupOtel
43828
43837
  });
43829
43838
 
43830
- export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_SOURCE_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY$1 as AUTH_PROFILE_ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, ENV_VAR_HMAC_SECRET$1 as AUTH_PROFILE_ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL$1 as AUTH_PROFILE_ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM$1 as AUTH_PROFILE_ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$2 as AUTH_PROFILE_ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE$1 as AUTH_PROFILE_ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1 as AUTH_PROFILE_ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER$1 as AUTH_PROFILE_ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_TRUSTED_CLIENT_SCOPE$1 as AUTH_PROFILE_ENV_VAR_TRUSTED_CLIENT_SCOPE, PROFILE_NAME_DEFAULT as AUTH_PROFILE_NAME_DEFAULT, PROFILE_NAME_NOOP$2 as AUTH_PROFILE_NAME_NOOP, PROFILE_NAME_OAUTH2 as AUTH_PROFILE_NAME_OAUTH2, PROFILE_NAME_OAUTH2_CALLBACK as AUTH_PROFILE_NAME_OAUTH2_CALLBACK, PROFILE_NAME_OAUTH2_GATED as AUTH_PROFILE_NAME_OAUTH2_GATED, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizationPolicyFactory, AuthorizationPolicySourceFactory, AuthorizationProfileFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, FACTORY_META$$ as BROADCAST_CHANNEL_CONNECTOR_FACTORY_META, BROADCAST_CHANNEL_CONNECTOR_TYPE, FACTORY_META$Z as BROADCAST_CHANNEL_LISTENER_FACTORY_META, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BasicAuthorizationPolicy, BasicAuthorizationPolicyFactory, BindingManager, BindingStoreEntryRecord, BroadcastChannelConnector, BroadcastChannelConnectorFactory, BroadcastChannelListener, BroadcastChannelListenerFactory, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CONNECTION_RETRY_POLICY_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectionRetryPolicyFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$11 as DEFAULT_WELCOME_FACTORY_META, DefaultConnectionRetryPolicy, DefaultConnectionRetryPolicyFactory, DefaultCryptoProvider, DefaultKeyManager, DefaultNodeIdentityPolicy, DefaultNodeIdentityPolicyFactory, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_AUTHORIZATION_PROFILE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$1 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SESSION_MAX_INITIAL_ATTEMPTS, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EdDSAEnvelopeSigner, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$12 as FACTORY_META, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, INPAGE_CONNECTION_GRANT_TYPE, FACTORY_META$10 as INPAGE_CONNECTOR_FACTORY_META, INPAGE_CONNECTOR_TYPE, FACTORY_META$_ as INPAGE_LISTENER_FACTORY_META, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, InPageConnectorFactory, InPageListener, InPageListenerFactory, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KNOWN_POLICY_FIELDS, KNOWN_RULE_FIELDS, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MAX_SCOPE_NESTING_DEPTH, MemoryMetricsEmitter, NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodeIdentityPolicyFactory, NodeIdentityPolicyProfileFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NoopTrustStoreProvider, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenSubjectNodeIdentityPolicy, TokenSubjectNodeIdentityPolicyFactory, TokenVerifierFactory, TransportProvisionerFactory, TrustStoreProviderFactory, TtlValidationError, UpstreamSessionManager, VALID_ACTIONS, VALID_CURVES_BY_KTY, VALID_EFFECTS, VALID_KEY_USES, VALID_ORIGIN_TYPES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, assertNotRegexPattern, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, canonicalJson, capitalizeFirstLetter, color, compareCryptoLevels, compileGlobOnlyScopeRequirement, compileGlobPattern, compilePattern, compileScopeRequirement, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createLogicalUri, createNodeDeliveryContext, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeBase64Url, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, encodeUtf8, ensureRuntimeFactoriesRegistered, evaluateScopeRequirement, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, frameDigest, getCompiledGlobPattern, getCurrentEnvelope, getFabricForNode, getFameRoot, getKeyProvider, getKeyStore, getLogger, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, immutableHeaders, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isIdentityExposingTokenProvider, isInPageConnectionGrant, isNodeLike, isPlainObject$4 as isPlainObject, isPoolAddress, isPoolLogical, isRegexPattern, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchPattern, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeScopeRequirement, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, safeColor, safeImport, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };
43839
+ export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_SOURCE_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY$1 as AUTH_PROFILE_ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, ENV_VAR_HMAC_SECRET$1 as AUTH_PROFILE_ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL$1 as AUTH_PROFILE_ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM$1 as AUTH_PROFILE_ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$2 as AUTH_PROFILE_ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE$1 as AUTH_PROFILE_ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1 as AUTH_PROFILE_ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER$1 as AUTH_PROFILE_ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_TRUSTED_CLIENT_SCOPE$1 as AUTH_PROFILE_ENV_VAR_TRUSTED_CLIENT_SCOPE, PROFILE_NAME_DEFAULT as AUTH_PROFILE_NAME_DEFAULT, PROFILE_NAME_NOOP$2 as AUTH_PROFILE_NAME_NOOP, PROFILE_NAME_OAUTH2 as AUTH_PROFILE_NAME_OAUTH2, PROFILE_NAME_OAUTH2_CALLBACK as AUTH_PROFILE_NAME_OAUTH2_CALLBACK, PROFILE_NAME_OAUTH2_GATED as AUTH_PROFILE_NAME_OAUTH2_GATED, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizationPolicyFactory, AuthorizationPolicySourceFactory, AuthorizationProfileFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, FACTORY_META$$ as BROADCAST_CHANNEL_CONNECTOR_FACTORY_META, BROADCAST_CHANNEL_CONNECTOR_TYPE, FACTORY_META$Z as BROADCAST_CHANNEL_LISTENER_FACTORY_META, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BasicAuthorizationPolicy, BasicAuthorizationPolicyFactory, BindingManager, BindingStoreEntryRecord, BroadcastChannelConnector, BroadcastChannelConnectorFactory, BroadcastChannelListener, BroadcastChannelListenerFactory, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CONNECTION_RETRY_POLICY_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectionRetryPolicyFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$11 as DEFAULT_WELCOME_FACTORY_META, DefaultConnectionRetryPolicy, DefaultConnectionRetryPolicyFactory, DefaultCryptoProvider, DefaultKeyManager, DefaultNodeIdentityPolicy, DefaultNodeIdentityPolicyFactory, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_AUTHORIZATION_PROFILE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$1 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SESSION_MAX_INITIAL_ATTEMPTS, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EdDSAEnvelopeSigner, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$12 as FACTORY_META, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, INPAGE_CONNECTION_GRANT_TYPE, FACTORY_META$10 as INPAGE_CONNECTOR_FACTORY_META, INPAGE_CONNECTOR_TYPE, FACTORY_META$_ as INPAGE_LISTENER_FACTORY_META, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, InPageConnectorFactory, InPageListener, InPageListenerFactory, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KNOWN_POLICY_FIELDS, KNOWN_RULE_FIELDS, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MAX_SCOPE_NESTING_DEPTH, MemoryMetricsEmitter, NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodeIdentityPolicyFactory, NodeIdentityPolicyProfileFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NoopTrustStoreProvider, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenSubjectNodeIdentityPolicy, TokenSubjectNodeIdentityPolicyFactory, TokenVerifierFactory, TransportProvisionerFactory, TrustStoreProviderFactory, TtlValidationError, UpstreamSessionManager, VALID_ACTIONS, VALID_CURVES_BY_KTY, VALID_EFFECTS, VALID_KEY_USES, VALID_ORIGIN_TYPES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, assertNotRegexPattern, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, canonicalJson, capitalizeFirstLetter, clearProfiles, color, compareCryptoLevels, compileGlobOnlyScopeRequirement, compileGlobPattern, compilePattern, compileScopeRequirement, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createLogicalUri, createNodeDeliveryContext, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeBase64Url, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, encodeUtf8, ensureRuntimeFactoriesRegistered, evaluateScopeRequirement, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, frameDigest, getCompiledGlobPattern, getCurrentEnvelope, getFabricForNode, getFameRoot, getKeyProvider, getKeyStore, getLogger, getProfile, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, immutableHeaders, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isIdentityExposingTokenProvider, isInPageConnectionGrant, isNodeLike, isPlainObject$4 as isPlainObject, isPoolAddress, isPoolLogical, isRegexPattern, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, listProfiles, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchPattern, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeScopeRequirement, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerProfile, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, safeColor, safeImport, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };
@@ -4,6 +4,7 @@ exports.FACTORY_META = exports.DeliveryProfileFactory = exports.PROFILE_NAME_AT_
4
4
  const factory_1 = require("@naylence/factory");
5
5
  const delivery_policy_factory_js_1 = require("./delivery-policy-factory.js");
6
6
  const logging_js_1 = require("../util/logging.js");
7
+ const profile_registry_js_1 = require("../profile/profile-registry.js");
7
8
  const logger = (0, logging_js_1.getLogger)('naylence.fame.delivery.delivery_profile_factory');
8
9
  exports.PROFILE_NAME_AT_LEAST_ONCE = 'at-least-once';
9
10
  exports.PROFILE_NAME_AT_MOST_ONCE = 'at-most-once';
@@ -32,10 +33,8 @@ const AT_LEAST_ONCE_PROFILE = {
32
33
  const AT_MOST_ONCE_PROFILE = {
33
34
  type: 'AtMostOnceDeliveryPolicy',
34
35
  };
35
- const PROFILE_MAP = {
36
- [exports.PROFILE_NAME_AT_LEAST_ONCE]: AT_LEAST_ONCE_PROFILE,
37
- [exports.PROFILE_NAME_AT_MOST_ONCE]: AT_MOST_ONCE_PROFILE,
38
- };
36
+ (0, profile_registry_js_1.registerProfile)(delivery_policy_factory_js_1.DELIVERY_POLICY_FACTORY_BASE_TYPE, exports.PROFILE_NAME_AT_LEAST_ONCE, AT_LEAST_ONCE_PROFILE, { source: 'delivery-profile-factory' });
37
+ (0, profile_registry_js_1.registerProfile)(delivery_policy_factory_js_1.DELIVERY_POLICY_FACTORY_BASE_TYPE, exports.PROFILE_NAME_AT_MOST_ONCE, AT_MOST_ONCE_PROFILE, { source: 'delivery-profile-factory' });
39
38
  class DeliveryProfileFactory extends delivery_policy_factory_js_1.DeliveryPolicyFactory {
40
39
  constructor() {
41
40
  super(...arguments);
@@ -85,14 +84,11 @@ function coerceProfileString(value) {
85
84
  return trimmed.length > 0 ? trimmed : null;
86
85
  }
87
86
  function resolveProfileConfig(profileName) {
88
- const profile = PROFILE_MAP[profileName];
87
+ const profile = (0, profile_registry_js_1.getProfile)(delivery_policy_factory_js_1.DELIVERY_POLICY_FACTORY_BASE_TYPE, profileName);
89
88
  if (!profile) {
90
89
  throw new Error(`Unknown delivery profile: ${profileName}`);
91
90
  }
92
- return deepClone(profile);
93
- }
94
- function deepClone(value) {
95
- return JSON.parse(JSON.stringify(value));
91
+ return profile;
96
92
  }
97
93
  exports.FACTORY_META = {
98
94
  base: delivery_policy_factory_js_1.DELIVERY_POLICY_FACTORY_BASE_TYPE,
@@ -11,6 +11,7 @@ tslib_1.__exportStar(require("./node/index.js"), exports);
11
11
  tslib_1.__exportStar(require("./delivery/index.js"), exports);
12
12
  tslib_1.__exportStar(require("./security/index.js"), exports);
13
13
  tslib_1.__exportStar(require("./storage/index.js"), exports);
14
+ tslib_1.__exportStar(require("./profile/index.js"), exports);
14
15
  tslib_1.__exportStar(require("./util/index.js"), exports);
15
16
  tslib_1.__exportStar(require("./constants/index.js"), exports);
16
17
  tslib_1.__exportStar(require("./stickiness/index.js"), exports);
@@ -4,6 +4,7 @@ exports.AdmissionProfileFactory = exports.FACTORY_META = void 0;
4
4
  const factory_1 = require("@naylence/factory");
5
5
  const grant_js_1 = require("../../grants/grant.js");
6
6
  const logging_js_1 = require("../../util/logging.js");
7
+ const profile_registry_js_1 = require("../../profile/profile-registry.js");
7
8
  const admission_client_factory_js_1 = require("./admission-client-factory.js");
8
9
  const logger = (0, logging_js_1.getLogger)('naylence.fame.node.admission.admission_profile_factory');
9
10
  const ENV_VAR_IS_ROOT = 'FAME_ROOT';
@@ -214,20 +215,18 @@ const NOOP_PROFILE = {
214
215
  auto_accept_logicals: true,
215
216
  autoAcceptLogicals: true,
216
217
  };
217
- const PROFILE_MAP = {
218
- [PROFILE_NAME_WELCOME]: WELCOME_SERVICE_PROFILE,
219
- [PROFILE_NAME_WELCOME_PKCE]: WELCOME_SERVICE_PKCE_PROFILE,
220
- [PROFILE_NAME_WELCOME_PKCE_ALIAS]: WELCOME_SERVICE_PKCE_PROFILE,
221
- [PROFILE_NAME_DIRECT]: DIRECT_PROFILE,
222
- [PROFILE_NAME_DIRECT_PKCE]: DIRECT_PKCE_PROFILE,
223
- [PROFILE_NAME_DIRECT_PKCE_ALIAS]: DIRECT_PKCE_PROFILE,
224
- [PROFILE_NAME_DIRECT_HTTP]: DIRECT_HTTP_PROFILE,
225
- [PROFILE_NAME_DIRECT_INPAGE]: DIRECT_INPAGE_PROFILE,
226
- [PROFILE_NAME_DIRECT_INPAGE_ALIAS]: DIRECT_INPAGE_PROFILE,
227
- [PROFILE_NAME_OPEN]: OPEN_PROFILE,
228
- [PROFILE_NAME_NOOP]: NOOP_PROFILE,
229
- [PROFILE_NAME_NONE]: NOOP_PROFILE,
230
- };
218
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_WELCOME, WELCOME_SERVICE_PROFILE, { source: 'admission-profile-factory' });
219
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_WELCOME_PKCE, WELCOME_SERVICE_PKCE_PROFILE, { source: 'admission-profile-factory' });
220
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_WELCOME_PKCE_ALIAS, WELCOME_SERVICE_PKCE_PROFILE, { source: 'admission-profile-factory' });
221
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT, DIRECT_PROFILE, { source: 'admission-profile-factory' });
222
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_PKCE, DIRECT_PKCE_PROFILE, { source: 'admission-profile-factory' });
223
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_PKCE_ALIAS, DIRECT_PKCE_PROFILE, { source: 'admission-profile-factory' });
224
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_HTTP, DIRECT_HTTP_PROFILE, { source: 'admission-profile-factory' });
225
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_INPAGE, DIRECT_INPAGE_PROFILE, { source: 'admission-profile-factory' });
226
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_DIRECT_INPAGE_ALIAS, DIRECT_INPAGE_PROFILE, { source: 'admission-profile-factory' });
227
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_OPEN, OPEN_PROFILE, { source: 'admission-profile-factory' });
228
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_NOOP, NOOP_PROFILE, { source: 'admission-profile-factory' });
229
+ (0, profile_registry_js_1.registerProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, PROFILE_NAME_NONE, NOOP_PROFILE, { source: 'admission-profile-factory' });
231
230
  exports.FACTORY_META = {
232
231
  base: admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE,
233
232
  key: 'AdmissionProfile',
@@ -265,13 +264,10 @@ function normalizeConfig(config) {
265
264
  return { profile: normalizedProfile };
266
265
  }
267
266
  function resolveProfileConfig(profileName) {
268
- const profile = PROFILE_MAP[profileName];
267
+ const profile = (0, profile_registry_js_1.getProfile)(admission_client_factory_js_1.ADMISSION_CLIENT_FACTORY_BASE_TYPE, profileName);
269
268
  if (!profile) {
270
269
  throw new Error(`Unknown admission profile: ${profileName}`);
271
270
  }
272
- return deepClone(profile);
273
- }
274
- function deepClone(value) {
275
- return JSON.parse(JSON.stringify(value));
271
+ return profile;
276
272
  }
277
273
  exports.default = AdmissionProfileFactory;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NodeIdentityPolicyProfileFactory = exports.FACTORY_META = void 0;
4
4
  const node_identity_policy_factory_js_1 = require("./node-identity-policy-factory.js");
5
5
  const logging_js_1 = require("../util/logging.js");
6
+ const profile_registry_js_1 = require("../profile/profile-registry.js");
6
7
  const logger = (0, logging_js_1.getLogger)('naylence.fame.node.node_identity_policy_profile_factory');
7
8
  const PROFILE_NAME_DEFAULT = 'default';
8
9
  const PROFILE_NAME_TOKEN_SUBJECT = 'token-subject';
@@ -13,11 +14,9 @@ const DEFAULT_PROFILE = {
13
14
  const TOKEN_SUBJECT_PROFILE = {
14
15
  type: 'TokenSubjectNodeIdentityPolicy',
15
16
  };
16
- const PROFILE_MAP = {
17
- [PROFILE_NAME_DEFAULT]: DEFAULT_PROFILE,
18
- [PROFILE_NAME_TOKEN_SUBJECT]: TOKEN_SUBJECT_PROFILE,
19
- [PROFILE_NAME_TOKEN_SUBJECT_ALIAS]: TOKEN_SUBJECT_PROFILE,
20
- };
17
+ (0, profile_registry_js_1.registerProfile)(node_identity_policy_factory_js_1.NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_DEFAULT, DEFAULT_PROFILE, { source: 'node-identity-policy-profile-factory' });
18
+ (0, profile_registry_js_1.registerProfile)(node_identity_policy_factory_js_1.NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_TOKEN_SUBJECT, TOKEN_SUBJECT_PROFILE, { source: 'node-identity-policy-profile-factory' });
19
+ (0, profile_registry_js_1.registerProfile)(node_identity_policy_factory_js_1.NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, PROFILE_NAME_TOKEN_SUBJECT_ALIAS, TOKEN_SUBJECT_PROFILE, { source: 'node-identity-policy-profile-factory' });
21
20
  exports.FACTORY_META = {
22
21
  base: node_identity_policy_factory_js_1.NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE,
23
22
  key: 'NodeIdentityPolicyProfile',
@@ -55,13 +54,10 @@ function normalizeConfig(config) {
55
54
  return { profile: normalizedProfile };
56
55
  }
57
56
  function resolveProfileConfig(profileName) {
58
- const profile = PROFILE_MAP[profileName];
57
+ const profile = (0, profile_registry_js_1.getProfile)(node_identity_policy_factory_js_1.NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, profileName);
59
58
  if (!profile) {
60
59
  throw new Error(`Unknown node identity policy profile: ${profileName}`);
61
60
  }
62
- return deepClone(profile);
63
- }
64
- function deepClone(value) {
65
- return JSON.parse(JSON.stringify(value));
61
+ return profile;
66
62
  }
67
63
  exports.default = NodeIdentityPolicyProfileFactory;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearProfiles = exports.listProfiles = exports.getProfile = exports.registerProfile = void 0;
4
+ var profile_registry_js_1 = require("./profile-registry.js");
5
+ Object.defineProperty(exports, "registerProfile", { enumerable: true, get: function () { return profile_registry_js_1.registerProfile; } });
6
+ Object.defineProperty(exports, "getProfile", { enumerable: true, get: function () { return profile_registry_js_1.getProfile; } });
7
+ Object.defineProperty(exports, "listProfiles", { enumerable: true, get: function () { return profile_registry_js_1.listProfiles; } });
8
+ Object.defineProperty(exports, "clearProfiles", { enumerable: true, get: function () { return profile_registry_js_1.clearProfiles; } });
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerProfile = registerProfile;
4
+ exports.getProfile = getProfile;
5
+ exports.listProfiles = listProfiles;
6
+ exports.clearProfiles = clearProfiles;
7
+ const registry = new Map();
8
+ function normalizeKey(value, label) {
9
+ if (typeof value !== 'string') {
10
+ throw new Error(`${label} must be a non-empty string`);
11
+ }
12
+ const trimmed = value.trim();
13
+ if (!trimmed) {
14
+ throw new Error(`${label} must be a non-empty string`);
15
+ }
16
+ return trimmed;
17
+ }
18
+ function cloneConfig(value) {
19
+ return JSON.parse(JSON.stringify(value));
20
+ }
21
+ function registerProfile(baseType, name, config, options) {
22
+ const normalizedBase = normalizeKey(baseType, 'baseType');
23
+ const normalizedName = normalizeKey(name, 'profile name');
24
+ if (!config || typeof config !== 'object' || Array.isArray(config)) {
25
+ throw new Error(`Profile '${normalizedName}' config must be an object`);
26
+ }
27
+ const profiles = registry.get(normalizedBase) ?? new Map();
28
+ if (profiles.has(normalizedName) && options?.allowOverride !== true) {
29
+ const sourceLabel = options?.source ? ` (${options.source})` : '';
30
+ throw new Error(`Profile '${normalizedName}' already registered for ${normalizedBase}${sourceLabel}`);
31
+ }
32
+ profiles.set(normalizedName, config);
33
+ registry.set(normalizedBase, profiles);
34
+ }
35
+ function getProfile(baseType, name) {
36
+ const normalizedBase = normalizeKey(baseType, 'baseType');
37
+ const normalizedName = normalizeKey(name, 'profile name');
38
+ const profiles = registry.get(normalizedBase);
39
+ if (!profiles) {
40
+ return null;
41
+ }
42
+ const profile = profiles.get(normalizedName);
43
+ return profile ? cloneConfig(profile) : null;
44
+ }
45
+ function listProfiles(baseType) {
46
+ const normalizedBase = normalizeKey(baseType, 'baseType');
47
+ const profiles = registry.get(normalizedBase);
48
+ return profiles ? Array.from(profiles.keys()) : [];
49
+ }
50
+ function clearProfiles(baseType) {
51
+ if (!baseType) {
52
+ registry.clear();
53
+ return;
54
+ }
55
+ const normalizedBase = normalizeKey(baseType, 'baseType');
56
+ registry.delete(normalizedBase);
57
+ }