@lionrapid/core 0.1.3-beta.0 → 0.1.4-beta.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/dist/browser/editor/editor-api.d.ts +9 -0
- package/dist/browser/editor/editor-api.d.ts.map +1 -1
- package/dist/browser/editor/editor-api.js +29 -0
- package/dist/browser/editor/editor-api.js.map +1 -1
- package/dist/browser/editor/editor-init.js +1 -1
- package/dist/browser/editor/editor-init.js.map +1 -1
- package/dist/browser/editor/editor-styles.d.ts +1 -1
- package/dist/browser/editor/editor-styles.d.ts.map +1 -1
- package/dist/browser/editor/editor-styles.js +52 -0
- package/dist/browser/editor/editor-styles.js.map +1 -1
- package/dist/browser/editor/pii-redactor.d.ts +39 -0
- package/dist/browser/editor/pii-redactor.d.ts.map +1 -0
- package/dist/browser/editor/pii-redactor.js +149 -0
- package/dist/browser/editor/pii-redactor.js.map +1 -0
- package/dist/browser/editor/sidebar.d.ts +17 -1
- package/dist/browser/editor/sidebar.d.ts.map +1 -1
- package/dist/browser/editor/sidebar.js +77 -1
- package/dist/browser/editor/sidebar.js.map +1 -1
- package/dist/browser/editor/snapshot-capture.d.ts +4 -4
- package/dist/browser/editor/snapshot-capture.js +11 -25
- package/dist/browser/editor/snapshot-capture.js.map +1 -1
- package/dist/browser/lionrapid.editor.js +234 -23
- package/dist/browser/lionrapid.editor.js.map +4 -4
- package/dist/browser/lionrapid.editor.min.js +55 -3
- package/dist/browser/lionrapid.editor.min.js.map +4 -4
- package/package.json +1 -1
|
@@ -22,12 +22,14 @@ export class Sidebar {
|
|
|
22
22
|
onProgressUpdate = null;
|
|
23
23
|
lastFetchTime = 0;
|
|
24
24
|
lastFlushTime = 0;
|
|
25
|
-
|
|
25
|
+
userRole;
|
|
26
|
+
constructor(shadowRoot, api, locale, namespace, defaultLocale, onBlockClick, userRole = '') {
|
|
26
27
|
this.api = api;
|
|
27
28
|
this.locale = locale;
|
|
28
29
|
this.namespace = namespace;
|
|
29
30
|
this.defaultLocale = defaultLocale;
|
|
30
31
|
this.onBlockClick = onBlockClick;
|
|
32
|
+
this.userRole = userRole;
|
|
31
33
|
this.blockExtractor = new BlockExtractor();
|
|
32
34
|
this.el = document.createElement('div');
|
|
33
35
|
this.el.className = 'lr-sidebar';
|
|
@@ -205,6 +207,12 @@ export class Sidebar {
|
|
|
205
207
|
}
|
|
206
208
|
return previewEl;
|
|
207
209
|
});
|
|
210
|
+
// Workflow actions (Phase 3) — only on target locales (not source).
|
|
211
|
+
// Visibility per role + state is enforced server-side; we hide buttons
|
|
212
|
+
// the server would refuse so users don't see dead ends.
|
|
213
|
+
if (!isSourceLocale) {
|
|
214
|
+
this.renderWorkflowActions(key, status);
|
|
215
|
+
}
|
|
208
216
|
// Live preview on input (only if not locked)
|
|
209
217
|
if (!isLocked) {
|
|
210
218
|
textarea.addEventListener('input', () => {
|
|
@@ -230,6 +238,74 @@ export class Sidebar {
|
|
|
230
238
|
setTimeout(() => textarea.focus(), 100);
|
|
231
239
|
}
|
|
232
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Render Confirm/Reject/Mark-Ready/Unmark-Ready buttons under the preview.
|
|
243
|
+
* Visibility:
|
|
244
|
+
* - Confirm: shown when row is not locked and not already ready
|
|
245
|
+
* - Reject: shown when row is not locked and not already ready (server
|
|
246
|
+
* returns 400 if stage_index is already 0)
|
|
247
|
+
* - Unconfirm: shown when isConfirmed
|
|
248
|
+
* - Mark Ready: PM/admin only, hidden when already ready
|
|
249
|
+
* - Unmark Ready: PM/admin only, only when ready
|
|
250
|
+
* After any successful click we re-fetch status for this key so the UI
|
|
251
|
+
* reflects the new state and the unaffected buttons hide/show themselves.
|
|
252
|
+
*/
|
|
253
|
+
renderWorkflowActions(key, status) {
|
|
254
|
+
const isPM = this.userRole === 'project_manager' || this.userRole === 'admin';
|
|
255
|
+
const isReady = !!status?.isReady;
|
|
256
|
+
const isLocked = !!status?.isLocked;
|
|
257
|
+
const isConfirmed = !!status?.isConfirmed;
|
|
258
|
+
const composite = `${this.locale}:${this.namespace}:${key}`;
|
|
259
|
+
const wrap = document.createElement('div');
|
|
260
|
+
wrap.className = 'lr-workflow-actions';
|
|
261
|
+
const addBtn = (label, action, variant = 'secondary') => {
|
|
262
|
+
const btn = document.createElement('button');
|
|
263
|
+
btn.className = `lr-wf-btn lr-wf-${variant}`;
|
|
264
|
+
btn.textContent = label;
|
|
265
|
+
btn.addEventListener('click', async () => {
|
|
266
|
+
btn.disabled = true;
|
|
267
|
+
const result = await this.api.transitionTarget(composite, action);
|
|
268
|
+
btn.disabled = false;
|
|
269
|
+
if (result) {
|
|
270
|
+
// Refresh status for this key so the buttons recompute
|
|
271
|
+
await this.refreshStatusForKey(key);
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
wrap.appendChild(btn);
|
|
275
|
+
};
|
|
276
|
+
// Translator-side actions (subject to can_user_edit_row server-side)
|
|
277
|
+
if (!isLocked && !isReady) {
|
|
278
|
+
addBtn('Confirm', 'confirm', 'primary');
|
|
279
|
+
addBtn('Reject', 'reject', 'danger');
|
|
280
|
+
}
|
|
281
|
+
if (isConfirmed && !isLocked && !isReady) {
|
|
282
|
+
addBtn('Unconfirm', 'unconfirm');
|
|
283
|
+
}
|
|
284
|
+
// PM-only actions
|
|
285
|
+
if (isPM) {
|
|
286
|
+
if (!isReady) {
|
|
287
|
+
addBtn('Mark Ready', 'mark-ready', 'primary');
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
addBtn('Unmark Ready', 'unmark-ready', 'danger');
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (wrap.children.length > 0) {
|
|
294
|
+
this.bodyEl.appendChild(wrap);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** Re-fetch status for one key and re-render the current view. */
|
|
298
|
+
async refreshStatusForKey(key) {
|
|
299
|
+
const fresh = await this.api.fetchStatus([key], this.locale, this.namespace);
|
|
300
|
+
for (const [k, s] of Object.entries(fresh)) {
|
|
301
|
+
this.statusMap.set(k, s);
|
|
302
|
+
}
|
|
303
|
+
if (this.current) {
|
|
304
|
+
// Re-render the current key to pick up new status
|
|
305
|
+
this.renderContent(this.current);
|
|
306
|
+
}
|
|
307
|
+
this.emitProgress();
|
|
308
|
+
}
|
|
233
309
|
addField(label, contentFn) {
|
|
234
310
|
const field = document.createElement('div');
|
|
235
311
|
field.className = 'lr-field';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/browser/editor/sidebar.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/browser/editor/sidebar.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
* viewer mode (?__lr_snapshot={uuid}) where Inspector + Sidebar boot against
|
|
8
8
|
* the snapshot root instead of document.body.
|
|
9
9
|
*
|
|
10
|
-
* Redaction strategy
|
|
10
|
+
* Redaction strategy:
|
|
11
11
|
* - Remove: <script>, <noscript>, <iframe>, <embed>, <object>, editor host
|
|
12
12
|
* - Clear all form <input>, <textarea>, <select> values
|
|
13
13
|
* - Replace [data-pii] / [data-sensitive] text with [REDACTED]
|
|
14
14
|
* - Strip all inline event handlers (onclick, onmouseover, etc.)
|
|
15
|
-
* -
|
|
15
|
+
* - Inline PII redaction in text nodes (email / phone / URL / SSN /
|
|
16
|
+
* credit card / IPv4) — see pii-redactor.ts. `[data-no-redact]`
|
|
17
|
+
* subtrees, `<code>`, and `<pre>` are skipped.
|
|
16
18
|
* - Strip CSRF/CSP meta tags and auth tokens from link/script URLs
|
|
17
|
-
*
|
|
18
|
-
* Fine-grained text-node redaction (mid-sentence PII) is deferred to Phase 4.
|
|
19
19
|
*/
|
|
20
20
|
export interface SnapshotTextEntry {
|
|
21
21
|
/** auto_xxxxxxxxxxxx — 12-char md5 hash, generated BEFORE redaction so it matches the live page */
|
|
@@ -7,18 +7,18 @@
|
|
|
7
7
|
* viewer mode (?__lr_snapshot={uuid}) where Inspector + Sidebar boot against
|
|
8
8
|
* the snapshot root instead of document.body.
|
|
9
9
|
*
|
|
10
|
-
* Redaction strategy
|
|
10
|
+
* Redaction strategy:
|
|
11
11
|
* - Remove: <script>, <noscript>, <iframe>, <embed>, <object>, editor host
|
|
12
12
|
* - Clear all form <input>, <textarea>, <select> values
|
|
13
13
|
* - Replace [data-pii] / [data-sensitive] text with [REDACTED]
|
|
14
14
|
* - Strip all inline event handlers (onclick, onmouseover, etc.)
|
|
15
|
-
* -
|
|
15
|
+
* - Inline PII redaction in text nodes (email / phone / URL / SSN /
|
|
16
|
+
* credit card / IPv4) — see pii-redactor.ts. `[data-no-redact]`
|
|
17
|
+
* subtrees, `<code>`, and `<pre>` are skipped.
|
|
16
18
|
* - Strip CSRF/CSP meta tags and auth tokens from link/script URLs
|
|
17
|
-
*
|
|
18
|
-
* Fine-grained text-node redaction (mid-sentence PII) is deferred to Phase 4.
|
|
19
19
|
*/
|
|
20
20
|
import { BlockExtractor } from '../block-extractor.js';
|
|
21
|
-
import {
|
|
21
|
+
import { redactTextNodes } from './pii-redactor.js';
|
|
22
22
|
const REDACTED = '[REDACTED]';
|
|
23
23
|
/**
|
|
24
24
|
* Capture the current page as a redacted snapshot.
|
|
@@ -164,28 +164,14 @@ function stripInlineEventHandlers(root) {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
|
-
* Walk text nodes and replace
|
|
168
|
-
*
|
|
169
|
-
*
|
|
167
|
+
* Walk text nodes and replace PII matches inline. Phase 4: matches are
|
|
168
|
+
* replaced where they appear ("Contact foo@bar.com today" →
|
|
169
|
+
* "Contact [REDACTED] today") instead of redacting the whole text node.
|
|
170
|
+
* See pii-redactor.ts for pattern details and the data-no-redact escape
|
|
171
|
+
* hatch.
|
|
170
172
|
*/
|
|
171
173
|
function redactTextNodePII(root) {
|
|
172
|
-
|
|
173
|
-
const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
|
|
174
|
-
const nodesToRedact = [];
|
|
175
|
-
let node = walker.nextNode();
|
|
176
|
-
while (node) {
|
|
177
|
-
const trimmed = (node.nodeValue || '').trim();
|
|
178
|
-
// Require at least 5 chars to avoid false positives on things like page
|
|
179
|
-
// numbers ("1", "23"). ExcludeFilter with minTextLength=1 only flags on
|
|
180
|
-
// PII pattern match, not length, so length guard lives here.
|
|
181
|
-
if (trimmed.length >= 5 && filter.shouldExclude(trimmed)) {
|
|
182
|
-
nodesToRedact.push(node);
|
|
183
|
-
}
|
|
184
|
-
node = walker.nextNode();
|
|
185
|
-
}
|
|
186
|
-
for (const textNode of nodesToRedact) {
|
|
187
|
-
textNode.nodeValue = REDACTED;
|
|
188
|
-
}
|
|
174
|
+
redactTextNodes(root);
|
|
189
175
|
}
|
|
190
176
|
/**
|
|
191
177
|
* Strip meta tags and link/script URLs that commonly carry auth material.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-capture.js","sourceRoot":"","sources":["../../../src/browser/editor/snapshot-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"snapshot-capture.js","sourceRoot":"","sources":["../../../src/browser/editor/snapshot-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -174,6 +174,58 @@ var LionRapidEditor = (() => {
|
|
|
174
174
|
cursor: not-allowed;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
+
/* Workflow action buttons (Phase 3) */
|
|
178
|
+
.lr-workflow-actions {
|
|
179
|
+
display: flex;
|
|
180
|
+
flex-wrap: wrap;
|
|
181
|
+
gap: 6px;
|
|
182
|
+
margin: 12px 0 4px;
|
|
183
|
+
padding: 8px 0 0;
|
|
184
|
+
border-top: 1px solid #e5e7eb;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.lr-wf-btn {
|
|
188
|
+
font-size: 12px;
|
|
189
|
+
font-weight: 500;
|
|
190
|
+
padding: 5px 10px;
|
|
191
|
+
border-radius: 4px;
|
|
192
|
+
border: 1px solid transparent;
|
|
193
|
+
cursor: pointer;
|
|
194
|
+
transition: background-color 0.1s;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.lr-wf-btn:disabled {
|
|
198
|
+
opacity: 0.5;
|
|
199
|
+
cursor: not-allowed;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.lr-wf-primary {
|
|
203
|
+
background: #2563eb;
|
|
204
|
+
color: white;
|
|
205
|
+
border-color: #2563eb;
|
|
206
|
+
}
|
|
207
|
+
.lr-wf-primary:hover:not(:disabled) {
|
|
208
|
+
background: #1d4ed8;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.lr-wf-secondary {
|
|
212
|
+
background: white;
|
|
213
|
+
color: #374151;
|
|
214
|
+
border-color: #d1d5db;
|
|
215
|
+
}
|
|
216
|
+
.lr-wf-secondary:hover:not(:disabled) {
|
|
217
|
+
background: #f3f4f6;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.lr-wf-danger {
|
|
221
|
+
background: white;
|
|
222
|
+
color: #b91c1c;
|
|
223
|
+
border-color: #fca5a5;
|
|
224
|
+
}
|
|
225
|
+
.lr-wf-danger:hover:not(:disabled) {
|
|
226
|
+
background: #fef2f2;
|
|
227
|
+
}
|
|
228
|
+
|
|
177
229
|
/* Snapshot viewer sandbox wrapper */
|
|
178
230
|
#__lr_snapshot_root {
|
|
179
231
|
isolation: isolate;
|
|
@@ -1274,7 +1326,7 @@ var LionRapidEditor = (() => {
|
|
|
1274
1326
|
// src/browser/editor/sidebar.ts
|
|
1275
1327
|
var htmlSerializer2 = new HTMLSerializer();
|
|
1276
1328
|
var Sidebar = class {
|
|
1277
|
-
constructor(shadowRoot, api, locale, namespace, defaultLocale, onBlockClick) {
|
|
1329
|
+
constructor(shadowRoot, api, locale, namespace, defaultLocale, onBlockClick, userRole = "") {
|
|
1278
1330
|
__publicField(this, "el");
|
|
1279
1331
|
__publicField(this, "bodyEl");
|
|
1280
1332
|
__publicField(this, "statusEl");
|
|
@@ -1290,11 +1342,13 @@ var LionRapidEditor = (() => {
|
|
|
1290
1342
|
__publicField(this, "onProgressUpdate", null);
|
|
1291
1343
|
__publicField(this, "lastFetchTime", 0);
|
|
1292
1344
|
__publicField(this, "lastFlushTime", 0);
|
|
1345
|
+
__publicField(this, "userRole");
|
|
1293
1346
|
this.api = api;
|
|
1294
1347
|
this.locale = locale;
|
|
1295
1348
|
this.namespace = namespace;
|
|
1296
1349
|
this.defaultLocale = defaultLocale;
|
|
1297
1350
|
this.onBlockClick = onBlockClick;
|
|
1351
|
+
this.userRole = userRole;
|
|
1298
1352
|
this.blockExtractor = new BlockExtractor();
|
|
1299
1353
|
this.el = document.createElement("div");
|
|
1300
1354
|
this.el.className = "lr-sidebar";
|
|
@@ -1448,6 +1502,9 @@ var LionRapidEditor = (() => {
|
|
|
1448
1502
|
}
|
|
1449
1503
|
return previewEl;
|
|
1450
1504
|
});
|
|
1505
|
+
if (!isSourceLocale) {
|
|
1506
|
+
this.renderWorkflowActions(key, status);
|
|
1507
|
+
}
|
|
1451
1508
|
if (!isLocked) {
|
|
1452
1509
|
textarea.addEventListener("input", () => {
|
|
1453
1510
|
const text = textarea.value;
|
|
@@ -1470,6 +1527,69 @@ var LionRapidEditor = (() => {
|
|
|
1470
1527
|
setTimeout(() => textarea.focus(), 100);
|
|
1471
1528
|
}
|
|
1472
1529
|
}
|
|
1530
|
+
/**
|
|
1531
|
+
* Render Confirm/Reject/Mark-Ready/Unmark-Ready buttons under the preview.
|
|
1532
|
+
* Visibility:
|
|
1533
|
+
* - Confirm: shown when row is not locked and not already ready
|
|
1534
|
+
* - Reject: shown when row is not locked and not already ready (server
|
|
1535
|
+
* returns 400 if stage_index is already 0)
|
|
1536
|
+
* - Unconfirm: shown when isConfirmed
|
|
1537
|
+
* - Mark Ready: PM/admin only, hidden when already ready
|
|
1538
|
+
* - Unmark Ready: PM/admin only, only when ready
|
|
1539
|
+
* After any successful click we re-fetch status for this key so the UI
|
|
1540
|
+
* reflects the new state and the unaffected buttons hide/show themselves.
|
|
1541
|
+
*/
|
|
1542
|
+
renderWorkflowActions(key, status) {
|
|
1543
|
+
const isPM = this.userRole === "project_manager" || this.userRole === "admin";
|
|
1544
|
+
const isReady = !!status?.isReady;
|
|
1545
|
+
const isLocked = !!status?.isLocked;
|
|
1546
|
+
const isConfirmed = !!status?.isConfirmed;
|
|
1547
|
+
const composite = `${this.locale}:${this.namespace}:${key}`;
|
|
1548
|
+
const wrap = document.createElement("div");
|
|
1549
|
+
wrap.className = "lr-workflow-actions";
|
|
1550
|
+
const addBtn = (label, action, variant = "secondary") => {
|
|
1551
|
+
const btn = document.createElement("button");
|
|
1552
|
+
btn.className = `lr-wf-btn lr-wf-${variant}`;
|
|
1553
|
+
btn.textContent = label;
|
|
1554
|
+
btn.addEventListener("click", async () => {
|
|
1555
|
+
btn.disabled = true;
|
|
1556
|
+
const result = await this.api.transitionTarget(composite, action);
|
|
1557
|
+
btn.disabled = false;
|
|
1558
|
+
if (result) {
|
|
1559
|
+
await this.refreshStatusForKey(key);
|
|
1560
|
+
}
|
|
1561
|
+
});
|
|
1562
|
+
wrap.appendChild(btn);
|
|
1563
|
+
};
|
|
1564
|
+
if (!isLocked && !isReady) {
|
|
1565
|
+
addBtn("Confirm", "confirm", "primary");
|
|
1566
|
+
addBtn("Reject", "reject", "danger");
|
|
1567
|
+
}
|
|
1568
|
+
if (isConfirmed && !isLocked && !isReady) {
|
|
1569
|
+
addBtn("Unconfirm", "unconfirm");
|
|
1570
|
+
}
|
|
1571
|
+
if (isPM) {
|
|
1572
|
+
if (!isReady) {
|
|
1573
|
+
addBtn("Mark Ready", "mark-ready", "primary");
|
|
1574
|
+
} else {
|
|
1575
|
+
addBtn("Unmark Ready", "unmark-ready", "danger");
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
if (wrap.children.length > 0) {
|
|
1579
|
+
this.bodyEl.appendChild(wrap);
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
/** Re-fetch status for one key and re-render the current view. */
|
|
1583
|
+
async refreshStatusForKey(key) {
|
|
1584
|
+
const fresh = await this.api.fetchStatus([key], this.locale, this.namespace);
|
|
1585
|
+
for (const [k, s] of Object.entries(fresh)) {
|
|
1586
|
+
this.statusMap.set(k, s);
|
|
1587
|
+
}
|
|
1588
|
+
if (this.current) {
|
|
1589
|
+
this.renderContent(this.current);
|
|
1590
|
+
}
|
|
1591
|
+
this.emitProgress();
|
|
1592
|
+
}
|
|
1473
1593
|
addField(label, contentFn) {
|
|
1474
1594
|
const field = document.createElement("div");
|
|
1475
1595
|
field.className = "lr-field";
|
|
@@ -1930,10 +2050,118 @@ var LionRapidEditor = (() => {
|
|
|
1930
2050
|
return false;
|
|
1931
2051
|
}
|
|
1932
2052
|
}
|
|
2053
|
+
/**
|
|
2054
|
+
* Workflow transitions (Phase 3). Per-key endpoints on the integrations API
|
|
2055
|
+
* that mirror the dashboard's row-level transitions but are addressable by
|
|
2056
|
+
* composite editor key (locale:namespace:auto_xxx).
|
|
2057
|
+
*
|
|
2058
|
+
* Returns the parsed JSON on success, or null on failure (caller usually
|
|
2059
|
+
* shows a toast / re-fetches status).
|
|
2060
|
+
*/
|
|
2061
|
+
async transitionTarget(composite, action) {
|
|
2062
|
+
try {
|
|
2063
|
+
const response = await fetch(
|
|
2064
|
+
`${this.apiBase}/api/integrations/targets/${encodeURIComponent(composite)}/${action}`,
|
|
2065
|
+
{
|
|
2066
|
+
method: "POST",
|
|
2067
|
+
headers: { "Authorization": `Bearer ${this.sessionToken}` }
|
|
2068
|
+
}
|
|
2069
|
+
);
|
|
2070
|
+
if (response.status === 401) {
|
|
2071
|
+
this.handleSessionExpired();
|
|
2072
|
+
return null;
|
|
2073
|
+
}
|
|
2074
|
+
if (!response.ok) {
|
|
2075
|
+
this.onStatus("error", `${action} failed: HTTP ${response.status}`);
|
|
2076
|
+
return null;
|
|
2077
|
+
}
|
|
2078
|
+
return await response.json();
|
|
2079
|
+
} catch (err) {
|
|
2080
|
+
this.onStatus("error", `${action} failed: ${err.message}`);
|
|
2081
|
+
return null;
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
1933
2084
|
};
|
|
1934
2085
|
|
|
1935
|
-
// src/browser/editor/
|
|
2086
|
+
// src/browser/editor/pii-redactor.ts
|
|
1936
2087
|
var REDACTED = "[REDACTED]";
|
|
2088
|
+
var EMAIL_RE = /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/gi;
|
|
2089
|
+
var PHONE_RE = /(?:\+\d{1,3}[\s.-]?)?(?:\(\d{3}\)|\d{3})[\s.-]\d{3}[\s.-]\d{4}/g;
|
|
2090
|
+
var SSN_RE = /\b\d{3}[\s-]\d{2}[\s-]\d{4}\b/g;
|
|
2091
|
+
var IPV4_RE = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g;
|
|
2092
|
+
var URL_RE = /\b(?:https?:\/\/|www\.)[^\s<>"']+/gi;
|
|
2093
|
+
var CC_CANDIDATE_RE = /\b\d(?:[ -]?\d){12,18}\b/g;
|
|
2094
|
+
function luhnValid(digits) {
|
|
2095
|
+
if (digits.length < 13 || digits.length > 19) return false;
|
|
2096
|
+
let sum = 0;
|
|
2097
|
+
let alt = false;
|
|
2098
|
+
for (let i = digits.length - 1; i >= 0; i--) {
|
|
2099
|
+
let n = digits.charCodeAt(i) - 48;
|
|
2100
|
+
if (n < 0 || n > 9) return false;
|
|
2101
|
+
if (alt) {
|
|
2102
|
+
n *= 2;
|
|
2103
|
+
if (n > 9) n -= 9;
|
|
2104
|
+
}
|
|
2105
|
+
sum += n;
|
|
2106
|
+
alt = !alt;
|
|
2107
|
+
}
|
|
2108
|
+
return sum % 10 === 0;
|
|
2109
|
+
}
|
|
2110
|
+
function ipv4Valid(match) {
|
|
2111
|
+
const parts = match.split(".");
|
|
2112
|
+
if (parts.length !== 4) return false;
|
|
2113
|
+
for (const p of parts) {
|
|
2114
|
+
const n = Number(p);
|
|
2115
|
+
if (!Number.isInteger(n) || n < 0 || n > 255) return false;
|
|
2116
|
+
}
|
|
2117
|
+
return true;
|
|
2118
|
+
}
|
|
2119
|
+
function redactString(text) {
|
|
2120
|
+
if (!text) return text;
|
|
2121
|
+
let out = text;
|
|
2122
|
+
out = out.replace(URL_RE, REDACTED);
|
|
2123
|
+
out = out.replace(EMAIL_RE, REDACTED);
|
|
2124
|
+
out = out.replace(PHONE_RE, REDACTED);
|
|
2125
|
+
out = out.replace(SSN_RE, REDACTED);
|
|
2126
|
+
out = out.replace(IPV4_RE, (m) => ipv4Valid(m) ? REDACTED : m);
|
|
2127
|
+
out = out.replace(CC_CANDIDATE_RE, (m) => {
|
|
2128
|
+
const digits = m.replace(/[\s-]/g, "");
|
|
2129
|
+
return luhnValid(digits) ? REDACTED : m;
|
|
2130
|
+
});
|
|
2131
|
+
return out;
|
|
2132
|
+
}
|
|
2133
|
+
var SKIP_TAGS3 = /* @__PURE__ */ new Set(["CODE", "PRE", "STYLE", "TEXTAREA"]);
|
|
2134
|
+
function redactTextNodes(root) {
|
|
2135
|
+
const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
|
|
2136
|
+
const toUpdate = [];
|
|
2137
|
+
let node = walker.nextNode();
|
|
2138
|
+
while (node) {
|
|
2139
|
+
if (!isInSkippedSubtree(node)) {
|
|
2140
|
+
const original = node.nodeValue || "";
|
|
2141
|
+
const replaced = redactString(original);
|
|
2142
|
+
if (replaced !== original) {
|
|
2143
|
+
toUpdate.push({ node, value: replaced });
|
|
2144
|
+
}
|
|
2145
|
+
}
|
|
2146
|
+
node = walker.nextNode();
|
|
2147
|
+
}
|
|
2148
|
+
for (const { node: textNode, value } of toUpdate) {
|
|
2149
|
+
textNode.nodeValue = value;
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
function isInSkippedSubtree(node) {
|
|
2153
|
+
let cur = node.parentNode;
|
|
2154
|
+
while (cur && cur.nodeType === Node.ELEMENT_NODE) {
|
|
2155
|
+
const el = cur;
|
|
2156
|
+
if (SKIP_TAGS3.has(el.tagName)) return true;
|
|
2157
|
+
if (el.hasAttribute("data-no-redact")) return true;
|
|
2158
|
+
cur = el.parentNode;
|
|
2159
|
+
}
|
|
2160
|
+
return false;
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
// src/browser/editor/snapshot-capture.ts
|
|
2164
|
+
var REDACTED2 = "[REDACTED]";
|
|
1937
2165
|
function captureSnapshot() {
|
|
1938
2166
|
const clone = document.documentElement.cloneNode(true);
|
|
1939
2167
|
const textEntries = extractTextEntries(clone);
|
|
@@ -2001,7 +2229,7 @@ var LionRapidEditor = (() => {
|
|
|
2001
2229
|
const sensitive = root.querySelectorAll("[data-pii], [data-sensitive]");
|
|
2002
2230
|
for (let i = 0; i < sensitive.length; i++) {
|
|
2003
2231
|
const el = sensitive[i];
|
|
2004
|
-
el.textContent =
|
|
2232
|
+
el.textContent = REDACTED2;
|
|
2005
2233
|
const attrs = Array.from(el.attributes);
|
|
2006
2234
|
for (const attr of attrs) {
|
|
2007
2235
|
if (attr.name !== "class" && attr.name !== "id" && attr.name !== "style") {
|
|
@@ -2024,24 +2252,7 @@ var LionRapidEditor = (() => {
|
|
|
2024
2252
|
}
|
|
2025
2253
|
}
|
|
2026
2254
|
function redactTextNodePII(root) {
|
|
2027
|
-
|
|
2028
|
-
{ emails: true, urls: true, numbers: true, phones: true },
|
|
2029
|
-
1
|
|
2030
|
-
// minTextLength=1 so single-char filler still passes through
|
|
2031
|
-
);
|
|
2032
|
-
const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
|
|
2033
|
-
const nodesToRedact = [];
|
|
2034
|
-
let node = walker.nextNode();
|
|
2035
|
-
while (node) {
|
|
2036
|
-
const trimmed = (node.nodeValue || "").trim();
|
|
2037
|
-
if (trimmed.length >= 5 && filter.shouldExclude(trimmed)) {
|
|
2038
|
-
nodesToRedact.push(node);
|
|
2039
|
-
}
|
|
2040
|
-
node = walker.nextNode();
|
|
2041
|
-
}
|
|
2042
|
-
for (const textNode of nodesToRedact) {
|
|
2043
|
-
textNode.nodeValue = REDACTED;
|
|
2044
|
-
}
|
|
2255
|
+
redactTextNodes(root);
|
|
2045
2256
|
}
|
|
2046
2257
|
function stripSensitiveMetaAndHeaders(root) {
|
|
2047
2258
|
const sensitiveMetas = root.querySelectorAll(
|
|
@@ -2062,7 +2273,7 @@ var LionRapidEditor = (() => {
|
|
|
2062
2273
|
let changed = false;
|
|
2063
2274
|
for (const param of TOKEN_PARAMS) {
|
|
2064
2275
|
if (url.searchParams.has(param)) {
|
|
2065
|
-
url.searchParams.set(param,
|
|
2276
|
+
url.searchParams.set(param, REDACTED2);
|
|
2066
2277
|
changed = true;
|
|
2067
2278
|
}
|
|
2068
2279
|
}
|
|
@@ -2306,7 +2517,7 @@ var LionRapidEditor = (() => {
|
|
|
2306
2517
|
sidebar.open(resolved);
|
|
2307
2518
|
inspector.clearHighlight();
|
|
2308
2519
|
};
|
|
2309
|
-
const sidebar = new Sidebar(shadow, api, currentLocale, namespace, defaultLocale, handleBlockSelect);
|
|
2520
|
+
const sidebar = new Sidebar(shadow, api, currentLocale, namespace, defaultLocale, handleBlockSelect, role);
|
|
2310
2521
|
const inspector = new Inspector(shadow, handleBlockSelect, inspectorRoot, snapshotKeyMap);
|
|
2311
2522
|
const toolbar = new Toolbar(
|
|
2312
2523
|
shadow,
|