@rudderjs/hash 1.0.3 → 1.1.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":""}
package/dist/doctor.js ADDED
@@ -0,0 +1,62 @@
1
+ // Doctor checks contributed by @rudderjs/hash.
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { registerDoctorCheck } from '@rudderjs/console';
5
+ const KNOWN_DRIVERS = ['bcrypt', 'argon2'];
6
+ registerDoctorCheck({
7
+ id: 'hash:driver',
8
+ category: 'auth',
9
+ title: 'Hash driver',
10
+ run() {
11
+ // Heuristic-only — we read config/hash.ts as text and look for a
12
+ // `driver:` literal. Importing the config module would require a booted
13
+ // app + Env, which fast-path doctor must avoid.
14
+ const candidates = ['config/hash.ts', 'config/hash.js', 'config/hash.mjs'];
15
+ let text = null;
16
+ for (const rel of candidates) {
17
+ try {
18
+ text = fs.readFileSync(path.join(process.cwd(), rel), 'utf-8');
19
+ break;
20
+ }
21
+ catch { /* keep trying */ }
22
+ }
23
+ if (text === null) {
24
+ return { status: 'ok', message: 'no config/hash.ts — uses default driver (bcrypt)' };
25
+ }
26
+ // Look for `driver: 'bcrypt'` / `driver: "argon2"` / `Env.get('HASH_DRIVER', 'bcrypt')`
27
+ const literalMatch = /driver\s*:\s*['"]([^'"]+)['"]/.exec(text);
28
+ const envFallback = /HASH_DRIVER['"]?\s*,\s*['"]([^'"]+)['"]/.exec(text);
29
+ const declared = literalMatch?.[1] ?? envFallback?.[1];
30
+ if (!declared) {
31
+ return { status: 'ok', message: 'config/hash.ts present, driver not statically inferable — skip' };
32
+ }
33
+ if (!KNOWN_DRIVERS.includes(declared)) {
34
+ return {
35
+ status: 'error',
36
+ message: `unknown driver "${declared}" — supported: ${KNOWN_DRIVERS.join(', ')}`,
37
+ fix: `Set config/hash.ts driver to one of: ${KNOWN_DRIVERS.join(', ')}`,
38
+ };
39
+ }
40
+ // If the driver requires an extra package (argon2), warn if it's not resolvable
41
+ if (declared === 'argon2') {
42
+ const argonResolvable = (() => {
43
+ try {
44
+ fs.statSync(path.join(process.cwd(), 'node_modules', 'argon2', 'package.json'));
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ })();
51
+ if (!argonResolvable) {
52
+ return {
53
+ status: 'error',
54
+ message: 'driver "argon2" but `argon2` npm package not installed',
55
+ fix: 'pnpm add argon2',
56
+ };
57
+ }
58
+ }
59
+ return { status: 'ok', message: `${declared}` };
60
+ },
61
+ });
62
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAqB,MAAM,mBAAmB,CAAA;AAE1E,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAEnD,mBAAmB,CAAC;IAClB,EAAE,EAAQ,aAAa;IACvB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAK,aAAa;IACvB,GAAG;QACD,iEAAiE;QACjE,wEAAwE;QACxE,gDAAgD;QAChD,MAAM,UAAU,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;QAC1E,IAAI,IAAI,GAAkB,IAAI,CAAA;QAC9B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;gBAC9D,MAAK;YACP,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAA;QACtF,CAAC;QACD,wFAAwF;QACxF,MAAM,YAAY,GAAG,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,MAAM,WAAW,GAAI,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,CAAA;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gEAAgE,EAAE,CAAA;QACpG,CAAC;QACD,IAAI,CAAE,aAAmC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,MAAM,EAAG,OAAO;gBAChB,OAAO,EAAE,mBAAmB,QAAQ,kBAAkB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChF,GAAG,EAAM,wCAAwC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC5E,CAAA;QACH,CAAC;QACD,gFAAgF;QAChF,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC;oBACH,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAA;oBAC/E,OAAO,IAAI,CAAA;gBACb,CAAC;gBAAC,MAAM,CAAC;oBAAC,OAAO,KAAK,CAAA;gBAAC,CAAC;YAC1B,CAAC,CAAC,EAAE,CAAA;YACJ,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO;oBACL,MAAM,EAAG,OAAO;oBAChB,OAAO,EAAE,wDAAwD;oBACjE,GAAG,EAAM,iBAAiB;iBAC3B,CAAA;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAA;IACjD,CAAC;CACF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudderjs/hash",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "rudderjs": {
5
5
  "provider": "HashProvider",
6
6
  "stage": "infrastructure"
@@ -25,11 +25,16 @@
25
25
  ".": {
26
26
  "import": "./dist/index.js",
27
27
  "types": "./dist/index.d.ts"
28
+ },
29
+ "./doctor": {
30
+ "import": "./dist/doctor.js",
31
+ "types": "./dist/doctor.d.ts"
28
32
  }
29
33
  },
30
34
  "dependencies": {
31
35
  "bcryptjs": "^2.4.3",
32
- "@rudderjs/core": "^1.1.6"
36
+ "@rudderjs/console": "^1.1.0",
37
+ "@rudderjs/core": "^1.1.7"
33
38
  },
34
39
  "optionalDependencies": {
35
40
  "argon2": "^0.41.0"
@@ -47,6 +52,6 @@
47
52
  "typecheck": "tsc --noEmit",
48
53
  "lint": "eslint src",
49
54
  "clean": "rm -rf dist",
50
- "test": "tsc -p tsconfig.test.json && node --test dist-test/index.test.js; EXIT=$?; rm -rf dist-test; exit $EXIT"
55
+ "test": "tsc -p tsconfig.test.json && node --test dist-test/index.test.js"
51
56
  }
52
57
  }