@robinmordasiewicz/f5xc-auth 1.4.0 → 1.5.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 (3) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +32 -107
  3. package/package.json +11 -2
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Robin Mordasiewicz
3
+ Copyright (c) 2025 Robin Mordasiewicz
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,131 +1,56 @@
1
- # F5 Distributed Cloud Monorepo
1
+ # f5xc-auth
2
2
 
3
- Unified monorepo combining F5 Distributed Cloud authentication, Terraform provider, and API MCP server.
3
+ [![npm version](https://img.shields.io/npm/v/@robinmordasiewicz/f5xc-auth)](https://www.npmjs.com/package/@robinmordasiewicz/f5xc-auth)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
5
 
5
- ## Packages
6
+ Authentication library for F5 Distributed Cloud with XDG-compliant profile management.
6
7
 
7
- This monorepo contains three main packages:
8
-
9
- ### 1. [@robinmordasiewicz/f5xc-auth](./packages/f5xc-auth/)
10
-
11
- Shared authentication library for F5 Distributed Cloud MCP servers. Provides XDG-compliant profile management and credential handling.
12
-
13
- - **NPM**: `@robinmordasiewicz/f5xc-auth`
14
- - **Features**: API token, P12 certificate, cert/key authentication, profile management, URL normalization
15
- - **Directory**: `packages/f5xc-auth/`
16
-
17
- ### 2. [@robinmordasiewicz/f5xc-api-mcp](./packages/f5xc-api-mcp/)
18
-
19
- MCP (Model Context Protocol) server that exposes F5 Distributed Cloud APIs to AI assistants. Enables natural language interaction with F5XC infrastructure through Claude, VS Code, and other MCP-compatible tools.
20
-
21
- - **NPM**: `@robinmordasiewicz/f5xc-api-mcp`
22
- - **Features**: 1500+ API tools, domain-based documentation, dual-mode operation (docs + execution), curl examples
23
- - **Directory**: `packages/f5xc-api-mcp/`
24
-
25
- ### 3. [Terraform Provider for F5 Distributed Cloud](./packages/terraform-provider/)
26
-
27
- Community Terraform provider for F5 Distributed Cloud (version 3.0.0 - clean break release).
28
-
29
- - **Registry**: `robinmordasiewicz/f5xc`
30
- - **Features**: API v2 based, 98+ resources available, import support, pre-release clean break
31
- - **Directory**: `packages/terraform-provider/`
32
- - **Language**: Go
33
-
34
- ## Getting Started
35
-
36
- ### Prerequisites
37
-
38
- - Node.js >= 18.0.0
39
- - npm >= 7.0.0 (for workspace support)
40
- - Go >= 1.22 (for Terraform provider development)
41
-
42
- ### Installation
43
-
44
- Clone the repository:
45
-
46
- ```bash
47
- git clone https://github.com/robinmordasiewicz/f5xc.git
48
- cd f5xc
49
- ```
50
-
51
- Install dependencies for all packages:
52
-
53
- ```bash
54
- npm install
55
- ```
56
-
57
- ### Development
58
-
59
- Run tests across all packages:
60
-
61
- ```bash
62
- npm test
63
- ```
64
-
65
- Build all packages:
66
-
67
- ```bash
68
- npm run build
69
- ```
70
-
71
- Lint all packages:
8
+ ## Installation
72
9
 
73
10
  ```bash
74
- npm run lint
11
+ npm install @robinmordasiewicz/f5xc-auth
75
12
  ```
76
13
 
77
- ### Working with Individual Packages
14
+ ## Quick Start
78
15
 
79
- Change into a package directory and work as normal:
16
+ ```typescript
17
+ import { HttpClient, ProfileManager } from '@robinmordasiewicz/f5xc-auth';
80
18
 
81
- ```bash
82
- cd packages/f5xc-auth
83
- npm install
84
- npm run build
85
- npm test
86
- ```
19
+ // Load profile
20
+ const profile = await ProfileManager.load('my-profile');
87
21
 
88
- ## Architecture
22
+ // Create authenticated HTTP client
23
+ const client = await HttpClient.create(profile);
89
24
 
90
- The monorepo structure uses npm workspaces to manage three interdependent components:
91
-
92
- ```
93
- f5xc/
94
- ├── packages/
95
- │ ├── f5xc-auth/ # Core authentication library (TypeScript)
96
- │ ├── f5xc-api-mcp/ # MCP server wrapper (TypeScript)
97
- │ └── terraform-provider/ # Terraform provider (Go)
98
- ├── package.json # Workspace root configuration
99
- ├── README.md # This file
100
- └── .github/ # GitHub workflows
25
+ // Make API call
26
+ const response = await client.get('/api/v1/namespace');
101
27
  ```
102
28
 
103
- ## Authentication Flow
29
+ ## Features
104
30
 
105
- 1. **f5xc-auth**: Handles credential management and profile storage
106
- 2. **f5xc-api-mcp**: Uses f5xc-auth for API authentication
107
- 3. **terraform-provider**: Can use f5xc-auth patterns for credential handling
31
+ - **Multiple auth methods** - API tokens, P12 certificates, cert/key pairs
32
+ - **XDG-compliant storage** - Profiles in `~/.config/f5xc/profiles/`
33
+ - **Environment override** - Use env vars for CI/CD contexts
34
+ - **URL normalization** - Automatic tenant URL handling
35
+ - **Pre-configured HTTP** - Axios client with auth and retry logic
36
+ - **TypeScript** - Full type safety and IntelliSense support
108
37
 
109
38
  ## Documentation
110
39
 
111
- - [f5xc-auth Documentation](./packages/f5xc-auth/docs/)
112
- - [f5xc-api-mcp Documentation](./packages/f5xc-api-mcp/)
113
- - [Terraform Provider Documentation](./packages/terraform-provider/)
40
+ Full documentation: **https://robinmordasiewicz.github.io/f5xc-auth/**
114
41
 
115
- ## License
116
-
117
- MIT - See individual package LICENSE files for details.
42
+ - [Authentication Guide](https://robinmordasiewicz.github.io/f5xc-auth/authentication/)
43
+ - [API Reference](https://robinmordasiewicz.github.io/f5xc-auth/api/)
44
+ - [Examples](https://robinmordasiewicz.github.io/f5xc-auth/examples/)
118
45
 
119
- ## Contributing
46
+ ## Requirements
120
47
 
121
- See [Contributing Guidelines](./packages/f5xc-auth/docs/contributing.md) in the f5xc-auth package.
48
+ Node.js >= 18
122
49
 
123
- ## Support
50
+ ## Contributing
124
51
 
125
- - **Issues**: [GitHub Issues](https://github.com/robinmordasiewicz/f5xc/issues)
126
- - **F5 Distributed Cloud Docs**: https://docs.cloud.f5.com/
127
- - **Terraform Registry**: https://registry.terraform.io/providers/robinmordasiewicz/f5xc/
52
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for development guidelines and automated release process.
128
53
 
129
- ## Author
54
+ ## License
130
55
 
131
- Robin Mordasiewicz
56
+ MIT - see [LICENSE](./LICENSE)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-auth",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Shared authentication library for F5 Distributed Cloud MCP servers - XDG-compliant profile management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,12 +54,21 @@
54
54
  "axios": "^1.7.0",
55
55
  "yaml": "^2.7.0"
56
56
  },
57
+ "overrides": {
58
+ "glob": ">=10.5.0",
59
+ "tar": ">=7.5.3",
60
+ "undici": ">=6.23.0",
61
+ "diff": ">=8.0.3",
62
+ "semantic-release": {
63
+ "@semantic-release/npm": "$@semantic-release/npm"
64
+ }
65
+ },
57
66
  "devDependencies": {
58
67
  "@semantic-release/changelog": "^6.0.3",
59
68
  "@semantic-release/commit-analyzer": "^13.0.0",
60
69
  "@semantic-release/git": "^10.0.1",
61
70
  "@semantic-release/github": "^11.0.0",
62
- "@semantic-release/npm": "^12.0.1",
71
+ "@semantic-release/npm": "^13.1.3",
63
72
  "@semantic-release/release-notes-generator": "^14.0.1",
64
73
  "@types/node": "^22.10.0",
65
74
  "@vitest/coverage-v8": "^4.0.16",