@kb-labs/core-config 1.0.0 → 1.2.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/__tests__/cache.spec.d.ts +6 -0
- package/dist/__tests__/cache.spec.d.ts.map +1 -0
- package/dist/__tests__/cache.spec.js +87 -0
- package/dist/__tests__/cache.spec.js.map +1 -0
- package/dist/__tests__/fs-atomic.spec.d.ts +6 -0
- package/dist/__tests__/fs-atomic.spec.d.ts.map +1 -0
- package/dist/__tests__/fs-atomic.spec.js +153 -0
- package/dist/__tests__/fs-atomic.spec.js.map +1 -0
- package/dist/__tests__/get-product-config-edge-cases.spec.d.ts +6 -0
- package/dist/__tests__/get-product-config-edge-cases.spec.d.ts.map +1 -0
- package/dist/__tests__/get-product-config-edge-cases.spec.js +334 -0
- package/dist/__tests__/get-product-config-edge-cases.spec.js.map +1 -0
- package/dist/__tests__/init-workspace.spec.d.ts +6 -0
- package/dist/__tests__/init-workspace.spec.d.ts.map +1 -0
- package/dist/__tests__/init-workspace.spec.js +101 -0
- package/dist/__tests__/init-workspace.spec.js.map +1 -0
- package/dist/__tests__/kb-error.spec.d.ts +6 -0
- package/dist/__tests__/kb-error.spec.d.ts.map +1 -0
- package/dist/__tests__/kb-error.spec.js +193 -0
- package/dist/__tests__/kb-error.spec.js.map +1 -0
- package/dist/__tests__/preset-lockfile.spec.d.ts +6 -0
- package/dist/__tests__/preset-lockfile.spec.d.ts.map +1 -0
- package/dist/__tests__/preset-lockfile.spec.js +142 -0
- package/dist/__tests__/preset-lockfile.spec.js.map +1 -0
- package/dist/__tests__/product-config-profiles.spec.d.ts +6 -0
- package/dist/__tests__/product-config-profiles.spec.d.ts.map +1 -0
- package/dist/__tests__/product-config-profiles.spec.js +82 -0
- package/dist/__tests__/product-config-profiles.spec.js.map +1 -0
- package/dist/__tests__/product-config.spec.d.ts +6 -0
- package/dist/__tests__/product-config.spec.d.ts.map +1 -0
- package/dist/__tests__/product-config.spec.js +304 -0
- package/dist/__tests__/product-config.spec.js.map +1 -0
- package/dist/__tests__/profiles-demo.d.ts +11 -0
- package/dist/__tests__/profiles-demo.d.ts.map +1 -0
- package/dist/__tests__/profiles-demo.js +173 -0
- package/dist/__tests__/profiles-demo.js.map +1 -0
- package/dist/__tests__/profiles-resolver.spec.d.ts +2 -0
- package/dist/__tests__/profiles-resolver.spec.d.ts.map +1 -0
- package/dist/__tests__/profiles-resolver.spec.js +114 -0
- package/dist/__tests__/profiles-resolver.spec.js.map +1 -0
- package/dist/__tests__/profiles-section.spec.d.ts +2 -0
- package/dist/__tests__/profiles-section.spec.d.ts.map +1 -0
- package/dist/__tests__/profiles-section.spec.js +50 -0
- package/dist/__tests__/profiles-section.spec.js.map +1 -0
- package/dist/__tests__/runtime.spec.d.ts +2 -0
- package/dist/__tests__/runtime.spec.d.ts.map +1 -0
- package/dist/__tests__/runtime.spec.js +170 -0
- package/dist/__tests__/runtime.spec.js.map +1 -0
- package/dist/__tests__/upsert-lockfile.spec.d.ts +1 -0
- package/dist/__tests__/upsert-lockfile.spec.d.ts.map +1 -0
- package/dist/__tests__/upsert-lockfile.spec.js +2 -0
- package/dist/__tests__/upsert-lockfile.spec.js.map +1 -0
- package/dist/__tests__/validate-config.spec.d.ts +2 -0
- package/dist/__tests__/validate-config.spec.d.ts.map +1 -0
- package/dist/__tests__/validate-config.spec.js +14 -0
- package/dist/__tests__/validate-config.spec.js.map +1 -0
- package/dist/api/init-workspace.d.ts +10 -0
- package/dist/api/init-workspace.d.ts.map +1 -0
- package/dist/api/init-workspace.js +186 -0
- package/dist/api/init-workspace.js.map +1 -0
- package/dist/api/product-config.d.ts +20 -0
- package/dist/api/product-config.d.ts.map +1 -0
- package/dist/api/product-config.js +236 -0
- package/dist/api/product-config.js.map +1 -0
- package/dist/api/read-config.d.ts +22 -0
- package/dist/api/read-config.d.ts.map +1 -0
- package/dist/api/read-config.js +112 -0
- package/dist/api/read-config.js.map +1 -0
- package/dist/api/read-kb-config.d.ts +12 -0
- package/dist/api/read-kb-config.d.ts.map +1 -0
- package/dist/api/read-kb-config.js +47 -0
- package/dist/api/read-kb-config.js.map +1 -0
- package/dist/api/upsert-lockfile.d.ts +10 -0
- package/dist/api/upsert-lockfile.d.ts.map +1 -0
- package/dist/api/upsert-lockfile.js +63 -0
- package/dist/api/upsert-lockfile.js.map +1 -0
- package/dist/cache/fs-cache.d.ts +38 -0
- package/dist/cache/fs-cache.d.ts.map +1 -0
- package/dist/cache/fs-cache.js +142 -0
- package/dist/cache/fs-cache.js.map +1 -0
- package/dist/errors/kb-error.d.ts +35 -0
- package/dist/errors/kb-error.d.ts.map +1 -0
- package/dist/errors/kb-error.js +57 -0
- package/dist/errors/kb-error.js.map +1 -0
- package/dist/hash/config-hash.d.ts +17 -0
- package/dist/hash/config-hash.d.ts.map +1 -0
- package/dist/hash/config-hash.js +55 -0
- package/dist/hash/config-hash.js.map +1 -0
- package/dist/index.d.ts +25 -1016
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -1533
- package/dist/index.js.map +1 -1
- package/dist/lockfile/lockfile.d.ts +53 -0
- package/dist/lockfile/lockfile.d.ts.map +1 -0
- package/dist/lockfile/lockfile.js +142 -0
- package/dist/lockfile/lockfile.js.map +1 -0
- package/dist/merge/layered-merge.d.ts +16 -0
- package/dist/merge/layered-merge.d.ts.map +1 -0
- package/dist/merge/layered-merge.js +87 -0
- package/dist/merge/layered-merge.js.map +1 -0
- package/dist/preset/resolve-preset.d.ts +28 -0
- package/dist/preset/resolve-preset.d.ts.map +1 -0
- package/dist/preset/resolve-preset.js +104 -0
- package/dist/preset/resolve-preset.js.map +1 -0
- package/dist/profiles/loader.d.ts +12 -0
- package/dist/profiles/loader.d.ts.map +1 -0
- package/dist/profiles/loader.js +34 -0
- package/dist/profiles/loader.js.map +1 -0
- package/dist/profiles/resolver.d.ts +11 -0
- package/dist/profiles/resolver.d.ts.map +1 -0
- package/dist/profiles/resolver.js +252 -0
- package/dist/profiles/resolver.js.map +1 -0
- package/dist/profiles/scope-selector.d.ts +19 -0
- package/dist/profiles/scope-selector.d.ts.map +1 -0
- package/dist/profiles/scope-selector.js +64 -0
- package/dist/profiles/scope-selector.js.map +1 -0
- package/dist/profiles/types.d.ts +462 -0
- package/dist/profiles/types.d.ts.map +1 -0
- package/dist/profiles/types.js +68 -0
- package/dist/profiles/types.js.map +1 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/runtime.d.ts +46 -0
- package/dist/runtime/runtime.d.ts.map +1 -0
- package/dist/runtime/runtime.js +126 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/init.d.ts +33 -0
- package/dist/types/init.d.ts.map +1 -0
- package/dist/types/init.js +6 -0
- package/dist/types/init.js.map +1 -0
- package/dist/types/preset.d.ts +27 -0
- package/dist/types/preset.d.ts.map +1 -0
- package/dist/types/preset.js +6 -0
- package/dist/types/preset.js.map +1 -0
- package/dist/types/types.d.ts +70 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/__tests__/env.spec.d.ts +2 -0
- package/dist/utils/__tests__/env.spec.d.ts.map +1 -0
- package/dist/utils/__tests__/env.spec.js +33 -0
- package/dist/utils/__tests__/env.spec.js.map +1 -0
- package/dist/utils/env.d.ts +7 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +25 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/fs-atomic.d.ts +15 -0
- package/dist/utils/fs-atomic.d.ts.map +1 -0
- package/dist/utils/fs-atomic.js +46 -0
- package/dist/utils/fs-atomic.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/paths.d.ts +21 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +32 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/product-normalize.d.ts +25 -0
- package/dist/utils/product-normalize.d.ts.map +1 -0
- package/dist/utils/product-normalize.js +48 -0
- package/dist/utils/product-normalize.js.map +1 -0
- package/dist/validation/validate-config.d.ts +10 -0
- package/dist/validation/validate-config.d.ts.map +1 -0
- package/dist/validation/validate-config.js +21 -0
- package/dist/validation/validate-config.js.map +1 -0
- package/package.json +13 -13
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @kb-labs/core/config/utils/product-normalize
|
|
3
|
+
* Product ID normalization between code (camelCase) and filesystem (kebab-case)
|
|
4
|
+
*/
|
|
5
|
+
const FS_MAP = new Map([
|
|
6
|
+
['aiReview', 'ai-review'],
|
|
7
|
+
['aiDocs', 'ai-docs'],
|
|
8
|
+
['devlink', 'devlink'],
|
|
9
|
+
['release', 'release'],
|
|
10
|
+
['devkit', 'devkit'],
|
|
11
|
+
['mind', 'mind'],
|
|
12
|
+
['workflow', 'workflow'],
|
|
13
|
+
['analytics', 'analytics'],
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Convert product ID to filesystem kebab-case format
|
|
17
|
+
* @param id Product ID (e.g., 'aiReview', 'mind', 'workflow')
|
|
18
|
+
* @returns kebab-case string for filesystem paths
|
|
19
|
+
*/
|
|
20
|
+
export function toFsProduct(id) {
|
|
21
|
+
return FS_MAP.get(id) ?? id;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Convert filesystem kebab-case key to product ID
|
|
25
|
+
* @param fsKey kebab-case string from filesystem
|
|
26
|
+
* @returns Product ID (camelCase if mapped, original otherwise)
|
|
27
|
+
*/
|
|
28
|
+
export function toConfigProduct(fsKey) {
|
|
29
|
+
for (const [k, v] of FS_MAP) {
|
|
30
|
+
if (v === fsKey) {
|
|
31
|
+
return k;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return fsKey;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if a string is a known product ID
|
|
38
|
+
*/
|
|
39
|
+
export function isValidProductId(value) {
|
|
40
|
+
return FS_MAP.has(value);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get all known product IDs
|
|
44
|
+
*/
|
|
45
|
+
export function getAllProductIds() {
|
|
46
|
+
return Array.from(FS_MAP.keys());
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=product-normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-normalize.js","sourceRoot":"","sources":["../../src/utils/product-normalize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACrB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,QAAQ,EAAE,SAAS,CAAC;IACrB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,WAAW,EAAE,WAAW,CAAC;CAC3B,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAAA,OAAO,CAAC,CAAC;QAAA,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ValidationResult = {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
errors: any[] | null;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Temporary schema registry hook – upcoming implementation will register schemas here.
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerProductSchema(product: string, schema: any): void;
|
|
9
|
+
export declare function validateProductConfig(product: string, config: unknown): ValidationResult;
|
|
10
|
+
//# sourceMappingURL=validate-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-config.d.ts","sourceRoot":"","sources":["../../src/validation/validate-config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AAOrE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAExE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAOxF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Ajv from 'ajv';
|
|
2
|
+
import addFormats from 'ajv-formats';
|
|
3
|
+
const ajv = new Ajv({ allErrors: true, strict: false });
|
|
4
|
+
addFormats(ajv);
|
|
5
|
+
const schemaMap = {};
|
|
6
|
+
/**
|
|
7
|
+
* Temporary schema registry hook – upcoming implementation will register schemas here.
|
|
8
|
+
*/
|
|
9
|
+
export function registerProductSchema(product, schema) {
|
|
10
|
+
schemaMap[product] = schema;
|
|
11
|
+
}
|
|
12
|
+
export function validateProductConfig(product, config) {
|
|
13
|
+
const schema = schemaMap[product];
|
|
14
|
+
if (!schema) {
|
|
15
|
+
return { ok: true, errors: null };
|
|
16
|
+
}
|
|
17
|
+
const validate = ajv.compile(schema);
|
|
18
|
+
const ok = validate(config);
|
|
19
|
+
return { ok: !!ok, errors: validate.errors || null };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=validate-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-config.js","sourceRoot":"","sources":["../../src/validation/validate-config.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,UAAU,MAAM,aAAa,CAAC;AAIrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,UAAU,CAAC,GAAG,CAAC,CAAC;AAEhB,MAAM,SAAS,GAAwB,EAAE,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,MAAW;IAChE,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,MAAe;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAAA,CAAC;IAEjD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;AACvD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kb-labs/core-config",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Core configuration system for KB Labs products, including schema validation, resolution, and merging",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,6 +18,16 @@
|
|
|
18
18
|
"LICENSE"
|
|
19
19
|
],
|
|
20
20
|
"sideEffects": false,
|
|
21
|
+
"scripts": {
|
|
22
|
+
"clean": "rimraf dist",
|
|
23
|
+
"build": "pnpm clean && tsup --config tsup.config.ts",
|
|
24
|
+
"dev": "tsup --config tsup.config.ts --watch",
|
|
25
|
+
"type-check": "tsc --noEmit",
|
|
26
|
+
"test": "vitest run --passWithNoTests",
|
|
27
|
+
"lint": "eslint . --ignore-pattern 'dist/**'",
|
|
28
|
+
"lint:fix": "eslint . --fix --ignore-pattern 'dist/**'",
|
|
29
|
+
"test:watch": "vitest"
|
|
30
|
+
},
|
|
21
31
|
"dependencies": {
|
|
22
32
|
"ajv": "^8.17.1",
|
|
23
33
|
"ajv-formats": "^3.0.1",
|
|
@@ -26,7 +36,7 @@
|
|
|
26
36
|
"zod": "^3.23.8"
|
|
27
37
|
},
|
|
28
38
|
"devDependencies": {
|
|
29
|
-
"@kb-labs/devkit": "
|
|
39
|
+
"@kb-labs/devkit": "^1.0.0",
|
|
30
40
|
"@types/node": "^24.3.3",
|
|
31
41
|
"@types/picomatch": "^4",
|
|
32
42
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
@@ -43,15 +53,5 @@
|
|
|
43
53
|
},
|
|
44
54
|
"publishConfig": {
|
|
45
55
|
"access": "public"
|
|
46
|
-
},
|
|
47
|
-
"scripts": {
|
|
48
|
-
"clean": "rimraf dist",
|
|
49
|
-
"build": "pnpm clean && tsup --config tsup.config.ts",
|
|
50
|
-
"dev": "tsup --config tsup.config.ts --watch",
|
|
51
|
-
"type-check": "tsc --noEmit",
|
|
52
|
-
"test": "vitest run --passWithNoTests",
|
|
53
|
-
"lint": "eslint . --ignore-pattern 'dist/**'",
|
|
54
|
-
"lint:fix": "eslint . --fix --ignore-pattern 'dist/**'",
|
|
55
|
-
"test:watch": "vitest"
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
}
|