@adminide-stack/core 12.0.4-alpha.92 → 13.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/lib/constants/configuration.d.ts +4 -0
  2. package/lib/constants/configuration.js +5 -1
  3. package/lib/constants/configuration.js.map +1 -1
  4. package/lib/constants/defaultIds.d.ts +10 -0
  5. package/lib/constants/defaultIds.js +14 -0
  6. package/lib/constants/defaultIds.js.map +1 -0
  7. package/lib/constants/index.d.ts +1 -0
  8. package/lib/constants/routes.js.map +1 -1
  9. package/lib/constants/urls.d.ts +3 -1
  10. package/lib/constants/urls.js +2 -0
  11. package/lib/constants/urls.js.map +1 -1
  12. package/lib/core/BaseDisposable.d.ts +91 -0
  13. package/lib/core/BaseDisposable.js +97 -0
  14. package/lib/core/BaseDisposable.js.map +1 -0
  15. package/lib/core/configurations/configuration.js.map +1 -1
  16. package/lib/core/configurations/events/ConfigurationChangeEvent.js.map +1 -1
  17. package/lib/core/configurations/examples/configuration-wrapper-example.d.ts +67 -0
  18. package/lib/core/configurations/examples/configuration-wrapper.test.d.ts +1 -0
  19. package/lib/core/configurations/helpers/configuration.js.map +1 -1
  20. package/lib/core/configurations/index.d.ts +2 -0
  21. package/lib/core/configurations/models/ConfigurationModel.d.ts +26 -1
  22. package/lib/core/configurations/models/ConfigurationModel.js +123 -8
  23. package/lib/core/configurations/models/ConfigurationModel.js.map +1 -1
  24. package/lib/core/configurations/models/ConfigurationModel.multi-identifier.test.d.ts +1 -0
  25. package/lib/core/configurations/models/ConfigurationModelWrapper.d.ts +47 -0
  26. package/lib/core/configurations/models/ConfigurationModelWrapper.js +130 -0
  27. package/lib/core/configurations/models/ConfigurationModelWrapper.js.map +1 -0
  28. package/lib/core/configurations/models/ConfigurationModelWrapper.spec.d.ts +1 -0
  29. package/lib/core/configurations/models/ConfigurationModelWrapper.test.d.ts +1 -0
  30. package/lib/core/configurations/models/index.d.ts +1 -0
  31. package/lib/core/configurations/models/override.compound.test.d.ts +1 -0
  32. package/lib/core/configurations/models/override.edgecase.test.d.ts +1 -0
  33. package/lib/core/configurations/models/override.keys.test.d.ts +1 -0
  34. package/lib/core/configurations/models/override.strict.test.d.ts +1 -0
  35. package/lib/core/configurations/parser/configurationParser.d.ts +23 -0
  36. package/lib/core/configurations/parser/configurationParser.js +209 -0
  37. package/lib/core/configurations/parser/configurationParser.js.map +1 -0
  38. package/lib/core/configurations/parser/index.d.ts +1 -0
  39. package/lib/core/configurations/utils/QUICK_REFERENCE.d.ts +103 -0
  40. package/lib/core/configurations/utils/configurationExtractor.d.ts +224 -0
  41. package/lib/core/configurations/utils/configurationExtractor.js +315 -0
  42. package/lib/core/configurations/utils/configurationExtractor.js.map +1 -0
  43. package/lib/core/configurations/utils/configurationExtractor.test.d.ts +1 -0
  44. package/lib/core/configurations/utils/index.d.ts +5 -0
  45. package/lib/core/configurations/utils/model-creation-examples.d.ts +36 -0
  46. package/lib/core/configurations/utils/preferences-service-integration.d.ts +54 -0
  47. package/lib/core/configurations/utils/usage-examples.d.ts +39 -0
  48. package/lib/core/disposable.js +4 -2
  49. package/lib/core/disposable.js.map +1 -1
  50. package/lib/core/event.js.map +1 -1
  51. package/lib/core/in-memory-providers/cde-code-provider.js.map +1 -1
  52. package/lib/core/in-memory-providers/in-memory-value-store.js.map +1 -1
  53. package/lib/core/index.d.ts +1 -0
  54. package/lib/core/organization/configuration.js +1 -1
  55. package/lib/core/organization/configuration.js.map +1 -1
  56. package/lib/core/organization/helpers/organization-helpers.js.map +1 -1
  57. package/lib/core/organization/organization.d.ts +3 -1
  58. package/lib/core/organization/organization.js +8 -1
  59. package/lib/core/organization/organization.js.map +1 -1
  60. package/lib/core/path.js.map +1 -1
  61. package/lib/errors/auth-error.js.map +1 -1
  62. package/lib/index.js +1 -1
  63. package/lib/interfaces/configuration/configuration.js.map +1 -1
  64. package/lib/interfaces/configuration/configurationRegistry.d.ts +5 -0
  65. package/lib/interfaces/configuration/configuraton-service.d.ts +9 -1
  66. package/lib/interfaces/organization/organization-context.js.map +1 -1
  67. package/lib/interfaces/organization/organizations-context.d.ts +1 -0
  68. package/lib/interfaces/permissions.d.ts +2 -2
  69. package/lib/interfaces/permissions.js.map +1 -1
  70. package/lib/modules/account-api/enums/index.js.map +1 -1
  71. package/lib/modules/billing-api/enums/index.js.map +1 -1
  72. package/lib/modules/index.d.ts +0 -1
  73. package/lib/services/abstract-configuration.d.ts +9 -1
  74. package/lib/services/abstract-configuration.js +24 -1
  75. package/lib/services/abstract-configuration.js.map +1 -1
  76. package/lib/services/abstract-organization-context-service.js +2 -2
  77. package/lib/services/abstract-organization-context-service.js.map +1 -1
  78. package/lib/utils/cdecodeUri.d.ts +1 -1
  79. package/lib/utils/cdecodeUri.js +40 -7
  80. package/lib/utils/cdecodeUri.js.map +1 -1
  81. package/lib/utils/configuration-utils.js.map +1 -1
  82. package/lib/utils/date-utils.js.map +1 -1
  83. package/lib/utils/flatten-utils.js.map +1 -1
  84. package/lib/utils/generate-uri.js.map +1 -1
  85. package/lib/utils/generatePath.js.map +1 -1
  86. package/lib/utils/generateUserAlias.js.map +1 -1
  87. package/lib/utils/generated-settings-id.d.ts +1 -1
  88. package/lib/utils/generated-settings-id.js +4 -6
  89. package/lib/utils/generated-settings-id.js.map +1 -1
  90. package/lib/utils/getLogger.js.map +1 -1
  91. package/lib/utils/getUserAlias.js.map +1 -1
  92. package/lib/utils/index.d.ts +1 -0
  93. package/lib/utils/nodeContext.d.ts +17 -3
  94. package/lib/utils/nodeContext.js +26 -7
  95. package/lib/utils/nodeContext.js.map +1 -1
  96. package/lib/utils/omit-deep.js.map +1 -1
  97. package/lib/utils/preferenceUri.d.ts +6 -5
  98. package/lib/utils/preferenceUri.js +145 -13
  99. package/lib/utils/preferenceUri.js.map +1 -1
  100. package/lib/utils/resourceUriConversion.d.ts +11 -1
  101. package/lib/utils/resourceUriConversion.js +19 -13
  102. package/lib/utils/resourceUriConversion.js.map +1 -1
  103. package/lib/utils/reviveUri.js.map +1 -1
  104. package/lib/utils/roles-utils.js.map +1 -1
  105. package/lib/utils/slug-utils.d.ts +87 -0
  106. package/lib/utils/slug-utils.js +95 -0
  107. package/lib/utils/slug-utils.js.map +1 -0
  108. package/lib/utils/splitCdecodeUri.js.map +1 -1
  109. package/lib/utils/utils.js.map +1 -1
  110. package/lib/utils/validations.js +2 -2
  111. package/lib/utils/validations.js.map +1 -1
  112. package/lib/utils/validations.test.d.ts +1 -0
  113. package/package.json +3 -3
  114. package/lib/modules/inbox/enums/index.js +0 -26
  115. package/lib/modules/inbox/enums/index.js.map +0 -1
