@rodit/rodit-auth-be 9.11.14

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.
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Version Manager for RODiT SDK
3
+ *
4
+ * Handles API versioning for client-side requests, ensuring proper version headers
5
+ * are included in all API calls.
6
+ *
7
+ * Copyright (c) 2026 Discernible IO. All rights reserved.
8
+ */
9
+
10
+ const config = require('./configsdk');
11
+
12
+ /**
13
+ * Version Manager class for handling API versioning in client requests
14
+ */
15
+ class VersionManager {
16
+ /**
17
+ * Create a new VersionManager instance
18
+ * @param {Object} versioning - Configuration versioning
19
+ * @param {string} [versioning.version] - API version to use
20
+ */
21
+ constructor(versioning = {}) {
22
+ this.version = versioning.version || config.get('API_VERSION');
23
+ }
24
+
25
+ /**
26
+ * Set the API version to use for requests
27
+ * @param {string} version - API version in format X.Y.Z
28
+ * @returns {VersionManager} This instance for chaining
29
+ */
30
+ setVersion(version) {
31
+ if (!version || typeof version !== 'string') {
32
+ throw new Error('Version must be a valid string in format X.Y.Z');
33
+ }
34
+
35
+ // Validate version format
36
+ if (!version.match(/^\d+\.\d+\.\d+$/)) {
37
+ throw new Error('Version must be in format X.Y.Z (e.g., 1.0.0)');
38
+ }
39
+
40
+ this.version = version;
41
+ return this;
42
+ }
43
+
44
+
45
+ /**
46
+ * Apply version headers to a request versioning object
47
+ * @param {Object} versioning - Request versioning object (e.g., for fetch or axios)
48
+ * @returns {Object} Updated versioning with version headers
49
+ */
50
+ applyVersionHeaders(versioning = {}) {
51
+ if (!versioning.headers) {
52
+ versioning.headers = {};
53
+ }
54
+
55
+ // Always apply version header
56
+ versioning.headers['X-API-Version'] = this.version;
57
+
58
+ return versioning;
59
+ }
60
+
61
+ /**
62
+ * Create a headers object with version headers
63
+ * @returns {Object} Headers object with version headers
64
+ */
65
+ getVersionHeaders() {
66
+ const headers = {};
67
+
68
+ // Always include version header
69
+ headers['X-API-Version'] = this.version;
70
+
71
+ return headers;
72
+ }
73
+ }
74
+
75
+ // Create a singleton instance
76
+ const versionManager = new VersionManager();
77
+
78
+ module.exports = {
79
+ VersionManager,
80
+ versionManager
81
+ };