node-consul-service 1.0.19 → 1.0.20

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 (2) hide show
  1. package/README.md +125 -28
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,44 +1,60 @@
1
1
  # Node Consul Service
2
2
 
3
- A Node.js service that integrates with HashiCorp Consul for service discovery and configuration management. This service provides a robust solution for managing distributed systems and microservices architecture.
4
-
5
- ### Features
6
- - Service registration and discovery
7
- - Health checking
8
- - Service communication
9
- - Service instance management
10
-
11
- ### Prerequisites
3
+ A robust Node.js service that integrates with HashiCorp Consul for service discovery and configuration management. This service provides a comprehensive solution for managing distributed systems and microservices architecture, making it easier to handle service communication, health checks, and configuration management in a distributed environment.
4
+
5
+ ## Table of Contents
6
+ - [Features](#features)
7
+ - [Prerequisites](#prerequisites)
8
+ - [Installation](#installation)
9
+ - [Configuration](#configuration)
10
+ - [API Documentation](#api-documentation)
11
+ - [Examples](#examples)
12
+ - [Contributing](#contributing)
13
+ - [License](#license)
14
+
15
+ ## Features
16
+ - **Service Registration & Discovery**: Automatically register and discover services in your distributed system
17
+ - **Health Checking**: Built-in health check mechanisms for service monitoring
18
+ - **Service Communication**: Simplified inter-service communication with automatic load balancing
19
+ - **Service Instance Management**: Easy management of multiple service instances
20
+ - **Data Linking**: Efficient data aggregation and linking across services
21
+ - **Caching Support**: Optional caching mechanism for improved performance
22
+
23
+ ## Prerequisites
12
24
  - Node.js (v14 or higher)
13
- - Consul server
14
- - npm
25
+ - HashiCorp Consul server
26
+ - npm or yarn package manager
27
+
28
+ ## Installation
15
29
 
16
- ### Installation
17
30
  ```bash
31
+ # Using npm
18
32
  npm install node-consul-service
33
+
34
+ # Using yarn
35
+ yarn add node-consul-service
19
36
  ```
20
37
 
21
- ### Configuration
38
+ ## Configuration
39
+
22
40
  Create a `.env` file in your project root with the following variables:
41
+
23
42
  ```env
24
43
  CONSUL_HOST=your-consul-host
25
44
  CONSUL_PORT=8500
26
45
  CONSUL_SECURE=false
46
+ CONSUL_TOKEN=your-consul-token # Optional
47
+ CONSUL_DC=your-datacenter # Optional
27
48
  ```
28
49
 
29
- ### Function Usage
30
- Here are the main functions available in the service:
50
+ ## API Documentation
31
51
 
52
+ ### Core Functions
53
+
54
+ #### Service Registration
32
55
  ```javascript
33
- const {
34
- registerService,
35
- callService,
36
- listServices,
37
- getServiceInstances,
38
- getRandomServiceInstance
39
- } = require('node-consul-service');
56
+ const { registerService } = require('node-consul-service');
40
57
 
41
- // Register a new service
42
58
  await registerService({
43
59
  name: 'service-name',
44
60
  id: 'service-id',
@@ -52,10 +68,31 @@ await registerService({
52
68
  deregistercriticalserviceafter: '1m'
53
69
  }
54
70
  });
71
+ ```
55
72
 
56
- // Call another service
73
+ #### Service Communication
74
+ ```javascript
75
+ const { callService } = require('node-consul-service');
76
+
77
+ // Simple GET request
57
78
  const result = await callService('service-name', '/endpoint');
58
79
 
80
+ // POST request with data
81
+ const response = await callService('service-name', {
82
+ method: 'POST',
83
+ path: '/endpoint',
84
+ data: { key: 'value' }
85
+ });
86
+ ```
87
+
88
+ #### Service Discovery
89
+ ```javascript
90
+ const {
91
+ listServices,
92
+ getServiceInstances,
93
+ getRandomServiceInstance
94
+ } = require('node-consul-service');
95
+
59
96
  // List all registered services
60
97
  const services = await listServices();
61
98
 
@@ -64,14 +101,15 @@ const instances = await getServiceInstances('service-name');
64
101
 
65
102
  // Get a random instance of a service
66
103
  const instance = await getRandomServiceInstance('service-name');
104
+ ```
105
+
106
+ ### Data Linking
67
107
 
68
- ### dataLink Function
69
- This function is used to link data from different services. It aggregates data from multiple sources and links them based on common identifiers.
108
+ The `dataLink` function provides a powerful way to aggregate and link data from multiple services efficiently.
70
109
 
71
110
  ```javascript
72
111
  const { dataLink } = require('node-consul-service');
73
112
 
74
- // Example of using dataLink
75
113
  const data = [
76
114
  { userId: '123', name: 'John' },
77
115
  { userId: '456', name: 'Jane' }
@@ -98,5 +136,64 @@ const result = await dataLink(data, schema);
98
136
  - `path`: API endpoint path in the target service
99
137
  - `cacheGetter`: Optional function to get data from cache before calling the service
100
138
 
101
- ### License
139
+ ## Examples
140
+
141
+ ### Basic Service Setup
142
+ ```javascript
143
+ const { registerService, callService } = require('node-consul-service');
144
+
145
+ // Register your service
146
+ await registerService({
147
+ name: 'my-service',
148
+ id: 'my-service-1',
149
+ port: 3000,
150
+ address: 'localhost',
151
+ check: {
152
+ http: 'http://localhost:3000/health',
153
+ interval: '10s'
154
+ }
155
+ });
156
+
157
+ // Call another service
158
+ const response = await callService('other-service', '/api/data');
159
+ ```
160
+
161
+ ### Advanced Data Linking
162
+ ```javascript
163
+ const { dataLink } = require('node-consul-service');
164
+
165
+ // Complex data linking example
166
+ const orders = [
167
+ { orderId: '1', userId: '123', productId: 'P1' },
168
+ { orderId: '2', userId: '456', productId: 'P2' }
169
+ ];
170
+
171
+ const schema = [
172
+ {
173
+ filed: 'userId',
174
+ service: 'user-service',
175
+ path: '/api/users/batch'
176
+ },
177
+ {
178
+ filed: 'productId',
179
+ service: 'product-service',
180
+ path: '/api/products/batch'
181
+ }
182
+ ];
183
+
184
+ const enrichedOrders = await dataLink(orders, schema);
185
+ ```
186
+
187
+ ## Contributing
188
+
189
+ We welcome contributions! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
190
+
191
+ 1. Fork the repository
192
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
193
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
194
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
195
+ 5. Open a Pull Request
196
+
197
+ ## License
198
+
102
199
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-consul-service",
3
- "version": "1.0.19",
3
+ "version": "1.0.20",
4
4
  "main": "dist/index.cjs.js",
5
5
  "module": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",