@setgo/sdk 1.0.1
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 +184 -0
- package/dist/core/client.d.ts +81 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +319 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/metrics-reporter.d.ts +40 -0
- package/dist/core/metrics-reporter.d.ts.map +1 -0
- package/dist/core/metrics-reporter.js +152 -0
- package/dist/core/repository.d.ts +37 -0
- package/dist/core/repository.d.ts.map +1 -0
- package/dist/core/repository.js +58 -0
- package/dist/core/strategy-evaluator.d.ts +43 -0
- package/dist/core/strategy-evaluator.d.ts.map +1 -0
- package/dist/core/strategy-evaluator.js +209 -0
- package/dist/errors/index.d.ts +22 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +52 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/nestjs/index.d.ts +7 -0
- package/dist/nestjs/index.d.ts.map +1 -0
- package/dist/nestjs/index.js +13 -0
- package/dist/nestjs/setgo.constants.d.ts +6 -0
- package/dist/nestjs/setgo.constants.d.ts.map +1 -0
- package/dist/nestjs/setgo.constants.js +8 -0
- package/dist/nestjs/setgo.module.d.ts +20 -0
- package/dist/nestjs/setgo.module.d.ts.map +1 -0
- package/dist/nestjs/setgo.module.js +64 -0
- package/dist/nestjs/setgo.service.d.ts +34 -0
- package/dist/nestjs/setgo.service.d.ts.map +1 -0
- package/dist/nestjs/setgo.service.js +84 -0
- package/dist/types/config.d.ts +41 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/events.d.ts +21 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +5 -0
- package/dist/types/features.d.ts +41 -0
- package/dist/types/features.d.ts.map +1 -0
- package/dist/types/features.js +5 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/metrics.d.ts +16 -0
- package/dist/types/metrics.d.ts.map +1 -0
- package/dist/types/metrics.js +5 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/ip-matcher.d.ts +14 -0
- package/dist/utils/ip-matcher.d.ts.map +1 -0
- package/dist/utils/ip-matcher.js +165 -0
- package/dist/utils/murmurhash.d.ts +10 -0
- package/dist/utils/murmurhash.d.ts.map +1 -0
- package/dist/utils/murmurhash.js +59 -0
- package/package.json +72 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MurmurHash3 implementation for consistent hashing
|
|
4
|
+
* Used for gradual rollout percentages
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.murmurhash3 = murmurhash3;
|
|
8
|
+
exports.normalizedHash = normalizedHash;
|
|
9
|
+
function murmurhash3(key, seed = 0) {
|
|
10
|
+
const remainder = key.length & 3;
|
|
11
|
+
const bytes = key.length - remainder;
|
|
12
|
+
let h1 = seed;
|
|
13
|
+
const c1 = 0xcc9e2d51;
|
|
14
|
+
const c2 = 0x1b873593;
|
|
15
|
+
let i = 0;
|
|
16
|
+
while (i < bytes) {
|
|
17
|
+
let k1 = (key.charCodeAt(i) & 0xff) |
|
|
18
|
+
((key.charCodeAt(i + 1) & 0xff) << 8) |
|
|
19
|
+
((key.charCodeAt(i + 2) & 0xff) << 16) |
|
|
20
|
+
((key.charCodeAt(i + 3) & 0xff) << 24);
|
|
21
|
+
k1 = Math.imul(k1, c1);
|
|
22
|
+
k1 = (k1 << 15) | (k1 >>> 17);
|
|
23
|
+
k1 = Math.imul(k1, c2);
|
|
24
|
+
h1 ^= k1;
|
|
25
|
+
h1 = (h1 << 13) | (h1 >>> 19);
|
|
26
|
+
h1 = Math.imul(h1, 5) + 0xe6546b64;
|
|
27
|
+
i += 4;
|
|
28
|
+
}
|
|
29
|
+
let k1 = 0;
|
|
30
|
+
switch (remainder) {
|
|
31
|
+
case 3:
|
|
32
|
+
k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;
|
|
33
|
+
// fallthrough
|
|
34
|
+
case 2:
|
|
35
|
+
k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;
|
|
36
|
+
// fallthrough
|
|
37
|
+
case 1:
|
|
38
|
+
k1 ^= key.charCodeAt(i) & 0xff;
|
|
39
|
+
k1 = Math.imul(k1, c1);
|
|
40
|
+
k1 = (k1 << 15) | (k1 >>> 17);
|
|
41
|
+
k1 = Math.imul(k1, c2);
|
|
42
|
+
h1 ^= k1;
|
|
43
|
+
}
|
|
44
|
+
h1 ^= key.length;
|
|
45
|
+
h1 ^= h1 >>> 16;
|
|
46
|
+
h1 = Math.imul(h1, 0x85ebca6b);
|
|
47
|
+
h1 ^= h1 >>> 13;
|
|
48
|
+
h1 = Math.imul(h1, 0xc2b2ae35);
|
|
49
|
+
h1 ^= h1 >>> 16;
|
|
50
|
+
return h1 >>> 0;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Normalize hash to a percentage (0-100)
|
|
54
|
+
*/
|
|
55
|
+
function normalizedHash(groupId, identifier, normalizer = 100) {
|
|
56
|
+
const key = `${groupId}:${identifier}`;
|
|
57
|
+
const hash = murmurhash3(key);
|
|
58
|
+
return (hash % normalizer) + 1;
|
|
59
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@setgo/sdk",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "SDK oficial do SetGo Feature Flags",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"author": "Scoder Tech",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/Scoder-Tech/SetGo-SDK.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/Scoder-Tech/SetGo-SDK/issues"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"feature-flags",
|
|
16
|
+
"feature-toggles",
|
|
17
|
+
"setgo",
|
|
18
|
+
"nestjs",
|
|
19
|
+
"sdk"
|
|
20
|
+
],
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.0.0"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"README.md"
|
|
27
|
+
],
|
|
28
|
+
"main": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"types": "./src/index.ts",
|
|
33
|
+
"default": "./dist/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./nestjs": {
|
|
36
|
+
"types": "./src/nestjs/index.ts",
|
|
37
|
+
"default": "./dist/nestjs/index.js"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"dev": "tsc --watch",
|
|
42
|
+
"build": "tsc",
|
|
43
|
+
"lint": "eslint src --fix",
|
|
44
|
+
"format": "prettier --write src",
|
|
45
|
+
"lint:check": "eslint src && prettier --check src"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@nestjs/common": ">=10.0.0",
|
|
49
|
+
"@nestjs/core": ">=10.0.0"
|
|
50
|
+
},
|
|
51
|
+
"peerDependenciesMeta": {
|
|
52
|
+
"@nestjs/common": {
|
|
53
|
+
"optional": true
|
|
54
|
+
},
|
|
55
|
+
"@nestjs/core": {
|
|
56
|
+
"optional": true
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@eslint/js": "^9.39.2",
|
|
61
|
+
"@nestjs/common": "^10.0.0",
|
|
62
|
+
"@nestjs/core": "^10.0.0",
|
|
63
|
+
"@types/node": "^20.0.0",
|
|
64
|
+
"eslint": "^9.39.2",
|
|
65
|
+
"eslint-config-prettier": "^10.1.8",
|
|
66
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
67
|
+
"prettier": "^3.8.0",
|
|
68
|
+
"typescript": "^5.7.3",
|
|
69
|
+
"typescript-eslint": "^8.53.1",
|
|
70
|
+
"vitest": "^2.0.0"
|
|
71
|
+
}
|
|
72
|
+
}
|