@docupace/ihub-config 1.0.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 (116) hide show
  1. package/README.md +82 -0
  2. package/dist/config/config-injector.d.ts +24 -0
  3. package/dist/config/config-injector.d.ts.map +1 -0
  4. package/dist/config/config-injector.js +28 -0
  5. package/dist/config/config-injector.js.map +1 -0
  6. package/dist/config/template-processor.d.ts +25 -0
  7. package/dist/config/template-processor.d.ts.map +1 -0
  8. package/dist/config/template-processor.js +154 -0
  9. package/dist/config/template-processor.js.map +1 -0
  10. package/dist/config-extension.d.ts +11 -0
  11. package/dist/config-extension.d.ts.map +1 -0
  12. package/dist/config-extension.js +42 -0
  13. package/dist/config-extension.js.map +1 -0
  14. package/dist/config-providers/base-config.d.ts +8 -0
  15. package/dist/config-providers/base-config.d.ts.map +1 -0
  16. package/dist/config-providers/base-config.js +2 -0
  17. package/dist/config-providers/base-config.js.map +1 -0
  18. package/dist/config-providers/index.d.ts +5 -0
  19. package/dist/config-providers/index.d.ts.map +1 -0
  20. package/dist/config-providers/index.js +8 -0
  21. package/dist/config-providers/index.js.map +1 -0
  22. package/dist/config-resolvers/index.d.ts +15 -0
  23. package/dist/config-resolvers/index.d.ts.map +1 -0
  24. package/dist/config-resolvers/index.js +24 -0
  25. package/dist/config-resolvers/index.js.map +1 -0
  26. package/dist/config-service.d.ts +63 -0
  27. package/dist/config-service.d.ts.map +1 -0
  28. package/dist/config-service.js +515 -0
  29. package/dist/config-service.js.map +1 -0
  30. package/dist/env.d.ts +2 -0
  31. package/dist/env.d.ts.map +1 -0
  32. package/dist/env.js +3 -0
  33. package/dist/env.js.map +1 -0
  34. package/dist/globals.d.ts +30 -0
  35. package/dist/globals.d.ts.map +1 -0
  36. package/dist/globals.js +95 -0
  37. package/dist/globals.js.map +1 -0
  38. package/dist/index.d.ts +11 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +6 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/instance-config.d.ts +21 -0
  43. package/dist/instance-config.d.ts.map +1 -0
  44. package/dist/instance-config.js +74 -0
  45. package/dist/instance-config.js.map +1 -0
  46. package/dist/lib/file-system.d.ts +2 -0
  47. package/dist/lib/file-system.d.ts.map +1 -0
  48. package/dist/lib/file-system.js +11 -0
  49. package/dist/lib/file-system.js.map +1 -0
  50. package/dist/lib/filters.d.ts +7 -0
  51. package/dist/lib/filters.d.ts.map +1 -0
  52. package/dist/lib/filters.js +123 -0
  53. package/dist/lib/filters.js.map +1 -0
  54. package/dist/lib/param-helpers.d.ts +11 -0
  55. package/dist/lib/param-helpers.d.ts.map +1 -0
  56. package/dist/lib/param-helpers.js +54 -0
  57. package/dist/lib/param-helpers.js.map +1 -0
  58. package/dist/lib/replace-dots-outside-expressions.d.ts +2 -0
  59. package/dist/lib/replace-dots-outside-expressions.d.ts.map +1 -0
  60. package/dist/lib/replace-dots-outside-expressions.js +10 -0
  61. package/dist/lib/replace-dots-outside-expressions.js.map +1 -0
  62. package/dist/lib/sort.d.ts +2 -0
  63. package/dist/lib/sort.d.ts.map +1 -0
  64. package/dist/lib/sort.js +25 -0
  65. package/dist/lib/sort.js.map +1 -0
  66. package/dist/mappers/config-mapper.d.ts +8 -0
  67. package/dist/mappers/config-mapper.d.ts.map +1 -0
  68. package/dist/mappers/config-mapper.js +17 -0
  69. package/dist/mappers/config-mapper.js.map +1 -0
  70. package/dist/model/graphs/config/common.graphql +8 -0
  71. package/dist/model/graphs/config/fields.graphql +338 -0
  72. package/dist/model/graphs/config/menu.graphql +40 -0
  73. package/dist/model/graphs/config/mutation.graphql +30 -0
  74. package/dist/model/graphs/config/page.graphql +227 -0
  75. package/dist/model/graphs/config/panel.graphql +30 -0
  76. package/dist/model/graphs/config/query.graphql +55 -0
  77. package/dist/model/graphs/config/selectOptions.graphql +47 -0
  78. package/dist/model/graphs/config/table.graphql +97 -0
  79. package/dist/model/graphs/config/tests.graphql +16 -0
  80. package/dist/model/graphs/config/theme.graphql +41 -0
  81. package/dist/model/graphs/config/ui-components.graphql +11 -0
  82. package/dist/model/graphs/domains/scalars.graphql +3 -0
  83. package/dist/model/graphs/filter.graphql +5 -0
  84. package/dist/model/graphs/schema.graphql +7 -0
  85. package/dist/server.d.ts +2 -0
  86. package/dist/server.d.ts.map +1 -0
  87. package/dist/server.js +34 -0
  88. package/dist/server.js.map +1 -0
  89. package/dist/types/filter-types.d.ts +62 -0
  90. package/dist/types/filter-types.d.ts.map +1 -0
  91. package/dist/types/filter-types.js +28 -0
  92. package/dist/types/filter-types.js.map +1 -0
  93. package/dist/types/graphql.d.ts +74630 -0
  94. package/dist/types/graphql.d.ts.map +1 -0
  95. package/dist/types/graphql.js +94 -0
  96. package/dist/types/graphql.js.map +1 -0
  97. package/dist/types/types.d.ts +13 -0
  98. package/dist/types/types.d.ts.map +1 -0
  99. package/dist/types/types.js +2 -0
  100. package/dist/types/types.js.map +1 -0
  101. package/model/graphs/config/common.graphql +8 -0
  102. package/model/graphs/config/fields.graphql +338 -0
  103. package/model/graphs/config/menu.graphql +40 -0
  104. package/model/graphs/config/mutation.graphql +30 -0
  105. package/model/graphs/config/page.graphql +227 -0
  106. package/model/graphs/config/panel.graphql +30 -0
  107. package/model/graphs/config/query.graphql +55 -0
  108. package/model/graphs/config/selectOptions.graphql +47 -0
  109. package/model/graphs/config/table.graphql +97 -0
  110. package/model/graphs/config/tests.graphql +16 -0
  111. package/model/graphs/config/theme.graphql +41 -0
  112. package/model/graphs/config/ui-components.graphql +11 -0
  113. package/model/graphs/domains/scalars.graphql +3 -0
  114. package/model/graphs/filter.graphql +5 -0
  115. package/model/graphs/schema.graphql +7 -0
  116. package/package.json +63 -0
