dphelper 4.6.2 → 4.7.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.
- package/index.cjs +3 -3
- package/index.js +3 -3
- package/markdown/ai.md +345 -0
- package/markdown/anchor.md +156 -0
- package/markdown/array.md +208 -0
- package/markdown/audio.md +113 -0
- package/markdown/avoid.md +53 -0
- package/markdown/biometric.md +338 -0
- package/markdown/browser.md +203 -0
- package/markdown/check.md +65 -0
- package/markdown/color.md +159 -0
- package/markdown/compress.md +310 -0
- package/markdown/cookie.md +115 -0
- package/markdown/coords.md +127 -0
- package/markdown/credits.md +56 -0
- package/markdown/date.md +260 -0
- package/markdown/disable.md +109 -0
- package/markdown/dispatch.md +108 -0
- package/markdown/element.md +53 -0
- package/markdown/event.md +85 -0
- package/markdown/fetch.md +122 -0
- package/markdown/form.md +302 -0
- package/markdown/format.md +122 -0
- package/markdown/i18n.md +292 -0
- package/markdown/image.md +298 -0
- package/markdown/json.md +269 -0
- package/markdown/load.md +133 -0
- package/markdown/logging.md +99 -0
- package/markdown/math.md +172 -0
- package/markdown/memory.md +85 -0
- package/markdown/navigation.md +152 -0
- package/markdown/net.md +60 -0
- package/markdown/obj.md +242 -0
- package/markdown/path.md +46 -0
- package/markdown/promise.md +94 -0
- package/markdown/sanitize.md +129 -0
- package/markdown/screen.md +78 -0
- package/markdown/scrollbar.md +82 -0
- package/markdown/security.md +289 -0
- package/markdown/shortcut.md +100 -0
- package/markdown/socket.md +134 -0
- package/markdown/sse.md +120 -0
- package/markdown/svg.md +167 -0
- package/markdown/sync.md +171 -0
- package/markdown/system.md +78 -0
- package/markdown/terminal.md +73 -0
- package/markdown/text.md +245 -0
- package/markdown/timer.md +98 -0
- package/markdown/tools.md +111 -0
- package/markdown/translators.md +65 -0
- package/markdown/trigger.md +99 -0
- package/markdown/triggers.md +133 -0
- package/markdown/type.md +109 -0
- package/markdown/types.md +102 -0
- package/markdown/ui.md +45 -0
- package/markdown/window.md +211 -0
- package/markdown/worker.md +223 -0
- package/modules/ai.cjs +1 -1
- package/modules/ai.js +1 -1
- package/modules/anchor.cjs +1 -1
- package/modules/anchor.js +1 -1
- package/modules/array.cjs +1 -1
- package/modules/array.js +1 -1
- package/modules/audio.cjs +1 -1
- package/modules/audio.js +1 -1
- package/modules/avoid.cjs +1 -1
- package/modules/avoid.js +1 -1
- package/modules/biometric.cjs +1 -1
- package/modules/biometric.js +1 -1
- package/modules/browser.cjs +1 -1
- package/modules/browser.js +1 -1
- package/modules/check.cjs +1 -1
- package/modules/check.js +1 -1
- package/modules/color.cjs +1 -1
- package/modules/color.js +1 -1
- package/modules/compress.cjs +1 -1
- package/modules/compress.js +1 -1
- package/modules/cookie.cjs +1 -1
- package/modules/cookie.js +1 -1
- package/modules/coords.cjs +1 -1
- package/modules/coords.js +1 -1
- package/modules/credits.cjs +1 -1
- package/modules/credits.js +1 -1
- package/modules/date.cjs +1 -1
- package/modules/date.js +1 -1
- package/modules/disable.cjs +1 -1
- package/modules/disable.js +1 -1
- package/modules/dispatch.cjs +1 -1
- package/modules/dispatch.js +1 -1
- package/modules/elements.cjs +1 -1
- package/modules/elements.js +1 -1
- package/modules/events.cjs +1 -1
- package/modules/events.js +1 -1
- package/modules/fetch.cjs +1 -1
- package/modules/fetch.js +1 -1
- package/modules/form.cjs +1 -1
- package/modules/form.js +1 -1
- package/modules/format.cjs +1 -1
- package/modules/format.js +1 -1
- package/modules/i18n.cjs +1 -1
- package/modules/i18n.js +1 -1
- package/modules/image.cjs +1 -1
- package/modules/image.js +1 -1
- package/modules/json.cjs +1 -1
- package/modules/json.js +1 -1
- package/modules/load.cjs +1 -1
- package/modules/load.js +1 -1
- package/modules/logging.cjs +1 -1
- package/modules/logging.js +1 -1
- package/modules/math.cjs +1 -1
- package/modules/math.js +1 -1
- package/modules/memory.cjs +1 -1
- package/modules/memory.js +1 -1
- package/modules/navigation.cjs +1 -1
- package/modules/navigation.js +1 -1
- package/modules/net.cjs +1 -1
- package/modules/net.js +1 -1
- package/modules/objects.cjs +1 -1
- package/modules/objects.js +1 -1
- package/modules/path.cjs +1 -1
- package/modules/path.js +1 -1
- package/modules/promise.cjs +1 -1
- package/modules/promise.js +1 -1
- package/modules/sanitize.cjs +1 -1
- package/modules/sanitize.js +1 -1
- package/modules/screen.cjs +1 -1
- package/modules/screen.js +1 -1
- package/modules/scrollbar.cjs +1 -1
- package/modules/scrollbar.js +1 -1
- package/modules/security.cjs +1 -1
- package/modules/security.js +1 -1
- package/modules/shortcut.cjs +1 -1
- package/modules/shortcut.js +1 -1
- package/modules/socket.cjs +1 -1
- package/modules/socket.js +1 -1
- package/modules/sse.cjs +1 -1
- package/modules/sse.js +1 -1
- package/modules/svg.cjs +1 -1
- package/modules/svg.js +1 -1
- package/modules/sync.cjs +1 -1
- package/modules/sync.js +1 -1
- package/modules/system.cjs +1 -1
- package/modules/system.js +1 -1
- package/modules/text.cjs +1 -1
- package/modules/text.js +1 -1
- package/modules/timer.cjs +1 -1
- package/modules/timer.js +1 -1
- package/modules/tools.cjs +1 -1
- package/modules/tools.js +1 -1
- package/modules/translators.cjs +1 -1
- package/modules/translators.js +1 -1
- package/modules/triggers.cjs +1 -1
- package/modules/triggers.js +1 -1
- package/modules/types.cjs +1 -1
- package/modules/types.js +1 -1
- package/modules/ui.cjs +1 -1
- package/modules/ui.js +1 -1
- package/modules/window.cjs +1 -1
- package/modules/window.js +1 -1
- package/modules/worker.cjs +1 -1
- package/modules/worker.js +1 -1
- package/package.json +3 -1
- package/sbom.json +7 -7
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# worker
|
|
2
|
+
|
|
3
|
+
Web Worker management utilities for multi-threaded JavaScript execution, including worker creation, pool management, and parallel task processing.
|
|
4
|
+
|
|
5
|
+
## Functions
|
|
6
|
+
|
|
7
|
+
| Function | Description | Example |
|
|
8
|
+
|----------|-------------|---------|
|
|
9
|
+
| `create` | Create a worker from URL | `dphelper.worker.create('worker.js', { onmessage: (e) => console.log(e.data) })` |
|
|
10
|
+
| `createInline` | Create worker from inline code | `dphelper.worker.createInline('self.onmessage = e => postMessage(e.data * 2)')` |
|
|
11
|
+
| `post` | Send message to worker | `dphelper.worker.post(worker, { type: 'compute', data: 42 })` |
|
|
12
|
+
| `terminate` | Stop a worker | `dphelper.worker.terminate(worker)` |
|
|
13
|
+
| `pool` | Create worker pool | `dphelper.worker.pool('worker.js', 4)` |
|
|
14
|
+
| `poolExec` | Execute tasks in pool | `dphelper.worker.poolExec(pool, tasks)` |
|
|
15
|
+
| `importScripts` | Import scripts into worker | `dphelper.worker.importScripts(worker, ['lib1.js', 'lib2.js'])` |
|
|
16
|
+
| `shared` | Create SharedWorker | `dphelper.worker.shared('my-worker.js', { name: 'shared' })` |
|
|
17
|
+
|
|
18
|
+
## Description
|
|
19
|
+
|
|
20
|
+
Powerful Web Worker management module providing:
|
|
21
|
+
- **Inline Workers** - Create workers from JavaScript strings without external files
|
|
22
|
+
- **Worker Pools** - Manage multiple workers for parallel processing
|
|
23
|
+
- **SharedWorkers** - Cross-tab communication via shared worker
|
|
24
|
+
- **Script Import** - Dynamically import external scripts into workers
|
|
25
|
+
- **Transferable Support** - Efficient data transfer using Transferable objects
|
|
26
|
+
|
|
27
|
+
## Usage Examples
|
|
28
|
+
|
|
29
|
+
### Basic Worker Creation
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
// Create worker from external file
|
|
33
|
+
const worker = dphelper.worker.create('worker.js', {
|
|
34
|
+
onmessage: (e) => {
|
|
35
|
+
console.log('Received:', e.data);
|
|
36
|
+
},
|
|
37
|
+
onerror: (e) => {
|
|
38
|
+
console.error('Worker error:', e);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Send message to worker
|
|
43
|
+
dphelper.worker.post(worker, { type: 'hello', data: 'world' });
|
|
44
|
+
|
|
45
|
+
// When done, terminate worker
|
|
46
|
+
dphelper.worker.terminate(worker);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Inline Workers
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
// Create worker from inline code
|
|
53
|
+
const worker = dphelper.worker.createInline(`
|
|
54
|
+
self.onmessage = function(e) {
|
|
55
|
+
// Perform heavy computation
|
|
56
|
+
const result = e.data * 2;
|
|
57
|
+
postMessage(result);
|
|
58
|
+
};
|
|
59
|
+
`, {
|
|
60
|
+
onmessage: (e) => {
|
|
61
|
+
console.log('Result:', e.data); // 84
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
dphelper.worker.post(worker, 42);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Worker Pool for Parallel Processing
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
// Create a pool of 4 workers
|
|
72
|
+
const pool = dphelper.worker.pool('compute-worker.js', 4);
|
|
73
|
+
|
|
74
|
+
// Prepare tasks
|
|
75
|
+
const tasks = [
|
|
76
|
+
{ id: 1, data: 100 },
|
|
77
|
+
{ id: 2, data: 200 },
|
|
78
|
+
{ id: 3, data: 300 },
|
|
79
|
+
{ id: 4, data: 400 },
|
|
80
|
+
{ id: 5, data: 500 }
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
// Execute all tasks in parallel across the pool
|
|
84
|
+
const results = await dphelper.worker.poolExec(pool, tasks);
|
|
85
|
+
console.log(results); // [200, 400, 600, 800, 1000]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### SharedWorker for Cross-Tab Communication
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
// Create shared worker (accessible from multiple tabs)
|
|
92
|
+
const shared = dphelper.worker.shared('shared-worker.js', {
|
|
93
|
+
name: 'my-shared-worker',
|
|
94
|
+
onconnect: (e) => {
|
|
95
|
+
console.log('New connection:', e.ports[0]);
|
|
96
|
+
},
|
|
97
|
+
onmessage: (e) => {
|
|
98
|
+
console.log('Shared message:', e.data);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Send message through port
|
|
103
|
+
shared.port.postMessage({ type: 'hello' });
|
|
104
|
+
shared.port.start();
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Importing Scripts
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
const worker = dphelper.worker.create('main-worker.js');
|
|
111
|
+
|
|
112
|
+
// Import external libraries into worker
|
|
113
|
+
dphelper.worker.importScripts(worker, [
|
|
114
|
+
'https://cdn.example.com/lib1.js',
|
|
115
|
+
'https://cdn.example.com/lib2.js'
|
|
116
|
+
]);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Advanced Usage
|
|
120
|
+
|
|
121
|
+
### Parallel Data Processing
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
// Worker file: data-processor.js
|
|
125
|
+
/*
|
|
126
|
+
self.onmessage = function(e) {
|
|
127
|
+
const { id, numbers } = e.data;
|
|
128
|
+
|
|
129
|
+
// Heavy computation
|
|
130
|
+
const sum = numbers.reduce((a, b) => a + b, 0);
|
|
131
|
+
const avg = sum / numbers.length;
|
|
132
|
+
|
|
133
|
+
postMessage({ id, sum, avg });
|
|
134
|
+
};
|
|
135
|
+
*/
|
|
136
|
+
|
|
137
|
+
async function processData(items) {
|
|
138
|
+
const pool = dphelper.worker.pool('data-processor.js', navigator.hardwareConcurrency || 4);
|
|
139
|
+
|
|
140
|
+
const tasks = items.map((item, index) => ({
|
|
141
|
+
index,
|
|
142
|
+
data: { id: item.id, numbers: item.values }
|
|
143
|
+
}));
|
|
144
|
+
|
|
145
|
+
const results = await dphelper.worker.poolExec(pool, tasks);
|
|
146
|
+
|
|
147
|
+
// Sort by original index
|
|
148
|
+
return results.sort((a, b) => a.id - b.id);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Usage
|
|
152
|
+
const data = [
|
|
153
|
+
{ id: 1, values: [1, 2, 3, 4, 5] },
|
|
154
|
+
{ id: 2, values: [10, 20, 30] },
|
|
155
|
+
{ id: 3, values: [100, 200] }
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
const processed = await processData(data);
|
|
159
|
+
console.log(processed);
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Real-time Communication with Pool
|
|
163
|
+
|
|
164
|
+
```javascript
|
|
165
|
+
class WorkerPoolManager {
|
|
166
|
+
constructor(workerScript, poolSize = 4) {
|
|
167
|
+
this.pool = dphelper.worker.pool(workerScript, poolSize);
|
|
168
|
+
this.results = new Map();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async processTask(taskId, data) {
|
|
172
|
+
return new Promise((resolve, reject) => {
|
|
173
|
+
const handler = (e) => {
|
|
174
|
+
if (e.data.taskId === taskId) {
|
|
175
|
+
this.results.delete(taskId);
|
|
176
|
+
resolve(e.data.result);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
this.pool.workers.forEach(w => w.addEventListener('message', handler));
|
|
181
|
+
|
|
182
|
+
dphelper.worker.post(this.pool.workers[0], { taskId, data });
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
terminate() {
|
|
187
|
+
this.pool.workers.forEach(w => dphelper.worker.terminate(w));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Web Worker with Transferables
|
|
193
|
+
|
|
194
|
+
```javascript
|
|
195
|
+
// Efficiently transfer large data without copying
|
|
196
|
+
const buffer = new ArrayBuffer(1024 * 1024); // 1MB
|
|
197
|
+
const numbers = new Uint8Array(buffer);
|
|
198
|
+
|
|
199
|
+
// Fill with data...
|
|
200
|
+
|
|
201
|
+
const worker = dphelper.worker.createInline(`
|
|
202
|
+
self.onmessage = function(e) {
|
|
203
|
+
const data = new Uint8Array(e.data.buffer);
|
|
204
|
+
// Process data...
|
|
205
|
+
postMessage({ processed: true }, [e.data.buffer]);
|
|
206
|
+
};
|
|
207
|
+
`);
|
|
208
|
+
|
|
209
|
+
// Transfer the buffer ownership to worker
|
|
210
|
+
dphelper.worker.post(worker, numbers, [buffer]);
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Details
|
|
214
|
+
|
|
215
|
+
- **Author:** Dario Passariello
|
|
216
|
+
- **Version:** 0.0.1
|
|
217
|
+
- **Creation Date:** 20260313
|
|
218
|
+
- **Last Modified:** 20260313
|
|
219
|
+
- **Environment:** Client-side only (browser)
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
*Automatically generated document*
|
package/modules/ai.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var P={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var v={version:"4.
|
|
1
|
+
'use strict';var P={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var v={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...P},configurable:true,writable:true},version:{value:v.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var f=dphelper;Object.defineProperty(f,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(f,"setDescription",{value:(e,t)=>{Object.defineProperties(f,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(f[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),f.setProps(f,e,{writable:false,configurable:false,enumerable:false}),f._list.scripts.push(e);}});var M={name:"ai",active:true,subCommand:[{name:"tokenCount",version:"0.0.3",example:"dphelper.ai.tokenCount({ users: [1,2,3] })",author:"Dario Passariello",creationDate:"20260220",lastMod:"20260221",type:"function",active:true,description:"Estimate token count for LLMs. If an object is passed, it uses TOON format for calculation.",env:"both",subCommand:[]},{name:"smartSanitize",version:"0.0.2",example:"dphelper.ai.smartSanitize('My email is test@example.com')",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Remove PII (emails, phones, etc) from text for AI privacy",subCommand:[]},{name:"toon",version:"0.0.1",example:"dphelper.ai.toon({ users: [{id: 1, name: 'Ada'}] })",author:"TOON + Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Convert JSON to TOON format (Token-Oriented Object Notation)",subCommand:[]},{name:"toonToJson",version:"0.0.1",example:"dphelper.ai.toonToJson('users[1]{id,name}:\\n 1,Ada')",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Convert TOON format back to JSON/Object",subCommand:[]},{name:"chunker",version:"0.0.1",example:"dphelper.ai.chunker(text, { size: 1000, overlap: 200 })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Split long text into chunks for RAG or AI processing.",subCommand:[]},{name:"similarity",version:"0.0.1",example:"dphelper.ai.similarity(vecA, vecB)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Calculate cosine similarity between two embedding vectors.",subCommand:[]},{name:"extractReasoning",version:"0.0.1",example:"dphelper.ai.extractReasoning(aiResponse)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Extract <think> tags or internal reasoning from AI responses.",subCommand:[]},{name:"prompt",version:"0.0.1",example:"dphelper.ai.prompt('Hello {{name}}', { name: 'Ada' })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Simple prompt template engine with variable injection.",subCommand:[]},{name:"schema",version:"0.0.1",example:"dphelper.ai.schema({ id: 1, name: 'Ada' })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Generate a TOON-style schema definition for AI instructions.",subCommand:[]},{name:"snapshot",version:"0.0.1",example:"dphelper.ai.snapshot()",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Capture a 'mental snapshot' of the app state (logs/globals) in TOON format for AI debugging.",env:"both",subCommand:[]}]},x=e=>e===null||typeof e!="object",O=e=>e===null?"null":typeof e=="string"?e.includes(",")||e.includes(":")||e.includes('"')||e.includes(`
|
|
2
2
|
`)||e.trim()!==e?`"${e.replace(/"/g,'\\"')}"`:e||'""':String(e),b=(e,t=0)=>{let r=" ".repeat(t);if(x(e))return O(e);if(Array.isArray(e)){if(e.length===0)return "[0]:";let n=e[0];if(!x(n)&&!Array.isArray(n)){let s=Object.keys(n),o=`[${e.length}]{${s.join(",")}}:`;for(let i of e){let u=s.map(a=>O(i[a])).join(",");o+=`
|
|
3
3
|
${r} ${u}`;}return o}else return `[${e.length}]: `+e.map(O).join(",")}else return Object.entries(e).map(([n,s])=>{let o=n.includes(" ")||n.includes(":")?`"${n}"`:n;if(!x(s)){let i=b(s,t+1);return i.startsWith("[")?`${o}${i}`:`${o}:
|
|
4
4
|
${r}${i}`}return `${o}: ${O(s)}`}).join(`
|
package/modules/ai.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var v={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var $={version:"4.
|
|
1
|
+
var v={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var $={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...v},configurable:true,writable:true},version:{value:$.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var f=dphelper;Object.defineProperty(f,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(f,"setDescription",{value:(e,t)=>{Object.defineProperties(f,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(f[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),f.setProps(f,e,{writable:false,configurable:false,enumerable:false}),f._list.scripts.push(e);}});var N={name:"ai",active:true,subCommand:[{name:"tokenCount",version:"0.0.3",example:"dphelper.ai.tokenCount({ users: [1,2,3] })",author:"Dario Passariello",creationDate:"20260220",lastMod:"20260221",type:"function",active:true,description:"Estimate token count for LLMs. If an object is passed, it uses TOON format for calculation.",env:"both",subCommand:[]},{name:"smartSanitize",version:"0.0.2",example:"dphelper.ai.smartSanitize('My email is test@example.com')",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Remove PII (emails, phones, etc) from text for AI privacy",subCommand:[]},{name:"toon",version:"0.0.1",example:"dphelper.ai.toon({ users: [{id: 1, name: 'Ada'}] })",author:"TOON + Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Convert JSON to TOON format (Token-Oriented Object Notation)",subCommand:[]},{name:"toonToJson",version:"0.0.1",example:"dphelper.ai.toonToJson('users[1]{id,name}:\\n 1,Ada')",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Convert TOON format back to JSON/Object",subCommand:[]},{name:"chunker",version:"0.0.1",example:"dphelper.ai.chunker(text, { size: 1000, overlap: 200 })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Split long text into chunks for RAG or AI processing.",subCommand:[]},{name:"similarity",version:"0.0.1",example:"dphelper.ai.similarity(vecA, vecB)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Calculate cosine similarity between two embedding vectors.",subCommand:[]},{name:"extractReasoning",version:"0.0.1",example:"dphelper.ai.extractReasoning(aiResponse)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Extract <think> tags or internal reasoning from AI responses.",subCommand:[]},{name:"prompt",version:"0.0.1",example:"dphelper.ai.prompt('Hello {{name}}', { name: 'Ada' })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Simple prompt template engine with variable injection.",subCommand:[]},{name:"schema",version:"0.0.1",example:"dphelper.ai.schema({ id: 1, name: 'Ada' })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Generate a TOON-style schema definition for AI instructions.",subCommand:[]},{name:"snapshot",version:"0.0.1",example:"dphelper.ai.snapshot()",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Capture a 'mental snapshot' of the app state (logs/globals) in TOON format for AI debugging.",env:"both",subCommand:[]}]},A=e=>e===null||typeof e!="object",O=e=>e===null?"null":typeof e=="string"?e.includes(",")||e.includes(":")||e.includes('"')||e.includes(`
|
|
2
2
|
`)||e.trim()!==e?`"${e.replace(/"/g,'\\"')}"`:e||'""':String(e),b=(e,t=0)=>{let r=" ".repeat(t);if(A(e))return O(e);if(Array.isArray(e)){if(e.length===0)return "[0]:";let n=e[0];if(!A(n)&&!Array.isArray(n)){let s=Object.keys(n),o=`[${e.length}]{${s.join(",")}}:`;for(let i of e){let u=s.map(a=>O(i[a])).join(",");o+=`
|
|
3
3
|
${r} ${u}`;}return o}else return `[${e.length}]: `+e.map(O).join(",")}else return Object.entries(e).map(([n,s])=>{let o=n.includes(" ")||n.includes(":")?`"${n}"`:n;if(!A(s)){let i=b(s,t+1);return i.startsWith("[")?`${o}${i}`:`${o}:
|
|
4
4
|
${r}${i}`}return `${o}: ${O(s)}`}).join(`
|
package/modules/anchor.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var p={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var c={version:"4.
|
|
1
|
+
'use strict';var p={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var c={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...p},configurable:true,writable:true},version:{value:c.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var r=dphelper;Object.defineProperty(r,"setProps",{value:(e,t,a)=>{Object.defineProperty(e,t.name,a||{writable:false,configurable:false,enumerable:false}),a?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(r,"setDescription",{value:(e,t)=>{Object.defineProperties(r,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(a=>(Object.defineProperties(r[e.name],{[a]:{writable:false,configurable:false,enumerable:false}}),null)),r.setProps(r,e,{writable:false,configurable:false,enumerable:false}),r._list.scripts.push(e);}});var b={name:"anchor",active:true,subCommand:[{name:"toOnClick",type:"function",version:"0.0.2",example:"dphelper.anchor.toOnClick([element, 'foo' | '.foo' | '#foo'])",description:`This tool allows you to convert all links in an element to 'onclick'.
|
|
2
2
|
It allows you to avoid the message with the path relative to the requested address
|
|
3
3
|
and it is very useful when you work with SPA but you want to keep even older browsers.`,author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",active:true,env:"client",subCommand:[]}]},d={toOnClick:e=>{let t=document.querySelector(e);if(!t)return;t.querySelectorAll("a").forEach(o=>{let l=o.getAttribute("href");if(!l)return;o.style.cursor="pointer";let n=dphelper.pathRail()?.[3]?.replace(/\//g,"")||"";n&&o.classList.add(n);let s=o.cloneNode(true);o.parentNode?.replaceChild(s,o),s.removeAttribute("href"),s.addEventListener("mouseup",u=>{l.startsWith("/")?(history.pushState({href:l},"",l),dphelper.navigation.load(l),u.stopPropagation()):dphelper.browser.href(l);});});}};dphelper?.setDescription(b,d);var A=dphelper.anchor;
|
|
4
4
|
exports.anchor=A;
|
package/modules/anchor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var u={version:"4.
|
|
1
|
+
var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var u={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...c},configurable:true,writable:true},version:{value:u.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var r=dphelper;Object.defineProperty(r,"setProps",{value:(e,t,a)=>{Object.defineProperty(e,t.name,a||{writable:false,configurable:false,enumerable:false}),a?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(r,"setDescription",{value:(e,t)=>{Object.defineProperties(r,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(a=>(Object.defineProperties(r[e.name],{[a]:{writable:false,configurable:false,enumerable:false}}),null)),r.setProps(r,e,{writable:false,configurable:false,enumerable:false}),r._list.scripts.push(e);}});var d={name:"anchor",active:true,subCommand:[{name:"toOnClick",type:"function",version:"0.0.2",example:"dphelper.anchor.toOnClick([element, 'foo' | '.foo' | '#foo'])",description:`This tool allows you to convert all links in an element to 'onclick'.
|
|
2
2
|
It allows you to avoid the message with the path relative to the requested address
|
|
3
3
|
and it is very useful when you work with SPA but you want to keep even older browsers.`,author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",active:true,env:"client",subCommand:[]}]},m={toOnClick:e=>{let t=document.querySelector(e);if(!t)return;t.querySelectorAll("a").forEach(o=>{let l=o.getAttribute("href");if(!l)return;o.style.cursor="pointer";let p=dphelper.pathRail()?.[3]?.replace(/\//g,"")||"";p&&o.classList.add(p);let s=o.cloneNode(true);o.parentNode?.replaceChild(s,o),s.removeAttribute("href"),s.addEventListener("mouseup",h=>{l.startsWith("/")?(history.pushState({href:l},"",l),dphelper.navigation.load(l),h.stopPropagation()):dphelper.browser.href(l);});});}};dphelper?.setDescription(d,m);var D=dphelper.anchor;
|
|
4
4
|
export{D as anchor};
|
package/modules/array.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var p={version:"4.
|
|
1
|
+
'use strict';var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var p={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...c},configurable:true,writable:true},version:{value:p.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var i=dphelper;Object.defineProperty(i,"setProps",{value:(e,a,r)=>{Object.defineProperty(e,a.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[a.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(i,"setDescription",{value:(e,a)=>{Object.defineProperties(i,{[e.name]:{value:a,writable:false,configurable:false,enumerable:false}}),Object.keys(a).map(r=>(Object.defineProperties(i[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),i.setProps(i,e,{writable:false,configurable:false,enumerable:false}),i._list.scripts.push(e);}});var f={name:"array",active:true,subCommand:[{name:"find",version:"0.0.2",example:"dphelper.array.find(array, 'key')",description:"Find an item in the array recursively.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"delete",version:"0.0.2",example:"dphelper.array.delete(array, 'key')",description:"Delete an item from the array recursively.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"unique",version:"0.0.2",example:"dphelper.array.unique(array)",description:"Remove duplicate values from an array.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"merge",version:"0.0.2",example:"dphelper.array.merge(arrA, arrB)",description:"Merge two arrays into one.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"mergeByKey",version:"0.0.2",example:"dphelper.array.mergeByKey(arrA, arrB, 'id')",author:"Dario Passariello",creationDate:"20230603",lastMod:"20260220",type:"function",active:true,description:"Merge two arrays of objects by a specific key.",env:"both",subCommand:[]},{name:"asc",version:"0.0.2",example:"dphelper.array.asc(array)",description:"Sort array in ascending order.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"desc",version:"0.0.2",example:"dphelper.array.desc(array)",description:"Sort array in descending order.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"duplicates",version:"0.0.2",example:"dphelper.array.duplicates(array)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Find duplicate items in an array.",env:"both",subCommand:[]},{name:"even",version:"0.0.2",example:"dphelper.array.even(array)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Filter even numbers from an array.",env:"both",subCommand:[]},{name:"odd",version:"0.0.2",example:"dphelper.array.odd(array)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Filter odd numbers from an array.",env:"both",subCommand:[]},{name:"toObj",version:"0.0.2",example:"dphelper.array.toObj(array)",description:"Convert an array to an object.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"sumColumn",version:"0.0.2",example:"dphelper.array.sumColumn(arr, 0)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sum the values of a specified column in a multidimensional array.",env:"both",subCommand:[]},{name:"shuffle",version:"0.0.2",example:"dphelper.array.shuffle(array)",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Randomly shuffle the elements of an array.",env:"both",subCommand:[]},{name:"generate",version:"0.0.2",example:"dphelper.array.generate(10)",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Generate an array of random numbers (max 500000).",env:"both",subCommand:[]},{name:"testArrayInt",version:"0.0.2",example:"dphelper.array.testArrayInt([1,2,4])",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Check if an array contains consecutive integers.",env:"both",subCommand:[]},{name:"rand32",version:"0.0.2",example:"dphelper.array.rand32(5)",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Generate an array of random 32-bit unsigned integers.",env:"both",subCommand:[]},{name:"findindex",version:"0.0.2",example:"dphelper.array.findindex(array, 'name')",description:"Find the index of an item in an array by key.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"pathToJson",version:"0.0.2",example:"dphelper.array.pathToJson(paths, '/')",description:"Convert an array of paths into a JSON object.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"deepClone",version:"0.0.2",example:"dphelper.array.deepClone(array)",description:"Create a deep clone of an array using structuredClone.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"match",version:"0.0.2",example:"dphelper.array.match(arrA, arrB)",author:"Dario Passariello",creationDate:"20250101",lastMod:"20260220",type:"function",active:true,description:"Find a perfect match between an array of words and an array to check.",env:"both",subCommand:[]}]},y={find:(e,a)=>{if(Array.isArray(e)){for(let r of e){if(r[a]===a)return r;if(r.children){let t=dphelper.array.find(a,r.children);if(t)return t}}return false}},delete:(e,a)=>{Array.isArray(e)&&e.some(function r(t,n,o){if(t[a]===a)return o.splice(n,1),true;for(let s of Object.keys(t)){let u=t[s];if(Array.isArray(u))return u.some(r)}return null});},merge:(e,a)=>{if(!(e&&a))return a||e;for(let r of Object.keys(e))r==="__proto__"||r==="constructor"||r==="prototype"||e[r]instanceof Object&&a[r]&&Object.assign(e[r],dphelper.array.merge(a[r],e[r]));return Object.assign(a,e)},mergeByKey:(e,a,r)=>e.map(t=>{let n=a.find(o=>t[r]===o[r]);return n?Object.assign({},t,n):t}),duplicates:e=>{if(!Array.isArray(e))return;let a=new Set,r=new Set;for(let t of e)a.has(t)?r.add(t):a.add(t);return Array.from(r)},even:e=>{if(Array.isArray(e))return e.filter(a=>a%2===0)},odd:e=>{if(Array.isArray(e))return e.filter(a=>a%2!==0)},sumColumn:(e=[],a=0)=>Array.isArray(e)?typeof a>"u"?"provide a column":e.reduce((r,t)=>r+(t[a]||0),0):"provide a multidimensional array",shuffle:e=>{if(Array.isArray(e)){for(let a=e.length-1;a>0;a--){let r=Math.floor(Math.random()*(a+1));[e[a],e[r]]=[e[r],e[a]];}return e}},generate:e=>{if(Number.isNaN(e))return;let a=Array.from({length:e},(r,t)=>t+1);return dphelper.array.shuffle(a)},testArrayInt:e=>{if(!Array.isArray(e))return;let a=[];for(let r=1;r<=e.length;r++)e.includes(r)||a.push(r);return a},rand32:e=>{let a=performance.now(),r=[];r.nums=[],r.time=[];for(let n=0;n<e;++n)r.nums.push(crypto.getRandomValues(new Uint32Array(1))[0]);let t=performance.now();return r.time.push(t-a),r},match:(e,a)=>e.filter(r=>a.includes(r)),pathToJson:(e,a="/")=>{let r={},t;for(let n of e){t=r;let o=n.split(a);for(let s of o.slice(1,-1)){if(s==="")return;s in t||(t[s]={}),t=t[s];}o.at(-1)&&(t[o.at(-1)]=null);}return r}};dphelper?.setDescription(f,y);var M=dphelper.array;exports.array=M;
|
package/modules/array.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var p={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var d={version:"4.
|
|
1
|
+
var p={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var d={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...p},configurable:true,writable:true},version:{value:d.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var i=dphelper;Object.defineProperty(i,"setProps",{value:(e,a,r)=>{Object.defineProperty(e,a.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[a.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(i,"setDescription",{value:(e,a)=>{Object.defineProperties(i,{[e.name]:{value:a,writable:false,configurable:false,enumerable:false}}),Object.keys(a).map(r=>(Object.defineProperties(i[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),i.setProps(i,e,{writable:false,configurable:false,enumerable:false}),i._list.scripts.push(e);}});var y={name:"array",active:true,subCommand:[{name:"find",version:"0.0.2",example:"dphelper.array.find(array, 'key')",description:"Find an item in the array recursively.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"delete",version:"0.0.2",example:"dphelper.array.delete(array, 'key')",description:"Delete an item from the array recursively.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"unique",version:"0.0.2",example:"dphelper.array.unique(array)",description:"Remove duplicate values from an array.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"merge",version:"0.0.2",example:"dphelper.array.merge(arrA, arrB)",description:"Merge two arrays into one.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"mergeByKey",version:"0.0.2",example:"dphelper.array.mergeByKey(arrA, arrB, 'id')",author:"Dario Passariello",creationDate:"20230603",lastMod:"20260220",type:"function",active:true,description:"Merge two arrays of objects by a specific key.",env:"both",subCommand:[]},{name:"asc",version:"0.0.2",example:"dphelper.array.asc(array)",description:"Sort array in ascending order.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"desc",version:"0.0.2",example:"dphelper.array.desc(array)",description:"Sort array in descending order.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"duplicates",version:"0.0.2",example:"dphelper.array.duplicates(array)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Find duplicate items in an array.",env:"both",subCommand:[]},{name:"even",version:"0.0.2",example:"dphelper.array.even(array)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Filter even numbers from an array.",env:"both",subCommand:[]},{name:"odd",version:"0.0.2",example:"dphelper.array.odd(array)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Filter odd numbers from an array.",env:"both",subCommand:[]},{name:"toObj",version:"0.0.2",example:"dphelper.array.toObj(array)",description:"Convert an array to an object.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"sumColumn",version:"0.0.2",example:"dphelper.array.sumColumn(arr, 0)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sum the values of a specified column in a multidimensional array.",env:"both",subCommand:[]},{name:"shuffle",version:"0.0.2",example:"dphelper.array.shuffle(array)",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Randomly shuffle the elements of an array.",env:"both",subCommand:[]},{name:"generate",version:"0.0.2",example:"dphelper.array.generate(10)",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Generate an array of random numbers (max 500000).",env:"both",subCommand:[]},{name:"testArrayInt",version:"0.0.2",example:"dphelper.array.testArrayInt([1,2,4])",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Check if an array contains consecutive integers.",env:"both",subCommand:[]},{name:"rand32",version:"0.0.2",example:"dphelper.array.rand32(5)",author:"Dario Passariello",creationDate:"20230527",lastMod:"20260220",type:"function",active:true,description:"Generate an array of random 32-bit unsigned integers.",env:"both",subCommand:[]},{name:"findindex",version:"0.0.2",example:"dphelper.array.findindex(array, 'name')",description:"Find the index of an item in an array by key.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"pathToJson",version:"0.0.2",example:"dphelper.array.pathToJson(paths, '/')",description:"Convert an array of paths into a JSON object.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"deepClone",version:"0.0.2",example:"dphelper.array.deepClone(array)",description:"Create a deep clone of an array using structuredClone.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]},{name:"match",version:"0.0.2",example:"dphelper.array.match(arrA, arrB)",author:"Dario Passariello",creationDate:"20250101",lastMod:"20260220",type:"function",active:true,description:"Find a perfect match between an array of words and an array to check.",env:"both",subCommand:[]}]},h={find:(e,a)=>{if(Array.isArray(e)){for(let r of e){if(r[a]===a)return r;if(r.children){let t=dphelper.array.find(a,r.children);if(t)return t}}return false}},delete:(e,a)=>{Array.isArray(e)&&e.some(function r(t,n,o){if(t[a]===a)return o.splice(n,1),true;for(let s of Object.keys(t)){let c=t[s];if(Array.isArray(c))return c.some(r)}return null});},merge:(e,a)=>{if(!(e&&a))return a||e;for(let r of Object.keys(e))r==="__proto__"||r==="constructor"||r==="prototype"||e[r]instanceof Object&&a[r]&&Object.assign(e[r],dphelper.array.merge(a[r],e[r]));return Object.assign(a,e)},mergeByKey:(e,a,r)=>e.map(t=>{let n=a.find(o=>t[r]===o[r]);return n?Object.assign({},t,n):t}),duplicates:e=>{if(!Array.isArray(e))return;let a=new Set,r=new Set;for(let t of e)a.has(t)?r.add(t):a.add(t);return Array.from(r)},even:e=>{if(Array.isArray(e))return e.filter(a=>a%2===0)},odd:e=>{if(Array.isArray(e))return e.filter(a=>a%2!==0)},sumColumn:(e=[],a=0)=>Array.isArray(e)?typeof a>"u"?"provide a column":e.reduce((r,t)=>r+(t[a]||0),0):"provide a multidimensional array",shuffle:e=>{if(Array.isArray(e)){for(let a=e.length-1;a>0;a--){let r=Math.floor(Math.random()*(a+1));[e[a],e[r]]=[e[r],e[a]];}return e}},generate:e=>{if(Number.isNaN(e))return;let a=Array.from({length:e},(r,t)=>t+1);return dphelper.array.shuffle(a)},testArrayInt:e=>{if(!Array.isArray(e))return;let a=[];for(let r=1;r<=e.length;r++)e.includes(r)||a.push(r);return a},rand32:e=>{let a=performance.now(),r=[];r.nums=[],r.time=[];for(let n=0;n<e;++n)r.nums.push(crypto.getRandomValues(new Uint32Array(1))[0]);let t=performance.now();return r.time.push(t-a),r},match:(e,a)=>e.filter(r=>a.includes(r)),pathToJson:(e,a="/")=>{let r={},t;for(let n of e){t=r;let o=n.split(a);for(let s of o.slice(1,-1)){if(s==="")return;s in t||(t[s]={}),t=t[s];}o.at(-1)&&(t[o.at(-1)]=null);}return r}};dphelper?.setDescription(y,h);var A=dphelper.array;export{A as array};
|
package/modules/audio.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var i={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var s={version:"4.
|
|
1
|
+
'use strict';var i={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var s={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...i},configurable:true,writable:true},version:{value:s.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,o,r)=>{Object.defineProperty(e,o.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[o.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,o)=>{Object.defineProperties(a,{[e.name]:{value:o,writable:false,configurable:false,enumerable:false}}),Object.keys(o).map(r=>(Object.defineProperties(a[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var c={name:"audio",active:true,subCommand:[{name:"play",version:"0.0.2",example:"dphelper.audio.play([audiofile])",description:"Plays an audio file or removes all audio elements from the document.",author:"Dario Passariello",creationDate:"20240924",lastMod:"20240924",type:"function",active:true,env:"client",subCommand:[]}]},d={play:(e,o="",r=false)=>{if(e){if(!document.querySelector(`#audio_${e}`)){let t=document.createElement("audio");t.id=`audio_${e}`,t.dataset.dphelper="audio",t.src=o+e,t.loop=r,document.body.appendChild(t),t.load(),t.play()?.catch?.(n=>console.error("Error playing audio:",n));}}else document.querySelectorAll("audio[data-dphelper='audio']").forEach(t=>t.remove());}};dphelper?.setDescription(c,d);var O=dphelper.audio;exports.audio=O;
|
package/modules/audio.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var s={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var n={version:"4.
|
|
1
|
+
var s={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var n={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...s},configurable:true,writable:true},version:{value:n.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,o,r)=>{Object.defineProperty(e,o.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[o.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,o)=>{Object.defineProperties(a,{[e.name]:{value:o,writable:false,configurable:false,enumerable:false}}),Object.keys(o).map(r=>(Object.defineProperties(a[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var d={name:"audio",active:true,subCommand:[{name:"play",version:"0.0.2",example:"dphelper.audio.play([audiofile])",description:"Plays an audio file or removes all audio elements from the document.",author:"Dario Passariello",creationDate:"20240924",lastMod:"20240924",type:"function",active:true,env:"client",subCommand:[]}]},b={play:(e,o="",r=false)=>{if(e){if(!document.querySelector(`#audio_${e}`)){let t=document.createElement("audio");t.id=`audio_${e}`,t.dataset.dphelper="audio",t.src=o+e,t.loop=r,document.body.appendChild(t),t.load(),t.play()?.catch?.(p=>console.error("Error playing audio:",p));}}else document.querySelectorAll("audio[data-dphelper='audio']").forEach(t=>t.remove());}};dphelper?.setDescription(d,b);var k=dphelper.audio;export{k as audio};
|
package/modules/avoid.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var l={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var s={version:"4.
|
|
1
|
+
'use strict';var l={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var s={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...l},configurable:true,writable:true},version:{value:s.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var t=dphelper;Object.defineProperty(t,"setProps",{value:(e,r,a)=>{Object.defineProperty(e,r.name,a||{writable:false,configurable:false,enumerable:false}),a?.lock&&Object.freeze(e[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(t,"setDescription",{value:(e,r)=>{Object.defineProperties(t,{[e.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(a=>(Object.defineProperties(t[e.name],{[a]:{writable:false,configurable:false,enumerable:false}}),null)),t.setProps(t,e,{writable:false,configurable:false,enumerable:false}),t._list.scripts.push(e);}});var p={name:"avoid",active:true,subCommand:[{name:"cache",version:"0.0.2",example:"dphelper.avoid.cache()",description:"Appends a cache-busting query parameter to a given URI.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]}]},c={cache:e=>{if(typeof e!="string")throw new Error("The provided URI must be a string");return e.concat(/\?/.test(e)?"&":"?","t=",Math.random().toString(36).substring(2))}};dphelper?.setDescription(p,c);var j=dphelper.avoid;exports.avoid=j;
|
package/modules/avoid.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var s={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var i={version:"4.
|
|
1
|
+
var s={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var i={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...s},configurable:true,writable:true},version:{value:i.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var t=dphelper;Object.defineProperty(t,"setProps",{value:(e,r,a)=>{Object.defineProperty(e,r.name,a||{writable:false,configurable:false,enumerable:false}),a?.lock&&Object.freeze(e[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(t,"setDescription",{value:(e,r)=>{Object.defineProperties(t,{[e.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(a=>(Object.defineProperties(t[e.name],{[a]:{writable:false,configurable:false,enumerable:false}}),null)),t.setProps(t,e,{writable:false,configurable:false,enumerable:false}),t._list.scripts.push(e);}});var c={name:"avoid",active:true,subCommand:[{name:"cache",version:"0.0.2",example:"dphelper.avoid.cache()",description:"Appends a cache-busting query parameter to a given URI.",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,env:"both",subCommand:[]}]},u={cache:e=>{if(typeof e!="string")throw new Error("The provided URI must be a string");return e.concat(/\?/.test(e)?"&":"?","t=",Math.random().toString(36).substring(2))}};dphelper?.setDescription(c,u);var P=dphelper.avoid;export{P as avoid};
|
package/modules/biometric.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var f={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var b={version:"4.
|
|
1
|
+
'use strict';var f={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var b={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...f},configurable:true,writable:true},version:{value:b.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var o=dphelper;Object.defineProperty(o,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(o,"setDescription",{value:(e,t)=>{Object.defineProperties(o,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(o[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),o.setProps(o,e,{writable:false,configurable:false,enumerable:false}),o._list.scripts.push(e);}});var g={name:"biometric",active:true,subCommand:[{name:"isAvailable",version:"0.0.1",example:"dphelper.biometric.isAvailable()",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Check if WebAuthn/biometric authentication is available",env:"client",subCommand:[]},{name:"register",version:"0.0.1",example:"dphelper.biometric.register('user123', 'https://example.com')",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Register a new credential for biometric authentication",env:"client",subCommand:[]},{name:"authenticate",version:"0.0.1",example:"dphelper.biometric.authenticate('user123', 'https://example.com')",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Authenticate using stored biometric credential",env:"client",subCommand:[]},{name:"getCredential",version:"0.0.1",example:"dphelper.biometric.getCredential(credentialId)",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Get a stored credential by ID",env:"client",subCommand:[]},{name:"deleteCredential",version:"0.0.1",example:"dphelper.biometric.deleteCredential(credentialId)",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Delete a stored credential",env:"client",subCommand:[]},{name:"listCredentials",version:"0.0.1",example:"dphelper.biometric.listCredentials()",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"List all stored credentials",env:"client",subCommand:[]},{name:"isSensorAvailable",version:"0.0.1",example:"dphelper.biometric.isSensorAvailable('fingerprint')",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Check if specific biometric sensor is available",env:"client",subCommand:[]},{name:"getWebAuthnSupport",version:"0.0.1",example:"dphelper.biometric.getWebAuthnSupport()",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Get detailed WebAuthn support information",env:"client",subCommand:[]}]},l=()=>!!navigator.credentials&&!!navigator.credentials.create,v=()=>{if(!l())return {supported:false,platformAuthenticator:false,hybridTransport:false,uvToken:false};let t=navigator.userAgent,r=t.includes("Windows"),a=t.includes("Mac"),i=t.includes("Linux");return {supported:true,platformAuthenticator:r||a||i,hybridTransport:false,uvToken:false}},w=async e=>{if(!l())return false;if(typeof PublicKeyCredential<"u")try{if(e==="fingerprint")return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();if(e==="face")return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();if(e==="iris")return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return false}return false},m=(e=32)=>{let t=new Uint8Array(e);return crypto.getRandomValues(t),t},C=e=>{let t=e instanceof Uint8Array?e:new Uint8Array(e),r="";return t.forEach(a=>r+=String.fromCharCode(a)),btoa(r)},A=e=>{let t=atob(e),r=new Uint8Array(t.length);for(let a=0;a<t.length;a++)r[a]=t.charCodeAt(a);return r},s=new Map,P=async(e,t=window.location.hostname,r=window.location.hostname,a=e)=>{if(!l())return {success:false,error:"WebAuthn not supported"};try{let p={challenge:m().buffer,rp:{id:t,name:r},user:{id:new TextEncoder().encode(e),name:a,displayName:a},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],timeout:6e4,attestation:"none",authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"preferred"}},n=await navigator.credentials.create({publicKey:p});if(!n)return {success:!1,error:"Credential creation failed"};let d=C(n.rawId);return s.set(d,{type:"public-key",id:n.rawId}),{success:!0,credentialId:d}}catch(i){return {success:false,error:i.message||"Registration failed"}}},D=async(e,t=window.location.hostname,r)=>{if(!l())return {success:false,error:"WebAuthn not supported"};try{let a=m(),i=[];if(r){let n=A(r).buffer;i.push({type:"public-key",id:n});}else s.size>0&&s.forEach(n=>{i.push(n);});let u={challenge:a.buffer,rpId:t,timeout:6e4,userVerification:"preferred",allowCredentials:i.length>0?i:void 0};return await navigator.credentials.get({publicKey:u})?{success:!0}:{success:!1,error:"Authentication failed"}}catch(a){return {success:false,error:a.message||"Authentication failed"}}},k=e=>s.get(e),x=e=>s.delete(e),j=()=>Array.from(s.keys()),K={isAvailable:l,getWebAuthnSupport:v,isSensorAvailable:w,register:P,authenticate:D,getCredential:k,deleteCredential:x,listCredentials:j};dphelper?.setDescription(g,K);var L=dphelper.biometric;
|
|
2
2
|
exports.biometric=L;
|
package/modules/biometric.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var b={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var m={version:"4.
|
|
1
|
+
var b={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var m={version:"4.7.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...b},configurable:true,writable:true},version:{value:m.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var o=dphelper;Object.defineProperty(o,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(o,"setDescription",{value:(e,t)=>{Object.defineProperties(o,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(o[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),o.setProps(o,e,{writable:false,configurable:false,enumerable:false}),o._list.scripts.push(e);}});var v={name:"biometric",active:true,subCommand:[{name:"isAvailable",version:"0.0.1",example:"dphelper.biometric.isAvailable()",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Check if WebAuthn/biometric authentication is available",env:"client",subCommand:[]},{name:"register",version:"0.0.1",example:"dphelper.biometric.register('user123', 'https://example.com')",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Register a new credential for biometric authentication",env:"client",subCommand:[]},{name:"authenticate",version:"0.0.1",example:"dphelper.biometric.authenticate('user123', 'https://example.com')",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Authenticate using stored biometric credential",env:"client",subCommand:[]},{name:"getCredential",version:"0.0.1",example:"dphelper.biometric.getCredential(credentialId)",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Get a stored credential by ID",env:"client",subCommand:[]},{name:"deleteCredential",version:"0.0.1",example:"dphelper.biometric.deleteCredential(credentialId)",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Delete a stored credential",env:"client",subCommand:[]},{name:"listCredentials",version:"0.0.1",example:"dphelper.biometric.listCredentials()",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"List all stored credentials",env:"client",subCommand:[]},{name:"isSensorAvailable",version:"0.0.1",example:"dphelper.biometric.isSensorAvailable('fingerprint')",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Check if specific biometric sensor is available",env:"client",subCommand:[]},{name:"getWebAuthnSupport",version:"0.0.1",example:"dphelper.biometric.getWebAuthnSupport()",author:"Dario Passariello",creationDate:"20260313",lastMod:"20260313",type:"function",active:true,description:"Get detailed WebAuthn support information",env:"client",subCommand:[]}]},l=()=>!!navigator.credentials&&!!navigator.credentials.create,w=()=>{if(!l())return {supported:false,platformAuthenticator:false,hybridTransport:false,uvToken:false};let t=navigator.userAgent,r=t.includes("Windows"),a=t.includes("Mac"),i=t.includes("Linux");return {supported:true,platformAuthenticator:r||a||i,hybridTransport:false,uvToken:false}},C=async e=>{if(!l())return false;if(typeof PublicKeyCredential<"u")try{if(e==="fingerprint")return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();if(e==="face")return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();if(e==="iris")return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return false}return false},h=(e=32)=>{let t=new Uint8Array(e);return crypto.getRandomValues(t),t},A=e=>{let t=e instanceof Uint8Array?e:new Uint8Array(e),r="";return t.forEach(a=>r+=String.fromCharCode(a)),btoa(r)},P=e=>{let t=atob(e),r=new Uint8Array(t.length);for(let a=0;a<t.length;a++)r[a]=t.charCodeAt(a);return r},s=new Map,D=async(e,t=window.location.hostname,r=window.location.hostname,a=e)=>{if(!l())return {success:false,error:"WebAuthn not supported"};try{let d={challenge:h().buffer,rp:{id:t,name:r},user:{id:new TextEncoder().encode(e),name:a,displayName:a},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],timeout:6e4,attestation:"none",authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"preferred"}},n=await navigator.credentials.create({publicKey:d});if(!n)return {success:!1,error:"Credential creation failed"};let f=A(n.rawId);return s.set(f,{type:"public-key",id:n.rawId}),{success:!0,credentialId:f}}catch(i){return {success:false,error:i.message||"Registration failed"}}},k=async(e,t=window.location.hostname,r)=>{if(!l())return {success:false,error:"WebAuthn not supported"};try{let a=h(),i=[];if(r){let n=P(r).buffer;i.push({type:"public-key",id:n});}else s.size>0&&s.forEach(n=>{i.push(n);});let p={challenge:a.buffer,rpId:t,timeout:6e4,userVerification:"preferred",allowCredentials:i.length>0?i:void 0};return await navigator.credentials.get({publicKey:p})?{success:!0}:{success:!1,error:"Authentication failed"}}catch(a){return {success:false,error:a.message||"Authentication failed"}}},x=e=>s.get(e),j=e=>s.delete(e),K=()=>Array.from(s.keys()),M={isAvailable:l,getWebAuthnSupport:w,isSensorAvailable:C,register:D,authenticate:k,getCredential:x,deleteCredential:j,listCredentials:K};dphelper?.setDescription(v,M);var E=dphelper.biometric;
|
|
2
2
|
export{E as biometric};
|