@kb-labs/core-config 1.2.0 → 1.3.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.
- package/dist/index.d.ts +1016 -25
- package/dist/index.js +1533 -29
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/__tests__/cache.spec.d.ts +0 -6
- package/dist/__tests__/cache.spec.d.ts.map +0 -1
- package/dist/__tests__/cache.spec.js +0 -87
- package/dist/__tests__/cache.spec.js.map +0 -1
- package/dist/__tests__/fs-atomic.spec.d.ts +0 -6
- package/dist/__tests__/fs-atomic.spec.d.ts.map +0 -1
- package/dist/__tests__/fs-atomic.spec.js +0 -153
- package/dist/__tests__/fs-atomic.spec.js.map +0 -1
- package/dist/__tests__/get-product-config-edge-cases.spec.d.ts +0 -6
- package/dist/__tests__/get-product-config-edge-cases.spec.d.ts.map +0 -1
- package/dist/__tests__/get-product-config-edge-cases.spec.js +0 -334
- package/dist/__tests__/get-product-config-edge-cases.spec.js.map +0 -1
- package/dist/__tests__/init-workspace.spec.d.ts +0 -6
- package/dist/__tests__/init-workspace.spec.d.ts.map +0 -1
- package/dist/__tests__/init-workspace.spec.js +0 -101
- package/dist/__tests__/init-workspace.spec.js.map +0 -1
- package/dist/__tests__/kb-error.spec.d.ts +0 -6
- package/dist/__tests__/kb-error.spec.d.ts.map +0 -1
- package/dist/__tests__/kb-error.spec.js +0 -193
- package/dist/__tests__/kb-error.spec.js.map +0 -1
- package/dist/__tests__/preset-lockfile.spec.d.ts +0 -6
- package/dist/__tests__/preset-lockfile.spec.d.ts.map +0 -1
- package/dist/__tests__/preset-lockfile.spec.js +0 -142
- package/dist/__tests__/preset-lockfile.spec.js.map +0 -1
- package/dist/__tests__/product-config-profiles.spec.d.ts +0 -6
- package/dist/__tests__/product-config-profiles.spec.d.ts.map +0 -1
- package/dist/__tests__/product-config-profiles.spec.js +0 -82
- package/dist/__tests__/product-config-profiles.spec.js.map +0 -1
- package/dist/__tests__/product-config.spec.d.ts +0 -6
- package/dist/__tests__/product-config.spec.d.ts.map +0 -1
- package/dist/__tests__/product-config.spec.js +0 -304
- package/dist/__tests__/product-config.spec.js.map +0 -1
- package/dist/__tests__/profiles-demo.d.ts +0 -11
- package/dist/__tests__/profiles-demo.d.ts.map +0 -1
- package/dist/__tests__/profiles-demo.js +0 -173
- package/dist/__tests__/profiles-demo.js.map +0 -1
- package/dist/__tests__/profiles-resolver.spec.d.ts +0 -2
- package/dist/__tests__/profiles-resolver.spec.d.ts.map +0 -1
- package/dist/__tests__/profiles-resolver.spec.js +0 -114
- package/dist/__tests__/profiles-resolver.spec.js.map +0 -1
- package/dist/__tests__/profiles-section.spec.d.ts +0 -2
- package/dist/__tests__/profiles-section.spec.d.ts.map +0 -1
- package/dist/__tests__/profiles-section.spec.js +0 -50
- package/dist/__tests__/profiles-section.spec.js.map +0 -1
- package/dist/__tests__/runtime.spec.d.ts +0 -2
- package/dist/__tests__/runtime.spec.d.ts.map +0 -1
- package/dist/__tests__/runtime.spec.js +0 -170
- package/dist/__tests__/runtime.spec.js.map +0 -1
- package/dist/__tests__/upsert-lockfile.spec.d.ts +0 -1
- package/dist/__tests__/upsert-lockfile.spec.d.ts.map +0 -1
- package/dist/__tests__/upsert-lockfile.spec.js +0 -2
- package/dist/__tests__/upsert-lockfile.spec.js.map +0 -1
- package/dist/__tests__/validate-config.spec.d.ts +0 -2
- package/dist/__tests__/validate-config.spec.d.ts.map +0 -1
- package/dist/__tests__/validate-config.spec.js +0 -14
- package/dist/__tests__/validate-config.spec.js.map +0 -1
- package/dist/api/init-workspace.d.ts +0 -10
- package/dist/api/init-workspace.d.ts.map +0 -1
- package/dist/api/init-workspace.js +0 -186
- package/dist/api/init-workspace.js.map +0 -1
- package/dist/api/product-config.d.ts +0 -20
- package/dist/api/product-config.d.ts.map +0 -1
- package/dist/api/product-config.js +0 -236
- package/dist/api/product-config.js.map +0 -1
- package/dist/api/read-config.d.ts +0 -22
- package/dist/api/read-config.d.ts.map +0 -1
- package/dist/api/read-config.js +0 -112
- package/dist/api/read-config.js.map +0 -1
- package/dist/api/read-kb-config.d.ts +0 -12
- package/dist/api/read-kb-config.d.ts.map +0 -1
- package/dist/api/read-kb-config.js +0 -47
- package/dist/api/read-kb-config.js.map +0 -1
- package/dist/api/upsert-lockfile.d.ts +0 -10
- package/dist/api/upsert-lockfile.d.ts.map +0 -1
- package/dist/api/upsert-lockfile.js +0 -63
- package/dist/api/upsert-lockfile.js.map +0 -1
- package/dist/cache/fs-cache.d.ts +0 -38
- package/dist/cache/fs-cache.d.ts.map +0 -1
- package/dist/cache/fs-cache.js +0 -142
- package/dist/cache/fs-cache.js.map +0 -1
- package/dist/errors/kb-error.d.ts +0 -35
- package/dist/errors/kb-error.d.ts.map +0 -1
- package/dist/errors/kb-error.js +0 -57
- package/dist/errors/kb-error.js.map +0 -1
- package/dist/hash/config-hash.d.ts +0 -17
- package/dist/hash/config-hash.d.ts.map +0 -1
- package/dist/hash/config-hash.js +0 -55
- package/dist/hash/config-hash.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lockfile/lockfile.d.ts +0 -53
- package/dist/lockfile/lockfile.d.ts.map +0 -1
- package/dist/lockfile/lockfile.js +0 -142
- package/dist/lockfile/lockfile.js.map +0 -1
- package/dist/merge/layered-merge.d.ts +0 -16
- package/dist/merge/layered-merge.d.ts.map +0 -1
- package/dist/merge/layered-merge.js +0 -87
- package/dist/merge/layered-merge.js.map +0 -1
- package/dist/preset/resolve-preset.d.ts +0 -28
- package/dist/preset/resolve-preset.d.ts.map +0 -1
- package/dist/preset/resolve-preset.js +0 -104
- package/dist/preset/resolve-preset.js.map +0 -1
- package/dist/profiles/loader.d.ts +0 -12
- package/dist/profiles/loader.d.ts.map +0 -1
- package/dist/profiles/loader.js +0 -34
- package/dist/profiles/loader.js.map +0 -1
- package/dist/profiles/resolver.d.ts +0 -11
- package/dist/profiles/resolver.d.ts.map +0 -1
- package/dist/profiles/resolver.js +0 -252
- package/dist/profiles/resolver.js.map +0 -1
- package/dist/profiles/scope-selector.d.ts +0 -19
- package/dist/profiles/scope-selector.d.ts.map +0 -1
- package/dist/profiles/scope-selector.js +0 -64
- package/dist/profiles/scope-selector.js.map +0 -1
- package/dist/profiles/types.d.ts +0 -462
- package/dist/profiles/types.d.ts.map +0 -1
- package/dist/profiles/types.js +0 -68
- package/dist/profiles/types.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -2
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -2
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/runtime.d.ts +0 -46
- package/dist/runtime/runtime.d.ts.map +0 -1
- package/dist/runtime/runtime.js +0 -126
- package/dist/runtime/runtime.js.map +0 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/init.d.ts +0 -33
- package/dist/types/init.d.ts.map +0 -1
- package/dist/types/init.js +0 -6
- package/dist/types/init.js.map +0 -1
- package/dist/types/preset.d.ts +0 -27
- package/dist/types/preset.d.ts.map +0 -1
- package/dist/types/preset.js +0 -6
- package/dist/types/preset.js.map +0 -1
- package/dist/types/types.d.ts +0 -70
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/types.js +0 -2
- package/dist/types/types.js.map +0 -1
- package/dist/utils/__tests__/env.spec.d.ts +0 -2
- package/dist/utils/__tests__/env.spec.d.ts.map +0 -1
- package/dist/utils/__tests__/env.spec.js +0 -33
- package/dist/utils/__tests__/env.spec.js.map +0 -1
- package/dist/utils/env.d.ts +0 -7
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -25
- package/dist/utils/env.js.map +0 -1
- package/dist/utils/fs-atomic.d.ts +0 -15
- package/dist/utils/fs-atomic.d.ts.map +0 -1
- package/dist/utils/fs-atomic.js +0 -46
- package/dist/utils/fs-atomic.js.map +0 -1
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -3
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/paths.d.ts +0 -21
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js +0 -32
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/product-normalize.d.ts +0 -25
- package/dist/utils/product-normalize.d.ts.map +0 -1
- package/dist/utils/product-normalize.js +0 -48
- package/dist/utils/product-normalize.js.map +0 -1
- package/dist/validation/validate-config.d.ts +0 -10
- package/dist/validation/validate-config.d.ts.map +0 -1
- package/dist/validation/validate-config.js +0 -21
- package/dist/validation/validate-config.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layered-merge.js","sourceRoot":"","sources":["../../src/merge/layered-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core/config/preset/resolve-preset
|
|
3
|
-
* Org preset resolution with offline-first npm package loading
|
|
4
|
-
*/
|
|
5
|
-
export interface PresetInfo {
|
|
6
|
-
name: string;
|
|
7
|
-
version: string;
|
|
8
|
-
path: string;
|
|
9
|
-
config: any;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Resolve org preset package (offline-first)
|
|
13
|
-
*/
|
|
14
|
-
export declare function resolvePreset(presetRef: string, cwd: string): Promise<PresetInfo>;
|
|
15
|
-
/**
|
|
16
|
-
* Get preset config for a specific product
|
|
17
|
-
*/
|
|
18
|
-
export declare function getPresetConfigForProduct(preset: PresetInfo, product: string): any;
|
|
19
|
-
/**
|
|
20
|
-
* Get preset metadata
|
|
21
|
-
*/
|
|
22
|
-
export declare function getPresetMetadata(preset: PresetInfo): {
|
|
23
|
-
name: string;
|
|
24
|
-
version: string;
|
|
25
|
-
path: string;
|
|
26
|
-
products: string[];
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=resolve-preset.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-preset.d.ts","sourceRoot":"","sources":["../../src/preset/resolve-preset.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CAuBrB;AAkFD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GACd,GAAG,CAGL;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAOA"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core/config/preset/resolve-preset
|
|
3
|
-
* Org preset resolution with offline-first npm package loading
|
|
4
|
-
*/
|
|
5
|
-
import { promises as fsp } from 'node:fs';
|
|
6
|
-
import path from 'node:path';
|
|
7
|
-
import { KbError, ERROR_HINTS } from '../errors/kb-error';
|
|
8
|
-
import { toFsProduct } from '../utils/product-normalize';
|
|
9
|
-
/**
|
|
10
|
-
* Resolve org preset package (offline-first)
|
|
11
|
-
*/
|
|
12
|
-
export async function resolvePreset(presetRef, cwd) {
|
|
13
|
-
// Parse preset reference (e.g., "@kb-labs/org-preset@1.3.2")
|
|
14
|
-
const [name, version] = parsePresetRef(presetRef);
|
|
15
|
-
// Try local node_modules first (offline-first)
|
|
16
|
-
const localPath = path.join(cwd, 'node_modules', name);
|
|
17
|
-
try {
|
|
18
|
-
const presetInfo = await loadPresetFromPath(localPath, name, version);
|
|
19
|
-
if (presetInfo) {
|
|
20
|
-
return presetInfo;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
// Local preset not found, continue to network resolution
|
|
25
|
-
}
|
|
26
|
-
// Try network resolution (this would be implemented with npm/pnpm APIs)
|
|
27
|
-
// For now, we'll throw an error if local resolution fails
|
|
28
|
-
throw new KbError('ERR_PRESET_NOT_RESOLVED', `Preset not found: ${presetRef}`, ERROR_HINTS.ERR_PRESET_NOT_RESOLVED, { presetRef, cwd });
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Parse preset reference into name and version
|
|
32
|
-
*/
|
|
33
|
-
function parsePresetRef(presetRef) {
|
|
34
|
-
const atIndex = presetRef.lastIndexOf('@');
|
|
35
|
-
if (atIndex === -1) {
|
|
36
|
-
throw new KbError('ERR_PRESET_REF_INVALID', `Invalid preset reference: ${presetRef}`, 'Preset references must include version (e.g., @kb-labs/org-preset@1.3.2)', { presetRef });
|
|
37
|
-
}
|
|
38
|
-
const name = presetRef.substring(0, atIndex);
|
|
39
|
-
const version = presetRef.substring(atIndex + 1);
|
|
40
|
-
if (!name || !version) {
|
|
41
|
-
throw new KbError('ERR_PRESET_REF_INVALID', `Invalid preset reference: ${presetRef}`, 'Preset references must include both name and version', { presetRef });
|
|
42
|
-
}
|
|
43
|
-
return [name, version];
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Load preset from local path
|
|
47
|
-
*/
|
|
48
|
-
async function loadPresetFromPath(presetPath, name, version) {
|
|
49
|
-
try {
|
|
50
|
-
// Check if preset directory exists
|
|
51
|
-
await fsp.access(presetPath);
|
|
52
|
-
// Load package.json to verify version
|
|
53
|
-
const packageJsonPath = path.join(presetPath, 'package.json');
|
|
54
|
-
const packageJson = JSON.parse(await fsp.readFile(packageJsonPath, 'utf-8'));
|
|
55
|
-
// Verify version matches (supports semver ranges)
|
|
56
|
-
if (!versionMatches(packageJson.version, version)) {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
// Load preset config
|
|
60
|
-
const configPath = path.join(presetPath, 'config.defaults.json');
|
|
61
|
-
const config = JSON.parse(await fsp.readFile(configPath, 'utf-8'));
|
|
62
|
-
return {
|
|
63
|
-
name,
|
|
64
|
-
version: packageJson.version,
|
|
65
|
-
path: presetPath,
|
|
66
|
-
config,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Check if version matches (simple semver range support)
|
|
75
|
-
*/
|
|
76
|
-
function versionMatches(actualVersion, requiredVersion) {
|
|
77
|
-
// Simple exact match for now
|
|
78
|
-
// TODO: Implement proper semver range matching
|
|
79
|
-
if (requiredVersion.startsWith('^')) {
|
|
80
|
-
const major = requiredVersion.substring(1).split('.')[0];
|
|
81
|
-
const actualMajor = actualVersion.split('.')[0];
|
|
82
|
-
return major === actualMajor;
|
|
83
|
-
}
|
|
84
|
-
return actualVersion === requiredVersion;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get preset config for a specific product
|
|
88
|
-
*/
|
|
89
|
-
export function getPresetConfigForProduct(preset, product) {
|
|
90
|
-
const fsProduct = toFsProduct(product);
|
|
91
|
-
return preset.config.products?.[fsProduct] || {};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get preset metadata
|
|
95
|
-
*/
|
|
96
|
-
export function getPresetMetadata(preset) {
|
|
97
|
-
return {
|
|
98
|
-
name: preset.name,
|
|
99
|
-
version: preset.version,
|
|
100
|
-
path: preset.path,
|
|
101
|
-
products: Object.keys(preset.config.products || {}),
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=resolve-preset.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-preset.js","sourceRoot":"","sources":["../../src/preset/resolve-preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core-config/profiles/loader
|
|
3
|
-
* Load + validate profiles[] section from kb.config.*
|
|
4
|
-
*/
|
|
5
|
-
import { type ProfileV2 } from './types';
|
|
6
|
-
export interface ProfilesSectionResult {
|
|
7
|
-
profiles: ProfileV2[];
|
|
8
|
-
sourcePath?: string;
|
|
9
|
-
format?: 'json' | 'yaml';
|
|
10
|
-
}
|
|
11
|
-
export declare function readProfilesSection(cwd: string): Promise<ProfilesSectionResult>;
|
|
12
|
-
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/profiles/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAEL,KAAK,SAAS,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkCrF"}
|
package/dist/profiles/loader.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core-config/profiles/loader
|
|
3
|
-
* Load + validate profiles[] section from kb.config.*
|
|
4
|
-
*/
|
|
5
|
-
import { KbError, ERROR_HINTS } from '../errors/kb-error';
|
|
6
|
-
import { readKbConfig } from '../api/read-kb-config';
|
|
7
|
-
import { ProfilesV2Schema, } from './types';
|
|
8
|
-
export async function readProfilesSection(cwd) {
|
|
9
|
-
const kbConfig = await readKbConfig(cwd);
|
|
10
|
-
if (!kbConfig?.data) {
|
|
11
|
-
return { profiles: [] };
|
|
12
|
-
}
|
|
13
|
-
const rawProfiles = kbConfig.data?.profiles;
|
|
14
|
-
if (rawProfiles === undefined) {
|
|
15
|
-
return {
|
|
16
|
-
profiles: [],
|
|
17
|
-
sourcePath: kbConfig.path,
|
|
18
|
-
format: kbConfig.format,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
const parsed = ProfilesV2Schema.safeParse(rawProfiles);
|
|
22
|
-
if (!parsed.success) {
|
|
23
|
-
throw new KbError('ERR_PROFILE_INVALID_FORMAT', 'Invalid profiles[] section in kb.config.', ERROR_HINTS.ERR_PROFILE_INVALID_FORMAT, {
|
|
24
|
-
issues: parsed.error.issues,
|
|
25
|
-
sourcePath: kbConfig.path,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
profiles: parsed.data,
|
|
30
|
-
sourcePath: kbConfig.path,
|
|
31
|
-
format: kbConfig.format,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/profiles/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,gBAAgB,GAEjB,MAAM,SAAS,CAAC;AAQjB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,WAAW,GAAI,QAAQ,CAAC,IAAY,EAAE,QAAQ,CAAC;IAErD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,QAAQ,CAAC,IAAI;YACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,OAAO,CACf,4BAA4B,EAC5B,0CAA0C,EAC1C,WAAW,CAAC,0BAA0B,EACtC;YACE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC3B,UAAU,EAAE,QAAQ,CAAC,IAAI;SAC1B,CACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,UAAU,EAAE,QAAQ,CAAC,IAAI;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core-config/profiles/resolver
|
|
3
|
-
* Resolve ProfileV2 definitions with extends/merge semantics.
|
|
4
|
-
*/
|
|
5
|
-
import type { BundleProfile } from './types';
|
|
6
|
-
export interface ResolveProfileOptions {
|
|
7
|
-
cwd: string;
|
|
8
|
-
profileId: string;
|
|
9
|
-
}
|
|
10
|
-
export declare function resolveProfile(opts: ResolveProfileOptions): Promise<BundleProfile>;
|
|
11
|
-
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/profiles/resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,aAAa,EAIL,MAAM,SAAS,CAAC;AAuB1B,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,aAAa,CAAC,CA2CxB"}
|
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core-config/profiles/resolver
|
|
3
|
-
* Resolve ProfileV2 definitions with extends/merge semantics.
|
|
4
|
-
*/
|
|
5
|
-
import path from 'node:path';
|
|
6
|
-
import { createRequire } from 'node:module';
|
|
7
|
-
import { promises as fsp } from 'node:fs';
|
|
8
|
-
import { ProfilesV2Schema } from './types';
|
|
9
|
-
import { readProfilesSection } from './loader';
|
|
10
|
-
import { readConfigFile } from '../api/read-config';
|
|
11
|
-
import { KbError, ERROR_HINTS } from '../errors/kb-error';
|
|
12
|
-
const requireFromHere = createRequire(import.meta.url);
|
|
13
|
-
function clone(value) {
|
|
14
|
-
if (typeof structuredClone === 'function') {
|
|
15
|
-
return structuredClone(value);
|
|
16
|
-
}
|
|
17
|
-
return JSON.parse(JSON.stringify(value));
|
|
18
|
-
}
|
|
19
|
-
export async function resolveProfile(opts) {
|
|
20
|
-
const localProfilesResult = await readProfilesSection(opts.cwd);
|
|
21
|
-
const localProfiles = localProfilesResult.profiles;
|
|
22
|
-
const localPath = localProfilesResult.sourcePath;
|
|
23
|
-
const profileMap = new Map(localProfiles.map((p) => [p.id, p]));
|
|
24
|
-
const cache = new Map();
|
|
25
|
-
if (localPath) {
|
|
26
|
-
for (const profile of localProfiles) {
|
|
27
|
-
cache.set(profile.id, {
|
|
28
|
-
profile: clone(profile),
|
|
29
|
-
source: 'workspace',
|
|
30
|
-
sourcePath: localPath,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
const chain = await resolveProfileChain(opts.profileId, cache, profileMap, opts.cwd, new Set());
|
|
35
|
-
if (chain.length === 0) {
|
|
36
|
-
throw new KbError('ERR_PROFILE_NOT_DEFINED', `Profile "${opts.profileId}" not found`, ERROR_HINTS.ERR_PROFILE_NOT_DEFINED, {
|
|
37
|
-
profileId: opts.profileId,
|
|
38
|
-
available: Array.from(profileMap.keys()),
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
const bundleProfile = mergeProfileChain(chain);
|
|
42
|
-
const productsByScope = buildScopeProductMap(bundleProfile, chain);
|
|
43
|
-
bundleProfile.productsByScope = productsByScope;
|
|
44
|
-
return bundleProfile;
|
|
45
|
-
}
|
|
46
|
-
async function resolveProfileChain(reference, cache, localProfiles, cwd, seen) {
|
|
47
|
-
const key = reference;
|
|
48
|
-
if (seen.has(key)) {
|
|
49
|
-
throw new KbError('ERR_PROFILE_EXTENDS_FAILED', `Circular profile extends detected at "${reference}"`, ERROR_HINTS.ERR_PROFILE_EXTENDS_FAILED, { reference, chain: Array.from(seen) });
|
|
50
|
-
}
|
|
51
|
-
seen.add(key);
|
|
52
|
-
let layer = cache.get(reference);
|
|
53
|
-
if (!layer) {
|
|
54
|
-
if (localProfiles.has(reference)) {
|
|
55
|
-
layer = {
|
|
56
|
-
profile: clone(localProfiles.get(reference)),
|
|
57
|
-
source: 'workspace',
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
else if (isPackageReference(reference)) {
|
|
61
|
-
layer = await loadPackageProfile(reference, cwd);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
throw new KbError('ERR_PROFILE_NOT_DEFINED', `Profile "${reference}" not found`, ERROR_HINTS.ERR_PROFILE_NOT_DEFINED, { reference, available: Array.from(localProfiles.keys()) });
|
|
65
|
-
}
|
|
66
|
-
cache.set(reference, layer);
|
|
67
|
-
}
|
|
68
|
-
const result = [];
|
|
69
|
-
if (layer.profile.extends) {
|
|
70
|
-
const parentChain = await resolveProfileChain(layer.profile.extends, cache, localProfiles, cwd, seen);
|
|
71
|
-
result.push(...parentChain);
|
|
72
|
-
}
|
|
73
|
-
result.push(layer);
|
|
74
|
-
seen.delete(key);
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
function mergeProfileChain(chain) {
|
|
78
|
-
const mergedProducts = {};
|
|
79
|
-
let mergedMeta;
|
|
80
|
-
let mergedLabel;
|
|
81
|
-
let mergedDescription;
|
|
82
|
-
let mergedVersion;
|
|
83
|
-
let scopes = [];
|
|
84
|
-
let scopesDefined = false;
|
|
85
|
-
for (const layer of chain) {
|
|
86
|
-
const profile = layer.profile;
|
|
87
|
-
mergedLabel = profile.label ?? mergedLabel;
|
|
88
|
-
mergedDescription = profile.description ?? mergedDescription;
|
|
89
|
-
mergedVersion = profile.meta?.version ?? mergedVersion;
|
|
90
|
-
mergedMeta = mergeMeta(mergedMeta, profile.meta);
|
|
91
|
-
if (profile.products) {
|
|
92
|
-
for (const [productKey, overrides] of Object.entries(profile.products)) {
|
|
93
|
-
if (!matchedProductOverrides(overrides)) {
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
const target = (mergedProducts[productKey] ??= {});
|
|
97
|
-
Object.assign(target, clone(overrides));
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (profile.scopes && profile.scopes.length > 0) {
|
|
101
|
-
scopes = clone(profile.scopes);
|
|
102
|
-
scopesDefined = true;
|
|
103
|
-
}
|
|
104
|
-
else if (!scopesDefined && profile.scopes) {
|
|
105
|
-
scopes = clone(profile.scopes);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
const finalLayer = chain[chain.length - 1];
|
|
109
|
-
if (!finalLayer) {
|
|
110
|
-
throw new KbError('ERR_PROFILE_NOT_DEFINED', 'Profile chain is empty', ERROR_HINTS.ERR_PROFILE_NOT_DEFINED);
|
|
111
|
-
}
|
|
112
|
-
const finalId = finalLayer.profile.id;
|
|
113
|
-
const finalSource = finalLayer.source;
|
|
114
|
-
const bundleProfile = {
|
|
115
|
-
id: finalId,
|
|
116
|
-
key: finalId,
|
|
117
|
-
label: mergedLabel,
|
|
118
|
-
name: mergedLabel ?? finalId,
|
|
119
|
-
version: mergedVersion,
|
|
120
|
-
source: finalSource,
|
|
121
|
-
scopes: scopes.map((scope) => ({
|
|
122
|
-
id: scope.id,
|
|
123
|
-
label: scope.label,
|
|
124
|
-
description: scope.description,
|
|
125
|
-
include: scope.include,
|
|
126
|
-
exclude: scope.exclude,
|
|
127
|
-
isDefault: !!scope.default,
|
|
128
|
-
products: scope.products ? clone(scope.products) : undefined,
|
|
129
|
-
})),
|
|
130
|
-
products: Object.keys(mergedProducts).length ? mergedProducts : undefined,
|
|
131
|
-
trace: buildTrace(chain),
|
|
132
|
-
meta: mergedMeta,
|
|
133
|
-
productsByScope: {},
|
|
134
|
-
};
|
|
135
|
-
return bundleProfile;
|
|
136
|
-
}
|
|
137
|
-
function buildScopeProductMap(bundleProfile, chain) {
|
|
138
|
-
const map = {};
|
|
139
|
-
for (const scope of bundleProfile.scopes) {
|
|
140
|
-
map[scope.id] = {};
|
|
141
|
-
for (const layer of chain) {
|
|
142
|
-
const matchingScope = layer.profile.scopes?.find((s) => s.id === scope.id);
|
|
143
|
-
if (!matchingScope?.products) {
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
for (const [productKey, overrides] of Object.entries(matchingScope.products)) {
|
|
147
|
-
if (!matchedProductOverrides(overrides)) {
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
const scopeMap = map[scope.id];
|
|
151
|
-
if (!scopeMap) {
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
const target = scopeMap[productKey];
|
|
155
|
-
if (!target) {
|
|
156
|
-
scopeMap[productKey] = clone(overrides);
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
Object.assign(target, clone(overrides));
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
return map;
|
|
165
|
-
}
|
|
166
|
-
function matchedProductOverrides(overrides) {
|
|
167
|
-
return overrides !== null && typeof overrides === 'object';
|
|
168
|
-
}
|
|
169
|
-
function buildTrace(chain) {
|
|
170
|
-
if (chain.length <= 1) {
|
|
171
|
-
return undefined;
|
|
172
|
-
}
|
|
173
|
-
const extendsList = chain
|
|
174
|
-
.slice(0, -1)
|
|
175
|
-
.map((layer) => {
|
|
176
|
-
// For npm packages, source is already in format "npm:package#profile"
|
|
177
|
-
if (typeof layer.source === 'string' && layer.source.startsWith('npm:')) {
|
|
178
|
-
return layer.source;
|
|
179
|
-
}
|
|
180
|
-
// For workspace profiles, use source:profileId format
|
|
181
|
-
return `${layer.source}:${layer.profile.id}`;
|
|
182
|
-
});
|
|
183
|
-
return {
|
|
184
|
-
extends: extendsList,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
function mergeMeta(existing, next) {
|
|
188
|
-
if (!next) {
|
|
189
|
-
return existing ? structuredClone(existing) : undefined;
|
|
190
|
-
}
|
|
191
|
-
if (!existing) {
|
|
192
|
-
return structuredClone(next);
|
|
193
|
-
}
|
|
194
|
-
return { ...existing, ...clone(next) };
|
|
195
|
-
}
|
|
196
|
-
function isPackageReference(ref) {
|
|
197
|
-
return ref.includes('/') || ref.startsWith('@');
|
|
198
|
-
}
|
|
199
|
-
function parsePackageReference(ref) {
|
|
200
|
-
const [pkg, profileId] = ref.split('#');
|
|
201
|
-
return {
|
|
202
|
-
packageName: pkg || '',
|
|
203
|
-
profileId: profileId || 'default',
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
async function loadPackageProfile(ref, cwd) {
|
|
207
|
-
const { packageName, profileId } = parsePackageReference(ref);
|
|
208
|
-
let pkgJsonPath;
|
|
209
|
-
try {
|
|
210
|
-
pkgJsonPath = requireFromHere.resolve(`${packageName}/package.json`, {
|
|
211
|
-
paths: [cwd],
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
215
|
-
throw new KbError('ERR_PROFILE_EXTENDS_FAILED', `Cannot resolve package "${packageName}" for profile extends`, ERROR_HINTS.ERR_PROFILE_EXTENDS_FAILED, { reference: ref });
|
|
216
|
-
}
|
|
217
|
-
const pkgDir = path.dirname(pkgJsonPath);
|
|
218
|
-
const candidateConfigs = [
|
|
219
|
-
'kb.config.json',
|
|
220
|
-
'kb.config.yaml',
|
|
221
|
-
'kb.config.yml',
|
|
222
|
-
path.join('config', 'kb.config.json'),
|
|
223
|
-
path.join('config', 'kb.config.yaml'),
|
|
224
|
-
path.join('config', 'kb.config.yml'),
|
|
225
|
-
];
|
|
226
|
-
for (const candidate of candidateConfigs) {
|
|
227
|
-
const fullPath = path.join(pkgDir, candidate);
|
|
228
|
-
try {
|
|
229
|
-
await fsp.access(fullPath);
|
|
230
|
-
}
|
|
231
|
-
catch {
|
|
232
|
-
continue;
|
|
233
|
-
}
|
|
234
|
-
const config = await readConfigFile(fullPath);
|
|
235
|
-
const profiles = config.data?.profiles;
|
|
236
|
-
const parsed = ProfilesV2Schema.safeParse(profiles);
|
|
237
|
-
if (!parsed.success) {
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
const target = parsed.data.find((p) => p.id === profileId);
|
|
241
|
-
if (!target) {
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
return {
|
|
245
|
-
profile: clone(target),
|
|
246
|
-
source: `npm:${packageName}#${profileId}`,
|
|
247
|
-
sourcePath: fullPath,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
throw new KbError('ERR_PROFILE_EXTENDS_FAILED', `Profile "${profileId}" not found in package "${packageName}"`, ERROR_HINTS.ERR_PROFILE_EXTENDS_FAILED, { reference: ref });
|
|
251
|
-
}
|
|
252
|
-
//# sourceMappingURL=resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/profiles/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core-config/profiles/scope-selector
|
|
3
|
-
* Resolve active scope based on include/exclude globs and CLI flags.
|
|
4
|
-
*/
|
|
5
|
-
import type { BundleProfile, ResolvedScope } from './types';
|
|
6
|
-
export type ScopeSelectionStrategy = 'explicit' | 'default' | 'auto' | 'none';
|
|
7
|
-
export interface ScopeSelectionOptions {
|
|
8
|
-
bundleProfile: BundleProfile;
|
|
9
|
-
cwd: string;
|
|
10
|
-
executionPath: string;
|
|
11
|
-
scopeId?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface ScopeSelectionResult {
|
|
14
|
-
scope?: ResolvedScope;
|
|
15
|
-
strategy: ScopeSelectionStrategy;
|
|
16
|
-
matchedPath?: string;
|
|
17
|
-
}
|
|
18
|
-
export declare function selectProfileScope(opts: ScopeSelectionOptions): ScopeSelectionResult;
|
|
19
|
-
//# sourceMappingURL=scope-selector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scope-selector.d.ts","sourceRoot":"","sources":["../../src/profiles/scope-selector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG5D,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,aAAa,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,qBAAqB,GAC1B,oBAAoB,CAqDtB"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @kb-labs/core-config/profiles/scope-selector
|
|
3
|
-
* Resolve active scope based on include/exclude globs and CLI flags.
|
|
4
|
-
*/
|
|
5
|
-
import path from 'node:path';
|
|
6
|
-
import picomatch from 'picomatch';
|
|
7
|
-
import { KbError, ERROR_HINTS } from '../errors/kb-error';
|
|
8
|
-
export function selectProfileScope(opts) {
|
|
9
|
-
const scopes = opts.bundleProfile.scopes || [];
|
|
10
|
-
if (scopes.length === 0) {
|
|
11
|
-
return { strategy: 'none' };
|
|
12
|
-
}
|
|
13
|
-
if (opts.scopeId) {
|
|
14
|
-
const scope = scopes.find((s) => s.id === opts.scopeId);
|
|
15
|
-
if (!scope) {
|
|
16
|
-
throw new KbError('ERR_PROFILE_SCOPE_NOT_FOUND', `Scope "${opts.scopeId}" not found in profile "${opts.bundleProfile.id}"`, ERROR_HINTS.ERR_PROFILE_SCOPE_NOT_FOUND, { scopeId: opts.scopeId, available: scopes.map((s) => s.id) });
|
|
17
|
-
}
|
|
18
|
-
return { scope, strategy: 'explicit' };
|
|
19
|
-
}
|
|
20
|
-
const defaults = scopes.filter((s) => s.isDefault);
|
|
21
|
-
if (defaults.length > 1) {
|
|
22
|
-
throw new KbError('ERR_PROFILE_SCOPE_CONFLICT', `Multiple default scopes found in profile "${opts.bundleProfile.id}"`, ERROR_HINTS.ERR_PROFILE_SCOPE_CONFLICT, { scopes: defaults.map((s) => s.id) });
|
|
23
|
-
}
|
|
24
|
-
if (defaults.length === 1) {
|
|
25
|
-
return { scope: defaults[0], strategy: 'default' };
|
|
26
|
-
}
|
|
27
|
-
const relativePath = normalizePath(path.relative(opts.cwd, opts.executionPath));
|
|
28
|
-
const matches = scopes.filter((scope) => scopeMatchesPath(scope, relativePath));
|
|
29
|
-
if (matches.length > 1) {
|
|
30
|
-
throw new KbError('ERR_PROFILE_SCOPE_CONFLICT', `Multiple scopes match path "${relativePath}"`, ERROR_HINTS.ERR_PROFILE_SCOPE_CONFLICT, { scopes: matches.map((s) => s.id), path: relativePath });
|
|
31
|
-
}
|
|
32
|
-
if (matches.length === 1) {
|
|
33
|
-
return { scope: matches[0], strategy: 'auto', matchedPath: relativePath };
|
|
34
|
-
}
|
|
35
|
-
return { strategy: 'none' };
|
|
36
|
-
}
|
|
37
|
-
function scopeMatchesPath(scope, candidate) {
|
|
38
|
-
const includes = scope.include && scope.include.length > 0
|
|
39
|
-
? scope.include
|
|
40
|
-
: ['**/*'];
|
|
41
|
-
const excludeGlobs = scope.exclude || [];
|
|
42
|
-
const tester = (glob) => picomatch(glob, { dot: true, nocase: false })(candidate);
|
|
43
|
-
const includeMatched = candidate === '.' ||
|
|
44
|
-
includes.some((glob) => tester(adjustGlob(glob)));
|
|
45
|
-
if (!includeMatched) {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
const excludeMatched = excludeGlobs.some((glob) => tester(adjustGlob(glob)));
|
|
49
|
-
return !excludeMatched;
|
|
50
|
-
}
|
|
51
|
-
function normalizePath(p) {
|
|
52
|
-
if (!p || p === '.') {
|
|
53
|
-
return '.';
|
|
54
|
-
}
|
|
55
|
-
const normalized = p.split(path.sep).join('/');
|
|
56
|
-
return normalized || '.';
|
|
57
|
-
}
|
|
58
|
-
function adjustGlob(glob) {
|
|
59
|
-
if (!glob) {
|
|
60
|
-
return '**/*';
|
|
61
|
-
}
|
|
62
|
-
return glob;
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=scope-selector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scope-selector.js","sourceRoot":"","sources":["../../src/profiles/scope-selector.ts"],"names":[],"mappings":"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"}
|