@robinmordasiewicz/f5xc-auth 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/dist/auth/credential-manager.d.ts +177 -0
  4. package/dist/auth/credential-manager.d.ts.map +1 -0
  5. package/dist/auth/credential-manager.js +417 -0
  6. package/dist/auth/credential-manager.js.map +1 -0
  7. package/dist/auth/http-client.d.ts +86 -0
  8. package/dist/auth/http-client.d.ts.map +1 -0
  9. package/dist/auth/http-client.js +255 -0
  10. package/dist/auth/http-client.js.map +1 -0
  11. package/dist/auth/index.d.ts +6 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/auth/index.js +6 -0
  14. package/dist/auth/index.js.map +1 -0
  15. package/dist/config/index.d.ts +5 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +5 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/config/paths.d.ts +36 -0
  20. package/dist/config/paths.d.ts.map +1 -0
  21. package/dist/config/paths.js +68 -0
  22. package/dist/config/paths.js.map +1 -0
  23. package/dist/index.d.ts +30 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +34 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/profile/index.d.ts +6 -0
  28. package/dist/profile/index.d.ts.map +1 -0
  29. package/dist/profile/index.js +6 -0
  30. package/dist/profile/index.js.map +1 -0
  31. package/dist/profile/manager.d.ts +74 -0
  32. package/dist/profile/manager.d.ts.map +1 -0
  33. package/dist/profile/manager.js +326 -0
  34. package/dist/profile/manager.js.map +1 -0
  35. package/dist/profile/types.d.ts +53 -0
  36. package/dist/profile/types.d.ts.map +1 -0
  37. package/dist/profile/types.js +7 -0
  38. package/dist/profile/types.js.map +1 -0
  39. package/dist/utils/errors.d.ts +66 -0
  40. package/dist/utils/errors.d.ts.map +1 -0
  41. package/dist/utils/errors.js +179 -0
  42. package/dist/utils/errors.js.map +1 -0
  43. package/dist/utils/index.d.ts +6 -0
  44. package/dist/utils/index.d.ts.map +1 -0
  45. package/dist/utils/index.js +6 -0
  46. package/dist/utils/index.js.map +1 -0
  47. package/dist/utils/logging.d.ts +75 -0
  48. package/dist/utils/logging.d.ts.map +1 -0
  49. package/dist/utils/logging.js +131 -0
  50. package/dist/utils/logging.js.map +1 -0
  51. package/package.json +54 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Utils module exports
