@zudojs/config 0.0.1

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 (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/configEntry/configEntry.type.d.ts +77 -0
  5. package/dist/configEntry/configEntry.type.d.ts.map +1 -0
  6. package/dist/configEntry/configEntry.type.js +149 -0
  7. package/dist/configEntry/configEntry.type.js.map +1 -0
  8. package/dist/configEntry/index.d.ts +7 -0
  9. package/dist/configEntry/index.d.ts.map +1 -0
  10. package/dist/configEntry/index.js +7 -0
  11. package/dist/configEntry/index.js.map +1 -0
  12. package/dist/configFactory/configFactory.core.d.ts +54 -0
  13. package/dist/configFactory/configFactory.core.d.ts.map +1 -0
  14. package/dist/configFactory/configFactory.core.js +69 -0
  15. package/dist/configFactory/configFactory.core.js.map +1 -0
  16. package/dist/configFactory/index.d.ts +7 -0
  17. package/dist/configFactory/index.d.ts.map +1 -0
  18. package/dist/configFactory/index.js +7 -0
  19. package/dist/configFactory/index.js.map +1 -0
  20. package/dist/configLoader/configLoader.core.d.ts +121 -0
  21. package/dist/configLoader/configLoader.core.d.ts.map +1 -0
  22. package/dist/configLoader/configLoader.core.js +292 -0
  23. package/dist/configLoader/configLoader.core.js.map +1 -0
  24. package/dist/configLoader/index.d.ts +7 -0
  25. package/dist/configLoader/index.d.ts.map +1 -0
  26. package/dist/configLoader/index.js +7 -0
  27. package/dist/configLoader/index.js.map +1 -0
  28. package/dist/configManager/configManager.core.d.ts +165 -0
  29. package/dist/configManager/configManager.core.d.ts.map +1 -0
  30. package/dist/configManager/configManager.core.js +328 -0
  31. package/dist/configManager/configManager.core.js.map +1 -0
  32. package/dist/configManager/configManager.error.d.ts +18 -0
  33. package/dist/configManager/configManager.error.d.ts.map +1 -0
  34. package/dist/configManager/configManager.error.js +24 -0
  35. package/dist/configManager/configManager.error.js.map +1 -0
  36. package/dist/configManager/configManager.factory.d.ts +11 -0
  37. package/dist/configManager/configManager.factory.d.ts.map +1 -0
  38. package/dist/configManager/configManager.factory.js +22 -0
  39. package/dist/configManager/configManager.factory.js.map +1 -0
  40. package/dist/configManager/configManager.type.d.ts +48 -0
  41. package/dist/configManager/configManager.type.d.ts.map +1 -0
  42. package/dist/configManager/configManager.type.js +13 -0
  43. package/dist/configManager/configManager.type.js.map +1 -0
  44. package/dist/configManager/index.d.ts +10 -0
  45. package/dist/configManager/index.d.ts.map +1 -0
  46. package/dist/configManager/index.js +10 -0
  47. package/dist/configManager/index.js.map +1 -0
  48. package/dist/configResolver/accessors/configResolver.accessors.d.ts +19 -0
  49. package/dist/configResolver/accessors/configResolver.accessors.d.ts.map +1 -0
  50. package/dist/configResolver/accessors/configResolver.accessors.js +237 -0
  51. package/dist/configResolver/accessors/configResolver.accessors.js.map +1 -0
  52. package/dist/configResolver/accessors/configResolver.scoped.d.ts +28 -0
  53. package/dist/configResolver/accessors/configResolver.scoped.d.ts.map +1 -0
  54. package/dist/configResolver/accessors/configResolver.scoped.js +54 -0
  55. package/dist/configResolver/accessors/configResolver.scoped.js.map +1 -0
  56. package/dist/configResolver/accessors/index.d.ts +8 -0
  57. package/dist/configResolver/accessors/index.d.ts.map +1 -0
  58. package/dist/configResolver/accessors/index.js +8 -0
  59. package/dist/configResolver/accessors/index.js.map +1 -0
  60. package/dist/configResolver/core/configResolver.core.d.ts +100 -0
  61. package/dist/configResolver/core/configResolver.core.d.ts.map +1 -0
  62. package/dist/configResolver/core/configResolver.core.js +347 -0
  63. package/dist/configResolver/core/configResolver.core.js.map +1 -0
  64. package/dist/configResolver/core/configResolver.error.d.ts +8 -0
  65. package/dist/configResolver/core/configResolver.error.d.ts.map +1 -0
  66. package/dist/configResolver/core/configResolver.error.js +8 -0
  67. package/dist/configResolver/core/configResolver.error.js.map +1 -0
  68. package/dist/configResolver/core/configResolver.factory.d.ts +8 -0
  69. package/dist/configResolver/core/configResolver.factory.d.ts.map +1 -0
  70. package/dist/configResolver/core/configResolver.factory.js +8 -0
  71. package/dist/configResolver/core/configResolver.factory.js.map +1 -0
  72. package/dist/configResolver/core/configResolver.type.d.ts +20 -0
  73. package/dist/configResolver/core/configResolver.type.d.ts.map +1 -0
  74. package/dist/configResolver/core/configResolver.type.js +2 -0
  75. package/dist/configResolver/core/configResolver.type.js.map +1 -0
  76. package/dist/configResolver/core/index.d.ts +10 -0
  77. package/dist/configResolver/core/index.d.ts.map +1 -0
  78. package/dist/configResolver/core/index.js +10 -0
  79. package/dist/configResolver/core/index.js.map +1 -0
  80. package/dist/configResolver/index.d.ts +8 -0
  81. package/dist/configResolver/index.d.ts.map +1 -0
  82. package/dist/configResolver/index.js +8 -0
  83. package/dist/configResolver/index.js.map +1 -0
  84. package/dist/configSchema/configSchema.core.d.ts +8 -0
  85. package/dist/configSchema/configSchema.core.d.ts.map +1 -0
  86. package/dist/configSchema/configSchema.core.js +8 -0
  87. package/dist/configSchema/configSchema.core.js.map +1 -0
  88. package/dist/configSchema/configSchema.rules.d.ts +18 -0
  89. package/dist/configSchema/configSchema.rules.d.ts.map +1 -0
  90. package/dist/configSchema/configSchema.rules.js +108 -0
  91. package/dist/configSchema/configSchema.rules.js.map +1 -0
  92. package/dist/configSchema/configSchema.type.d.ts +115 -0
  93. package/dist/configSchema/configSchema.type.d.ts.map +1 -0
  94. package/dist/configSchema/configSchema.type.js +24 -0
  95. package/dist/configSchema/configSchema.type.js.map +1 -0
  96. package/dist/configSchema/configSchema.validator.d.ts +37 -0
  97. package/dist/configSchema/configSchema.validator.d.ts.map +1 -0
  98. package/dist/configSchema/configSchema.validator.js +340 -0
  99. package/dist/configSchema/configSchema.validator.js.map +1 -0
  100. package/dist/configSchema/index.d.ts +8 -0
  101. package/dist/configSchema/index.d.ts.map +1 -0
  102. package/dist/configSchema/index.js +8 -0
  103. package/dist/configSchema/index.js.map +1 -0
  104. package/dist/configSource/configSource.core.d.ts +131 -0
  105. package/dist/configSource/configSource.core.d.ts.map +1 -0
  106. package/dist/configSource/configSource.core.js +195 -0
  107. package/dist/configSource/configSource.core.js.map +1 -0
  108. package/dist/configSource/index.d.ts +7 -0
  109. package/dist/configSource/index.d.ts.map +1 -0
  110. package/dist/configSource/index.js +7 -0
  111. package/dist/configSource/index.js.map +1 -0
  112. package/dist/configStore/configStore.core.d.ts +124 -0
  113. package/dist/configStore/configStore.core.d.ts.map +1 -0
  114. package/dist/configStore/configStore.core.js +306 -0
  115. package/dist/configStore/configStore.core.js.map +1 -0
  116. package/dist/configStore/configStore.factory.d.ts +13 -0
  117. package/dist/configStore/configStore.factory.d.ts.map +1 -0
  118. package/dist/configStore/configStore.factory.js +14 -0
  119. package/dist/configStore/configStore.factory.js.map +1 -0
  120. package/dist/configStore/configStore.type.d.ts +24 -0
  121. package/dist/configStore/configStore.type.d.ts.map +1 -0
  122. package/dist/configStore/configStore.type.js +2 -0
  123. package/dist/configStore/configStore.type.js.map +1 -0
  124. package/dist/configStore/index.d.ts +9 -0
  125. package/dist/configStore/index.d.ts.map +1 -0
  126. package/dist/configStore/index.js +9 -0
  127. package/dist/configStore/index.js.map +1 -0
  128. package/dist/configValue/configValue.core.d.ts +97 -0
  129. package/dist/configValue/configValue.core.d.ts.map +1 -0
  130. package/dist/configValue/configValue.core.js +293 -0
  131. package/dist/configValue/configValue.core.js.map +1 -0
  132. package/dist/configValue/index.d.ts +7 -0
  133. package/dist/configValue/index.d.ts.map +1 -0
  134. package/dist/configValue/index.js +7 -0
  135. package/dist/configValue/index.js.map +1 -0
  136. package/dist/index.d.ts +15 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +15 -0
  139. package/dist/index.js.map +1 -0
  140. package/package.json +51 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Creates a configuration entry.
3
+ */
4
+ export function createConfigEntry(options) {
5
+ const key = options.key.trim();
6
+ if (key.length === 0) {
7
+ throw new TypeError("Configuration entry key cannot be empty.");
8
+ }
9
+ return Object.freeze({
10
+ key,
11
+ value: options.value,
12
+ source: options.source ?? "unknown",
13
+ sourceType: options.sourceType ?? "custom",
14
+ priority: options.priority ?? 0,
15
+ sensitive: options.sensitive ?? false,
16
+ resolved: options.resolved ?? true,
17
+ createdAt: options.createdAt ?? Date.now(),
18
+ });
19
+ }
20
+ /**
21
+ * Creates an entry from another entry while replacing its value.
22
+ */
23
+ export function updateConfigEntry(entry, value) {
24
+ return createConfigEntry({
25
+ key: entry.key,
26
+ value,
27
+ source: entry.source,
28
+ sourceType: entry.sourceType,
29
+ priority: entry.priority,
30
+ sensitive: entry.sensitive,
31
+ resolved: entry.resolved,
32
+ createdAt: entry.createdAt,
33
+ });
34
+ }
35
+ /**
36
+ * Checks whether a value is a valid configuration entry.
37
+ */
38
+ export function isConfigEntry(value) {
39
+ if (typeof value !== "object" || value === null) {
40
+ return false;
41
+ }
42
+ const entry = value;
43
+ return (typeof entry.key === "string" &&
44
+ entry.key.length > 0 &&
45
+ "value" in entry &&
46
+ typeof entry.source === "string" &&
47
+ typeof entry.sourceType === "string" &&
48
+ typeof entry.priority === "number" &&
49
+ typeof entry.sensitive === "boolean" &&
50
+ typeof entry.resolved === "boolean" &&
51
+ typeof entry.createdAt === "number");
52
+ }
53
+ /**
54
+ * Masks a sensitive configuration value.
55
+ */
56
+ export function redactConfigValue(value, replacement = "[REDACTED]") {
57
+ if (value === undefined || value === null || typeof value !== "object") {
58
+ return replacement;
59
+ }
60
+ if (value instanceof Date) {
61
+ return replacement;
62
+ }
63
+ if (Array.isArray(value)) {
64
+ return value.map(() => replacement);
65
+ }
66
+ return replacement;
67
+ }
68
+ /**
69
+ * Creates a safe representation of an entry for logging or
70
+ * diagnostics.
71
+ *
72
+ * Sensitive values are never returned in clear text.
73
+ */
74
+ export function toSafeConfigEntry(entry) {
75
+ if (!entry.sensitive) {
76
+ return entry;
77
+ }
78
+ return createConfigEntry({
79
+ key: entry.key,
80
+ value: redactConfigValue(entry.value),
81
+ source: entry.source,
82
+ sourceType: entry.sourceType,
83
+ priority: entry.priority,
84
+ sensitive: true,
85
+ resolved: entry.resolved,
86
+ createdAt: entry.createdAt,
87
+ });
88
+ }
89
+ /**
90
+ * Converts an entry into a plain serializable object.
91
+ */
92
+ export function serializeConfigEntry(entry) {
93
+ const safeEntry = toSafeConfigEntry(entry);
94
+ return {
95
+ key: safeEntry.key,
96
+ value: safeEntry.value,
97
+ source: safeEntry.source,
98
+ sourceType: safeEntry.sourceType,
99
+ priority: safeEntry.priority,
100
+ sensitive: safeEntry.sensitive,
101
+ resolved: safeEntry.resolved,
102
+ createdAt: safeEntry.createdAt,
103
+ };
104
+ }
105
+ /**
106
+ * Creates a copy of an entry with a different source.
107
+ */
108
+ export function withConfigEntrySource(entry, source, sourceType, priority = entry.priority) {
109
+ return createConfigEntry({
110
+ key: entry.key,
111
+ value: entry.value,
112
+ source,
113
+ sourceType,
114
+ priority,
115
+ sensitive: entry.sensitive,
116
+ resolved: entry.resolved,
117
+ createdAt: entry.createdAt,
118
+ });
119
+ }
120
+ /**
121
+ * Compares two configuration entries.
122
+ *
123
+ * Source metadata is included in the comparison because two entries
124
+ * with the same value can still represent different configuration
125
+ * states.
126
+ */
127
+ export function configEntriesEqual(left, right) {
128
+ return (left.key === right.key &&
129
+ left.source === right.source &&
130
+ left.sourceType === right.sourceType &&
131
+ left.priority === right.priority &&
132
+ left.sensitive === right.sensitive &&
133
+ left.resolved === right.resolved &&
134
+ left.createdAt === right.createdAt &&
135
+ Object.is(left.value, right.value));
136
+ }
137
+ /**
138
+ * Sorts configuration entries by key and then priority.
139
+ */
140
+ export function sortConfigEntries(entries) {
141
+ return [...entries].sort((left, right) => {
142
+ const keyComparison = left.key.localeCompare(right.key);
143
+ if (keyComparison !== 0) {
144
+ return keyComparison;
145
+ }
146
+ return right.priority - left.priority;
147
+ });
148
+ }
149
+ //# sourceMappingURL=configEntry.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configEntry.type.js","sourceRoot":"","sources":["../../src/configEntry/configEntry.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/config/configEntry
3
+ *
4
+ * Configuration entry types and value definitions.
5
+ */
6
+ export * from "./configEntry.type.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configEntry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/config/configEntry
3
+ *
4
+ * Configuration entry types and value definitions.
5
+ */
6
+ export * from "./configEntry.type.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configEntry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { ConfigValue } from "../configValue/configValue.core.js";
2
+ import type { ConfigSchema } from "../configSchema/configSchema.type.js";
3
+ import type { ConfigSource } from "../configSource/configSource.core.js";
4
+ import type { ConfigStore } from "../configStore/configStore.core.js";
5
+ import type { ConfigManagerOptions } from "../configManager/configManager.type.js";
6
+ import type { ConfigManager } from "../configManager/configManager.core.js";
7
+ /**
8
+ * Factory options for creating a configuration manager.
9
+ */
10
+ export interface ConfigFactoryOptions extends ConfigManagerOptions {
11
+ readonly name?: string;
12
+ }
13
+ /**
14
+ * Creates a configuration manager without loading it.
15
+ */
16
+ export declare function createConfiguration(options?: ConfigFactoryOptions): ConfigManager;
17
+ /**
18
+ * Creates and initializes a configuration manager.
19
+ */
20
+ export declare function createInitializedConfiguration(options?: ConfigFactoryOptions): Promise<ConfigManager>;
21
+ /**
22
+ * Creates a configuration manager from initial values.
23
+ */
24
+ export declare function createConfigurationFromValues(values: Readonly<Record<string, ConfigValue>>, options?: Omit<ConfigFactoryOptions, "initialValues">): ConfigManager;
25
+ /**
26
+ * Creates a configuration manager from sources.
27
+ */
28
+ export declare function createConfigurationFromSources(sources: readonly ConfigSource[], options?: Omit<ConfigFactoryOptions, "sources">): ConfigManager;
29
+ /**
30
+ * Creates a configuration manager from an existing store.
31
+ */
32
+ export declare function createConfigurationFromStore(store: ConfigStore, options?: Omit<ConfigFactoryOptions, "store">): ConfigManager;
33
+ /**
34
+ * Creates a configuration manager and validates it against a schema.
35
+ */
36
+ export declare function createValidatedConfiguration<T extends ConfigValue = ConfigValue>(schema: {
37
+ readonly properties: Readonly<Record<string, ConfigSchema>>;
38
+ readonly additionalProperties?: boolean | ConfigSchema;
39
+ }, options?: ConfigFactoryOptions): Promise<{
40
+ readonly manager: ConfigManager;
41
+ readonly config: T;
42
+ }>;
43
+ /**
44
+ * Factory object for dependency injection and application bootstrap.
45
+ */
46
+ export declare const configFactory: Readonly<{
47
+ create: typeof createConfiguration;
48
+ initialize: typeof createInitializedConfiguration;
49
+ fromValues: typeof createConfigurationFromValues;
50
+ fromSources: typeof createConfigurationFromSources;
51
+ fromStore: typeof createConfigurationFromStore;
52
+ validated: typeof createValidatedConfiguration;
53
+ }>;
54
+ //# sourceMappingURL=configFactory.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFactory.core.d.ts","sourceRoot":"","sources":["../../src/configFactory/configFactory.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAO5E;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAEf;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAC7C,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAM,GACxD,aAAa,CAKf;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAM,GAClD,aAAa,CAKf;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAM,GAChD,aAAa,CAKf;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,CAAC,SAAS,WAAW,GAAG,WAAW,EAEnC,MAAM,EAAE;IACN,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CACxD,EACD,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IACT,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB,CAAC,CAeD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;EAYxB,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { createConfigManager, initializeConfigManager, } from "../configManager/configManager.factory.js";
2
+ /**
3
+ * Creates a configuration manager without loading it.
4
+ */
5
+ export function createConfiguration(options = {}) {
6
+ return createConfigManager(options);
7
+ }
8
+ /**
9
+ * Creates and initializes a configuration manager.
10
+ */
11
+ export async function createInitializedConfiguration(options = {}) {
12
+ return initializeConfigManager(options);
13
+ }
14
+ /**
15
+ * Creates a configuration manager from initial values.
16
+ */
17
+ export function createConfigurationFromValues(values, options = {}) {
18
+ return createConfigManager({
19
+ ...options,
20
+ initialValues: values,
21
+ });
22
+ }
23
+ /**
24
+ * Creates a configuration manager from sources.
25
+ */
26
+ export function createConfigurationFromSources(sources, options = {}) {
27
+ return createConfigManager({
28
+ ...options,
29
+ sources,
30
+ });
31
+ }
32
+ /**
33
+ * Creates a configuration manager from an existing store.
34
+ */
35
+ export function createConfigurationFromStore(store, options = {}) {
36
+ return createConfigManager({
37
+ ...options,
38
+ store,
39
+ });
40
+ }
41
+ /**
42
+ * Creates a configuration manager and validates it against a schema.
43
+ */
44
+ export async function createValidatedConfiguration(schema, options = {}) {
45
+ const manager = await createInitializedConfiguration(options);
46
+ try {
47
+ const config = manager.validate(schema);
48
+ return {
49
+ manager,
50
+ config,
51
+ };
52
+ }
53
+ catch (error) {
54
+ await manager.dispose();
55
+ throw error;
56
+ }
57
+ }
58
+ /**
59
+ * Factory object for dependency injection and application bootstrap.
60
+ */
61
+ export const configFactory = Object.freeze({
62
+ create: createConfiguration,
63
+ initialize: createInitializedConfiguration,
64
+ fromValues: createConfigurationFromValues,
65
+ fromSources: createConfigurationFromSources,
66
+ fromStore: createConfigurationFromStore,
67
+ validated: createValidatedConfiguration,
68
+ });
69
+ //# sourceMappingURL=configFactory.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFactory.core.js","sourceRoot":"","sources":["../../src/configFactory/configFactory.core.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,2CAA2C,CAAC;AASnD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAO,GAAyB,EAAE;IAElC,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAAO,GAAyB,EAAE;IAElC,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAA6C,EAC7C,OAAO,GAAgD,EAAE;IAEzD,OAAO,mBAAmB,CAAC;QACzB,GAAG,OAAO;QACV,aAAa,EAAE,MAAM;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAgC,EAChC,OAAO,GAA0C,EAAE;IAEnD,OAAO,mBAAmB,CAAC;QACzB,GAAG,OAAO;QACV,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAAkB,EAClB,OAAO,GAAwC,EAAE;IAEjD,OAAO,mBAAmB,CAAC;QACzB,GAAG,OAAO;QACV,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAGhD,MAGC,EACD,OAAO,GAAyB,EAAE;IAKlC,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAI,MAAM,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO;YACP,MAAM;SACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAExB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,mBAAmB;IAE3B,UAAU,EAAE,8BAA8B;IAE1C,UAAU,EAAE,6BAA6B;IAEzC,WAAW,EAAE,8BAA8B;IAE3C,SAAS,EAAE,4BAA4B;IAEvC,SAAS,EAAE,4BAA4B;CACxC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/config/configFactory
3
+ *
4
+ * Factory functions for creating configuration instances.
5
+ */
6
+ export * from "./configFactory.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configFactory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/config/configFactory
3
+ *
4
+ * Factory functions for creating configuration instances.
5
+ */
6
+ export * from "./configFactory.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configFactory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,121 @@
1
+ import type { ConfigEntry } from "../configEntry/configEntry.type.js";
2
+ import type { ConfigSource, ConfigSourceContext, ConfigSourceResult } from "../configSource/configSource.core.js";
3
+ import type { ConfigStore } from "../configStore/configStore.core.js";
4
+ /**
5
+ * Options controlling configuration loading.
6
+ */
7
+ export interface ConfigLoaderOptions {
8
+ readonly sources?: readonly ConfigSource[];
9
+ readonly context?: ConfigSourceContext;
10
+ readonly store?: ConfigStore;
11
+ readonly freeze?: boolean;
12
+ readonly clearStore?: boolean;
13
+ readonly onSourceLoaded?: (source: ConfigSource, result: ConfigSourceResult) => void | Promise<void>;
14
+ readonly onSourceError?: (source: ConfigSource, error: unknown) => void | Promise<void>;
15
+ }
16
+ /**
17
+ * Result returned after configuration loading.
18
+ */
19
+ export interface ConfigLoadResult {
20
+ readonly store: ConfigStore;
21
+ readonly entries: readonly ConfigEntry[];
22
+ readonly sources: readonly ConfigSourceResult[];
23
+ readonly loadedAt: number;
24
+ }
25
+ /**
26
+ * Configuration loader.
27
+ *
28
+ * Sources are loaded in priority order and their values are resolved
29
+ * into a single ConfigStore. Higher-priority sources win.
30
+ */
31
+ export declare class ConfigLoader {
32
+ private readonly sources;
33
+ private readonly context;
34
+ private readonly store;
35
+ private readonly onSourceLoaded?;
36
+ private readonly onSourceError?;
37
+ private readonly clearStore;
38
+ private loading;
39
+ private loaded;
40
+ private disposed;
41
+ private lastResult?;
42
+ constructor(options?: ConfigLoaderOptions);
43
+ /**
44
+ * Returns the underlying configuration store.
45
+ */
46
+ getStore(): ConfigStore;
47
+ /**
48
+ * Returns the configured sources.
49
+ */
50
+ getSources(): readonly ConfigSource[];
51
+ /**
52
+ * Returns whether configuration has been loaded.
53
+ */
54
+ get isLoaded(): boolean;
55
+ /**
56
+ * Returns whether configuration is currently loading.
57
+ */
58
+ get isLoading(): boolean;
59
+ /**
60
+ * Returns the previous load result.
61
+ */
62
+ get lastLoadResult(): ConfigLoadResult | undefined;
63
+ /**
64
+ * Loads all configured sources.
65
+ */
66
+ load(): Promise<ConfigLoadResult>;
67
+ /**
68
+ * Reloads configuration.
69
+ *
70
+ * The current store is replaced with freshly loaded values.
71
+ */
72
+ reload(): Promise<ConfigLoadResult>;
73
+ /**
74
+ * Loads only selected sources.
75
+ */
76
+ loadSources(sources: readonly ConfigSource[]): Promise<ConfigLoadResult>;
77
+ /**
78
+ * Adds a source to the loader.
79
+ */
80
+ addSource(source: ConfigSource): void;
81
+ /**
82
+ * Removes a source by name.
83
+ */
84
+ removeSource(name: string): boolean;
85
+ /**
86
+ * Finds a source by name.
87
+ */
88
+ getSource(name: string): ConfigSource | undefined;
89
+ /**
90
+ * Disposes the loader and its source resources.
91
+ */
92
+ dispose(): Promise<void>;
93
+ /**
94
+ * Detaches this loader from its source lifecycle.
95
+ *
96
+ * Useful for temporary loaders sharing an existing store.
97
+ */
98
+ private detach;
99
+ /**
100
+ * Applies one source to the configuration store.
101
+ *
102
+ * Sources are processed from highest to lowest priority. Existing
103
+ * values are therefore retained when a lower-priority source
104
+ * attempts to replace them.
105
+ */
106
+ private applySource;
107
+ private assertActive;
108
+ }
109
+ /**
110
+ * Creates a configuration loader.
111
+ */
112
+ export declare function createConfigLoader(options?: ConfigLoaderOptions): ConfigLoader;
113
+ /**
114
+ * Loads configuration directly from a collection of sources.
115
+ */
116
+ export declare function loadConfiguration(sources: readonly ConfigSource[], options?: Omit<ConfigLoaderOptions, "sources">): Promise<ConfigLoadResult>;
117
+ /**
118
+ * Converts loaded source results into configuration entries.
119
+ */
120
+ export declare function sourceResultsToEntries(results: readonly ConfigSourceResult[], sources: readonly ConfigSource[]): readonly ConfigEntry[];
121
+ //# sourceMappingURL=configLoader.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configLoader.core.d.ts","sourceRoot":"","sources":["../../src/configLoader/configLoader.core.ts"],"names":[],"mappings":"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"}