package/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # @docupace/ihub-config
2
+
3
+ Reusable config-service GraphQL package extracted from docupace server.
4
+
5
+ ## Run standalone server
6
+
7
+ ```bash
8
+ pnpm install
9
+ pnpm start:dev
10
+ ```
11
+
12
+ ## Use as extension in another server
13
+
14
+ ```ts
15
+ import { getConfigExtension } from '@docupace/ihub-config';
16
+ ```
17
+
18
+ Then add to server extensions array.
19
+
20
+ To resolve template expressions (for example `$${applicationPreference:...}`),
21
+ provide `configInjectorResolvers` from the host app:
22
+
23
+ ```ts
24
+ import { getConfigExtension } from '@docupace/ihub-config';
25
+ import {
26
+ DashboardPageConfigProvider,
27
+ TablePageConfigProvider,
28
+ AnyPageConfigProvider,
29
+ DetailsPageConfigProvider,
30
+ } from './your-host-config-providers.js';
31
+ import { configResolvers } from './your-host-config-resolvers.js';
32
+
33
+ const APPLICATION_PREFERENCE_PREFIX = 'applicationPreference';
34
+
35
+ const applicationPreferenceResolver = async (keys, context) => {
36
+ const data = await loadApplicationPreferences(keys, context);
37
+
38
+ const result: Record<string, string | undefined> = {};
39
+ keys.forEach((key) => (result[key] = undefined));
40
+ data.records.forEach((record: { name: string; value: string }) => {
41
+ result[record.name] = record.value;
42
+ });
43
+
44
+ return result;
45
+ };
46
+
47
+ const configExtension = await getConfigExtension({
48
+ configInjectorResolvers: {
49
+ [APPLICATION_PREFERENCE_PREFIX]: applicationPreferenceResolver,
50
+ },
51
+ providers: {
52
+ DashboardPage: DashboardPageConfigProvider,
53
+ TablePage: TablePageConfigProvider,
54
+ AnyPage: AnyPageConfigProvider,
55
+ DetailsPage: DetailsPageConfigProvider,
56
+ },
57
+ resolvers: configResolvers,
58
+ });
59
+ ```
60
+
61
+ ## Required environment variables
62
+
63
+ - `AUTH0_DOMAIN`
64
+ - `AUTH0_AUDIENCE`
65
+ - `AUTH0_CLIENT_ID`
66
+ - `AUTH0_CLIENT_SECRET`
67
+
68
+ Optional:
69
+
70
+ - `CORE_URL`
71
+ - `AUTH0_CC_CLIENT_ID`
72
+ - `AUTH0_CC_CLIENT_SECRET`
73
+ - `INTEGRATION_HUB_URL`
74
+
75
+ Config stores (repeat by prefix such as `STANDARD`, `SITE`):
76
+
77
+ - `<PREFIX>_CONFIG_LOCAL_PATH`
78
+ - `<PREFIX>_CONFIG_REMOTE_PATH`
79
+ - `<PREFIX>_CONFIG_REMOTE_BRANCH`
80
+ - `<PREFIX>_CONFIG_PRIORITY`
81
+ - `<PREFIX>_CONFIG_NAME`
82
+ - `CONFIG_LOCAL_PATH_ROOT` (optional fallback)
@@ -0,0 +1,24 @@
1
+ import { ApolloContext } from '../types/types.js';
2
+ /**
3
+ * Type for resolver functions that can resolve template expressions
4
+ */
5
+ export type ResolverFunction = (keys: string[], context: ApolloContext) => Promise<Record<string, any>>;
6
+ export type ConfigInjectorResolvers = Record<string, ResolverFunction>;
7
+ export declare const setConfigInjectorResolvers: (resolvers?: ConfigInjectorResolvers) => void;
8
+ export declare const addConfigInjectorResolver: (prefix: string, resolver: ResolverFunction) => void;
9
+ export declare const getConfigInjectorResolvers: () => ConfigInjectorResolvers;
10
+ /**
11
+ * Processes configuration values and injects resolved properties for template expressions
12
+ *
13
+ * This function scans the input for template expressions in the format $${prefix:property.path}
14
+ * and replaces them with actual values from the appropriate property resolvers.
15
+ *
16
+ * @param configValue The configuration value to process (typically a string, but supports any type)
17
+ * @param context Request context provided by the host
18
+ * @returns Promise resolving to the processed configuration value with templates resolved
19
+ * @throws {Error} When a template expression uses an unsupported prefix
20
+ *
21
+ * Resolver implementations are configured by the host application.
22
+ */
23
+ export declare function injectConfigValue<T>(configValue: T, context: ApolloContext): Promise<T>;
24
+ //# sourceMappingURL=config-injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-injector.d.ts","sourceRoot":"","sources":["../../src/config/config-injector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,aAAa,KACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAElC,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAIvE,eAAO,MAAM,0BAA0B,GACrC,YAAW,uBAA4B,KACtC,IAEF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,UAAU,gBAAgB,KACzB,IAEF,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,uBAE7C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,WAAW,EAAE,CAAC,EACd,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,CAAC,CAMZ"}
@@ -0,0 +1,28 @@
1
+ import { resolveTemplateExpressions } from './template-processor.js';
2
+ let configResolvers = {};
3
+ export const setConfigInjectorResolvers = (resolvers = {}) => {
4
+ configResolvers = { ...resolvers };
5
+ };
6
+ export const addConfigInjectorResolver = (prefix, resolver) => {
7
+ configResolvers[prefix] = resolver;
8
+ };
9
+ export const getConfigInjectorResolvers = () => {
10
+ return { ...configResolvers };
11
+ };
12
+ /**
13
+ * Processes configuration values and injects resolved properties for template expressions
14
+ *
15
+ * This function scans the input for template expressions in the format $${prefix:property.path}
16
+ * and replaces them with actual values from the appropriate property resolvers.
17
+ *
18
+ * @param configValue The configuration value to process (typically a string, but supports any type)
19
+ * @param context Request context provided by the host
20
+ * @returns Promise resolving to the processed configuration value with templates resolved
21
+ * @throws {Error} When a template expression uses an unsupported prefix
22
+ *
23
+ * Resolver implementations are configured by the host application.
24
+ */
25
+ export async function injectConfigValue(configValue, context) {
26
+ return await resolveTemplateExpressions(configValue, configResolvers, context);
27
+ }
28
+ //# sourceMappingURL=config-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-injector.js","sourceRoot":"","sources":["../../src/config/config-injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAarE,IAAI,eAAe,GAA4B,EAAE,CAAC;AAElD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,YAAqC,EAAE,EACjC,EAAE;IACR,eAAe,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAAc,EACd,QAA0B,EACpB,EAAE;IACR,eAAe,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAA4B,EAAE;IACtE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAc,EACd,OAAsB;IAEtB,OAAO,MAAM,0BAA0B,CACrC,WAAW,EACX,eAAe,EACf,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ResolverFunction } from './config-injector.js';
2
+ import { ApolloContext } from '../types/types.js';
3
+ /**
4
+ * Processes template expressions in strings and replaces them with resolved values
5
+ *
6
+ * @param input The string that may contain template expressions like $${applicationPreference:something}
7
+ * @param resolvers Object mapping of prefix to resolver functions
8
+ * @param context Request context for resolvers
9
+ * @returns Promise resolving to the input with template expressions replaced
10
+ * @throws {Error} When a template expression uses an unsupported prefix
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const input = "Feature enabled: $${applicationPreference:feature.enabled}";
15
+ * const result = await resolveTemplateExpressions(input, resolvers, context);
16
+ * // result: "Feature enabled: true"
17
+ *
18
+ * // Throws error for unknown prefix:
19
+ * const invalid = "Value: $${unknown:setting}";
20
+ * await resolveTemplateExpressions(invalid, resolvers, context);
21
+ * // Error: Unknown template prefix 'unknown'. Supported prefixes: applicationPreference, env. Found in expressions: $${unknown:setting}
22
+ * ```
23
+ */
24
+ export declare function resolveTemplateExpressions<T>(input: T, resolvers: Record<string, ResolverFunction>, context: ApolloContext): Promise<T>;
25
+ //# sourceMappingURL=template-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-processor.d.ts","sourceRoot":"","sources":["../../src/config/template-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAoClD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC3C,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,CAAC,CAAC,CAyDZ"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Template expression pattern for matching placeholders like $${anything}
3
+ *
4
+ * Pattern breakdown:
5
+ * - \$\$ - Literal double dollar signs (escaped)
6
+ * - \{ - Literal opening brace (escaped)
7
+ * - ([^}]+) - Capture group 1: Everything inside braces (one or more non-brace characters)
8
+ * - \} - Literal closing brace (escaped)
9
+ * - g flag - Global matching to find all occurrences
10
+ *
11
+ * Examples:
12
+ * - $${applicationPreference:setting} → content: "applicationPreference:setting"
13
+ * - $${env:NODE_ENV} → content: "env:NODE_ENV"
14
+ * - $${applicationPreference:sys.core.retention.readOnlyAccess.enabled} → content: "applicationPreference:sys.core.retention.readOnlyAccess.enabled"
15
+ * - $${config:database.host} → content: "config:database.host"
16
+ * - $${invalid} → content: "invalid" (will be validated and throw error)
17
+ *
18
+ * This pattern captures everything inside $${} and then validates the format
19
+ * to ensure it follows the prefix:path convention.
20
+ */
21
+ const TEMPLATE_EXPRESSION_PATTERN = /\$\$\{([^}]+)\}/g;
22
+ /**
23
+ * Processes template expressions in strings and replaces them with resolved values
24
+ *
25
+ * @param input The string that may contain template expressions like $${applicationPreference:something}
26
+ * @param resolvers Object mapping of prefix to resolver functions
27
+ * @param context Request context for resolvers
28
+ * @returns Promise resolving to the input with template expressions replaced
29
+ * @throws {Error} When a template expression uses an unsupported prefix
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const input = "Feature enabled: $${applicationPreference:feature.enabled}";
34
+ * const result = await resolveTemplateExpressions(input, resolvers, context);
35
+ * // result: "Feature enabled: true"
36
+ *
37
+ * // Throws error for unknown prefix:
38
+ * const invalid = "Value: $${unknown:setting}";
39
+ * await resolveTemplateExpressions(invalid, resolvers, context);
40
+ * // Error: Unknown template prefix 'unknown'. Supported prefixes: applicationPreference, env. Found in expressions: $${unknown:setting}
41
+ * ```
42
+ */
43
+ export async function resolveTemplateExpressions(input, resolvers, context) {
44
+ // Only process strings - return other types unchanged
45
+ if (typeof input !== 'string') {
46
+ return input;
47
+ }
48
+ const stringInput = input;
49
+ const expressions = extractTemplateExpressions(stringInput);
50
+ // If no template expressions found, return original string
51
+ if (expressions.length === 0) {
52
+ return input;
53
+ }
54
+ let processedString = stringInput;
55
+ const expressionsByPrefix = groupExpressionsByPrefix(expressions);
56
+ // Process each prefix group
57
+ for (const [prefix, prefixExpressions] of Object.entries(expressionsByPrefix)) {
58
+ const resolver = resolvers?.[prefix];
59
+ if (!resolver) {
60
+ throw new Error(`Unknown template prefix '${prefix}'. ` +
61
+ `Supported prefixes: ${Object.keys(resolvers).join(', ')}. ` +
62
+ `Found in expressions: ${prefixExpressions.map((e) => e.fullExpression).join(', ')}`);
63
+ }
64
+ const propertyPaths = [
65
+ ...new Set(prefixExpressions.map((expr) => expr.path)),
66
+ ];
67
+ const resolvedProperties = await resolver(propertyPaths, context);
68
+ for (const expression of prefixExpressions) {
69
+ const resolvedValue = resolvedProperties[expression.path];
70
+ if (resolvedValue === undefined) {
71
+ throw new Error(`Failed to resolve template expression '${expression.fullExpression}'. ` +
72
+ `Property '${expression.path}' not found in the '${prefix}' resolver response.`);
73
+ }
74
+ processedString = replaceTemplateExpression(processedString, expression.fullExpression, resolvedValue);
75
+ }
76
+ }
77
+ return processedString;
78
+ }
79
+ /**
80
+ * Validates the format of a template expression and returns the prefix and path.
81
+ * Throws an error if the format is invalid.
82
+ */
83
+ function getPrefixAndPathOrThrow(fullExpression, content) {
84
+ if (!content.includes(':')) {
85
+ throw new Error(`Invalid template expression format: '${fullExpression}'. Template expressions must contain a colon separator between prefix and path.`);
86
+ }
87
+ const [prefix, path] = content.split(':');
88
+ if (!prefix) {
89
+ throw new Error(`Invalid template expression format '${fullExpression}'. Prefix cannot be empty.`);
90
+ }
91
+ if (!path) {
92
+ throw new Error(`Invalid template expression format '${fullExpression}'. Property path cannot be empty.`);
93
+ }
94
+ return { prefix, path };
95
+ }
96
+ /**
97
+ * Extracts all template expressions from a string
98
+ */
99
+ function extractTemplateExpressions(input) {
100
+ const matches = input.matchAll(TEMPLATE_EXPRESSION_PATTERN);
101
+ const expressions = Array.from(matches).map((match) => {
102
+ const fullExpression = match[0];
103
+ const content = match[1];
104
+ const { prefix, path } = getPrefixAndPathOrThrow(fullExpression, content);
105
+ return {
106
+ fullExpression,
107
+ prefix,
108
+ path,
109
+ };
110
+ });
111
+ return expressions;
112
+ }
113
+ /**
114
+ * Groups template expressions by their resolver prefix
115
+ */
116
+ function groupExpressionsByPrefix(expressions) {
117
+ return expressions.reduce((groups, expression) => {
118
+ const { prefix } = expression;
119
+ if (!groups[prefix]) {
120
+ groups[prefix] = [];
121
+ }
122
+ groups[prefix].push(expression);
123
+ return groups;
124
+ }, {});
125
+ }
126
+ /**
127
+ * Safely replaces a template expression with its resolved value
128
+ *
129
+ * This function performs a literal string replacement by escaping regex special characters
130
+ * in the template expression to ensure exact matching, then replaces all occurrences
131
+ * with the resolved value converted to a string.
132
+ *
133
+ * @param input The string containing the template expression to replace
134
+ * @param templateExpression The exact template expression to find (e.g., "$${applicationPreference:setting}")
135
+ * @param resolvedValue The value to substitute for the template expression
136
+ * @returns The input string with all occurrences of the template expression replaced
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * const result = replaceTemplateExpression(
141
+ * "Feature: $${applicationPreference:enabled} and $${applicationPreference:enabled}",
142
+ * "$${applicationPreference:enabled}",
143
+ * "true"
144
+ * );
145
+ * // result: "Feature: true and true"
146
+ * ```
147
+ */
148
+ function replaceTemplateExpression(input, templateExpression, resolvedValue) {
149
+ // Escape special regex characters in the template expression
150
+ const escapedExpression = templateExpression.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
151
+ const regex = new RegExp(escapedExpression, 'g');
152
+ return input.replace(regex, String(resolvedValue));
153
+ }
154
+ //# sourceMappingURL=template-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-processor.js","sourceRoot":"","sources":["../../src/config/template-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ExtensionConfig } from '@docupace/ihub-core/types';
2
+ import { ConfigInjectorResolvers } from './config/config-injector.js';
3
+ import { ConfigProviders } from './config-providers/index.js';
4
+ import { ConfigResolversConfig } from './config-resolvers/index.js';
5
+ export interface ConfigExtensionOptions {
6
+ configInjectorResolvers?: ConfigInjectorResolvers;
7
+ providers?: ConfigProviders;
8
+ resolvers?: ConfigResolversConfig;
9
+ }
10
+ export declare const getConfigExtension: (options?: ConfigExtensionOptions) => Promise<ExtensionConfig>;
11
+ //# sourceMappingURL=config-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-extension.d.ts","sourceRoot":"","sources":["../src/config-extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,EACL,uBAAuB,EAExB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAsB,MAAM,6BAA6B,CAAC;AAClF,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AAOrC,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAgBD,eAAO,MAAM,kBAAkB,GAC7B,UAAS,sBAA2B,KACnC,OAAO,CAAC,eAAe,CAwBzB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import path from 'path';
2
+ import { fileURLToPath } from 'url';
3
+ import { getInstanceConfig } from './instance-config.js';
4
+ import { defaultConfigService } from './config-service.js';
5
+ import ConfigMapper from './mappers/config-mapper.js';
6
+ import { setConfigInjectorResolvers, } from './config/config-injector.js';
7
+ import { setConfigProviders } from './config-providers/index.js';
8
+ import { setConfigResolvers, } from './config-resolvers/index.js';
9
+ const moduleDir = path.dirname(fileURLToPath(import.meta.url));
10
+ const modelPath = path.resolve(moduleDir, '../model');
11
+ let configStoreInitPromise;
12
+ const ensureConfigStoresInitialized = async () => {
13
+ if (!configStoreInitPromise) {
14
+ const instanceConfig = await getInstanceConfig();
15
+ const configService = defaultConfigService({
16
+ model: undefined,
17
+ configStores: instanceConfig.configStores,
18
+ });
19
+ configStoreInitPromise = configService.init();
20
+ }
21
+ await configStoreInitPromise;
22
+ };
23
+ export const getConfigExtension = async (options = {}) => {
24
+ setConfigInjectorResolvers(options.configInjectorResolvers ?? {});
25
+ setConfigProviders(options.providers ?? {});
26
+ setConfigResolvers(options.resolvers ?? {});
27
+ const instanceConfig = await getInstanceConfig();
28
+ await ensureConfigStoresInitialized();
29
+ const configModelPaths = instanceConfig.configStores.map((configStore) => path.resolve(configStore.localPath, 'model'));
30
+ return {
31
+ name: 'config',
32
+ modelPaths: [modelPath, ...configModelPaths],
33
+ mappers: [
34
+ {
35
+ mapperClass: ConfigMapper,
36
+ },
37
+ ],
38
+ tools: [],
39
+ resolvers: {},
40
+ };
41
+ };
42
+ //# sourceMappingURL=config-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-extension.js","sourceRoot":"","sources":["../src/config-extension.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAEL,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAmB,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAEL,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAEtD,IAAI,sBAAgD,CAAC;AAQrD,MAAM,6BAA6B,GAAG,KAAK,IAAI,EAAE;IAC/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACjD,MAAM,aAAa,GAAG,oBAAoB,CAAC;YACzC,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,cAAc,CAAC,YAAY;SAC1C,CAAC,CAAC;QAEH,sBAAsB,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,sBAAsB,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,UAAkC,EAAE,EACV,EAAE;IAC5B,0BAA0B,CAAC,OAAO,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IAClE,kBAAkB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC5C,kBAAkB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAEjD,MAAM,6BAA6B,EAAE,CAAC;IAEtC,MAAM,gBAAgB,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACvE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAC7C,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,CAAC,SAAS,EAAE,GAAG,gBAAgB,CAAC;QAC5C,OAAO,EAAE;YACP;gBACE,WAAW,EAAE,YAAY;aAC1B;SACF;QACD,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import ConfigService from '../config-service.js';
2
+ import { ApolloContext } from '../types/types.js';
3
+ export interface ConfigProvider {
4
+ processConfig(config: any, configService: ConfigService, context: ApolloContext): any;
5
+ }
6
+ export type ConfigProviderClass = new () => ConfigProvider;
7
+ export type ConfigProviders = Record<string, ConfigProviderClass>;
8
+ //# sourceMappingURL=base-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-config.d.ts","sourceRoot":"","sources":["../../src/config-providers/base-config.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,aAAa,CACX,MAAM,EAAE,GAAG,EACX,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,aAAa,GACrB,GAAG,CAAC;CACR;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,cAAc,CAAC;AAE3D,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=base-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-config.js","sourceRoot":"","sources":["../../src/config-providers/base-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ConfigProviders } from './base-config.js';
2
+ export declare const setConfigProviders: (providers?: ConfigProviders) => void;
3
+ export declare const getConfigProviders: () => ConfigProviders;
4
+ export type { ConfigProviders } from './base-config.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config-providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,eAAO,MAAM,kBAAkB,GAAI,YAAW,eAAoB,KAAG,IAEpE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,eAErC,CAAC;AAEF,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ let registeredProviders = {};
2
+ export const setConfigProviders = (providers = {}) => {
3
+ registeredProviders = { ...providers };
4
+ };
5
+ export const getConfigProviders = () => {
6
+ return { ...registeredProviders };
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config-providers/index.ts"],"names":[],"mappings":"AAEA,IAAI,mBAAmB,GAAoB,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,YAA6B,EAAE,EAAQ,EAAE;IAC1E,mBAAmB,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAoB,EAAE;IACtD,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;AACpC,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import ConfigService from '../config-service.js';
2
+ export interface ConfigResolverFactoryDeps {
3
+ configService: ConfigService;
4
+ }
5
+ export type ConfigResolverRegistry<T = Record<string, any>> = T;
6
+ export type ConfigQueryResolverFactory = (deps: ConfigResolverFactoryDeps) => ConfigResolverRegistry;
7
+ export type ConfigMutationResolverFactory = (deps: ConfigResolverFactoryDeps) => ConfigResolverRegistry;
8
+ export interface ConfigResolversConfig {
9
+ query?: ConfigQueryResolverFactory;
10
+ mutation?: ConfigMutationResolverFactory;
11
+ }
12
+ export declare const setConfigResolvers: (resolvers?: ConfigResolversConfig) => void;
13
+ export declare const getConfigResolvers: () => ConfigResolversConfig;
14
+ export declare const deepMergeResolvers: (builtInResolvers: Record<string, any>, hostResolvers: Record<string, any>) => Record<string, any>;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config-resolvers/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAEhE,MAAM,MAAM,0BAA0B,GAAG,CACvC,IAAI,EAAE,yBAAyB,KAC5B,sBAAsB,CAAC;AAE5B,MAAM,MAAM,6BAA6B,GAAG,CAC1C,IAAI,EAAE,yBAAyB,KAC5B,sBAAsB,CAAC;AAE5B,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,QAAQ,CAAC,EAAE,6BAA6B,CAAC;CAC1C;AAID,eAAO,MAAM,kBAAkB,GAC7B,YAAW,qBAA0B,KACpC,IAEF,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,qBAErC,CAAC;AAQF,eAAO,MAAM,kBAAkB,GAC7B,kBAAkB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrC,eAAe,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAapB,CAAC"}
@@ -0,0 +1,24 @@
1
+ let configResolvers = {};
2
+ export const setConfigResolvers = (resolvers = {}) => {
3
+ configResolvers = { ...resolvers };
4
+ };
5
+ export const getConfigResolvers = () => {
6
+ return { ...configResolvers };
7
+ };
8
+ const isPlainObject = (value) => {
9
+ return (typeof value === 'object' && value !== null && !Array.isArray(value));
10
+ };
11
+ export const deepMergeResolvers = (builtInResolvers, hostResolvers) => {
12
+ const merged = { ...builtInResolvers };
13
+ for (const [key, hostValue] of Object.entries(hostResolvers ?? {})) {
14
+ const builtInValue = merged[key];
15
+ if (isPlainObject(builtInValue) && isPlainObject(hostValue)) {
16
+ merged[key] = deepMergeResolvers(builtInValue, hostValue);
17
+ }
18
+ else {
19
+ merged[key] = hostValue;
20
+ }
21
+ }
22
+ return merged;
23
+ };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config-resolvers/index.ts"],"names":[],"mappings":"AAqBA,IAAI,eAAe,GAA0B,EAAE,CAAC;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,YAAmC,EAAE,EAC/B,EAAE;IACR,eAAe,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAA0B,EAAE;IAC5D,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAgC,EAAE;IACrE,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CACrE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,gBAAqC,EACrC,aAAkC,EACb,EAAE;IACvB,MAAM,MAAM,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { Model } from '@docupace/ihub-core';
2
+ import { ApolloContext } from './types/types.js';
3
+ export interface ConfigStore {
4
+ supportsRefresh(): boolean;
5
+ getConfig(path: string): any;
6
+ listConfigs(path: string): any;
7
+ updateConfig(path: string, config: any): any;
8
+ init(): void;
9
+ refresh(): void;
10
+ }
11
+ export interface ConfigStoreParams {
12
+ key: string;
13
+ name: string;
14
+ localPath: string;
15
+ priority: number;
16
+ remotePath?: string;
17
+ remoteBranch?: string;
18
+ }
19
+ export interface DefaultConfigServiceParams {
20
+ model?: Model;
21
+ configStores: ConfigStoreParams[];
22
+ }
23
+ export declare class ConfigFileStore implements ConfigStore {
24
+ private localPath;
25
+ private remotePath?;
26
+ private remoteBranch?;
27
+ constructor(params: ConfigStoreParams);
28
+ getLocalPath(): string;
29
+ supportsRefresh(): boolean;
30
+ private getFilesWithRemovedExtensions;
31
+ private isDirectory;
32
+ getFinalPath(fullPath: string): Promise<string>;
33
+ getAbsConfig(fullPath: string): Promise<any>;
34
+ getConfig(configPath: string): Promise<any>;
35
+ listConfigs(configPath: string): Promise<string[]>;
36
+ updateConfig(configPath: string, config: any): Promise<void>;
37
+ init(): Promise<void>;
38
+ refresh(): Promise<void>;
39
+ }
40
+ declare class ConfigService {
41
+ private configStores;
42
+ private model?;
43
+ constructor(configStores: ConfigStore[], model?: Model);
44
+ generateResolvers(): void;
45
+ processConfig(config: any, context: ApolloContext, processProviders?: boolean): Promise<any>;
46
+ getRefConfig(configPath: string, refConfigPath: string, context: ApolloContext, values?: any): Promise<any>;
47
+ updatePathValues(obj: any, inputPath: string): any;
48
+ flattenArray(arr: any[]): any[];
49
+ processObjectExpressions(object: any, inputValues: any, context: ApolloContext): Promise<any>;
50
+ private processImageReference;
51
+ processObject(configPath: string, obj: any, context: ApolloContext, values?: any): Promise<any>;
52
+ private getFileMimeType;
53
+ getConfigFromStore(path: string): Promise<any>;
54
+ getConfig(configPath: string, context: ApolloContext, values?: any, processProviders?: boolean): Promise<any>;
55
+ getDirectConfig(configPath: string, context: ApolloContext, values?: any, processProviders?: boolean): Promise<any>;
56
+ listDirectConfigs(configPath: string): Promise<any[]>;
57
+ updateConfig(configPath: string, config: any, context: ApolloContext): Promise<any>;
58
+ getPageConfig(pagePath: string, context: ApolloContext, processConfig?: boolean): Promise<any>;
59
+ init(): Promise<void[]>;
60
+ }
61
+ export declare const defaultConfigService: ({ model, configStores, }: DefaultConfigServiceParams) => ConfigService;
62
+ export default ConfigService;
63
+ //# sourceMappingURL=config-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../src/config-service.ts"],"names":[],"mappings":"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"}