3
+ */
4
+ export * from "./logging.js";
5
+ export * from "./errors.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Logging utilities for f5xc-auth
3
+ *
4
+ * Uses stderr for logging to avoid interfering with STDIO transport.
5
+ * Provides structured logging with levels and context.
6
+ */
7
+ /**
8
+ * Log levels
9
+ */
10
+ export declare enum LogLevel {
11
+ DEBUG = "debug",
12
+ INFO = "info",
13
+ WARN = "warn",
14
+ ERROR = "error"
15
+ }
16
+ /**
17
+ * Logger configuration
18
+ */
19
+ export interface LoggerConfig {
20
+ /** Minimum log level to output */
21
+ level: LogLevel;
22
+ /** Include timestamp in log output */
23
+ timestamps: boolean;
24
+ /** Enable JSON format for structured logging */
25
+ json: boolean;
26
+ }
27
+ /**
28
+ * Logger class for structured logging to stderr
29
+ */
30
+ declare class Logger {
31
+ private config;
32
+ constructor(config?: Partial<LoggerConfig>);
33
+ /**
34
+ * Check if a log level should be output
35
+ */
36
+ private shouldLog;
37
+ /**
38
+ * Format and output a log entry
39
+ */
40
+ private log;
41
+ /**
42
+ * Log a debug message
43
+ */
44
+ debug(message: string, context?: Record<string, unknown>): void;
45
+ /**
46
+ * Log an info message
47
+ */
48
+ info(message: string, context?: Record<string, unknown>): void;
49
+ /**
50
+ * Log a warning message
51
+ */
52
+ warn(message: string, context?: Record<string, unknown>): void;
53
+ /**
54
+ * Log an error message
55
+ */
56
+ error(message: string, context?: Record<string, unknown>): void;
57
+ /**
58
+ * Set the minimum log level
59
+ */
60
+ setLevel(level: LogLevel): void;
61
+ /**
62
+ * Get current configuration
63
+ */
64
+ getConfig(): Readonly<LoggerConfig>;
65
+ }
66
+ /**
67
+ * Singleton logger instance
68
+ */
69
+ export declare const logger: Logger;
70
+ /**
71
+ * Create a child logger with additional context
72
+ */
73
+ export declare function createLogger(config?: Partial<LoggerConfig>): Logger;
74
+ export {};
75
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAYD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,EAAE,QAAQ,CAAC;IAChB,sCAAsC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,IAAI,EAAE,OAAO,CAAC;CACf;AAqBD;;GAEG;AACH,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAc9C;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,GAAG;IA+BX;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC;CAGpC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAe,CAAC;AAEnC;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Logging utilities for f5xc-auth
3
+ *
4
+ * Uses stderr for logging to avoid interfering with STDIO transport.
5
+ * Provides structured logging with levels and context.
6
+ */
7
+ /**
8
+ * Log levels
9
+ */
10
+ export var LogLevel;
11
+ (function (LogLevel) {
12
+ LogLevel["DEBUG"] = "debug";
13
+ LogLevel["INFO"] = "info";
14
+ LogLevel["WARN"] = "warn";
15
+ LogLevel["ERROR"] = "error";
16
+ })(LogLevel || (LogLevel = {}));
17
+ /**
18
+ * Log level priority for filtering
19
+ */
20
+ const LOG_LEVEL_PRIORITY = {
21
+ [LogLevel.DEBUG]: 0,
22
+ [LogLevel.INFO]: 1,
23
+ [LogLevel.WARN]: 2,
24
+ [LogLevel.ERROR]: 3,
25
+ };
26
+ /**
27
+ * Default logger configuration
28
+ */
29
+ const DEFAULT_CONFIG = {
30
+ level: LogLevel.INFO,
31
+ timestamps: true,
32
+ json: false,
33
+ };
34
+ /**
35
+ * Logger class for structured logging to stderr
36
+ */
37
+ class Logger {
38
+ config;
39
+ constructor(config = {}) {
40
+ this.config = { ...DEFAULT_CONFIG, ...config };
41
+ // Check for environment variable overrides
42
+ const envLevel = process.env["LOG_LEVEL"]?.toLowerCase();
43
+ if (envLevel && Object.values(LogLevel).includes(envLevel)) {
44
+ this.config.level = envLevel;
45
+ }
46
+ if (process.env["LOG_JSON"] === "true") {
47
+ this.config.json = true;
48
+ }
49
+ }
50
+ /**
51
+ * Check if a log level should be output
52
+ */
53
+ shouldLog(level) {
54
+ return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.config.level];
55
+ }
56
+ /**
57
+ * Format and output a log entry
58
+ */
59
+ log(entry) {
60
+ if (!this.shouldLog(entry.level)) {
61
+ return;
62
+ }
63
+ if (this.config.timestamps) {
64
+ entry.timestamp = new Date().toISOString();
65
+ }
66
+ if (this.config.json) {
67
+ // Structured JSON output
68
+ process.stderr.write(JSON.stringify(entry) + "\n");
69
+ }
70
+ else {
71
+ // Human-readable output
72
+ const parts = [];
73
+ if (entry.timestamp) {
74
+ parts.push(`[${entry.timestamp}]`);
75
+ }
76
+ parts.push(`[${entry.level.toUpperCase()}]`);
77
+ parts.push(entry.message);
78
+ if (entry.context && Object.keys(entry.context).length > 0) {
79
+ parts.push(JSON.stringify(entry.context));
80
+ }
81
+ process.stderr.write(parts.join(" ") + "\n");
82
+ }
83
+ }
84
+ /**
85
+ * Log a debug message
86
+ */
87
+ debug(message, context) {
88
+ this.log({ level: LogLevel.DEBUG, message, context });
89
+ }
90
+ /**
91
+ * Log an info message
92
+ */
93
+ info(message, context) {
94
+ this.log({ level: LogLevel.INFO, message, context });
95
+ }
96
+ /**
97
+ * Log a warning message
98
+ */
99
+ warn(message, context) {
100
+ this.log({ level: LogLevel.WARN, message, context });
101
+ }
102
+ /**
103
+ * Log an error message
104
+ */
105
+ error(message, context) {
106
+ this.log({ level: LogLevel.ERROR, message, context });
107
+ }
108
+ /**
109
+ * Set the minimum log level
110
+ */
111
+ setLevel(level) {
112
+ this.config.level = level;
113
+ }
114
+ /**
115
+ * Get current configuration
116
+ */
117
+ getConfig() {
118
+ return Object.freeze({ ...this.config });
119
+ }
120
+ }
121
+ /**
122
+ * Singleton logger instance
123
+ */
124
+ export const logger = new Logger();
125
+ /**
126
+ * Create a child logger with additional context
127
+ */
128
+ export function createLogger(config) {
129
+ return new Logger(config);
130
+ }
131
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@robinmordasiewicz/f5xc-auth",
3
+ "version": "1.0.0",
4
+ "description": "Shared authentication library for F5 Distributed Cloud MCP servers - XDG-compliant profile management",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md",
11
+ "LICENSE"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "dev": "tsc --watch",
16
+ "test": "vitest run",
17
+ "test:watch": "vitest",
18
+ "clean": "rm -rf dist",
19
+ "prepublishOnly": "npm run build",
20
+ "typecheck": "tsc --noEmit"
21
+ },
22
+ "keywords": [
23
+ "f5",
24
+ "f5xc",
25
+ "f5-distributed-cloud",
26
+ "authentication",
27
+ "xdg",
28
+ "profile-management",
29
+ "mcp",
30
+ "model-context-protocol"
31
+ ],
32
+ "author": "Robin Mordasiewicz",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/robinmordasiewicz/f5xc-auth.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/robinmordasiewicz/f5xc-auth/issues"
40
+ },
41
+ "homepage": "https://github.com/robinmordasiewicz/f5xc-auth#readme",
42
+ "engines": {
43
+ "node": ">=18"
44
+ },
45
+ "dependencies": {
46
+ "axios": "^1.7.0",
47
+ "yaml": "^2.7.0"
48
+ },
49
+ "devDependencies": {
50
+ "@types/node": "^22.10.0",
51
+ "typescript": "^5.7.2",
52
+ "vitest": "^2.1.0"
53
+ }
54
+ }