@claude-flow/shared 3.0.0-alpha.1 → 3.0.0-alpha.8
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/.claude-flow/daemon-state.json +135 -0
- package/.claude-flow/data/pending-insights.jsonl +2 -0
- package/.claude-flow/data/ranked-context.json +5 -0
- package/.claude-flow/logs/daemon.log +45 -0
- package/.claude-flow/logs/headless/audit_1777379186972_h5un5x_prompt.log +3210 -0
- package/.claude-flow/logs/headless/audit_1777379186972_h5un5x_result.log +117 -0
- package/.claude-flow/logs/headless/audit_1777379816437_w0eaul_prompt.log +3210 -0
- package/.claude-flow/logs/headless/audit_1777379816437_w0eaul_result.log +53 -0
- package/.claude-flow/logs/headless/audit_1777380440097_621y8m_prompt.log +3210 -0
- package/.claude-flow/logs/headless/audit_1777380440097_621y8m_result.log +75 -0
- package/.claude-flow/logs/headless/optimize_1777379306973_an4lmy_prompt.log +3504 -0
- package/.claude-flow/logs/headless/optimize_1777379306973_an4lmy_result.log +166 -0
- package/.claude-flow/logs/headless/optimize_1777380274732_apxz3s_prompt.log +3504 -0
- package/.claude-flow/logs/headless/optimize_1777380274732_apxz3s_result.log +219 -0
- package/.claude-flow/logs/headless/testgaps_1777379546969_dvf2a1_prompt.log +3189 -0
- package/.claude-flow/logs/headless/testgaps_1777379546969_dvf2a1_result.log +155 -0
- package/.claude-flow/metrics/codebase-map.json +11 -0
- package/.claude-flow/metrics/consolidation.json +6 -0
- package/.claude-flow/sessions/current.json +13 -0
- package/.swarm/hnsw.index +0 -0
- package/.swarm/hnsw.metadata.json +1 -0
- package/.swarm/memory.db +0 -0
- package/.swarm/memory.db-shm +0 -0
- package/.swarm/memory.db-wal +0 -0
- package/.swarm/schema.sql +305 -0
- package/dist/core/config/loader.d.ts.map +1 -1
- package/dist/core/config/loader.js +17 -1
- package/dist/core/config/loader.js.map +1 -1
- package/dist/core/config/schema.d.ts +697 -103
- package/dist/core/config/schema.d.ts.map +1 -1
- package/dist/core/config/schema.js +3 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/events/event-store.d.ts.map +1 -1
- package/dist/events/event-store.js +20 -9
- package/dist/events/event-store.js.map +1 -1
- package/dist/events/example-usage.js +1 -1
- package/dist/events/example-usage.js.map +1 -1
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/rvf-event-log.d.ts +82 -0
- package/dist/events/rvf-event-log.d.ts.map +1 -0
- package/dist/events/rvf-event-log.js +340 -0
- package/dist/events/rvf-event-log.js.map +1 -0
- package/dist/hooks/example-usage.js +3 -3
- package/dist/hooks/example-usage.js.map +1 -1
- package/dist/hooks/executor.d.ts.map +1 -1
- package/dist/hooks/executor.js +7 -4
- package/dist/hooks/executor.js.map +1 -1
- package/dist/hooks/verify-exports.test.js +6 -6
- package/dist/hooks/verify-exports.test.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +3 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/types.d.ts +4 -6
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/plugins/official/hive-mind-plugin.js +2 -2
- package/dist/plugins/official/hive-mind-plugin.js.map +1 -1
- package/dist/plugins/official/maestro-plugin.js +3 -3
- package/dist/plugins/official/maestro-plugin.js.map +1 -1
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/v3-progress.service.d.ts +124 -0
- package/dist/services/v3-progress.service.d.ts.map +1 -0
- package/dist/services/v3-progress.service.js +402 -0
- package/dist/services/v3-progress.service.js.map +1 -0
- package/package.json +12 -3
- package/ruvector.db +0 -0
- package/src/core/config/loader.ts +17 -1
- package/src/core/config/schema.ts +3 -1
- package/src/events/event-store.ts +18 -9
- package/src/events/example-usage.ts +1 -1
- package/src/events/index.ts +4 -0
- package/src/events/rvf-event-log.ts +427 -0
- package/src/hooks/example-usage.ts +3 -3
- package/src/hooks/executor.ts +7 -5
- package/src/hooks/verify-exports.test.ts +6 -6
- package/src/index.ts +5 -0
- package/src/mcp/server.ts +3 -6
- package/src/mcp/types.ts +4 -6
- package/src/plugins/official/hive-mind-plugin.ts +2 -2
- package/src/plugins/official/maestro-plugin.ts +3 -3
- package/src/services/index.ts +16 -0
- package/src/services/v3-progress.service.ts +505 -0
- package/tmp.json +0 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/.agentic-flow/intelligence.json +0 -16
- package/__tests__/coverage/base.css +0 -224
- package/__tests__/coverage/block-navigation.js +0 -87
- package/__tests__/coverage/coverage-final.json +0 -50
- package/__tests__/coverage/favicon.png +0 -0
- package/__tests__/coverage/index.html +0 -326
- package/__tests__/coverage/lcov-report/base.css +0 -224
- package/__tests__/coverage/lcov-report/block-navigation.js +0 -87
- package/__tests__/coverage/lcov-report/favicon.png +0 -0
- package/__tests__/coverage/lcov-report/index.html +0 -326
- package/__tests__/coverage/lcov-report/prettify.css +0 -1
- package/__tests__/coverage/lcov-report/prettify.js +0 -2
- package/__tests__/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/__tests__/coverage/lcov-report/sorter.js +0 -210
- package/__tests__/coverage/lcov-report/src/core/config/defaults.ts.html +0 -706
- package/__tests__/coverage/lcov-report/src/core/config/index.html +0 -161
- package/__tests__/coverage/lcov-report/src/core/config/loader.ts.html +0 -898
- package/__tests__/coverage/lcov-report/src/core/config/schema.ts.html +0 -649
- package/__tests__/coverage/lcov-report/src/core/config/validator.ts.html +0 -712
- package/__tests__/coverage/lcov-report/src/core/event-bus.ts.html +0 -793
- package/__tests__/coverage/lcov-report/src/core/index.html +0 -116
- package/__tests__/coverage/lcov-report/src/core/interfaces/event.interface.ts.html +0 -886
- package/__tests__/coverage/lcov-report/src/core/interfaces/index.html +0 -116
- package/__tests__/coverage/lcov-report/src/core/orchestrator/event-coordinator.ts.html +0 -451
- package/__tests__/coverage/lcov-report/src/core/orchestrator/health-monitor.ts.html +0 -727
- package/__tests__/coverage/lcov-report/src/core/orchestrator/index.html +0 -176
- package/__tests__/coverage/lcov-report/src/core/orchestrator/lifecycle-manager.ts.html +0 -874
- package/__tests__/coverage/lcov-report/src/core/orchestrator/session-manager.ts.html +0 -922
- package/__tests__/coverage/lcov-report/src/core/orchestrator/task-manager.ts.html +0 -1036
- package/__tests__/coverage/lcov-report/src/events/domain-events.ts.html +0 -1837
- package/__tests__/coverage/lcov-report/src/events/event-store.ts.html +0 -1849
- package/__tests__/coverage/lcov-report/src/events/example-usage.ts.html +0 -964
- package/__tests__/coverage/lcov-report/src/events/index.html +0 -176
- package/__tests__/coverage/lcov-report/src/events/projections.ts.html +0 -1768
- package/__tests__/coverage/lcov-report/src/events/state-reconstructor.ts.html +0 -1132
- package/__tests__/coverage/lcov-report/src/events.ts.html +0 -1186
- package/__tests__/coverage/lcov-report/src/hooks/example-usage.ts.html +0 -1582
- package/__tests__/coverage/lcov-report/src/hooks/executor.ts.html +0 -1222
- package/__tests__/coverage/lcov-report/src/hooks/index.html +0 -191
- package/__tests__/coverage/lcov-report/src/hooks/registry.ts.html +0 -1084
- package/__tests__/coverage/lcov-report/src/hooks/safety/bash-safety.ts.html +0 -1897
- package/__tests__/coverage/lcov-report/src/hooks/safety/file-organization.ts.html +0 -1504
- package/__tests__/coverage/lcov-report/src/hooks/safety/git-commit.ts.html +0 -1954
- package/__tests__/coverage/lcov-report/src/hooks/safety/index.html +0 -146
- package/__tests__/coverage/lcov-report/src/hooks/session-hooks.ts.html +0 -1762
- package/__tests__/coverage/lcov-report/src/hooks/task-hooks.ts.html +0 -1624
- package/__tests__/coverage/lcov-report/src/hooks/types.ts.html +0 -1156
- package/__tests__/coverage/lcov-report/src/index.html +0 -176
- package/__tests__/coverage/lcov-report/src/mcp/connection-pool.ts.html +0 -1399
- package/__tests__/coverage/lcov-report/src/mcp/index.html +0 -176
- package/__tests__/coverage/lcov-report/src/mcp/server.ts.html +0 -2407
- package/__tests__/coverage/lcov-report/src/mcp/session-manager.ts.html +0 -1369
- package/__tests__/coverage/lcov-report/src/mcp/tool-registry.ts.html +0 -1783
- package/__tests__/coverage/lcov-report/src/mcp/transport/http.ts.html +0 -1756
- package/__tests__/coverage/lcov-report/src/mcp/transport/index.html +0 -146
- package/__tests__/coverage/lcov-report/src/mcp/transport/stdio.ts.html +0 -1057
- package/__tests__/coverage/lcov-report/src/mcp/transport/websocket.ts.html +0 -1537
- package/__tests__/coverage/lcov-report/src/mcp/types.ts.html +0 -1780
- package/__tests__/coverage/lcov-report/src/plugin-interface.ts.html +0 -2074
- package/__tests__/coverage/lcov-report/src/plugin-loader.ts.html +0 -1999
- package/__tests__/coverage/lcov-report/src/plugin-registry.ts.html +0 -1897
- package/__tests__/coverage/lcov-report/src/plugins/official/hive-mind-plugin.ts.html +0 -1075
- package/__tests__/coverage/lcov-report/src/plugins/official/index.html +0 -131
- package/__tests__/coverage/lcov-report/src/plugins/official/maestro-plugin.ts.html +0 -1609
- package/__tests__/coverage/lcov-report/src/resilience/bulkhead.ts.html +0 -916
- package/__tests__/coverage/lcov-report/src/resilience/circuit-breaker.ts.html +0 -1063
- package/__tests__/coverage/lcov-report/src/resilience/index.html +0 -161
- package/__tests__/coverage/lcov-report/src/resilience/rate-limiter.ts.html +0 -1345
- package/__tests__/coverage/lcov-report/src/resilience/retry.ts.html +0 -757
- package/__tests__/coverage/lcov-report/src/security/index.html +0 -131
- package/__tests__/coverage/lcov-report/src/security/input-validation.ts.html +0 -880
- package/__tests__/coverage/lcov-report/src/security/secure-random.ts.html +0 -562
- package/__tests__/coverage/lcov-report/src/types/index.html +0 -131
- package/__tests__/coverage/lcov-report/src/types/swarm.types.ts.html +0 -850
- package/__tests__/coverage/lcov-report/src/types/task.types.ts.html +0 -700
- package/__tests__/coverage/lcov-report/src/types.ts.html +0 -1186
- package/__tests__/coverage/lcov-report/src/utils/index.html +0 -116
- package/__tests__/coverage/lcov-report/src/utils/secure-logger.ts.html +0 -856
- package/__tests__/coverage/lcov.info +0 -19877
- package/__tests__/coverage/prettify.css +0 -1
- package/__tests__/coverage/prettify.js +0 -2
- package/__tests__/coverage/sort-arrow-sprite.png +0 -0
- package/__tests__/coverage/sorter.js +0 -210
- package/__tests__/coverage/src/core/config/defaults.ts.html +0 -706
- package/__tests__/coverage/src/core/config/index.html +0 -161
- package/__tests__/coverage/src/core/config/loader.ts.html +0 -898
- package/__tests__/coverage/src/core/config/schema.ts.html +0 -649
- package/__tests__/coverage/src/core/config/validator.ts.html +0 -712
- package/__tests__/coverage/src/core/event-bus.ts.html +0 -793
- package/__tests__/coverage/src/core/index.html +0 -116
- package/__tests__/coverage/src/core/interfaces/event.interface.ts.html +0 -886
- package/__tests__/coverage/src/core/interfaces/index.html +0 -116
- package/__tests__/coverage/src/core/orchestrator/event-coordinator.ts.html +0 -451
- package/__tests__/coverage/src/core/orchestrator/health-monitor.ts.html +0 -727
- package/__tests__/coverage/src/core/orchestrator/index.html +0 -176
- package/__tests__/coverage/src/core/orchestrator/lifecycle-manager.ts.html +0 -874
- package/__tests__/coverage/src/core/orchestrator/session-manager.ts.html +0 -922
- package/__tests__/coverage/src/core/orchestrator/task-manager.ts.html +0 -1036
- package/__tests__/coverage/src/events/domain-events.ts.html +0 -1837
- package/__tests__/coverage/src/events/event-store.ts.html +0 -1849
- package/__tests__/coverage/src/events/example-usage.ts.html +0 -964
- package/__tests__/coverage/src/events/index.html +0 -176
- package/__tests__/coverage/src/events/projections.ts.html +0 -1768
- package/__tests__/coverage/src/events/state-reconstructor.ts.html +0 -1132
- package/__tests__/coverage/src/events.ts.html +0 -1186
- package/__tests__/coverage/src/hooks/example-usage.ts.html +0 -1582
- package/__tests__/coverage/src/hooks/executor.ts.html +0 -1222
- package/__tests__/coverage/src/hooks/index.html +0 -191
- package/__tests__/coverage/src/hooks/registry.ts.html +0 -1084
- package/__tests__/coverage/src/hooks/safety/bash-safety.ts.html +0 -1897
- package/__tests__/coverage/src/hooks/safety/file-organization.ts.html +0 -1504
- package/__tests__/coverage/src/hooks/safety/git-commit.ts.html +0 -1954
- package/__tests__/coverage/src/hooks/safety/index.html +0 -146
- package/__tests__/coverage/src/hooks/session-hooks.ts.html +0 -1762
- package/__tests__/coverage/src/hooks/task-hooks.ts.html +0 -1624
- package/__tests__/coverage/src/hooks/types.ts.html +0 -1156
- package/__tests__/coverage/src/index.html +0 -176
- package/__tests__/coverage/src/mcp/connection-pool.ts.html +0 -1399
- package/__tests__/coverage/src/mcp/index.html +0 -176
- package/__tests__/coverage/src/mcp/server.ts.html +0 -2407
- package/__tests__/coverage/src/mcp/session-manager.ts.html +0 -1369
- package/__tests__/coverage/src/mcp/tool-registry.ts.html +0 -1783
- package/__tests__/coverage/src/mcp/transport/http.ts.html +0 -1756
- package/__tests__/coverage/src/mcp/transport/index.html +0 -146
- package/__tests__/coverage/src/mcp/transport/stdio.ts.html +0 -1057
- package/__tests__/coverage/src/mcp/transport/websocket.ts.html +0 -1537
- package/__tests__/coverage/src/mcp/types.ts.html +0 -1780
- package/__tests__/coverage/src/plugin-interface.ts.html +0 -2074
- package/__tests__/coverage/src/plugin-loader.ts.html +0 -1999
- package/__tests__/coverage/src/plugin-registry.ts.html +0 -1897
- package/__tests__/coverage/src/plugins/official/hive-mind-plugin.ts.html +0 -1075
- package/__tests__/coverage/src/plugins/official/index.html +0 -131
- package/__tests__/coverage/src/plugins/official/maestro-plugin.ts.html +0 -1609
- package/__tests__/coverage/src/resilience/bulkhead.ts.html +0 -916
- package/__tests__/coverage/src/resilience/circuit-breaker.ts.html +0 -1063
- package/__tests__/coverage/src/resilience/index.html +0 -161
- package/__tests__/coverage/src/resilience/rate-limiter.ts.html +0 -1345
- package/__tests__/coverage/src/resilience/retry.ts.html +0 -757
- package/__tests__/coverage/src/security/index.html +0 -131
- package/__tests__/coverage/src/security/input-validation.ts.html +0 -880
- package/__tests__/coverage/src/security/secure-random.ts.html +0 -562
- package/__tests__/coverage/src/types/index.html +0 -131
- package/__tests__/coverage/src/types/swarm.types.ts.html +0 -850
- package/__tests__/coverage/src/types/task.types.ts.html +0 -700
- package/__tests__/coverage/src/types.ts.html +0 -1186
- package/__tests__/coverage/src/utils/index.html +0 -116
- package/__tests__/coverage/src/utils/secure-logger.ts.html +0 -856
|
@@ -1,562 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/security/secure-random.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/security</a> secure-random.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">0% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/159</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/1</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">0% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/1</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">0% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/159</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
226
|
-
<span class="cline-any cline-no"> </span>
|
|
227
|
-
<span class="cline-any cline-no"> </span>
|
|
228
|
-
<span class="cline-any cline-no"> </span>
|
|
229
|
-
<span class="cline-any cline-no"> </span>
|
|
230
|
-
<span class="cline-any cline-no"> </span>
|
|
231
|
-
<span class="cline-any cline-no"> </span>
|
|
232
|
-
<span class="cline-any cline-no"> </span>
|
|
233
|
-
<span class="cline-any cline-no"> </span>
|
|
234
|
-
<span class="cline-any cline-no"> </span>
|
|
235
|
-
<span class="cline-any cline-no"> </span>
|
|
236
|
-
<span class="cline-any cline-no"> </span>
|
|
237
|
-
<span class="cline-any cline-no"> </span>
|
|
238
|
-
<span class="cline-any cline-no"> </span>
|
|
239
|
-
<span class="cline-any cline-no"> </span>
|
|
240
|
-
<span class="cline-any cline-no"> </span>
|
|
241
|
-
<span class="cline-any cline-no"> </span>
|
|
242
|
-
<span class="cline-any cline-no"> </span>
|
|
243
|
-
<span class="cline-any cline-no"> </span>
|
|
244
|
-
<span class="cline-any cline-no"> </span>
|
|
245
|
-
<span class="cline-any cline-no"> </span>
|
|
246
|
-
<span class="cline-any cline-no"> </span>
|
|
247
|
-
<span class="cline-any cline-no"> </span>
|
|
248
|
-
<span class="cline-any cline-no"> </span>
|
|
249
|
-
<span class="cline-any cline-no"> </span>
|
|
250
|
-
<span class="cline-any cline-no"> </span>
|
|
251
|
-
<span class="cline-any cline-no"> </span>
|
|
252
|
-
<span class="cline-any cline-no"> </span>
|
|
253
|
-
<span class="cline-any cline-no"> </span>
|
|
254
|
-
<span class="cline-any cline-no"> </span>
|
|
255
|
-
<span class="cline-any cline-no"> </span>
|
|
256
|
-
<span class="cline-any cline-no"> </span>
|
|
257
|
-
<span class="cline-any cline-no"> </span>
|
|
258
|
-
<span class="cline-any cline-no"> </span>
|
|
259
|
-
<span class="cline-any cline-no"> </span>
|
|
260
|
-
<span class="cline-any cline-no"> </span>
|
|
261
|
-
<span class="cline-any cline-no"> </span>
|
|
262
|
-
<span class="cline-any cline-no"> </span>
|
|
263
|
-
<span class="cline-any cline-no"> </span>
|
|
264
|
-
<span class="cline-any cline-no"> </span>
|
|
265
|
-
<span class="cline-any cline-no"> </span>
|
|
266
|
-
<span class="cline-any cline-no"> </span>
|
|
267
|
-
<span class="cline-any cline-no"> </span>
|
|
268
|
-
<span class="cline-any cline-no"> </span>
|
|
269
|
-
<span class="cline-any cline-no"> </span>
|
|
270
|
-
<span class="cline-any cline-no"> </span>
|
|
271
|
-
<span class="cline-any cline-no"> </span>
|
|
272
|
-
<span class="cline-any cline-no"> </span>
|
|
273
|
-
<span class="cline-any cline-no"> </span>
|
|
274
|
-
<span class="cline-any cline-no"> </span>
|
|
275
|
-
<span class="cline-any cline-no"> </span>
|
|
276
|
-
<span class="cline-any cline-no"> </span>
|
|
277
|
-
<span class="cline-any cline-no"> </span>
|
|
278
|
-
<span class="cline-any cline-no"> </span>
|
|
279
|
-
<span class="cline-any cline-no"> </span>
|
|
280
|
-
<span class="cline-any cline-no"> </span>
|
|
281
|
-
<span class="cline-any cline-no"> </span>
|
|
282
|
-
<span class="cline-any cline-no"> </span>
|
|
283
|
-
<span class="cline-any cline-no"> </span>
|
|
284
|
-
<span class="cline-any cline-no"> </span>
|
|
285
|
-
<span class="cline-any cline-no"> </span>
|
|
286
|
-
<span class="cline-any cline-no"> </span>
|
|
287
|
-
<span class="cline-any cline-no"> </span>
|
|
288
|
-
<span class="cline-any cline-no"> </span>
|
|
289
|
-
<span class="cline-any cline-no"> </span>
|
|
290
|
-
<span class="cline-any cline-no"> </span>
|
|
291
|
-
<span class="cline-any cline-no"> </span>
|
|
292
|
-
<span class="cline-any cline-no"> </span>
|
|
293
|
-
<span class="cline-any cline-no"> </span>
|
|
294
|
-
<span class="cline-any cline-no"> </span>
|
|
295
|
-
<span class="cline-any cline-no"> </span>
|
|
296
|
-
<span class="cline-any cline-no"> </span>
|
|
297
|
-
<span class="cline-any cline-no"> </span>
|
|
298
|
-
<span class="cline-any cline-no"> </span>
|
|
299
|
-
<span class="cline-any cline-no"> </span>
|
|
300
|
-
<span class="cline-any cline-no"> </span>
|
|
301
|
-
<span class="cline-any cline-no"> </span>
|
|
302
|
-
<span class="cline-any cline-no"> </span>
|
|
303
|
-
<span class="cline-any cline-no"> </span>
|
|
304
|
-
<span class="cline-any cline-no"> </span>
|
|
305
|
-
<span class="cline-any cline-no"> </span>
|
|
306
|
-
<span class="cline-any cline-no"> </span>
|
|
307
|
-
<span class="cline-any cline-no"> </span>
|
|
308
|
-
<span class="cline-any cline-no"> </span>
|
|
309
|
-
<span class="cline-any cline-no"> </span>
|
|
310
|
-
<span class="cline-any cline-no"> </span>
|
|
311
|
-
<span class="cline-any cline-no"> </span>
|
|
312
|
-
<span class="cline-any cline-no"> </span>
|
|
313
|
-
<span class="cline-any cline-no"> </span>
|
|
314
|
-
<span class="cline-any cline-no"> </span>
|
|
315
|
-
<span class="cline-any cline-no"> </span>
|
|
316
|
-
<span class="cline-any cline-no"> </span>
|
|
317
|
-
<span class="cline-any cline-no"> </span>
|
|
318
|
-
<span class="cline-any cline-no"> </span>
|
|
319
|
-
<span class="cline-any cline-no"> </span>
|
|
320
|
-
<span class="cline-any cline-no"> </span>
|
|
321
|
-
<span class="cline-any cline-no"> </span>
|
|
322
|
-
<span class="cline-any cline-no"> </span>
|
|
323
|
-
<span class="cline-any cline-no"> </span>
|
|
324
|
-
<span class="cline-any cline-no"> </span>
|
|
325
|
-
<span class="cline-any cline-no"> </span>
|
|
326
|
-
<span class="cline-any cline-no"> </span>
|
|
327
|
-
<span class="cline-any cline-no"> </span>
|
|
328
|
-
<span class="cline-any cline-no"> </span>
|
|
329
|
-
<span class="cline-any cline-no"> </span>
|
|
330
|
-
<span class="cline-any cline-no"> </span>
|
|
331
|
-
<span class="cline-any cline-no"> </span>
|
|
332
|
-
<span class="cline-any cline-no"> </span>
|
|
333
|
-
<span class="cline-any cline-no"> </span>
|
|
334
|
-
<span class="cline-any cline-no"> </span>
|
|
335
|
-
<span class="cline-any cline-no"> </span>
|
|
336
|
-
<span class="cline-any cline-no"> </span>
|
|
337
|
-
<span class="cline-any cline-no"> </span>
|
|
338
|
-
<span class="cline-any cline-no"> </span>
|
|
339
|
-
<span class="cline-any cline-no"> </span>
|
|
340
|
-
<span class="cline-any cline-no"> </span>
|
|
341
|
-
<span class="cline-any cline-no"> </span>
|
|
342
|
-
<span class="cline-any cline-no"> </span>
|
|
343
|
-
<span class="cline-any cline-no"> </span>
|
|
344
|
-
<span class="cline-any cline-no"> </span>
|
|
345
|
-
<span class="cline-any cline-no"> </span>
|
|
346
|
-
<span class="cline-any cline-no"> </span>
|
|
347
|
-
<span class="cline-any cline-no"> </span>
|
|
348
|
-
<span class="cline-any cline-no"> </span>
|
|
349
|
-
<span class="cline-any cline-no"> </span>
|
|
350
|
-
<span class="cline-any cline-no"> </span>
|
|
351
|
-
<span class="cline-any cline-no"> </span>
|
|
352
|
-
<span class="cline-any cline-no"> </span>
|
|
353
|
-
<span class="cline-any cline-no"> </span>
|
|
354
|
-
<span class="cline-any cline-no"> </span>
|
|
355
|
-
<span class="cline-any cline-no"> </span>
|
|
356
|
-
<span class="cline-any cline-no"> </span>
|
|
357
|
-
<span class="cline-any cline-no"> </span>
|
|
358
|
-
<span class="cline-any cline-no"> </span>
|
|
359
|
-
<span class="cline-any cline-no"> </span>
|
|
360
|
-
<span class="cline-any cline-no"> </span>
|
|
361
|
-
<span class="cline-any cline-no"> </span>
|
|
362
|
-
<span class="cline-any cline-no"> </span>
|
|
363
|
-
<span class="cline-any cline-no"> </span>
|
|
364
|
-
<span class="cline-any cline-no"> </span>
|
|
365
|
-
<span class="cline-any cline-no"> </span>
|
|
366
|
-
<span class="cline-any cline-no"> </span>
|
|
367
|
-
<span class="cline-any cline-no"> </span>
|
|
368
|
-
<span class="cline-any cline-no"> </span>
|
|
369
|
-
<span class="cline-any cline-no"> </span>
|
|
370
|
-
<span class="cline-any cline-no"> </span>
|
|
371
|
-
<span class="cline-any cline-no"> </span>
|
|
372
|
-
<span class="cline-any cline-no"> </span>
|
|
373
|
-
<span class="cline-any cline-no"> </span>
|
|
374
|
-
<span class="cline-any cline-no"> </span>
|
|
375
|
-
<span class="cline-any cline-no"> </span>
|
|
376
|
-
<span class="cline-any cline-no"> </span>
|
|
377
|
-
<span class="cline-any cline-no"> </span>
|
|
378
|
-
<span class="cline-any cline-no"> </span>
|
|
379
|
-
<span class="cline-any cline-no"> </span>
|
|
380
|
-
<span class="cline-any cline-no"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
|
-
<span class="cline-any cline-no"> </span>
|
|
383
|
-
<span class="cline-any cline-no"> </span>
|
|
384
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >/**</span></span></span>
|
|
385
|
-
<span class="cstat-no" title="statement not covered" > * Secure Random Utilities</span>
|
|
386
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
387
|
-
<span class="cstat-no" title="statement not covered" > * Cryptographically secure random ID and token generation.</span>
|
|
388
|
-
<span class="cstat-no" title="statement not covered" > * Replaces Math.random() for security-sensitive operations.</span>
|
|
389
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
390
|
-
<span class="cstat-no" title="statement not covered" > * @module v3/shared/security/secure-random</span>
|
|
391
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
392
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
393
|
-
<span class="cstat-no" title="statement not covered" >import { randomBytes, randomUUID } from 'crypto';</span>
|
|
394
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
395
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
396
|
-
<span class="cstat-no" title="statement not covered" > * Generate a cryptographically secure random ID</span>
|
|
397
|
-
<span class="cstat-no" title="statement not covered" > * @param prefix Optional prefix for the ID</span>
|
|
398
|
-
<span class="cstat-no" title="statement not covered" > * @param length Number of random bytes (default 12)</span>
|
|
399
|
-
<span class="cstat-no" title="statement not covered" > * @returns Secure random ID string</span>
|
|
400
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
401
|
-
<span class="cstat-no" title="statement not covered" >export function generateSecureId(prefix?: string, length: number = 12): string {</span>
|
|
402
|
-
<span class="cstat-no" title="statement not covered" > const timestamp = Date.now().toString(36);</span>
|
|
403
|
-
<span class="cstat-no" title="statement not covered" > const randomPart = randomBytes(length).toString('hex');</span>
|
|
404
|
-
<span class="cstat-no" title="statement not covered" > return prefix ? `${prefix}_${timestamp}_${randomPart}` : `${timestamp}_${randomPart}`;</span>
|
|
405
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
406
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
407
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
408
|
-
<span class="cstat-no" title="statement not covered" > * Generate a UUID v4 (cryptographically secure)</span>
|
|
409
|
-
<span class="cstat-no" title="statement not covered" > * @returns UUID string</span>
|
|
410
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
411
|
-
<span class="cstat-no" title="statement not covered" >export function generateUUID(): string {</span>
|
|
412
|
-
<span class="cstat-no" title="statement not covered" > return randomUUID();</span>
|
|
413
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
414
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
415
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
416
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure token for authentication</span>
|
|
417
|
-
<span class="cstat-no" title="statement not covered" > * @param length Number of bytes (default 32)</span>
|
|
418
|
-
<span class="cstat-no" title="statement not covered" > * @returns Hex-encoded token string</span>
|
|
419
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
420
|
-
<span class="cstat-no" title="statement not covered" >export function generateSecureToken(length: number = 32): string {</span>
|
|
421
|
-
<span class="cstat-no" title="statement not covered" > return randomBytes(length).toString('hex');</span>
|
|
422
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
423
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
424
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
425
|
-
<span class="cstat-no" title="statement not covered" > * Generate a short secure ID (for display purposes)</span>
|
|
426
|
-
<span class="cstat-no" title="statement not covered" > * @param prefix Optional prefix</span>
|
|
427
|
-
<span class="cstat-no" title="statement not covered" > * @returns Short secure ID</span>
|
|
428
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
429
|
-
<span class="cstat-no" title="statement not covered" >export function generateShortId(prefix?: string): string {</span>
|
|
430
|
-
<span class="cstat-no" title="statement not covered" > const id = randomBytes(6).toString('base64url');</span>
|
|
431
|
-
<span class="cstat-no" title="statement not covered" > return prefix ? `${prefix}-${id}` : id;</span>
|
|
432
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
433
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
434
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
435
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure session ID</span>
|
|
436
|
-
<span class="cstat-no" title="statement not covered" > * @returns Session ID string</span>
|
|
437
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
438
|
-
<span class="cstat-no" title="statement not covered" >export function generateSessionId(): string {</span>
|
|
439
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('session', 16);</span>
|
|
440
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
441
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
442
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
443
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure agent ID</span>
|
|
444
|
-
<span class="cstat-no" title="statement not covered" > * @returns Agent ID string</span>
|
|
445
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
446
|
-
<span class="cstat-no" title="statement not covered" >export function generateAgentId(): string {</span>
|
|
447
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('agent', 12);</span>
|
|
448
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
449
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
450
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
451
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure task ID</span>
|
|
452
|
-
<span class="cstat-no" title="statement not covered" > * @returns Task ID string</span>
|
|
453
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
454
|
-
<span class="cstat-no" title="statement not covered" >export function generateTaskId(): string {</span>
|
|
455
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('task', 12);</span>
|
|
456
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
457
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
458
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
459
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure memory ID</span>
|
|
460
|
-
<span class="cstat-no" title="statement not covered" > * @returns Memory ID string</span>
|
|
461
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
462
|
-
<span class="cstat-no" title="statement not covered" >export function generateMemoryId(): string {</span>
|
|
463
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('mem', 12);</span>
|
|
464
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
465
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
466
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
467
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure event ID</span>
|
|
468
|
-
<span class="cstat-no" title="statement not covered" > * @returns Event ID string</span>
|
|
469
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
470
|
-
<span class="cstat-no" title="statement not covered" >export function generateEventId(): string {</span>
|
|
471
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('evt', 12);</span>
|
|
472
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
473
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
474
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
475
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure swarm ID</span>
|
|
476
|
-
<span class="cstat-no" title="statement not covered" > * @returns Swarm ID string</span>
|
|
477
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
478
|
-
<span class="cstat-no" title="statement not covered" >export function generateSwarmId(): string {</span>
|
|
479
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('swarm', 12);</span>
|
|
480
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
481
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
482
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
483
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure pattern ID</span>
|
|
484
|
-
<span class="cstat-no" title="statement not covered" > * @returns Pattern ID string</span>
|
|
485
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
486
|
-
<span class="cstat-no" title="statement not covered" >export function generatePatternId(): string {</span>
|
|
487
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('pat', 12);</span>
|
|
488
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
489
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
490
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
491
|
-
<span class="cstat-no" title="statement not covered" > * Generate a secure trajectory ID</span>
|
|
492
|
-
<span class="cstat-no" title="statement not covered" > * @returns Trajectory ID string</span>
|
|
493
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
494
|
-
<span class="cstat-no" title="statement not covered" >export function generateTrajectoryId(): string {</span>
|
|
495
|
-
<span class="cstat-no" title="statement not covered" > return generateSecureId('traj', 12);</span>
|
|
496
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
497
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
498
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
499
|
-
<span class="cstat-no" title="statement not covered" > * Generate a random integer in range [min, max] using crypto</span>
|
|
500
|
-
<span class="cstat-no" title="statement not covered" > * @param min Minimum value (inclusive)</span>
|
|
501
|
-
<span class="cstat-no" title="statement not covered" > * @param max Maximum value (inclusive)</span>
|
|
502
|
-
<span class="cstat-no" title="statement not covered" > * @returns Cryptographically random integer</span>
|
|
503
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
504
|
-
<span class="cstat-no" title="statement not covered" >export function secureRandomInt(min: number, max: number): number {</span>
|
|
505
|
-
<span class="cstat-no" title="statement not covered" > const range = max - min + 1;</span>
|
|
506
|
-
<span class="cstat-no" title="statement not covered" > const bytesNeeded = Math.ceil(Math.log2(range) / 8);</span>
|
|
507
|
-
<span class="cstat-no" title="statement not covered" > const maxValid = Math.pow(256, bytesNeeded) - (Math.pow(256, bytesNeeded) % range);</span>
|
|
508
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
509
|
-
<span class="cstat-no" title="statement not covered" > let randomValue: number;</span>
|
|
510
|
-
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
511
|
-
<span class="cstat-no" title="statement not covered" > const bytes = randomBytes(bytesNeeded);</span>
|
|
512
|
-
<span class="cstat-no" title="statement not covered" > randomValue = bytes.reduce((acc, byte, i) => acc + byte * Math.pow(256, i), 0);</span>
|
|
513
|
-
<span class="cstat-no" title="statement not covered" > } while (randomValue >= maxValid);</span>
|
|
514
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
515
|
-
<span class="cstat-no" title="statement not covered" > return min + (randomValue % range);</span>
|
|
516
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
517
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
518
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
519
|
-
<span class="cstat-no" title="statement not covered" > * Secure random selection from array</span>
|
|
520
|
-
<span class="cstat-no" title="statement not covered" > * @param array Array to select from</span>
|
|
521
|
-
<span class="cstat-no" title="statement not covered" > * @returns Random element</span>
|
|
522
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
523
|
-
<span class="cstat-no" title="statement not covered" >export function secureRandomChoice<T>(array: T[]): T {</span>
|
|
524
|
-
<span class="cstat-no" title="statement not covered" > if (array.length === 0) {</span>
|
|
525
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('Cannot select from empty array');</span>
|
|
526
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
527
|
-
<span class="cstat-no" title="statement not covered" > return array[secureRandomInt(0, array.length - 1)]!;</span>
|
|
528
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
529
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
530
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
531
|
-
<span class="cstat-no" title="statement not covered" > * Secure shuffle array (Fisher-Yates with crypto)</span>
|
|
532
|
-
<span class="cstat-no" title="statement not covered" > * @param array Array to shuffle</span>
|
|
533
|
-
<span class="cstat-no" title="statement not covered" > * @returns New shuffled array</span>
|
|
534
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
535
|
-
<span class="cstat-no" title="statement not covered" >export function secureShuffleArray<T>(array: T[]): T[] {</span>
|
|
536
|
-
<span class="cstat-no" title="statement not covered" > const result = [...array];</span>
|
|
537
|
-
<span class="cstat-no" title="statement not covered" > for (let i = result.length - 1; i > 0; i--) {</span>
|
|
538
|
-
<span class="cstat-no" title="statement not covered" > const j = secureRandomInt(0, i);</span>
|
|
539
|
-
<span class="cstat-no" title="statement not covered" > [result[i], result[j]] = [result[j]!, result[i]!];</span>
|
|
540
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
541
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
542
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
543
|
-
</pre></td></tr></table></pre>
|
|
544
|
-
|
|
545
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
546
|
-
</div><!-- /wrapper -->
|
|
547
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
548
|
-
Code coverage generated by
|
|
549
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
550
|
-
at 2026-01-05T21:16:55.547Z
|
|
551
|
-
</div>
|
|
552
|
-
<script src="../../prettify.js"></script>
|
|
553
|
-
<script>
|
|
554
|
-
window.onload = function () {
|
|
555
|
-
prettyPrint();
|
|
556
|
-
};
|
|
557
|
-
</script>
|
|
558
|
-
<script src="../../sorter.js"></script>
|
|
559
|
-
<script src="../../block-navigation.js"></script>
|
|
560
|
-
</body>
|
|
561
|
-
</html>
|
|
562
|
-
|