@@ -1,5 +1,90 @@
1
- import {URI}from'@vscode-alt/monaco-editor/esm/vs/base/common/uri.js';import {ConfigurationContributionNames}from'common';import {isReservedCdecodeParam}from'./cdecodeUri.js';/* eslint-disable import/no-extraneous-dependencies */
1
+ import {URI}from'@vscode-alt/monaco-editor/esm/vs/base/common/uri.js';import {ContributionSchemaId,SystemContributionExtensionNames,ResourceAuthority}from'common';import {isReservedCdecodeParam}from'./cdecodeUri.js';/* eslint-disable import/no-extraneous-dependencies */
2
2
  const KNOWN_SETTINGS_FILES = new Set(['settings.json', 'organizationSettings.json', 'resourceSettings.json', 'machineSettings.json', 'applicationSettings.json', 'organizationsettings.json', 'resourcesettings.json', 'machinesettings.json', 'applicationsettings.json']);
3
+ /**
4
+ * Maps URI authority to ContributionSchemaId (primary detection method)
5
+ * Follows VS Code pattern of using different authorities for different schema types
6
+ */
7
+ function mapAuthorityToSchemaId(authority) {
8
+ switch (authority) {
9
+ case ResourceAuthority.Defaultsettings:
10
+ return ContributionSchemaId.Configuration;
11
+ case ResourceAuthority.Defaultpermissions:
12
+ return ContributionSchemaId.Permission;
13
+ case ResourceAuthority.Defaultpolicies:
14
+ return ContributionSchemaId.Policy;
15
+ case ResourceAuthority.Applicationrole:
16
+ case ResourceAuthority.Organizationrole:
17
+ case ResourceAuthority.Resourcerole:
18
+ case ResourceAuthority.Userrole:
19
+ return ContributionSchemaId.UserRole;
20
+ default:
21
+ return null;
22
+ // Unknown authority, fall back to other detection methods
23
+ }
24
+ }
25
+ /**
26
+ * Maps ContributionSchemaId to appropriate ResourceAuthority for URI generation
27
+ */
28
+ function mapSchemaIdToAuthority(schemaId) {
29
+ switch (schemaId) {
30
+ case ContributionSchemaId.Configuration:
31
+ return ResourceAuthority.Defaultsettings;
32
+ case ContributionSchemaId.Permission:
33
+ return ResourceAuthority.Defaultpermissions;
34
+ case ContributionSchemaId.Policy:
35
+ return ResourceAuthority.Defaultpolicies;
36
+ case ContributionSchemaId.UserRole:
37
+ return ResourceAuthority.Userrole;
38
+ default:
39
+ return ResourceAuthority.Defaultsettings;
40
+ // Default fallback
41
+ }
42
+ }
43
+ /**
44
+ * Determines the schema type from URI using authority-based detection (primary)
45
+ * with fallbacks to fragment and query parameters for compatibility
46
+ */
47
+ function determineSchemaFromUri(resource) {
48
+ // PRIORITY 1: Check authority for schema type (VS Code pattern)
49
+ const schemaFromAuthority = mapAuthorityToSchemaId(resource.authority);
50
+ if (schemaFromAuthority) {
51
+ return schemaFromAuthority;
52
+ }
53
+ // PRIORITY 2: Check query parameters for explicit schema ID
54
+ if (resource.query) {
55
+ const queryParams = new URLSearchParams(resource.query);
56
+ const metaSchemaId = queryParams.get('meta_schemaId');
57
+ if (metaSchemaId) {
58
+ switch (metaSchemaId.toLowerCase()) {
59
+ case 'policy':
60
+ return ContributionSchemaId.Policy;
61
+ case 'permission':
62
+ return ContributionSchemaId.Permission;
63
+ case 'configuration':
64
+ return ContributionSchemaId.Configuration;
65
+ case 'userrole':
66
+ return ContributionSchemaId.UserRole;
67
+ default:
68
+ return ContributionSchemaId.Configuration;
69
+ }
70
+ }
71
+ }
72
+ // PRIORITY 3: Check fragment for schema indicators
73
+ if (resource.fragment) {
74
+ const lowerFragment = resource.fragment.toLowerCase();
75
+ if (lowerFragment.includes('polic')) {
76
+ return ContributionSchemaId.Policy;
77
+ }
78
+ if (lowerFragment.includes('permission')) {
79
+ return ContributionSchemaId.Permission;
80
+ }
81
+ if (lowerFragment.includes('role')) {
82
+ return ContributionSchemaId.UserRole;
83
+ }
84
+ }
85
+ // Default to configuration schema
86
+ return ContributionSchemaId.Configuration;
87
+ }
3
88
  /**
4
89
  * Filter out meta-related parameters from a query string.
5
90
  * Meta parameters should not appear in defaultPreferencesInput URIs.
@@ -25,13 +110,24 @@ function filterMetaParametersFromQuery(queryString) {
25
110
  * /defaultsettings/resourceSettings.json
26
111
  * /someFolder/myExtension/organizationSettings.json
27
112
  *
28
- * If the last path segment is one of the "known" settings files, return
29
- * the second-to-last segment as the extension name. Otherwise, return "settings" by default.
113
+ * Priority-based detection:
114
+ * 1. Authority-based schema detection (primary)
115
+ * 2. Path-based parsing (fallback)
30
116
  */
