@mbsks/rspfx-diagnostics 0.0.13 → 0.0.16
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/README.md +3 -2
- package/dist/codes.d.ts +40 -32
- package/dist/codes.d.ts.map +1 -1
- package/dist/codes.js +37 -33
- package/dist/codes.js.map +1 -1
- package/dist/error.d.ts +13 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +43 -0
- package/dist/error.js.map +1 -1
- package/dist/format.d.ts +4 -0
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +43 -0
- package/dist/format.js.map +1 -1
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +27 -7
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +80 -23
- package/dist/logger.js.map +1 -1
- package/dist/result.d.ts +20 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +18 -0
- package/dist/result.js.map +1 -0
- package/dist/trace.d.ts +7 -1
- package/dist/trace.d.ts.map +1 -1
- package/dist/trace.js +59 -3
- package/dist/trace.js.map +1 -1
- package/package.json +8 -8
- package/LICENSE +0 -21
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @mbsks/rspfx-diagnostics
|
|
2
2
|
|
|
3
|
-
Diagnostics for [RSPFX](https://github.com/master8848/rspfx) — an SPFx-compatible build toolchain
|
|
3
|
+
Diagnostics for [RSPFX](https://github.com/master8848/rspfx) — an SPFx-compatible build toolchain. Replaces Heft + webpack + gulp. Works with Vite, Rsbuild, and Rspack.
|
|
4
4
|
|
|
5
5
|
Structured logging, typed errors, benchmarks, and formatting helpers shared across the toolchain and CLI.
|
|
6
6
|
|
|
@@ -40,5 +40,6 @@ console.log(formatBytes(1_500_000)); // "1.4 MB"
|
|
|
40
40
|
|
|
41
41
|
## Links
|
|
42
42
|
|
|
43
|
-
- [
|
|
43
|
+
- [Documentation](https://rspfx.mbsks.me) — [Getting Started](https://rspfx.mbsks.me/docs/getting-started)
|
|
44
|
+
- [GitHub](https://github.com/master8848/rspfx)
|
|
44
45
|
- License: MIT
|
package/dist/codes.d.ts
CHANGED
|
@@ -1,33 +1,41 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
export declare const RspfxErrorCode: {
|
|
2
|
+
readonly AGGREGATE: "AGGREGATE";
|
|
3
|
+
readonly ANALYZE_NO_DIST: "ANALYZE_NO_DIST";
|
|
4
|
+
readonly BUILD_FAILED: "BUILD_FAILED";
|
|
5
|
+
readonly CLEAN_NOT_A_PROJECT: "CLEAN_NOT_A_PROJECT";
|
|
6
|
+
readonly COMPILE_ENTRY_NO_COMPONENT_ID: "COMPILE_ENTRY_NO_COMPONENT_ID";
|
|
7
|
+
readonly COMPILE_ENTRY_NO_VERSION: "COMPILE_ENTRY_NO_VERSION";
|
|
8
|
+
readonly COMPILE_FAILED: "COMPILE_FAILED";
|
|
9
|
+
readonly COMPILE_NO_ENTRIES: "COMPILE_NO_ENTRIES";
|
|
10
|
+
readonly CONFIG_NOT_FOUND: "CONFIG_NOT_FOUND";
|
|
11
|
+
readonly CONFIG_VALIDATION_FAILED: "CONFIG_VALIDATION_FAILED";
|
|
12
|
+
readonly DEPLOY_FAILED: "DEPLOY_FAILED";
|
|
13
|
+
readonly DEPLOY_INVALID_URL: "DEPLOY_INVALID_URL";
|
|
14
|
+
readonly DEPLOY_TIMEOUT: "DEPLOY_TIMEOUT";
|
|
15
|
+
readonly DEST_EXISTS: "DEST_EXISTS";
|
|
16
|
+
readonly DEV_COMPILE_TIMEOUT: "DEV_COMPILE_TIMEOUT";
|
|
17
|
+
readonly DUPLICATE_MANIFEST_ID: "DUPLICATE_MANIFEST_ID";
|
|
18
|
+
readonly HOOK_FAILED: "HOOK_FAILED";
|
|
19
|
+
readonly INSTALL_FAILED: "INSTALL_FAILED";
|
|
20
|
+
readonly INVALID_MANIFEST_ID: "INVALID_MANIFEST_ID";
|
|
21
|
+
readonly INVALID_MANIFEST_JSON: "INVALID_MANIFEST_JSON";
|
|
22
|
+
readonly INVALID_OPTION: "INVALID_OPTION";
|
|
23
|
+
readonly INVALID_PACKAGE_CONFIG: "INVALID_PACKAGE_CONFIG";
|
|
24
|
+
readonly MISSING_ELEMENT_ASSET: "MISSING_ELEMENT_ASSET";
|
|
25
|
+
readonly MULTIPLE_MANIFESTS: "MULTIPLE_MANIFESTS";
|
|
26
|
+
readonly NO_MANIFESTS_FOUND: "NO_MANIFESTS_FOUND";
|
|
27
|
+
readonly PACKAGE_VALIDATION: "PACKAGE_VALIDATION";
|
|
28
|
+
readonly PLUGIN_NOT_FOUND: "PLUGIN_NOT_FOUND";
|
|
29
|
+
readonly RSBUILD_BUILD_FAILED: "RSBUILD_BUILD_FAILED";
|
|
30
|
+
readonly RSBUILD_NOT_FOUND: "RSBUILD_NOT_FOUND";
|
|
31
|
+
readonly SPPKG_TRAVERSAL: "SPPKG_TRAVERSAL";
|
|
32
|
+
readonly UNRESOLVED_EXTERNAL: "UNRESOLVED_EXTERNAL";
|
|
33
|
+
readonly MIGRATE_BACKUP_EXISTS: "MIGRATE_BACKUP_EXISTS";
|
|
34
|
+
readonly VITE_BUILD_FAILED: "VITE_BUILD_FAILED";
|
|
35
|
+
readonly VITE_NOT_FOUND: "VITE_NOT_FOUND";
|
|
36
|
+
readonly VITE_NO_ENTRY: "VITE_NO_ENTRY";
|
|
37
|
+
};
|
|
38
|
+
export type RspfxErrorCode = (typeof RspfxErrorCode)[keyof typeof RspfxErrorCode] & {
|
|
39
|
+
readonly __brand: unique symbol;
|
|
40
|
+
};
|
|
33
41
|
//# sourceMappingURL=codes.d.ts.map
|
package/dist/codes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../src/codes.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../src/codes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,GAAG;IAClF,QAAQ,CAAC,OAAO,EAAE,OAAO,MAAM,CAAC;CACjC,CAAC"}
|
package/dist/codes.js
CHANGED
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
export const RspfxErrorCode = {
|
|
2
|
+
AGGREGATE: 'AGGREGATE',
|
|
3
|
+
ANALYZE_NO_DIST: 'ANALYZE_NO_DIST',
|
|
4
|
+
BUILD_FAILED: 'BUILD_FAILED',
|
|
5
|
+
CLEAN_NOT_A_PROJECT: 'CLEAN_NOT_A_PROJECT',
|
|
6
|
+
COMPILE_ENTRY_NO_COMPONENT_ID: 'COMPILE_ENTRY_NO_COMPONENT_ID',
|
|
7
|
+
COMPILE_ENTRY_NO_VERSION: 'COMPILE_ENTRY_NO_VERSION',
|
|
8
|
+
COMPILE_FAILED: 'COMPILE_FAILED',
|
|
9
|
+
COMPILE_NO_ENTRIES: 'COMPILE_NO_ENTRIES',
|
|
10
|
+
CONFIG_NOT_FOUND: 'CONFIG_NOT_FOUND',
|
|
11
|
+
CONFIG_VALIDATION_FAILED: 'CONFIG_VALIDATION_FAILED',
|
|
12
|
+
DEPLOY_FAILED: 'DEPLOY_FAILED',
|
|
13
|
+
DEPLOY_INVALID_URL: 'DEPLOY_INVALID_URL',
|
|
14
|
+
DEPLOY_TIMEOUT: 'DEPLOY_TIMEOUT',
|
|
15
|
+
DEST_EXISTS: 'DEST_EXISTS',
|
|
16
|
+
DEV_COMPILE_TIMEOUT: 'DEV_COMPILE_TIMEOUT',
|
|
17
|
+
DUPLICATE_MANIFEST_ID: 'DUPLICATE_MANIFEST_ID',
|
|
18
|
+
HOOK_FAILED: 'HOOK_FAILED',
|
|
19
|
+
INSTALL_FAILED: 'INSTALL_FAILED',
|
|
20
|
+
INVALID_MANIFEST_ID: 'INVALID_MANIFEST_ID',
|
|
21
|
+
INVALID_MANIFEST_JSON: 'INVALID_MANIFEST_JSON',
|
|
22
|
+
INVALID_OPTION: 'INVALID_OPTION',
|
|
23
|
+
INVALID_PACKAGE_CONFIG: 'INVALID_PACKAGE_CONFIG',
|
|
24
|
+
MISSING_ELEMENT_ASSET: 'MISSING_ELEMENT_ASSET',
|
|
25
|
+
MULTIPLE_MANIFESTS: 'MULTIPLE_MANIFESTS',
|
|
26
|
+
NO_MANIFESTS_FOUND: 'NO_MANIFESTS_FOUND',
|
|
27
|
+
PACKAGE_VALIDATION: 'PACKAGE_VALIDATION',
|
|
28
|
+
PLUGIN_NOT_FOUND: 'PLUGIN_NOT_FOUND',
|
|
29
|
+
RSBUILD_BUILD_FAILED: 'RSBUILD_BUILD_FAILED',
|
|
30
|
+
RSBUILD_NOT_FOUND: 'RSBUILD_NOT_FOUND',
|
|
31
|
+
SPPKG_TRAVERSAL: 'SPPKG_TRAVERSAL',
|
|
32
|
+
UNRESOLVED_EXTERNAL: 'UNRESOLVED_EXTERNAL',
|
|
33
|
+
MIGRATE_BACKUP_EXISTS: 'MIGRATE_BACKUP_EXISTS',
|
|
34
|
+
VITE_BUILD_FAILED: 'VITE_BUILD_FAILED',
|
|
35
|
+
VITE_NOT_FOUND: 'VITE_NOT_FOUND',
|
|
36
|
+
VITE_NO_ENTRY: 'VITE_NO_ENTRY'
|
|
37
|
+
};
|
|
34
38
|
//# sourceMappingURL=codes.js.map
|
package/dist/codes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codes.js","sourceRoot":"","sources":["../src/codes.ts"],"names":[],"mappings":"AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"codes.js","sourceRoot":"","sources":["../src/codes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,WAAW;IACtB,eAAe,EAAE,iBAAiB;IAClC,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,qBAAqB;IAC1C,6BAA6B,EAAE,+BAA+B;IAC9D,wBAAwB,EAAE,0BAA0B;IACpD,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,wBAAwB,EAAE,0BAA0B;IACpD,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAC1B,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,cAAc,EAAE,gBAAgB;IAChC,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;CACtB,CAAC"}
|
package/dist/error.d.ts
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
export { RspfxErrorCode } from './codes.js';
|
|
2
|
+
import { RspfxErrorCode } from './codes.js';
|
|
2
3
|
export declare class RspfxError extends Error {
|
|
3
|
-
readonly code:
|
|
4
|
+
readonly code: RspfxErrorCode;
|
|
5
|
+
cause?: RspfxError | Error;
|
|
6
|
+
constructor(code: RspfxErrorCode, message: string, cause?: RspfxError | Error);
|
|
7
|
+
/** @deprecated use RspfxErrorCode constant */
|
|
4
8
|
constructor(code: string, message: string, cause?: unknown);
|
|
5
9
|
}
|
|
10
|
+
export declare class AggregateRspfxError extends Error {
|
|
11
|
+
readonly code: RspfxErrorCode;
|
|
12
|
+
readonly errors: readonly RspfxError[];
|
|
13
|
+
constructor(errors: readonly RspfxError[], message?: string);
|
|
14
|
+
}
|
|
15
|
+
export declare function isRspfxError(e: unknown): e is RspfxError | AggregateRspfxError;
|
|
16
|
+
export declare function isAggregateRspfxError(e: unknown): e is AggregateRspfxError;
|
|
17
|
+
export declare function flatCauseChain(err: RspfxError): RspfxError[];
|
|
6
18
|
//# sourceMappingURL=error.d.ts.map
|
package/dist/error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;gBAEvB,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,KAAK;IAC7E,8CAA8C;gBAClC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAS3D;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAA+B,cAAc,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;gBAE3B,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,OAAO,SAAiC;CAKpF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,GAAG,mBAAmB,CAE9E;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAE1E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,EAAE,CAsB5D"}
|
package/dist/error.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { RspfxErrorCode } from './codes.js';
|
|
2
|
+
import { RspfxErrorCode } from './codes.js';
|
|
2
3
|
export class RspfxError extends Error {
|
|
3
4
|
code;
|
|
4
5
|
constructor(code, message, cause) {
|
|
@@ -10,4 +11,46 @@ export class RspfxError extends Error {
|
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
}
|
|
14
|
+
export class AggregateRspfxError extends Error {
|
|
15
|
+
code = RspfxErrorCode.AGGREGATE;
|
|
16
|
+
errors;
|
|
17
|
+
constructor(errors, message = `${errors.length} hook errors`) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'AggregateRspfxError';
|
|
20
|
+
this.errors = errors;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function isRspfxError(e) {
|
|
24
|
+
return e instanceof RspfxError || e instanceof AggregateRspfxError || (typeof e === 'object' && e !== null && 'code' in e);
|
|
25
|
+
}
|
|
26
|
+
export function isAggregateRspfxError(e) {
|
|
27
|
+
return e instanceof AggregateRspfxError;
|
|
28
|
+
}
|
|
29
|
+
export function flatCauseChain(err) {
|
|
30
|
+
const chain = [];
|
|
31
|
+
let current = err;
|
|
32
|
+
while (current) {
|
|
33
|
+
if (current instanceof RspfxError) {
|
|
34
|
+
chain.push(current);
|
|
35
|
+
current = current.cause;
|
|
36
|
+
}
|
|
37
|
+
else if (current instanceof Error && 'cause' in current && current.cause instanceof Error) {
|
|
38
|
+
const cause = current.cause;
|
|
39
|
+
if (cause instanceof RspfxError) {
|
|
40
|
+
chain.push(cause);
|
|
41
|
+
current = cause.cause;
|
|
42
|
+
}
|
|
43
|
+
else if (cause instanceof Error) {
|
|
44
|
+
current = cause;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return chain;
|
|
55
|
+
}
|
|
13
56
|
//# sourceMappingURL=error.js.map
|
package/dist/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IAM9B,YAAY,IAAY,EAAE,OAAe,EAAE,KAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAsB,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,IAAuC,CAAC,KAAK,GAAG,KAA2B,CAAC;QAC/E,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAG,cAAc,CAAC,SAA2B,CAAC;IAClD,MAAM,CAAwB;IAEvC,YAAY,MAA6B,EAAE,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,cAAc;QACjF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,CAAC,YAAY,UAAU,IAAI,CAAC,YAAY,mBAAmB,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC;AAC7H,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAAU;IAC9C,OAAO,CAAC,YAAY,mBAAmB,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAe;IAC5C,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAmC,GAAG,CAAC;IAClD,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO,GAAG,OAAO,CAAC,KAAuC,CAAC;QAC5D,CAAC;aAAM,IAAI,OAAO,YAAY,KAAK,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;YAC5F,MAAM,KAAK,GAAI,OAA+B,CAAC,KAAK,CAAC;YACrD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,OAAO,GAAI,KAAoB,CAAC,KAAuC,CAAC;YAC1E,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/format.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
import type { AggregateRspfxError, RspfxError } from './error.js';
|
|
1
2
|
export declare function formatBytes(bytes: number): string;
|
|
3
|
+
export declare function formatError(err: RspfxError | AggregateRspfxError, opts?: {
|
|
4
|
+
color?: boolean;
|
|
5
|
+
}): string;
|
|
2
6
|
//# sourceMappingURL=format.d.ts.map
|
package/dist/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMlE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcjD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,mBAAmB,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CA0CzG"}
|
package/dist/format.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isAggregateRspfxError } from './error.js';
|
|
2
|
+
import { flatCauseChain } from './error.js';
|
|
1
3
|
const UNITS = ['B', 'KiB', 'MiB', 'GiB', 'TiB'];
|
|
2
4
|
export function formatBytes(bytes) {
|
|
3
5
|
if (!Number.isFinite(bytes) || bytes < 0) {
|
|
@@ -14,4 +16,45 @@ export function formatBytes(bytes) {
|
|
|
14
16
|
}
|
|
15
17
|
return `${value.toFixed(1)} ${UNITS[unit]}`;
|
|
16
18
|
}
|
|
19
|
+
export function formatError(err, opts = {}) {
|
|
20
|
+
const useColor = opts.color ?? false;
|
|
21
|
+
const codeColor = useColor ? '\x1b[31m' : '';
|
|
22
|
+
const reset = useColor ? '\x1b[0m' : '';
|
|
23
|
+
const dim = useColor ? '\x1b[2m' : '';
|
|
24
|
+
if (isAggregateRspfxError(err)) {
|
|
25
|
+
const header = `${codeColor}[${err.code}]${reset} ${err.message}`;
|
|
26
|
+
const lines = [header];
|
|
27
|
+
err.errors.forEach((e, idx) => {
|
|
28
|
+
const prefix = ` ${idx + 1}. [${e.code}] ${e.message}`;
|
|
29
|
+
lines.push(useColor ? `${codeColor}${prefix}${reset}` : prefix);
|
|
30
|
+
const chain = flatCauseChain(e);
|
|
31
|
+
// chain already includes e as first element; show causes beyond first
|
|
32
|
+
for (let i = 1; i < chain.length; i++) {
|
|
33
|
+
const cause = chain[i];
|
|
34
|
+
lines.push(`${dim} caused by [${cause.code}] ${cause.message}${reset}`);
|
|
35
|
+
}
|
|
36
|
+
if (e.cause && !(e.cause instanceof Error && 'code' in e.cause)) {
|
|
37
|
+
const msg = e.cause instanceof Error ? e.cause.message : String(e.cause);
|
|
38
|
+
lines.push(`${dim} caused by ${msg}${reset}`);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return lines.join('\n');
|
|
42
|
+
}
|
|
43
|
+
const rspfx = err;
|
|
44
|
+
const base = `${codeColor}[${rspfx.code}]${reset} ${rspfx.message}`;
|
|
45
|
+
const chain = flatCauseChain(rspfx);
|
|
46
|
+
if (chain.length <= 1) {
|
|
47
|
+
if (rspfx.cause && !(rspfx.cause instanceof Error && 'code' in rspfx.cause)) {
|
|
48
|
+
const msg = rspfx.cause instanceof Error ? rspfx.cause.message : String(rspfx.cause);
|
|
49
|
+
return `${base}\n${dim} caused by ${msg}${reset}`;
|
|
50
|
+
}
|
|
51
|
+
return base;
|
|
52
|
+
}
|
|
53
|
+
const lines = [base];
|
|
54
|
+
for (let i = 1; i < chain.length; i++) {
|
|
55
|
+
const cause = chain[i];
|
|
56
|
+
lines.push(`${dim} caused by [${cause.code}] ${cause.message}${reset}`);
|
|
57
|
+
}
|
|
58
|
+
return lines.join('\n');
|
|
59
|
+
}
|
|
17
60
|
//# sourceMappingURL=format.js.map
|
package/dist/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export { reportBenchmark } from './benchmark.js';
|
|
2
|
-
export { RspfxError } from './error.js';
|
|
2
|
+
export { AggregateRspfxError, isAggregateRspfxError, isRspfxError, RspfxError, flatCauseChain } from './error.js';
|
|
3
3
|
export { RspfxErrorCode } from './codes.js';
|
|
4
|
-
export {
|
|
5
|
-
export
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
4
|
+
export type { RspfxErrorCode as RspfxErrorCodeType } from './codes.js';
|
|
5
|
+
export { formatBytes, formatError } from './format.js';
|
|
6
|
+
export type { Logger, LogLevel, LogFields, LogEntry, LoggerOptions } from './logger.js';
|
|
7
|
+
export { createLogger, createDiagnosticFormatter } from './logger.js';
|
|
8
|
+
export { timeStart, trace, createTracer } from './trace.js';
|
|
9
|
+
export type { Tracer } from './trace.js';
|
|
10
|
+
export type { HookResult, Issue, Result } from './result.js';
|
|
11
|
+
export { andThen, err, map, ok, unwrap } from './result.js';
|
|
8
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { reportBenchmark } from './benchmark.js';
|
|
2
|
-
export { RspfxError } from './error.js';
|
|
2
|
+
export { AggregateRspfxError, isAggregateRspfxError, isRspfxError, RspfxError, flatCauseChain } from './error.js';
|
|
3
3
|
export { RspfxErrorCode } from './codes.js';
|
|
4
|
-
export { formatBytes } from './format.js';
|
|
5
|
-
export { createLogger } from './logger.js';
|
|
6
|
-
export { timeStart, trace } from './trace.js';
|
|
4
|
+
export { formatBytes, formatError } from './format.js';
|
|
5
|
+
export { createLogger, createDiagnosticFormatter } from './logger.js';
|
|
6
|
+
export { timeStart, trace, createTracer } from './trace.js';
|
|
7
|
+
export { andThen, err, map, ok, unwrap } from './result.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,10 +1,30 @@
|
|
|
1
|
-
export type LogLevel = 'error' | 'warn' | 'info' | 'debug' | 'success';
|
|
1
|
+
export type LogLevel = 'error' | 'warn' | 'info' | 'debug' | 'success' | 'trace';
|
|
2
|
+
export type LogFields = Record<string, string | number | boolean | undefined>;
|
|
3
|
+
export interface LogEntry {
|
|
4
|
+
readonly level: LogLevel;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly message: string;
|
|
7
|
+
readonly fields: Readonly<LogFields>;
|
|
8
|
+
readonly timestamp: string;
|
|
9
|
+
readonly error?: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface LoggerOptions {
|
|
12
|
+
readonly level?: LogLevel;
|
|
13
|
+
readonly json?: boolean;
|
|
14
|
+
readonly sinks?: Array<(entry: LogEntry) => void>;
|
|
15
|
+
}
|
|
2
16
|
export interface Logger {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
17
|
+
readonly name: string;
|
|
18
|
+
error(message: string, fields?: LogFields): void;
|
|
19
|
+
warn(message: string, fields?: LogFields): void;
|
|
20
|
+
info(message: string, fields?: LogFields): void;
|
|
21
|
+
debug(message: string, fields?: LogFields): void;
|
|
22
|
+
success(message: string, fields?: LogFields): void;
|
|
23
|
+
trace(message: string, fields?: LogFields): void;
|
|
24
|
+
child(fields: LogFields): Logger;
|
|
25
|
+
isLevelEnabled(level: LogLevel): boolean;
|
|
26
|
+
withLevel(level: LogLevel): Logger;
|
|
8
27
|
}
|
|
9
|
-
export declare function createLogger(name: string): Logger;
|
|
28
|
+
export declare function createLogger(name: string, opts?: LoggerOptions): Logger;
|
|
29
|
+
export declare function createDiagnosticFormatter(_logger: Logger): (err: import('./error.js').RspfxError | import('./error.js').AggregateRspfxError) => string;
|
|
10
30
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAE9E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACjD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACjD,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IACjC,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;CACpC;AA6FD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAKvE;AAID,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,OAAO,YAAY,EAAE,UAAU,GAAG,OAAO,YAAY,EAAE,mBAAmB,KAAK,MAAM,CAMtJ"}
|
package/dist/logger.js
CHANGED
|
@@ -4,40 +4,97 @@ const COLORS = {
|
|
|
4
4
|
warn: '\x1b[33m',
|
|
5
5
|
info: '\x1b[36m',
|
|
6
6
|
debug: '\x1b[2m',
|
|
7
|
-
success: '\x1b[32m'
|
|
7
|
+
success: '\x1b[32m',
|
|
8
|
+
trace: '\x1b[2m'
|
|
8
9
|
};
|
|
9
10
|
const RANKS = {
|
|
10
11
|
error: 0,
|
|
11
12
|
warn: 1,
|
|
12
13
|
info: 2,
|
|
13
14
|
success: 2,
|
|
14
|
-
debug: 3
|
|
15
|
+
debug: 3,
|
|
16
|
+
trace: 4
|
|
15
17
|
};
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
function parseLevel(raw) {
|
|
19
|
+
if (!raw)
|
|
20
|
+
return undefined;
|
|
21
|
+
const v = raw.toLowerCase();
|
|
22
|
+
if (v in RANKS)
|
|
23
|
+
return v;
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
function resolveLevel(opts) {
|
|
27
|
+
if (opts?.level && opts.level in RANKS)
|
|
28
|
+
return RANKS[opts.level];
|
|
29
|
+
const env = parseLevel(process.env.RSPFX_LOG_LEVEL);
|
|
30
|
+
if (env)
|
|
31
|
+
return RANKS[env];
|
|
32
|
+
return RANKS.info;
|
|
33
|
+
}
|
|
34
|
+
function isJsonEnabled(opts) {
|
|
35
|
+
if (opts?.json !== undefined)
|
|
36
|
+
return opts.json;
|
|
37
|
+
return process.env.RSPFX_LOG_JSON === '1';
|
|
27
38
|
}
|
|
28
|
-
|
|
29
|
-
function
|
|
30
|
-
|
|
39
|
+
function buildLogger(name, opts, parentFields, levelRank, json, sinks) {
|
|
40
|
+
function shouldLog(level) {
|
|
41
|
+
return RANKS[level] <= levelRank;
|
|
42
|
+
}
|
|
43
|
+
function emit(level, message, fields) {
|
|
44
|
+
if (!shouldLog(level))
|
|
45
|
+
return;
|
|
46
|
+
const merged = { ...parentFields, ...(fields ?? {}) };
|
|
47
|
+
const timestamp = new Date().toISOString();
|
|
48
|
+
const entry = { level, name, message, fields: merged, timestamp };
|
|
49
|
+
if (sinks && sinks.length > 0) {
|
|
50
|
+
for (const sink of sinks)
|
|
51
|
+
sink(entry);
|
|
31
52
|
return;
|
|
32
53
|
}
|
|
33
|
-
|
|
54
|
+
if (json) {
|
|
55
|
+
const line = JSON.stringify({ level, name, message, fields: merged, timestamp });
|
|
56
|
+
process.stdout.write(line + '\n');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const fieldStr = Object.keys(merged).length > 0 ? ` ${Object.entries(merged).map(([k, v]) => `${k}=${String(v)}`).join(' ')}` : '';
|
|
60
|
+
const stream = level === 'error' || level === 'warn' ? process.stderr : process.stdout;
|
|
61
|
+
stream.write(`${COLORS[level]}[${name}] ${level}: ${message}${fieldStr}${RESET}\n`);
|
|
34
62
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
63
|
+
const logger = {
|
|
64
|
+
name,
|
|
65
|
+
error: (m, f) => emit('error', m, f),
|
|
66
|
+
warn: (m, f) => emit('warn', m, f),
|
|
67
|
+
info: (m, f) => emit('info', m, f),
|
|
68
|
+
debug: (m, f) => emit('debug', m, f),
|
|
69
|
+
success: (m, f) => emit('success', m, f),
|
|
70
|
+
trace: (m, f) => emit('trace', m, f),
|
|
71
|
+
isLevelEnabled: (l) => shouldLog(l),
|
|
72
|
+
withLevel: (l) => {
|
|
73
|
+
const newRank = RANKS[l];
|
|
74
|
+
const newJson = opts?.json ?? process.env.RSPFX_LOG_JSON === '1';
|
|
75
|
+
const newSinks = opts?.sinks ? [...opts.sinks] : undefined;
|
|
76
|
+
// withLevel should not carry parentFields; it creates a fresh logger with same name and new level, but if called on child, should preserve parentFields
|
|
77
|
+
return buildLogger(name, { ...opts, level: l, json: newJson, sinks: newSinks }, parentFields, newRank, newJson, newSinks);
|
|
78
|
+
},
|
|
79
|
+
child: (extra) => {
|
|
80
|
+
const mergedParent = { ...parentFields, ...extra };
|
|
81
|
+
return buildLogger(name, opts, mergedParent, levelRank, json, sinks);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
return logger;
|
|
85
|
+
}
|
|
86
|
+
export function createLogger(name, opts) {
|
|
87
|
+
const levelRank = resolveLevel(opts);
|
|
88
|
+
const json = isJsonEnabled(opts);
|
|
89
|
+
const sinks = opts?.sinks ? [...opts.sinks] : undefined;
|
|
90
|
+
return buildLogger(name, opts, {}, levelRank, json, sinks);
|
|
91
|
+
}
|
|
92
|
+
import { formatError } from './format.js';
|
|
93
|
+
export function createDiagnosticFormatter(_logger) {
|
|
94
|
+
return (err) => {
|
|
95
|
+
const json = process.env.RSPFX_LOG_JSON === '1';
|
|
96
|
+
const useColor = !json && process.stdout.isTTY !== false;
|
|
97
|
+
return formatError(err, { color: useColor });
|
|
41
98
|
};
|
|
42
99
|
}
|
|
43
100
|
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/result.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RspfxErrorCode } from './codes.js';
|
|
2
|
+
export type Result<T, E> = {
|
|
3
|
+
ok: true;
|
|
4
|
+
value: T;
|
|
5
|
+
} | {
|
|
6
|
+
ok: false;
|
|
7
|
+
error: E;
|
|
8
|
+
};
|
|
9
|
+
export declare function ok<T>(value: T): Result<T, never>;
|
|
10
|
+
export declare function err<E>(error: E): Result<never, E>;
|
|
11
|
+
export declare function map<T, U, E>(r: Result<T, E>, fn: (t: T) => U): Result<U, E>;
|
|
12
|
+
export declare function andThen<T, U, E>(r: Result<T, E>, fn: (t: T) => Result<U, E>): Result<U, E>;
|
|
13
|
+
export declare function unwrap<T, E>(r: Result<T, E>): T;
|
|
14
|
+
export type Issue = {
|
|
15
|
+
path: (string | number)[];
|
|
16
|
+
message: string;
|
|
17
|
+
code: RspfxErrorCode;
|
|
18
|
+
};
|
|
19
|
+
export type HookResult<T> = Result<T, import('./error.js').RspfxError | import('./error.js').AggregateRspfxError>;
|
|
20
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE5E,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAEhD;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAEjD;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAE3E;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAE1F;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAG/C;AAED,MAAM,MAAM,KAAK,GAAG;IAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAEzF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,YAAY,EAAE,UAAU,GAAG,OAAO,YAAY,EAAE,mBAAmB,CAAC,CAAC"}
|
package/dist/result.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function ok(value) {
|
|
2
|
+
return { ok: true, value };
|
|
3
|
+
}
|
|
4
|
+
export function err(error) {
|
|
5
|
+
return { ok: false, error };
|
|
6
|
+
}
|
|
7
|
+
export function map(r, fn) {
|
|
8
|
+
return r.ok ? ok(fn(r.value)) : r;
|
|
9
|
+
}
|
|
10
|
+
export function andThen(r, fn) {
|
|
11
|
+
return r.ok ? fn(r.value) : r;
|
|
12
|
+
}
|
|
13
|
+
export function unwrap(r) {
|
|
14
|
+
if (r.ok)
|
|
15
|
+
return r.value;
|
|
16
|
+
throw r.error;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,EAAE,CAAI,KAAQ;IAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,GAAG,CAAU,CAAe,EAAE,EAAe;IAC3D,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,OAAO,CAAU,CAAe,EAAE,EAA0B;IAC1E,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,MAAM,CAAO,CAAe;IAC1C,IAAI,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACzB,MAAM,CAAC,CAAC,KAAK,CAAC;AAChB,CAAC"}
|
package/dist/trace.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Logger } from './logger.js';
|
|
2
|
+
export declare function timeStart(_name: string): () => number;
|
|
2
3
|
export declare function trace<T>(name: string, fn: () => Promise<T>): Promise<T>;
|
|
4
|
+
export interface Tracer {
|
|
5
|
+
span<T>(name: string, fn: () => Promise<T>): Promise<T>;
|
|
6
|
+
time<T>(name: string, fn: () => T): T;
|
|
7
|
+
}
|
|
8
|
+
export declare function createTracer(logger: Logger): Tracer;
|
|
3
9
|
//# sourceMappingURL=trace.d.ts.map
|
package/dist/trace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,MAAM,CAGrD;AAED,wBAAsB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAa7E;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA+CnD"}
|
package/dist/trace.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { createLogger } from './logger.js';
|
|
2
1
|
import { reportBenchmark } from './benchmark.js';
|
|
3
|
-
|
|
4
|
-
export function timeStart(name) {
|
|
2
|
+
export function timeStart(_name) {
|
|
5
3
|
const start = performance.now();
|
|
6
4
|
return () => performance.now() - start;
|
|
7
5
|
}
|
|
@@ -12,8 +10,66 @@ export async function trace(name, fn) {
|
|
|
12
10
|
}
|
|
13
11
|
finally {
|
|
14
12
|
const ms = elapsed();
|
|
13
|
+
// Use a transient logger; trace already has debug sink
|
|
14
|
+
// Import lazily to avoid circular
|
|
15
|
+
const { createLogger } = await import('./logger.js');
|
|
16
|
+
const logger = createLogger('trace');
|
|
15
17
|
logger.debug(`${name}: ${ms.toFixed(1)}ms`);
|
|
16
18
|
reportBenchmark(name, ms);
|
|
17
19
|
}
|
|
18
20
|
}
|
|
21
|
+
export function createTracer(logger) {
|
|
22
|
+
return {
|
|
23
|
+
async span(name, fn) {
|
|
24
|
+
if (!logger.isLevelEnabled('trace')) {
|
|
25
|
+
const start = performance.now();
|
|
26
|
+
try {
|
|
27
|
+
return await fn();
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
const durationMs = performance.now() - start;
|
|
31
|
+
// even if not trace-enabled, report benchmark for internal telemetry? Spec says trace logs only when enabled.
|
|
32
|
+
// We still report benchmark if needed? No, only log when enabled.
|
|
33
|
+
// To keep behavior, only log when trace enabled; benchmark reported regardless via reportBenchmark.
|
|
34
|
+
reportBenchmark(name, durationMs);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const start = performance.now();
|
|
38
|
+
logger.trace(`enter ${name}`);
|
|
39
|
+
try {
|
|
40
|
+
const result = await fn();
|
|
41
|
+
const durationMs = performance.now() - start;
|
|
42
|
+
logger.trace(`exit ${name}`, { durationMs });
|
|
43
|
+
reportBenchmark(name, durationMs);
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
const durationMs = performance.now() - start;
|
|
48
|
+
logger.trace(`error ${name}`, { durationMs });
|
|
49
|
+
reportBenchmark(name, durationMs);
|
|
50
|
+
throw e;
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
time(name, fn) {
|
|
54
|
+
const start = performance.now();
|
|
55
|
+
if (logger.isLevelEnabled('trace'))
|
|
56
|
+
logger.trace(`enter ${name}`);
|
|
57
|
+
try {
|
|
58
|
+
const result = fn();
|
|
59
|
+
const durationMs = performance.now() - start;
|
|
60
|
+
if (logger.isLevelEnabled('trace'))
|
|
61
|
+
logger.trace(`exit ${name}`, { durationMs });
|
|
62
|
+
reportBenchmark(name, durationMs);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
const durationMs = performance.now() - start;
|
|
67
|
+
if (logger.isLevelEnabled('trace'))
|
|
68
|
+
logger.trace(`error ${name}`, { durationMs });
|
|
69
|
+
reportBenchmark(name, durationMs);
|
|
70
|
+
throw e;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
19
75
|
//# sourceMappingURL=trace.js.map
|
package/dist/trace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,IAAY,EAAE,EAAoB;IAC/D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;QACrB,uDAAuD;QACvD,kCAAkC;QAClC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO;QACL,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,EAAoB;YAC9C,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,OAAO,MAAM,EAAE,EAAE,CAAC;gBACpB,CAAC;wBAAS,CAAC;oBACT,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;oBAC7C,8GAA8G;oBAC9G,kEAAkE;oBAClE,oGAAoG;oBACpG,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC7C,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAClC,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC9C,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAClC,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QACD,IAAI,CAAI,IAAY,EAAE,EAAW;YAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;gBAAE,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC7C,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;oBAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBACjF,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAClC,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC7C,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;oBAAE,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAClF,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAClC,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mbsks/rspfx-diagnostics",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -16,17 +16,17 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"license": "MIT",
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.build.json",
|
|
21
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
22
|
+
"test": "vitest run"
|
|
23
|
+
},
|
|
19
24
|
"dependencies": {
|
|
20
|
-
"@mbsks/rspfx-core": "0.0.
|
|
25
|
+
"@mbsks/rspfx-core": "0.0.14"
|
|
21
26
|
},
|
|
22
27
|
"description": "RSPFX diagnostics: logger, typed errors, benchmarks, formatting",
|
|
23
28
|
"repository": {
|
|
24
29
|
"type": "git",
|
|
25
30
|
"url": "git+https://github.com/master8848/rspfx.git"
|
|
26
|
-
},
|
|
27
|
-
"scripts": {
|
|
28
|
-
"build": "tsc -p tsconfig.build.json",
|
|
29
|
-
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
30
|
-
"test": "vitest run"
|
|
31
31
|
}
|
|
32
|
-
}
|
|
32
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 RSPFX contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|