@venizia/ignis-helpers 0.2.0-0 → 0.2.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/dist/cjs/modules/uid/request-id.d.ts +15 -6
- package/dist/cjs/modules/uid/request-id.d.ts.map +1 -1
- package/dist/cjs/modules/uid/request-id.js +47 -17
- package/dist/cjs/modules/uid/request-id.js.map +1 -1
- package/dist/esm/modules/uid/request-id.d.ts +15 -6
- package/dist/esm/modules/uid/request-id.d.ts.map +1 -1
- package/dist/esm/modules/uid/request-id.js +47 -17
- package/dist/esm/modules/uid/request-id.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,18 +3,27 @@ import { BaseHelper } from '../base';
|
|
|
3
3
|
* The correlation id every IGNIS host stamps on a request, so a server, a browser Worker and the
|
|
4
4
|
* page calling it cannot drift into different formats.
|
|
5
5
|
*
|
|
6
|
-
* Never `crypto.randomUUID()
|
|
7
|
-
* a SECURE CONTEXT
|
|
6
|
+
* Never `crypto.randomUUID()` on its own, which is `hono/request-id`'s default: browsers gate that
|
|
7
|
+
* one API on a SECURE CONTEXT. Measured in Chrome - on `http://<lan-ip>` both the page and a Worker
|
|
8
|
+
* report `crypto` present and `getRandomValues` working, while `randomUUID` and `subtle` are
|
|
9
|
+
* `undefined` and the call throws `TypeError`. On `http://localhost` (a secure origin) all four are
|
|
10
|
+
* there. So the gate follows the ORIGIN, not the worker: testing from a phone over the LAN is
|
|
11
|
+
* enough to lose it.
|
|
8
12
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
13
|
+
* `getRandomValues` carries no such gate, so the fallback below builds the identical shape from raw
|
|
14
|
+
* entropy - a log pipeline cannot tell the two paths apart.
|
|
11
15
|
*/
|
|
12
16
|
export declare class RequestIdGenerator extends BaseHelper {
|
|
13
|
-
|
|
14
|
-
private
|
|
17
|
+
/** 256 pre-rendered octets: formatting a byte as hex costs more than drawing the entropy does. */
|
|
18
|
+
private static readonly HEX_OCTETS;
|
|
19
|
+
/** Reused across calls - `nextId()` never yields between filling this and reading it. */
|
|
20
|
+
private readonly entropy;
|
|
21
|
+
private readonly generate;
|
|
15
22
|
constructor(opts?: {
|
|
16
23
|
scope?: string;
|
|
17
24
|
});
|
|
18
25
|
nextId(): string;
|
|
26
|
+
/** RFC 9562 version 4, same shape `crypto.randomUUID()` returns: version nibble 4, variant 10xx. */
|
|
27
|
+
private uuidFromEntropy;
|
|
19
28
|
}
|
|
20
29
|
//# sourceMappingURL=request-id.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-id.d.ts","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"request-id.d.ts","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,kGAAkG;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAEhC;IAEF,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAE5B,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAWrC,MAAM,IAAI,MAAM;IAIhB,oGAAoG;IACpG,OAAO,CAAC,eAAe;CAgCxB"}
|
|
@@ -2,34 +2,64 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RequestIdGenerator = void 0;
|
|
4
4
|
const base_1 = require("../base");
|
|
5
|
-
const helper_1 = require("./helper");
|
|
6
5
|
/**
|
|
7
6
|
* The correlation id every IGNIS host stamps on a request, so a server, a browser Worker and the
|
|
8
7
|
* page calling it cannot drift into different formats.
|
|
9
8
|
*
|
|
10
|
-
* Never `crypto.randomUUID()
|
|
11
|
-
* a SECURE CONTEXT
|
|
9
|
+
* Never `crypto.randomUUID()` on its own, which is `hono/request-id`'s default: browsers gate that
|
|
10
|
+
* one API on a SECURE CONTEXT. Measured in Chrome - on `http://<lan-ip>` both the page and a Worker
|
|
11
|
+
* report `crypto` present and `getRandomValues` working, while `randomUUID` and `subtle` are
|
|
12
|
+
* `undefined` and the call throws `TypeError`. On `http://localhost` (a secure origin) all four are
|
|
13
|
+
* there. So the gate follows the ORIGIN, not the worker: testing from a phone over the LAN is
|
|
14
|
+
* enough to lose it.
|
|
12
15
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
16
|
+
* `getRandomValues` carries no such gate, so the fallback below builds the identical shape from raw
|
|
17
|
+
* entropy - a log pipeline cannot tell the two paths apart.
|
|
15
18
|
*/
|
|
16
19
|
class RequestIdGenerator extends base_1.BaseHelper {
|
|
20
|
+
/** 256 pre-rendered octets: formatting a byte as hex costs more than drawing the entropy does. */
|
|
21
|
+
static { this.HEX_OCTETS = Array.from({ length: 256 }, (_, value) => (value + 0x100).toString(16).slice(1)); }
|
|
17
22
|
constructor(opts) {
|
|
18
23
|
super({ scope: opts?.scope ?? RequestIdGenerator.name });
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
24
|
+
/** Reused across calls - `nextId()` never yields between filling this and reading it. */
|
|
25
|
+
this.entropy = new Uint8Array(16);
|
|
26
|
+
// Resolved once, not per call: whether the host exposes `randomUUID` is fixed for the life of a
|
|
27
|
+
// realm, so a per-request branch would only pay for a question already answered.
|
|
28
|
+
this.generate =
|
|
29
|
+
typeof globalThis.crypto?.randomUUID === 'function'
|
|
30
|
+
? () => globalThis.crypto.randomUUID()
|
|
31
|
+
: () => this.uuidFromEntropy();
|
|
21
32
|
}
|
|
22
33
|
nextId() {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
return this.generate();
|
|
35
|
+
}
|
|
36
|
+
/** RFC 9562 version 4, same shape `crypto.randomUUID()` returns: version nibble 4, variant 10xx. */
|
|
37
|
+
uuidFromEntropy() {
|
|
38
|
+
const bytes = this.entropy;
|
|
39
|
+
globalThis.crypto.getRandomValues(bytes);
|
|
40
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
41
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
42
|
+
const hex = RequestIdGenerator.HEX_OCTETS;
|
|
43
|
+
return (hex[bytes[0]] +
|
|
44
|
+
hex[bytes[1]] +
|
|
45
|
+
hex[bytes[2]] +
|
|
46
|
+
hex[bytes[3]] +
|
|
47
|
+
'-' +
|
|
48
|
+
hex[bytes[4]] +
|
|
49
|
+
hex[bytes[5]] +
|
|
50
|
+
'-' +
|
|
51
|
+
hex[bytes[6]] +
|
|
52
|
+
hex[bytes[7]] +
|
|
53
|
+
'-' +
|
|
54
|
+
hex[bytes[8]] +
|
|
55
|
+
hex[bytes[9]] +
|
|
56
|
+
'-' +
|
|
57
|
+
hex[bytes[10]] +
|
|
58
|
+
hex[bytes[11]] +
|
|
59
|
+
hex[bytes[12]] +
|
|
60
|
+
hex[bytes[13]] +
|
|
61
|
+
hex[bytes[14]] +
|
|
62
|
+
hex[bytes[15]]);
|
|
33
63
|
}
|
|
34
64
|
}
|
|
35
65
|
exports.RequestIdGenerator = RequestIdGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-id.js","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;
|
|
1
|
+
{"version":3,"file":"request-id.js","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AAErC;;;;;;;;;;;;;GAaG;AACH,MAAa,kBAAmB,SAAQ,iBAAU;IAChD,kGAAkG;aAC1E,eAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAC5E,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACtC,AAFiC,CAEhC;IAOF,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QAN3D,yFAAyF;QACxE,YAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAO5C,gGAAgG;QAChG,iFAAiF;QACjF,IAAI,CAAC,QAAQ;YACX,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU;gBACjD,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;gBACtC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IACrC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,oGAAoG;IAC5F,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEzC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAEpC,MAAM,GAAG,GAAG,kBAAkB,CAAC,UAAU,CAAC;QAE1C,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CACf,CAAC;IACJ,CAAC;;AA1DH,gDA2DC"}
|
|
@@ -3,18 +3,27 @@ import { BaseHelper } from '../base.js';
|
|
|
3
3
|
* The correlation id every IGNIS host stamps on a request, so a server, a browser Worker and the
|
|
4
4
|
* page calling it cannot drift into different formats.
|
|
5
5
|
*
|
|
6
|
-
* Never `crypto.randomUUID()
|
|
7
|
-
* a SECURE CONTEXT
|
|
6
|
+
* Never `crypto.randomUUID()` on its own, which is `hono/request-id`'s default: browsers gate that
|
|
7
|
+
* one API on a SECURE CONTEXT. Measured in Chrome - on `http://<lan-ip>` both the page and a Worker
|
|
8
|
+
* report `crypto` present and `getRandomValues` working, while `randomUUID` and `subtle` are
|
|
9
|
+
* `undefined` and the call throws `TypeError`. On `http://localhost` (a secure origin) all four are
|
|
10
|
+
* there. So the gate follows the ORIGIN, not the worker: testing from a phone over the LAN is
|
|
11
|
+
* enough to lose it.
|
|
8
12
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
13
|
+
* `getRandomValues` carries no such gate, so the fallback below builds the identical shape from raw
|
|
14
|
+
* entropy - a log pipeline cannot tell the two paths apart.
|
|
11
15
|
*/
|
|
12
16
|
export declare class RequestIdGenerator extends BaseHelper {
|
|
13
|
-
|
|
14
|
-
private
|
|
17
|
+
/** 256 pre-rendered octets: formatting a byte as hex costs more than drawing the entropy does. */
|
|
18
|
+
private static readonly HEX_OCTETS;
|
|
19
|
+
/** Reused across calls - `nextId()` never yields between filling this and reading it. */
|
|
20
|
+
private readonly entropy;
|
|
21
|
+
private readonly generate;
|
|
15
22
|
constructor(opts?: {
|
|
16
23
|
scope?: string;
|
|
17
24
|
});
|
|
18
25
|
nextId(): string;
|
|
26
|
+
/** RFC 9562 version 4, same shape `crypto.randomUUID()` returns: version nibble 4, variant 10xx. */
|
|
27
|
+
private uuidFromEntropy;
|
|
19
28
|
}
|
|
20
29
|
//# sourceMappingURL=request-id.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-id.d.ts","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"request-id.d.ts","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,kGAAkG;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAEhC;IAEF,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAE5B,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAWrC,MAAM,IAAI,MAAM;IAIhB,oGAAoG;IACpG,OAAO,CAAC,eAAe;CAgCxB"}
|
|
@@ -1,32 +1,62 @@
|
|
|
1
1
|
import { BaseHelper } from '../base.js';
|
|
2
|
-
import { SnowflakeUidHelper } from './helper.js';
|
|
3
2
|
/**
|
|
4
3
|
* The correlation id every IGNIS host stamps on a request, so a server, a browser Worker and the
|
|
5
4
|
* page calling it cannot drift into different formats.
|
|
6
5
|
*
|
|
7
|
-
* Never `crypto.randomUUID()
|
|
8
|
-
* a SECURE CONTEXT
|
|
6
|
+
* Never `crypto.randomUUID()` on its own, which is `hono/request-id`'s default: browsers gate that
|
|
7
|
+
* one API on a SECURE CONTEXT. Measured in Chrome - on `http://<lan-ip>` both the page and a Worker
|
|
8
|
+
* report `crypto` present and `getRandomValues` working, while `randomUUID` and `subtle` are
|
|
9
|
+
* `undefined` and the call throws `TypeError`. On `http://localhost` (a secure origin) all four are
|
|
10
|
+
* there. So the gate follows the ORIGIN, not the worker: testing from a phone over the LAN is
|
|
11
|
+
* enough to lose it.
|
|
9
12
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
13
|
+
* `getRandomValues` carries no such gate, so the fallback below builds the identical shape from raw
|
|
14
|
+
* entropy - a log pipeline cannot tell the two paths apart.
|
|
12
15
|
*/
|
|
13
16
|
export class RequestIdGenerator extends BaseHelper {
|
|
17
|
+
/** 256 pre-rendered octets: formatting a byte as hex costs more than drawing the entropy does. */
|
|
18
|
+
static { this.HEX_OCTETS = Array.from({ length: 256 }, (_, value) => (value + 0x100).toString(16).slice(1)); }
|
|
14
19
|
constructor(opts) {
|
|
15
20
|
super({ scope: opts?.scope ?? RequestIdGenerator.name });
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
21
|
+
/** Reused across calls - `nextId()` never yields between filling this and reading it. */
|
|
22
|
+
this.entropy = new Uint8Array(16);
|
|
23
|
+
// Resolved once, not per call: whether the host exposes `randomUUID` is fixed for the life of a
|
|
24
|
+
// realm, so a per-request branch would only pay for a question already answered.
|
|
25
|
+
this.generate =
|
|
26
|
+
typeof globalThis.crypto?.randomUUID === 'function'
|
|
27
|
+
? () => globalThis.crypto.randomUUID()
|
|
28
|
+
: () => this.uuidFromEntropy();
|
|
18
29
|
}
|
|
19
30
|
nextId() {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
return this.generate();
|
|
32
|
+
}
|
|
33
|
+
/** RFC 9562 version 4, same shape `crypto.randomUUID()` returns: version nibble 4, variant 10xx. */
|
|
34
|
+
uuidFromEntropy() {
|
|
35
|
+
const bytes = this.entropy;
|
|
36
|
+
globalThis.crypto.getRandomValues(bytes);
|
|
37
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
38
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
39
|
+
const hex = RequestIdGenerator.HEX_OCTETS;
|
|
40
|
+
return (hex[bytes[0]] +
|
|
41
|
+
hex[bytes[1]] +
|
|
42
|
+
hex[bytes[2]] +
|
|
43
|
+
hex[bytes[3]] +
|
|
44
|
+
'-' +
|
|
45
|
+
hex[bytes[4]] +
|
|
46
|
+
hex[bytes[5]] +
|
|
47
|
+
'-' +
|
|
48
|
+
hex[bytes[6]] +
|
|
49
|
+
hex[bytes[7]] +
|
|
50
|
+
'-' +
|
|
51
|
+
hex[bytes[8]] +
|
|
52
|
+
hex[bytes[9]] +
|
|
53
|
+
'-' +
|
|
54
|
+
hex[bytes[10]] +
|
|
55
|
+
hex[bytes[11]] +
|
|
56
|
+
hex[bytes[12]] +
|
|
57
|
+
hex[bytes[13]] +
|
|
58
|
+
hex[bytes[14]] +
|
|
59
|
+
hex[bytes[15]]);
|
|
30
60
|
}
|
|
31
61
|
}
|
|
32
62
|
//# sourceMappingURL=request-id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-id.js","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"request-id.js","sourceRoot":"","sources":["../../../../src/modules/uid/request-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAChD,kGAAkG;aAC1E,eAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAC5E,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACtC,AAFiC,CAEhC;IAOF,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QAN3D,yFAAyF;QACxE,YAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAO5C,gGAAgG;QAChG,iFAAiF;QACjF,IAAI,CAAC,QAAQ;YACX,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU;gBACjD,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;gBACtC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IACrC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,oGAAoG;IAC5F,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEzC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAEpC,MAAM,GAAG,GAAG,kBAAkB,CAAC,UAAU,CAAC;QAE1C,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,GAAG;YACH,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CACf,CAAC;IACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ignis-helpers",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-1",
|
|
4
4
|
"description": "Production-ready TypeScript utility library: pluggable logging (winston or pino behind one ILogger contract), Redis single/cluster/sentinel with pub/sub, BullMQ/MQTT/Kafka message queues, MinIO/Disk/Bun-S3 object storage, AES-256/RSA/ECDH cryptography, Snowflake UID generation, cron scheduling, Socket.IO/WebSocket, TCP/TLS/UDP networking, HTTP clients, secrets/Vault, worker thread pools, and environment management. Sub-path imports isolate optional peer dependencies so the root barrel never forces a peer into your bundle.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aes",
|