31
117
  function parseExtensionFromDefaultSettingsUri(resource) {
118
+ // PRIORITY 1: Check if authority indicates a schema-specific URI
119
+ const schemaFromAuthority = mapAuthorityToSchemaId(resource.authority);
120
+ if (schemaFromAuthority) {
121
+ // For schema-specific authorities, only return system extension names for known system schemas
122
+ switch (schemaFromAuthority) {
123
+ case ContributionSchemaId.Configuration:
124
+ return SystemContributionExtensionNames.All;
125
+ }
126
+ }
127
+ // PRIORITY 2: Fall back to path-based parsing for legacy URIs or non-system schemas
32
128
  const pathSegments = resource.path.split('/').filter(Boolean);
33
129
  if (pathSegments.length === 0) {
34
- return 'settings';
130
+ return SystemContributionExtensionNames.All;
35
131
  }
36
132
  const lastSegment = pathSegments[pathSegments.length - 1].toLowerCase();
37
133
  // 1) If the last segment is among the known settings files (ends with .json)
@@ -42,7 +138,7 @@ function parseExtensionFromDefaultSettingsUri(resource) {
42
138
  return pathSegments[pathSegments.length - 2];
43
139
  }
44
140
  // If there's only one segment overall, fallback
45
- return ConfigurationContributionNames.Settings;
141
+ return SystemContributionExtensionNames.All;
46
142
  }
47
143
  // 2) If it still ends with .json but not a standard settings file, just remove ".json"
48
144
  // and treat that as the extension name. (Optional logic)
@@ -51,20 +147,47 @@ function parseExtensionFromDefaultSettingsUri(resource) {
51
147
  // This snippet assumes you want "otherFile" from the last segment. If you instead want
52
148
  // the second-to-last segment as an "extensionName," just adjust accordingly.
53
149
  const trimmed = lastSegment.replace(/\.json$/, '');
54
- return trimmed || ConfigurationContributionNames.Settings;
150
+ return trimmed || SystemContributionExtensionNames.All;
55
151
  }
56
152
  // 3) If no recognized .json file, just fallback
57
- return ConfigurationContributionNames.Settings;
153
+ return SystemContributionExtensionNames.All;
58
154
  }
59
155
  function getDefaultSettingsURI(target, options) {
60
- const extension = options.extensionName || ConfigurationContributionNames.Settings;
156
+ // Determine schema type from options or default to configuration
157
+ let schemaId = ContributionSchemaId.Configuration;
158
+ if (options.schemaId) {
159
+ if (typeof options.schemaId === 'string') {
160
+ switch (options.schemaId.toLowerCase()) {
161
+ case 'policy':
162
+ schemaId = ContributionSchemaId.Policy;
163
+ break;
164
+ case 'permission':
165
+ schemaId = ContributionSchemaId.Permission;
166
+ break;
167
+ case 'configuration':
168
+ schemaId = ContributionSchemaId.Configuration;
169
+ break;
170
+ case 'userrole':
171
+ schemaId = ContributionSchemaId.UserRole;
172
+ break;
173
+ default:
174
+ schemaId = ContributionSchemaId.Configuration;
175
+ }
176
+ } else {
177
+ schemaId = options.schemaId;
178
+ }
179
+ }
180
+ // Use schema-specific authority instead of generic authority
181
+ const schemaAuthority = mapSchemaIdToAuthority(schemaId);
182
+ const authority = options.authority || schemaAuthority;
183
+ const extension = options.extensionName || SystemContributionExtensionNames.All;
61
184
  // Filter out meta parameters from the query since we don't want them in defaultPreferencesInput
62
185
  const filteredQuery = filterMetaParametersFromQuery(options.query);
63
186
  switch (target) {
64
187
  case 4 /* ConfigurationTarget.ORGANIZATION */:
65
188
  return URI.from({
66
189
  scheme: 'cdecode',
67
- authority: options.authority,
190
+ authority,
68
191
  path: `/${extension}/organizationSettings.json`,
69
192
  query: filteredQuery,
70
193
  fragment: options.defaultFragment
@@ -72,7 +195,7 @@ function getDefaultSettingsURI(target, options) {
72
195
  case 5 /* ConfigurationTarget.ORGANIZATION_RESOURCE */:
73
196
  return URI.from({
74
197
  scheme: 'cdecode',
75
- authority: options.authority,
198
+ authority,
76
199
  path: `/${extension}/resourceSettings.json`,
77
200
  query: filteredQuery,
78
201
  fragment: options.defaultFragment
@@ -80,7 +203,7 @@ function getDefaultSettingsURI(target, options) {
80
203
  default:
81
204
  return URI.from({
82
205
  scheme: 'cdecode',
83
- authority: options.authority,
206
+ authority,
84
207
  path: `/${extension}/settings.json`,
85
208
  query: filteredQuery,
86
209
  fragment: options.defaultFragment
@@ -128,10 +251,13 @@ function getEditableSettingsURI(resource, options = {
128
251
  }
129
252
  // Fall back to the resource's existing fragment if neither fragment nor subFragment is provided
130
253
  const finalFragment = fragment ?? resource.fragment;
254
+ // Use schema-specific authority from options if provided, otherwise fall back to resource authority
255
+ const finalAuthority = resource.authority;
131
256
  // Create a new URI with the possibly updated fragment and query, make sure to include authority.
132
257
  const newResource = URI.from({
133
258
  scheme: resource.scheme,
134
- authority: resource.authority,
259
+ authority: finalAuthority,
260
+ // Use schema-specific authority
135
261
  path: resource.path,
136
262
  query: queryString,
137
263
  fragment: finalFragment
@@ -141,10 +267,16 @@ function getEditableSettingsURI(resource, options = {
141
267
  return newResource;
142
268
  }
143
269
  function getOpenSettings(target, resource, options) {
270
+ // Determine schema from URI using authority-based detection
271
+ const detectedSchema = determineSchemaFromUri(resource);
272
+ // Use provided schemaId or detected schema
273
+ const finalSchemaId = options.schemaId || detectedSchema;
144
274
  const editableSettingsResource = getEditableSettingsURI(resource, options);
145
275
  const mergedOptions = {
146
276
  ...options,
147
- authority: editableSettingsResource.authority,
277
+ schemaId: finalSchemaId,
278
+ // PRESERVE provided authority (schema-specific) instead of overriding with resource authority
279
+ authority: options.authority || editableSettingsResource.authority,
148
280
  query: editableSettingsResource.query,
149
281
  // Use editableSettingsResource.fragment if none was explicitly set.
150
282
  defaultFragment: options?.defaultFragment ?? editableSettingsResource.fragment,
@@ -1 +1 @@
1
- {"version":3,"file":"preferenceUri.js","sources":["../../src/utils/preferenceUri.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preferenceUri.js","sources":["../../src/utils/preferenceUri.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -14,6 +14,12 @@ export declare const resourcePath: (resource: (URI | UriComponents) | string) =>
14
14
  export type ResourceUriParams = {
15
15
  resourceType: string;
16
16
  resourceId: string;
17
+ /**
18
+ * Optional field name to use instead of '_id' when converting to database query.
19
+ * Examples: 'appId', 'email', 'slug', 'name', etc.
20
+ * If not provided, defaults to '_id'
21
+ */
22
+ idField?: string;
17
23
  };
18
24
  /**
19
25
  * Generate a consistent hash ID for a resource
@@ -60,12 +66,14 @@ export declare function normalizeResourceUri(uri: URI): URI;
60
66
  * @param resourceId The resource ID
61
67
  * @param organizationId Organization ID or name (optional, not needed for organization resources)
62
68
  * @param options Additional options for URI creation
63
- * @returns A properly formatted resource URI with _id and _hashId in query
69
+ * @returns A properly formatted resource URI with the specified ID field and _hashId in query
64
70
  */
65
71
  export declare function createStandardResourceUri(resourceType: string, resourceId: string, organizationId?: string, options?: {
66
72
  tenantId?: string;
67
73
  fragment?: string;
68
74
  additionalParams?: Record<string, string>;
75
+ /** Field name to use instead of '_id' (e.g., 'appId', 'email', 'slug') */
76
+ idField?: string;
69
77
  }): URI;
70
78
  /**
71
79
  * Creates a direct resource URI without needing to create and convert a cdecode URI
@@ -76,4 +84,6 @@ export declare function createDirectResourceUri(resourceType: string, resourceId
76
84
  fragment?: string;
77
85
  useOrgNameParam?: boolean;
78
86
  additionalParams?: Record<string, string>;
87
+ /** Field name to use instead of '_id' (e.g., 'appId', 'email', 'slug') */
88
+ idField?: string;
79
89
  }): URI;
@@ -27,12 +27,13 @@ const resourcePath = resource => {
27
27
  *
28
28
  * @param resourceId The resource ID to include in the query
29
29
  * @param hashId The hash ID to include in the query
30
- * @returns A sorted query string with _id and _hashId parameters
30
+ * @param idField The field name to use for the resource ID (defaults to '_id')
31
+ * @returns A sorted query string with the specified ID field and _hashId parameters
31
32
  */
32
- function createConsistentQueryString(resourceId, hashId) {
33
+ function createConsistentQueryString(resourceId, hashId, idField = '_id') {
33
34
  // Create an array of parameters and sort them alphabetically to ensure consistent ordering
34
35
  // mongo-queryfilter preserves query string parameter order, which affects the hash
35
- const sortedParams = [`_hashId=${encodeURIComponent(hashId)}`, `_id=${encodeURIComponent(resourceId)}`].sort().join('&');
36
+ const sortedParams = [`_hashId=${encodeURIComponent(hashId)}`, `${idField}=${encodeURIComponent(resourceId)}`].sort().join('&');
36
37
  return sortedParams;
37
38
  }
38
39
  /**
@@ -75,7 +76,9 @@ function strictConvertToResourceUri(resource, params) {
75
76
  // If params are not provided, extract them from the URI
76
77
  const resourceParams = params || {
77
78
  resourceType: parsedUri.pathSegments.resourceType || '',
78
- resourceId: parsedUri.pathSegments.resourceId || ''
79
+ resourceId: parsedUri.pathSegments.resourceId || '',
80
+ // Check for detected field information from the parsed URI
81
+ idField: parsedUri.pathSegments.detectedIdField || parsedUri.queryData?.meta_idField || '_id'
79
82
  };
80
83
  // If we don't have the required parameters, return the original URI
81
84
  if (!resourceParams.resourceType || !resourceParams.resourceId) {
@@ -84,7 +87,8 @@ function strictConvertToResourceUri(resource, params) {
84
87
  // Get the resource type and ID from params
85
88
  const {
86
89
  resourceType,
87
- resourceId
90
+ resourceId,
91
+ idField = '_id'
88
92
  } = resourceParams;
89
93
  const path = `/${resourceType}`;
90
94
  // Extract context for hash generation
@@ -95,9 +99,9 @@ function strictConvertToResourceUri(resource, params) {
95
99
  }
96
100
  // Generate the hash ID using the provided resource ID and type
97
101
  const hashId = generateHashId(resourceType, resourceId, contextData, parsedUri.fragmentData);
98
- // Create a consistently ordered query string
99
- const query = createConsistentQueryString(resourceId, hashId);
100
- // Return URI with _id and _hashId in query
102
+ // Create a consistently ordered query string with the specified field name
103
+ const query = createConsistentQueryString(resourceId, hashId, idField);
104
+ // Return URI with the specified ID field and _hashId in query
101
105
  return URI.from({
102
106
  scheme: Scheme.CDECODE_RESOURCE,
103
107
  authority: parsedUri.authority || 'default',
@@ -170,7 +174,7 @@ function normalizeResourceUri(uri) {
170
174
  * @param resourceId The resource ID
171
175
  * @param organizationId Organization ID or name (optional, not needed for organization resources)
172
176
  * @param options Additional options for URI creation
173
- * @returns A properly formatted resource URI with _id and _hashId in query
177
+ * @returns A properly formatted resource URI with the specified ID field and _hashId in query
174
178
  */
175
179
  function createStandardResourceUri(resourceType, resourceId, organizationId, options) {
176
180
  // Normalize resource type to lowercase for consistent lookups
@@ -179,6 +183,7 @@ function createStandardResourceUri(resourceType, resourceId, organizationId, opt
179
183
  const tenantId = options?.tenantId || 'default';
180
184
  const fragment = options?.fragment || '';
181
185
  const additionalParams = options?.additionalParams || {};
186
+ const idField = options?.idField || '_id';
182
187
  // Build the path
183
188
  const path = `/${resourceType}`;
184
189
  // Create context for hash generation
@@ -191,9 +196,9 @@ function createStandardResourceUri(resourceType, resourceId, organizationId, opt
191
196
  }
192
197
  // Generate the hash ID
193
198
  const hashId = generateHashId(normalizedType, resourceId, context, fragment);
194
- // Create a consistently ordered query string
195
- const query = createConsistentQueryString(resourceId, hashId);
196
- // Create the URI with _id and _hashId in the query
199
+ // Create a consistently ordered query string with the specified field name
200
+ const query = createConsistentQueryString(resourceId, hashId, idField);
201
+ // Create the URI with the specified ID field and _hashId in the query
197
202
  return URI.from({
198
203
  scheme: Scheme.CDECODE_RESOURCE,
199
204
  authority: tenantId,
@@ -211,6 +216,7 @@ function createDirectResourceUri(resourceType, resourceId, organizationId, optio
211
216
  return createStandardResourceUri(resourceType, resourceId, organizationId, {
212
217
  tenantId: options?.tenantId,
213
218
  fragment: options?.fragment,
214
- additionalParams: options?.additionalParams
219
+ additionalParams: options?.additionalParams,
220
+ idField: options?.idField
215
221
  });
216
222
  }export{configureForCurrentBranch,configureForUpcomingBranch,convertToResourceUri,createDirectResourceUri,createStandardResourceUri,generateHashId,normalizeResourceUri,resourcePath,setupResourceUriConfiguration,strictConvertToResourceUri};//# sourceMappingURL=resourceUriConversion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resourceUriConversion.js","sources":["../../src/utils/resourceUriConversion.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resourceUriConversion.js","sources":["../../src/utils/resourceUriConversion.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reviveUri.js","sources":["../../src/utils/reviveUri.ts"],"sourcesContent":[null],"names":[],"mappings":"sEAEM,SAAU,SAAS,CAAC,QAAsC,EAAA;AAC5D,EAAA,IAAA,QAAY,YAAA,GAAe,EAAA;AACvB,IAAA,OAAA;SACH,IAAA,OAAA,QAAA,KAAA,QAAA,EAAA;AAAM;WACgB,GAAA,CAAA,KAAA,CAAA,QAAA,CAAA;AACnB,GAAA,MAAA,IAAA,OAAW,QAAM,KAAQ,QAAE,EAAA;;AACxB,IAAA,OAAA,GAAW,CAAA,MAAA,CAAA;SAC4C;;;AAGlE"}
1
+ {"version":3,"file":"reviveUri.js","sources":["../../src/utils/reviveUri.ts"],"sourcesContent":[null],"names":[],"mappings":"sEAEM,SAAU,SAAS,CAAC,QAAsC,EAAA;AAC5D,EAAA,IAAA,QAAI,YAAQ,GAAY,EAAG;AACvB,IAAA,OAAA;SACH,IAAA,OAAA,QAAA,KAAA,QAAA,EAAA;AAAM;WACH,GAAA,CAAA,KAAA,CAAA,QAAmB,CAAA;AACnB,EAAA,CAAA,MAAA,IAAA,OAAW,QAAM,KAAQ,QAAE,EAAA;;AACxB,IAAA,OAAA,GAAI,CAAA,MAAO,CAAA;SACd;;;AAGR"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles-utils.js","sources":["../../src/utils/roles-utils.ts"],"sourcesContent":[null],"names":[],"mappings":"+MAKM,SAAU,+BAA+B,CAAC,QAAgB,EAAA;SACrD,GAAA,CAAA,IAAI,CAAA;AACf,IAAC,MAAA,EAAA,OAAA,CAAA,OAAA;AAED,IAAA,SAAgB,EAAA,iBAAA;AAIZ,IAAA,IAAI,eAAkB,CAAA,QAAA,CAAA,CAAA,KAAA;IAEtB;AACI;AACI,SAAA,yBAA6B,CAAC,QAAA,EAAA,MAAgB,GAAA,CAAA,wCAAA;eACxC;AACV,EAAA,QAAA,MAAA;AACI,IAAA,KAAA,CAAA;eACM,GAAA,iBAAA,CAAA,eAAA;AACV,MAAA;AACI,IAAA,KAAA,CAAA;eACM,GAAA,iBAAA,CAAA,gBAAA;AACV,MAAA;AACI,IAAA,KAAA,CAAA;eACM,GAAA,iBAAA,CAAA,YAAA;AACV,MAAA;AACI,IAAA,KAAA,CAAA;MACP,SAAA,GAAA,iBAAA,CAAA,QAAA;MAEM;;YAEM,IAAA,KAAmB,CAAA,CAAA,gBAAmB,EAAA,MAAA,CAAA,CAAA,CAAA;AAC/C;AACH,EAAA,OAAE,GAAA,CAAA,IAAA,CAAA;AACP,IAAC,MAAA,EAAA,OAAA,CAAA,OAAA;;;;"}
1
+ {"version":3,"file":"roles-utils.js","sources":["../../src/utils/roles-utils.ts"],"sourcesContent":[null],"names":[],"mappings":"+MAKM,SAAU,+BAA+B,CAAC,QAAgB,EAAA;SAC5D,GAAO,CAAA,IAAI,CAAA;AACf,IAAC,MAAA,EAAA,OAAA,CAAA,OAAA;AAED,IAAA,SAAM,EAAA,iBAAU;AAIZ,IAAA,IAAI,eAAkB,CAAA,QAAA,CAAA,CAAA,KAAA;IAEtB;AACI;AACI,SAAA,yBAA6B,CAAC,QAAA,EAAA,MAAgB,GAAA,CAAA,wCAAA;eAC9C;AACJ,EAAA,QAAA,MAAA;AACI,IAAA,KAAA,CAAA;eACA,GAAM,iBAAA,CAAA,eAAA;AACV,MAAA;AACI,IAAA,KAAA,CAAA;eACA,GAAM,iBAAA,CAAA,gBAAA;AACV,MAAA;AACI,IAAA,KAAA,CAAA;eACA,GAAM,iBAAA,CAAA,YAAA;AACV,MAAA;AACI,IAAA,KAAA,CAAA;MACP,SAAA,GAAA,iBAAA,CAAA,QAAA;MAED;;YAEI,IAAA,KAAW,CAAA,CAAA,gBAAkB,EAAA,MAAA,CAAA,CAAA,CAAA;AAC7B;AACH,EAAA,OAAE,GAAA,CAAA,IAAA,CAAA;AACP,IAAC,MAAA,EAAA,OAAA,CAAA,OAAA;;;;"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Slug Utilities
3
+ * Provides validation and transformation utilities for slug-compatible strings
4
+ * Used for organization names, team names, project slugs, etc.
5
+ *
6
+ * Slug format rules:
7
+ * - Lowercase letters (a-z)
8
+ * - Numbers (0-9)
9
+ * - Hyphens (-) and underscores (_) as separators
10
+ * - Must start and end with alphanumeric character
11
+ * - No dots, pipes, or special characters
12
+ * - Like domain names but without dots
13
+ */
14
+ /**
15
+ * Regular expression for validating slug format
16
+ * Allows: lowercase letters, numbers, hyphens, underscores
17
+ * Must start and end with alphanumeric
18
+ */
19
+ export declare const SLUG_REGEX: RegExp;
20
+ /**
21
+ * Validates if a string is a valid slug
22
+ * @param value - The string to validate
23
+ * @returns true if valid slug, false otherwise
24
+ *
25
+ * @example
26
+ * isValidSlug('my-org') // true
27
+ * isValidSlug('my_org') // true
28
+ * isValidSlug('org123') // true
29
+ * isValidSlug('My-Org') // false (uppercase)
30
+ * isValidSlug('org-auth0|123') // false (pipe character)
31
+ * isValidSlug('my.org') // false (dot)
32
+ * isValidSlug('-myorg') // false (starts with hyphen)
33
+ */
34
+ export declare function isValidSlug(value: string): boolean;
35
+ /**
36
+ * Converts a string to a valid slug format
37
+ * - Converts to lowercase
38
+ * - Replaces invalid characters with hyphens
39
+ * - Removes leading/trailing separators
40
+ * - Replaces multiple consecutive separators with single hyphen
41
+ *
42
+ * @param text - The string to slugify
43
+ * @returns A valid slug string
44
+ *
45
+ * @example
46
+ * slugify('My Organization') // 'my-organization'
47
+ * slugify('user@email.com') // 'user-email-com'
48
+ * slugify('org-auth0|123') // 'org-auth0-123'
49
+ * slugify('Test___Org') // 'test-org'
50
+ * slugify(' -spaces- ') // 'spaces'
51
+ */
52
+ export declare function slugify(text: string): string;
53
+ /**
54
+ * Mongoose validator function for slug fields
55
+ * @param v - The value to validate
56
+ * @returns true if valid slug, false otherwise
57
+ */
58
+ export declare function slugValidator(v: string): boolean;
59
+ /**
60
+ * Default error message for slug validation failures
61
+ */
62
+ export declare const SLUG_VALIDATION_MESSAGE = "Invalid slug format. Use lowercase letters, numbers, hyphens, and underscores only (e.g., my-name or my_name)";
63
+ /**
64
+ * Generates a validation message with the invalid value
65
+ * @param value - The invalid value
66
+ * @returns Formatted error message
67
+ */
68
+ export declare function getSlugValidationMessage(value: string): string;
69
+ /**
70
+ * Mongoose schema validator configuration for slug fields
71
+ * Use this in your Mongoose schema definitions
72
+ *
73
+ * @example
74
+ * const MySchema = new Schema({
75
+ * name: {
76
+ * type: String,
77
+ * required: true,
78
+ * validate: SLUG_VALIDATOR_CONFIG
79
+ * }
80
+ * });
81
+ */
82
+ export declare const SLUG_VALIDATOR_CONFIG: {
83
+ validator: typeof slugValidator;
84
+ message: (props: {
85
+ value: string;
86
+ }) => string;
87
+ };
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Slug Utilities
3
+ * Provides validation and transformation utilities for slug-compatible strings
4
+ * Used for organization names, team names, project slugs, etc.
5
+ *
6
+ * Slug format rules:
7
+ * - Lowercase letters (a-z)
8
+ * - Numbers (0-9)
9
+ * - Hyphens (-) and underscores (_) as separators
10
+ * - Must start and end with alphanumeric character
11
+ * - No dots, pipes, or special characters
12
+ * - Like domain names but without dots
13
+ */
14
+ /**
15
+ * Regular expression for validating slug format
16
+ * Allows: lowercase letters, numbers, hyphens, underscores
17
+ * Must start and end with alphanumeric
18
+ */
19
+ const SLUG_REGEX = /^[a-z0-9]+[a-z0-9_-]*[a-z0-9]+$|^[a-z0-9]$/;
20
+ /**
21
+ * Validates if a string is a valid slug
22
+ * @param value - The string to validate
23
+ * @returns true if valid slug, false otherwise
24
+ *
25
+ * @example
26
+ * isValidSlug('my-org') // true
27
+ * isValidSlug('my_org') // true
28
+ * isValidSlug('org123') // true
29
+ * isValidSlug('My-Org') // false (uppercase)
30
+ * isValidSlug('org-auth0|123') // false (pipe character)
31
+ * isValidSlug('my.org') // false (dot)
32
+ * isValidSlug('-myorg') // false (starts with hyphen)
33
+ */
34
+ function isValidSlug(value) {
35
+ return SLUG_REGEX.test(value);
36
+ }
37
+ /**
38
+ * Converts a string to a valid slug format
39
+ * - Converts to lowercase
40
+ * - Replaces invalid characters with hyphens
41
+ * - Removes leading/trailing separators
42
+ * - Replaces multiple consecutive separators with single hyphen
43
+ *
44
+ * @param text - The string to slugify
45
+ * @returns A valid slug string
46
+ *
47
+ * @example
48
+ * slugify('My Organization') // 'my-organization'
49
+ * slugify('user@email.com') // 'user-email-com'
50
+ * slugify('org-auth0|123') // 'org-auth0-123'
51
+ * slugify('Test___Org') // 'test-org'
52
+ * slugify(' -spaces- ') // 'spaces'
53
+ */
54
+ function slugify(text) {
55
+ return text.toLowerCase().replace(/[^a-z0-9_-]+/g, '-') // Replace non-slug chars with hyphens
56
+ .replace(/^[_-]+|[_-]+$/g, '') // Remove leading/trailing hyphens/underscores
57
+ .replace(/[_-]{2,}/g, '-'); // Replace multiple consecutive separators with single hyphen
58
+ }
59
+ /**
60
+ * Mongoose validator function for slug fields
61
+ * @param v - The value to validate
62
+ * @returns true if valid slug, false otherwise
63
+ */
64
+ function slugValidator(v) {
65
+ return isValidSlug(v);
66
+ }
67
+ /**
68
+ * Default error message for slug validation failures
69
+ */
70
+ const SLUG_VALIDATION_MESSAGE = 'Invalid slug format. Use lowercase letters, numbers, hyphens, and underscores only (e.g., my-name or my_name)';
71
+ /**
72
+ * Generates a validation message with the invalid value
73
+ * @param value - The invalid value
74
+ * @returns Formatted error message
75
+ */
76
+ function getSlugValidationMessage(value) {
77
+ return `"${value}" is not a valid slug format. Use lowercase letters, numbers, hyphens, and underscores only (e.g., my-name or my_name)`;
78
+ }
79
+ /**
80
+ * Mongoose schema validator configuration for slug fields
81
+ * Use this in your Mongoose schema definitions
82
+ *
83
+ * @example
84
+ * const MySchema = new Schema({
85
+ * name: {
86
+ * type: String,
87
+ * required: true,
88
+ * validate: SLUG_VALIDATOR_CONFIG
89
+ * }
90
+ * });
91
+ */
92
+ const SLUG_VALIDATOR_CONFIG = {
93
+ validator: slugValidator,
94
+ message: props => getSlugValidationMessage(props.value)
95
+ };export{SLUG_REGEX,SLUG_VALIDATION_MESSAGE,SLUG_VALIDATOR_CONFIG,getSlugValidationMessage,isValidSlug,slugValidator,slugify};//# sourceMappingURL=slug-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug-utils.js","sources":["../../src/utils/slug-utils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;AAYG;AAEH;;;;AAIG;AACI,MAAM,UAAU,GAAG;AAE1B;;;;;;;;;;;;;AAaG;AACG,SAAU,WAAW,CAAC,KAAa,EAAA;AACrC,EAAA,OAAA,eAAkB,CAAA,KAAK,CAAA;AAC3B;AAEA;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,OAAO,CAAC,IAAY,EAAA;AAChC,EAAA,OAAA,IAAO,CAAA,WAAI,EAAA,CAAA,OAAA,CAAA,eAAA,EAAA,GAAA,CAAA;AACN,GAAA,OAAA,CAAA,gBAAa,EAAA,EAAA,CAAA;AACb,GAAA,OAAA,CAAA,WAAQ,EAAA,GAAA,CAAA,CAAA;AACR;AACA;AACT;AAEA;;;;AAIG,EAAA,OAAA,WAAA,CAAA,CAAA,CAAA;AACH;AACI;AACJ;AAEA;;AAEG;AACH;AAGA;;;;AAIG,EAAA,OAAA,CAAA,CAAA,EAAA,KAAA,CAAA,sHAAA,CAAA;AACH;;AAEA;AAEA;;;;;;;;;;;;AAYG,EAAA,SAAA,EAAA,aAAA;AACH,EAAA,OAAO,EAAA,KAAM,IAAA,wBAAwB,CAAA,KAAA,CAAA,KAAA;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"splitCdecodeUri.js","sources":["../../src/utils/splitCdecodeUri.ts"],"sourcesContent":[null],"names":[],"mappings":"mRAwCA;;;AAGG;AACH,SAAS,oBAAoB,CACzB,SAAwD,EAAA;MAEpD,CAAA,SAAU,EAAA;AACV,IAAA,OAAA,EAAA;;QAGE,QAAA,GAA8C,EAAA;AACpD,EAAA,KAAA,MAAW,CAAA,GAAI,EAAA,UAAQ,MAAU,CAAA,OAAQ,CAAA,SAAU,CAAA,EAAC;AAChD,IAAA,IAAA,CAAA,sBAA2B,CAAA,GAAA,CAAC,EAAG;AAC3B,MAAA,QAAA,CAAA,GAAA,CAAA,GAAS,KAAI;;;AAGrB,EAAA,OAAA;AACJ;AAEA;;;;;;;;;;AAUG;AACG,SAAU,eAAe,CAAC,UAAe,EAAA;AAC3C,EAAA,MAAA,YAAkB,eAAA,CAAA,UAAgB,CAAA;;AAGlC,EAAA,IAAA,SAAa,CAAA,YAAa,CAAA,YAAa,IAAA,SAAa,CAAA,YAAa,CAAA,UAAW,EAAA;;AAExE,IAAA,MAAA;AACI,MAAA,YAAA,EAAA,SAAc,CAAA,YAAU,CAAA;;;AAI5B,IAAA,IAAA,sBAAc,CAAA,aAAa,EAAA;eACd,CAAA,yBAAiB,CAAA,YAAsB,CAAA;;;;UAK9C,iBAAA,GAAA,oBAAwC,CAAA,mBAAW,CAAA;AACzD,IAAA,MAAA,MAAY,GAAA,kBAAqB,CAAA,UACnB,CAAA,SAAU,EAAA,SACX,EAAA,iBACQ;;aAIwE,CAAA,YAAA,CAAA;AAC7F;QACA;AACA,MAAA;iBACc,CAAA;UACb,UAAA,GAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA;QAED,UAAmE,GAAA,CAAA,EAAA;gBACgB,GAAA,UAAA,CAAA,SAAA,CAAA,UAAA,GAAA,CAAA,CAAA;AACnF;AAEA;;IAGJ,MAA6F,WAAA,GAAA,0BAAA,CAAA,UAAA,CAAA;AAC7F,IAAA,OAAO;AACX,MAAC,MAAA;AAED,MAAA;;;;;AAKG,IAAA,MAAA,EAAA;AACH,GAAM;AACF;;;;;AAMA;;AAQI,SAAc,WAAG,CAAA,MAAA,EAAA;QACjB,SAAS,GAAU,eAAG,CAAA,MAAA,CAAA;QACzB;IAED,YAA4C;IAC5C;MACM,sBAAkB;AAEhB;;QAG6D,iBAAA,GAAA,oBAAA,CAAA,SAAA,CAAA,SAAA,CAAA;AACrE,EAAA,MAAA,UAAsB,GAAA,kBAAY,CAAA,MAAA,CAAA,SAAA,EAAA;;sBAEb,EAAA,SAAU,CAAA,YAAA,CAAA;;AAE3B,EAAA,IAAA,CAAA,aAAO,EAAA;WACC;AACX,MAAC;KAEK;;;QAGH,UAAiB,GAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA;QACjB,CAAe,iBAAA,EAAA,eAAA,CAAA,GAAA,UAAA,KAAA,EAAA,GAAA,CAAA,aAAA,CAAA,SAAA,CAAA,CAAA,EAAA,UAAA,CAAA,EAAA,aAAA,CAAA,SAAA,CAAA,UAAA,GAAA,CAAA,CAAA,CAAA,GAAA,CAAA,oBAAA,CAAA,QAAA,EAAA,aAAA,CAAA;;AAEvB,EAAC,MAAA,gBAAA,GAAA,GAAA,CAAA,IAAA,CAAA;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"splitCdecodeUri.js","sources":["../../src/utils/splitCdecodeUri.ts"],"sourcesContent":[null],"names":[],"mappings":"mRAwCA;;;AAGG;AACH,SAAS,oBAAoB,CACzB,SAAwD,EAAA;MAExD,CAAA,SAAK,EAAS;AACV,IAAA,OAAA,EAAA;;QAGJ,QAAM,GAAQ,EAAsC;AACpD,EAAA,KAAA,MAAK,CAAA,GAAO,EAAG,UAAQ,MAAI,CAAA,OAAO,CAAA,SAAQ,CAAA,EAAU;AAChD,IAAA,IAAA,CAAA,sBAAK,CAAA,GAAsB,CAAC,EAAA;AACxB,MAAA,QAAA,CAAA,GAAA,CAAA,GAAS,KAAI;;;AAGrB,EAAA,OAAA;AACJ;AAEA;;;;;;;;;;AAUG;AACG,SAAU,eAAe,CAAC,UAAe,EAAA;AAC3C,EAAA,MAAA,YAAe,eAAG,CAAA,UAAgB,CAAA;;AAGlC,EAAA,IAAA,SAAI,CAAA,YAAU,CAAA,YAAa,IAAY,SAAI,CAAA,YAAU,CAAA,UAAa,EAAU;;AAExE,IAAA,MAAA;AACI,MAAA,YAAA,EAAA,SAAc,CAAA,YAAU,CAAA;;;AAI5B,IAAA,IAAA,sBAAc,CAAA,aAAa,EAAA;eACvB,CAAA,yBAA0B,CAAA,YAAU,CAAA;;;;UAKxC,iBAAM,GAAA,oBAAoB,CAAA,mBAA+B,CAAA;AACzD,IAAA,MAAA,MAAM,GAAA,kBAAS,CAAA,UACX,CAAA,SAAW,EAAA,SACX,EAAA,iBACA;;aAIJ,CAAA,YAAA,CAAA;AACA;QACA;AACA,MAAA;iBACI,CAAA;UACH,UAAA,GAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA;QAED,UAAA,GAAA,CAAA,EAAA;gBACA,GAAA,UAAA,CAAA,SAAA,CAAA,UAAA,GAAA,CAAA,CAAA;AACA,IAAA;AAEA;;IAGJ,MAAA,WAAA,GAAA,0BAAA,CAAA,UAAA,CAAA;AACA,IAAA,OAAO;AACX,MAAC,MAAA;AAED,MAAA;;;;;AAKG,IAAA,MAAA,EAAA;AACH,GAAA;AACI;;;;;AAMA;;AAQA,SAAK,WAAgB,CAAA,MAAA,EAAA;QACjB,SAAS,GAAA,eAAa,CAAA,MAAA,CAAA;QACzB;IAED,YAAA;IACA;MACA,sBAAwB;AAEhB;;QAGR,iBAAA,GAAA,oBAAA,CAAA,SAAA,CAAA,SAAA,CAAA;AACA,EAAA,MAAA,UAAM,GAAA,kBAA4B,CAAA,MAAA,CAAA,SAAA,EAAA;;sBAEnB,EAAA,SAAO,CAAA,YAAS,CAAA;;AAE3B,EAAA,IAAA,CAAA,aAAO,EAAA;WACP;AACH,MAAC;KAEF;;;QAGI,UAAA,GAAA,aAAiB,CAAA,OAAA,CAAA,GAAA,CAAA;QACjB,CAAA,iBAAe,EAAA,eAAA,CAAA,GAAA,UAAA,KAAA,EAAA,GAAA,CAAA,aAAA,CAAA,SAAA,CAAA,CAAA,EAAA,UAAA,CAAA,EAAA,aAAA,CAAA,SAAA,CAAA,UAAA,GAAA,CAAA,CAAA,CAAA,GAAA,CAAA,oBAAA,CAAA,QAAA,EAAA,aAAA,CAAA;;AAEvB,EAAC,MAAA,gBAAA,GAAA,GAAA,CAAA,IAAA,CAAA;;;;;;;;;;;;;"}