@lionrapid/core 0.1.2 → 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 +61 -0
- package/dist/browser/editor/editor-api.d.ts.map +1 -1
- package/dist/browser/editor/editor-api.js +165 -0
- package/dist/browser/editor/editor-api.js.map +1 -1
- package/dist/browser/editor/editor-init.js +119 -7
- 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 +81 -0
- package/dist/browser/editor/editor-styles.js.map +1 -1
- package/dist/browser/editor/inspector.d.ts +5 -1
- package/dist/browser/editor/inspector.d.ts.map +1 -1
- package/dist/browser/editor/inspector.js +32 -1
- package/dist/browser/editor/inspector.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 +57 -0
- package/dist/browser/editor/snapshot-capture.d.ts.map +1 -0
- package/dist/browser/editor/snapshot-capture.js +235 -0
- package/dist/browser/editor/snapshot-capture.js.map +1 -0
- package/dist/browser/editor/snapshot-viewer.d.ts +35 -0
- package/dist/browser/editor/snapshot-viewer.d.ts.map +1 -0
- package/dist/browser/editor/snapshot-viewer.js +90 -0
- package/dist/browser/editor/snapshot-viewer.js.map +1 -0
- package/dist/browser/editor/toolbar.d.ts +7 -1
- package/dist/browser/editor/toolbar.d.ts.map +1 -1
- package/dist/browser/editor/toolbar.js +26 -1
- package/dist/browser/editor/toolbar.js.map +1 -1
- package/dist/browser/lionrapid.editor.js +707 -8
- package/dist/browser/lionrapid.editor.js.map +4 -4
- package/dist/browser/lionrapid.editor.min.js +84 -2
- package/dist/browser/lionrapid.editor.min.js.map +4 -4
- package/package.json +1 -1
|
@@ -150,6 +150,87 @@ export const EDITOR_CSS = `
|
|
|
150
150
|
background: rgba(255,255,255,0.1);
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
.lr-fab-snapshot {
|
|
154
|
+
background: #2d7f7f;
|
|
155
|
+
border: 1px solid #2d7f7f;
|
|
156
|
+
color: #fff;
|
|
157
|
+
padding: 4px 10px;
|
|
158
|
+
border-radius: 4px;
|
|
159
|
+
cursor: pointer;
|
|
160
|
+
font-size: 13px;
|
|
161
|
+
font-weight: 600;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.lr-fab-snapshot:hover {
|
|
165
|
+
background: #3a9999;
|
|
166
|
+
border-color: #3a9999;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.lr-fab-snapshot:disabled {
|
|
170
|
+
opacity: 0.5;
|
|
171
|
+
cursor: not-allowed;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* Workflow action buttons (Phase 3) */
|
|
175
|
+
.lr-workflow-actions {
|
|
176
|
+
display: flex;
|
|
177
|
+
flex-wrap: wrap;
|
|
178
|
+
gap: 6px;
|
|
179
|
+
margin: 12px 0 4px;
|
|
180
|
+
padding: 8px 0 0;
|
|
181
|
+
border-top: 1px solid #e5e7eb;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.lr-wf-btn {
|
|
185
|
+
font-size: 12px;
|
|
186
|
+
font-weight: 500;
|
|
187
|
+
padding: 5px 10px;
|
|
188
|
+
border-radius: 4px;
|
|
189
|
+
border: 1px solid transparent;
|
|
190
|
+
cursor: pointer;
|
|
191
|
+
transition: background-color 0.1s;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.lr-wf-btn:disabled {
|
|
195
|
+
opacity: 0.5;
|
|
196
|
+
cursor: not-allowed;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.lr-wf-primary {
|
|
200
|
+
background: #2563eb;
|
|
201
|
+
color: white;
|
|
202
|
+
border-color: #2563eb;
|
|
203
|
+
}
|
|
204
|
+
.lr-wf-primary:hover:not(:disabled) {
|
|
205
|
+
background: #1d4ed8;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.lr-wf-secondary {
|
|
209
|
+
background: white;
|
|
210
|
+
color: #374151;
|
|
211
|
+
border-color: #d1d5db;
|
|
212
|
+
}
|
|
213
|
+
.lr-wf-secondary:hover:not(:disabled) {
|
|
214
|
+
background: #f3f4f6;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.lr-wf-danger {
|
|
218
|
+
background: white;
|
|
219
|
+
color: #b91c1c;
|
|
220
|
+
border-color: #fca5a5;
|
|
221
|
+
}
|
|
222
|
+
.lr-wf-danger:hover:not(:disabled) {
|
|
223
|
+
background: #fef2f2;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* Snapshot viewer sandbox wrapper */
|
|
227
|
+
#__lr_snapshot_root {
|
|
228
|
+
isolation: isolate;
|
|
229
|
+
position: relative;
|
|
230
|
+
width: 100%;
|
|
231
|
+
min-height: 100vh;
|
|
232
|
+
}
|
|
233
|
+
|
|
153
234
|
/* ── Overlay ── */
|
|
154
235
|
.lr-overlay {
|
|
155
236
|
position: fixed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-styles.js","sourceRoot":"","sources":["../../../src/browser/editor/editor-styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG
|
|
1
|
+
{"version":3,"file":"editor-styles.js","sourceRoot":"","sources":["../../../src/browser/editor/editor-styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ezB,CAAC"}
|
|
@@ -10,7 +10,11 @@ export declare class Inspector {
|
|
|
10
10
|
private onSelect;
|
|
11
11
|
private rafId;
|
|
12
12
|
private active;
|
|
13
|
-
|
|
13
|
+
private rootElement;
|
|
14
|
+
/** When set, clicks resolve keys from this map (snapshot viewer mode)
|
|
15
|
+
* instead of re-computing from the (redacted) DOM text. */
|
|
16
|
+
private snapshotKeyMap;
|
|
17
|
+
constructor(shadowRoot: ShadowRoot, onSelect: OnSelectCallback, rootElement?: Element, snapshotKeyMap?: Map<number, string>);
|
|
14
18
|
destroy(): void;
|
|
15
19
|
clearHighlight(): void;
|
|
16
20
|
private handleMouseOver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../../src/browser/editor/inspector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../../src/browser/editor/inspector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;AAE/D,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAAU;IAC7B;gEAC4D;IAC5D,OAAO,CAAC,cAAc,CAA6B;gBAGjD,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,CAAC,EAAE,OAAO,EACrB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAyBtC,OAAO,IAAI,IAAI;IAUf,cAAc,IAAI,IAAI;IAKtB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,WAAW;IA2CnB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,UAAU;CAWnB"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Shows overlay on hover, resolves key on click, opens sidebar.
|
|
4
4
|
*/
|
|
5
5
|
import { resolveKey } from './key-resolver.js';
|
|
6
|
+
import { parseBlockElement } from '../markup-parser.js';
|
|
6
7
|
const SKIP_TAGS = new Set(['SCRIPT', 'STYLE', 'CODE', 'PRE', 'TEXTAREA', 'NOSCRIPT', 'SVG']);
|
|
7
8
|
const BLOCK_SELECTOR = 'p,h1,h2,h3,h4,h5,h6,li,td,th,label,button,figcaption,dt,dd,summary,caption';
|
|
8
9
|
export class Inspector {
|
|
@@ -11,8 +12,16 @@ export class Inspector {
|
|
|
11
12
|
onSelect;
|
|
12
13
|
rafId = null;
|
|
13
14
|
active = true;
|
|
14
|
-
|
|
15
|
+
rootElement;
|
|
16
|
+
/** When set, clicks resolve keys from this map (snapshot viewer mode)
|
|
17
|
+
* instead of re-computing from the (redacted) DOM text. */
|
|
18
|
+
snapshotKeyMap;
|
|
19
|
+
constructor(shadowRoot, onSelect, rootElement, snapshotKeyMap) {
|
|
15
20
|
this.onSelect = onSelect;
|
|
21
|
+
// Default scope is the live document body; snapshot viewer passes a
|
|
22
|
+
// sandbox wrapper so blocks outside it are ignored.
|
|
23
|
+
this.rootElement = rootElement || document.body;
|
|
24
|
+
this.snapshotKeyMap = snapshotKeyMap || null;
|
|
16
25
|
// Create overlay inside shadow DOM
|
|
17
26
|
this.overlay = document.createElement('div');
|
|
18
27
|
this.overlay.className = 'lr-overlay';
|
|
@@ -50,6 +59,9 @@ export class Inspector {
|
|
|
50
59
|
// Skip editor UI elements (inside shadow DOM won't trigger this, but be safe)
|
|
51
60
|
if (target.closest('#__lionrapid-editor'))
|
|
52
61
|
return;
|
|
62
|
+
// Skip anything outside the scope root (snapshot viewer mode)
|
|
63
|
+
if (!this.rootElement.contains(target))
|
|
64
|
+
return;
|
|
53
65
|
// Skip non-translatable elements
|
|
54
66
|
if (this.shouldSkip(target)) {
|
|
55
67
|
this.clearHighlight();
|
|
@@ -75,6 +87,9 @@ export class Inspector {
|
|
|
75
87
|
// Skip editor UI
|
|
76
88
|
if (target.closest('#__lionrapid-editor'))
|
|
77
89
|
return;
|
|
90
|
+
// Skip anything outside the scope root (snapshot viewer mode)
|
|
91
|
+
if (!this.rootElement.contains(target))
|
|
92
|
+
return;
|
|
78
93
|
// Find the block to resolve
|
|
79
94
|
const block = target.closest(BLOCK_SELECTOR) || target.closest('[data-lr-block]');
|
|
80
95
|
if (!block)
|
|
@@ -83,6 +98,22 @@ export class Inspector {
|
|
|
83
98
|
return;
|
|
84
99
|
e.preventDefault();
|
|
85
100
|
e.stopPropagation();
|
|
101
|
+
// Snapshot viewer mode: look up pre-computed key by data-lr-snap-idx
|
|
102
|
+
// instead of re-running resolveKey on the redacted text.
|
|
103
|
+
if (this.snapshotKeyMap) {
|
|
104
|
+
const idxAttr = block.getAttribute('data-lr-snap-idx');
|
|
105
|
+
if (idxAttr !== null) {
|
|
106
|
+
const idx = parseInt(idxAttr, 10);
|
|
107
|
+
const key = this.snapshotKeyMap.get(idx);
|
|
108
|
+
if (key) {
|
|
109
|
+
const unit = parseBlockElement(block);
|
|
110
|
+
this.onSelect({ key, unit, translatedUnit: null, element: block });
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Block has no snap-idx — not a pre-extracted block, skip
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
86
117
|
const resolved = resolveKey(block);
|
|
87
118
|
if (resolved) {
|
|
88
119
|
this.onSelect(resolved);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../../src/browser/editor/inspector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../../src/browser/editor/inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PII Redactor — fine-grained inline replacement of PII patterns in text.
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 of the snapshot feature. Phase 1 redacts whole text nodes only;
|
|
5
|
+
* this module replaces matches *inline*, preserving surrounding prose:
|
|
6
|
+
* "Contact us at foo@bar.com for help" → "Contact us at [REDACTED] for help"
|
|
7
|
+
*
|
|
8
|
+
* Two entry points:
|
|
9
|
+
* - `redactString(text)` — pure string-in/string-out, used in tests and
|
|
10
|
+
* callable independently if a non-DOM caller ever needs it.
|
|
11
|
+
* - `redactTextNodes(root)` — walks every text node under `root` and
|
|
12
|
+
* replaces PII inline, skipping subtrees marked with `data-no-redact`,
|
|
13
|
+
* and skipping `<code>` / `<pre>` (legitimate examples).
|
|
14
|
+
*
|
|
15
|
+
* Design notes:
|
|
16
|
+
* - Patterns are tuned to avoid common false positives. SSN requires
|
|
17
|
+
* dashes/spaces (so 9-digit order numbers survive); credit cards must
|
|
18
|
+
* pass a Luhn check (so 16-digit tracking IDs survive); IPs reject any
|
|
19
|
+
* octet > 255 (so version strings like 1.2.3.999 survive).
|
|
20
|
+
* - We bias toward under-redaction in ambiguous cases — better to leak
|
|
21
|
+
* a tracking number than corrupt a customer's real prose.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Replace every PII match in `text` with `[REDACTED]`. Surrounding prose
|
|
25
|
+
* is preserved.
|
|
26
|
+
*
|
|
27
|
+
* Order matters: URLs first (so `http://...` doesn't get mangled by IPv4
|
|
28
|
+
* matching), then emails, then more specific numeric patterns.
|
|
29
|
+
*/
|
|
30
|
+
export declare function redactString(text: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Walks every text node under `root` and redacts PII inline. Skips:
|
|
33
|
+
* - text nodes inside any ancestor with `[data-no-redact]`
|
|
34
|
+
* - text nodes inside `<code>`, `<pre>`, `<style>`, `<textarea>`
|
|
35
|
+
*
|
|
36
|
+
* Mutates the DOM in place.
|
|
37
|
+
*/
|
|
38
|
+
export declare function redactTextNodes(root: Element): void;
|
|
39
|
+
//# sourceMappingURL=pii-redactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-redactor.d.ts","sourceRoot":"","sources":["../../../src/browser/editor/pii-redactor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAsEH;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAejD;AAWD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAqBnD"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PII Redactor — fine-grained inline replacement of PII patterns in text.
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 of the snapshot feature. Phase 1 redacts whole text nodes only;
|
|
5
|
+
* this module replaces matches *inline*, preserving surrounding prose:
|
|
6
|
+
* "Contact us at foo@bar.com for help" → "Contact us at [REDACTED] for help"
|
|
7
|
+
*
|
|
8
|
+
* Two entry points:
|
|
9
|
+
* - `redactString(text)` — pure string-in/string-out, used in tests and
|
|
10
|
+
* callable independently if a non-DOM caller ever needs it.
|
|
11
|
+
* - `redactTextNodes(root)` — walks every text node under `root` and
|
|
12
|
+
* replaces PII inline, skipping subtrees marked with `data-no-redact`,
|
|
13
|
+
* and skipping `<code>` / `<pre>` (legitimate examples).
|
|
14
|
+
*
|
|
15
|
+
* Design notes:
|
|
16
|
+
* - Patterns are tuned to avoid common false positives. SSN requires
|
|
17
|
+
* dashes/spaces (so 9-digit order numbers survive); credit cards must
|
|
18
|
+
* pass a Luhn check (so 16-digit tracking IDs survive); IPs reject any
|
|
19
|
+
* octet > 255 (so version strings like 1.2.3.999 survive).
|
|
20
|
+
* - We bias toward under-redaction in ambiguous cases — better to leak
|
|
21
|
+
* a tracking number than corrupt a customer's real prose.
|
|
22
|
+
*/
|
|
23
|
+
const REDACTED = '[REDACTED]';
|
|
24
|
+
// ----- Regex catalog ---------------------------------------------------------
|
|
25
|
+
//
|
|
26
|
+
// Every pattern uses the `g` flag so .replace() can hit multiple matches in
|
|
27
|
+
// one string. Anchors (`\b` or surrounding-char checks) are tuned per pattern.
|
|
28
|
+
// Email: standard local@domain.tld, fairly permissive on the local part.
|
|
29
|
+
const EMAIL_RE = /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/gi;
|
|
30
|
+
// US/intl phone: optional `+1 ` prefix, optional parens around area code,
|
|
31
|
+
// 3-3-4 digit groups separated by space/dash/dot. Requires at least one
|
|
32
|
+
// separator so bare 10-digit numbers don't match (those are usually IDs).
|
|
33
|
+
const PHONE_RE = /(?:\+\d{1,3}[\s.-]?)?(?:\(\d{3}\)|\d{3})[\s.-]\d{3}[\s.-]\d{4}/g;
|
|
34
|
+
// SSN: XXX-XX-XXXX, dashes or spaces (NOT bare 9 digits — too many false
|
|
35
|
+
// positives on order numbers, IDs, etc.).
|
|
36
|
+
const SSN_RE = /\b\d{3}[\s-]\d{2}[\s-]\d{4}\b/g;
|
|
37
|
+
// IPv4: four 1-3 digit octets, dot-separated. We post-filter for "all
|
|
38
|
+
// octets <= 255" so version strings like 1.2.3.999 don't match.
|
|
39
|
+
const IPV4_RE = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g;
|
|
40
|
+
// URL: http(s):// or www. then non-whitespace. Greedy through path/query.
|
|
41
|
+
const URL_RE = /\b(?:https?:\/\/|www\.)[^\s<>"']+/gi;
|
|
42
|
+
// Credit card candidate: 13-19 digits in 4-4-4-4 (or contiguous) format,
|
|
43
|
+
// allowing dashes/spaces between groups. Luhn-checked before redacting.
|
|
44
|
+
// Must end on a digit (not a separator) — prevents greedy matching of
|
|
45
|
+
// trailing whitespace.
|
|
46
|
+
const CC_CANDIDATE_RE = /\b\d(?:[ -]?\d){12,18}\b/g;
|
|
47
|
+
// ----- Luhn check ------------------------------------------------------------
|
|
48
|
+
function luhnValid(digits) {
|
|
49
|
+
// digits already stripped of separators by caller
|
|
50
|
+
if (digits.length < 13 || digits.length > 19)
|
|
51
|
+
return false;
|
|
52
|
+
let sum = 0;
|
|
53
|
+
let alt = false;
|
|
54
|
+
for (let i = digits.length - 1; i >= 0; i--) {
|
|
55
|
+
let n = digits.charCodeAt(i) - 48; // '0' = 48
|
|
56
|
+
if (n < 0 || n > 9)
|
|
57
|
+
return false;
|
|
58
|
+
if (alt) {
|
|
59
|
+
n *= 2;
|
|
60
|
+
if (n > 9)
|
|
61
|
+
n -= 9;
|
|
62
|
+
}
|
|
63
|
+
sum += n;
|
|
64
|
+
alt = !alt;
|
|
65
|
+
}
|
|
66
|
+
return sum % 10 === 0;
|
|
67
|
+
}
|
|
68
|
+
// ----- IPv4 octet bounds check ----------------------------------------------
|
|
69
|
+
function ipv4Valid(match) {
|
|
70
|
+
const parts = match.split('.');
|
|
71
|
+
if (parts.length !== 4)
|
|
72
|
+
return false;
|
|
73
|
+
for (const p of parts) {
|
|
74
|
+
const n = Number(p);
|
|
75
|
+
if (!Number.isInteger(n) || n < 0 || n > 255)
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
// ----- Public: string redactor ----------------------------------------------
|
|
81
|
+
/**
|
|
82
|
+
* Replace every PII match in `text` with `[REDACTED]`. Surrounding prose
|
|
83
|
+
* is preserved.
|
|
84
|
+
*
|
|
85
|
+
* Order matters: URLs first (so `http://...` doesn't get mangled by IPv4
|
|
86
|
+
* matching), then emails, then more specific numeric patterns.
|
|
87
|
+
*/
|
|
88
|
+
export function redactString(text) {
|
|
89
|
+
if (!text)
|
|
90
|
+
return text;
|
|
91
|
+
let out = text;
|
|
92
|
+
out = out.replace(URL_RE, REDACTED);
|
|
93
|
+
out = out.replace(EMAIL_RE, REDACTED);
|
|
94
|
+
out = out.replace(PHONE_RE, REDACTED);
|
|
95
|
+
out = out.replace(SSN_RE, REDACTED);
|
|
96
|
+
out = out.replace(IPV4_RE, (m) => (ipv4Valid(m) ? REDACTED : m));
|
|
97
|
+
out = out.replace(CC_CANDIDATE_RE, (m) => {
|
|
98
|
+
const digits = m.replace(/[\s-]/g, '');
|
|
99
|
+
return luhnValid(digits) ? REDACTED : m;
|
|
100
|
+
});
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
// ----- Public: DOM walker ---------------------------------------------------
|
|
104
|
+
/**
|
|
105
|
+
* Tag names whose text we never touch — code samples, preformatted blocks,
|
|
106
|
+
* and `<style>` content. `<script>` is already removed earlier in the
|
|
107
|
+
* snapshot pipeline, so it's not in this list.
|
|
108
|
+
*/
|
|
109
|
+
const SKIP_TAGS = new Set(['CODE', 'PRE', 'STYLE', 'TEXTAREA']);
|
|
110
|
+
/**
|
|
111
|
+
* Walks every text node under `root` and redacts PII inline. Skips:
|
|
112
|
+
* - text nodes inside any ancestor with `[data-no-redact]`
|
|
113
|
+
* - text nodes inside `<code>`, `<pre>`, `<style>`, `<textarea>`
|
|
114
|
+
*
|
|
115
|
+
* Mutates the DOM in place.
|
|
116
|
+
*/
|
|
117
|
+
export function redactTextNodes(root) {
|
|
118
|
+
const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
|
|
119
|
+
// Collect first, mutate after — walker behaviour with mutation is
|
|
120
|
+
// implementation-defined.
|
|
121
|
+
const toUpdate = [];
|
|
122
|
+
let node = walker.nextNode();
|
|
123
|
+
while (node) {
|
|
124
|
+
if (!isInSkippedSubtree(node)) {
|
|
125
|
+
const original = node.nodeValue || '';
|
|
126
|
+
const replaced = redactString(original);
|
|
127
|
+
if (replaced !== original) {
|
|
128
|
+
toUpdate.push({ node, value: replaced });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
node = walker.nextNode();
|
|
132
|
+
}
|
|
133
|
+
for (const { node: textNode, value } of toUpdate) {
|
|
134
|
+
textNode.nodeValue = value;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function isInSkippedSubtree(node) {
|
|
138
|
+
let cur = node.parentNode;
|
|
139
|
+
while (cur && cur.nodeType === Node.ELEMENT_NODE) {
|
|
140
|
+
const el = cur;
|
|
141
|
+
if (SKIP_TAGS.has(el.tagName))
|
|
142
|
+
return true;
|
|
143
|
+
if (el.hasAttribute('data-no-redact'))
|
|
144
|
+
return true;
|
|
145
|
+
cur = el.parentNode;
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=pii-redactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-redactor.js","sourceRoot":"","sources":["../../../src/browser/editor/pii-redactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,8 @@ export declare class Sidebar {
|
|
|
20
20
|
private onProgressUpdate;
|
|
21
21
|
private lastFetchTime;
|
|
22
22
|
private lastFlushTime;
|
|
23
|
-
|
|
23
|
+
private userRole;
|
|
24
|
+
constructor(shadowRoot: ShadowRoot, api: EditorAPI, locale: string, namespace: string, defaultLocale: string, onBlockClick: (resolved: ResolvedKey) => void, userRole?: string);
|
|
24
25
|
open(resolved: ResolvedKey): void;
|
|
25
26
|
close(): void;
|
|
26
27
|
isOpen(): boolean;
|
|
@@ -36,6 +37,21 @@ export declare class Sidebar {
|
|
|
36
37
|
private emitProgress;
|
|
37
38
|
destroy(): void;
|
|
38
39
|
private renderContent;
|
|
40
|
+
/**
|
|
41
|
+
* Render Confirm/Reject/Mark-Ready/Unmark-Ready buttons under the preview.
|
|
42
|
+
* Visibility:
|
|
43
|
+
* - Confirm: shown when row is not locked and not already ready
|
|
44
|
+
* - Reject: shown when row is not locked and not already ready (server
|
|
45
|
+
* returns 400 if stage_index is already 0)
|
|
46
|
+
* - Unconfirm: shown when isConfirmed
|
|
47
|
+
* - Mark Ready: PM/admin only, hidden when already ready
|
|
48
|
+
* - Unmark Ready: PM/admin only, only when ready
|
|
49
|
+
* After any successful click we re-fetch status for this key so the UI
|
|
50
|
+
* reflects the new state and the unaffected buttons hide/show themselves.
|
|
51
|
+
*/
|
|
52
|
+
private renderWorkflowActions;
|
|
53
|
+
/** Re-fetch status for one key and re-render the current view. */
|
|
54
|
+
private refreshStatusForKey;
|
|
39
55
|
private addField;
|
|
40
56
|
/**
|
|
41
57
|
* Get CSS class for the status dot based on actual row state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/browser/editor/sidebar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAK/D,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,gBAAgB,CAA8D;IACtF,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/browser/editor/sidebar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAK/D,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,gBAAgB,CAA8D;IACtF,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,QAAQ,CAAS;gBAGvB,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,EAC7C,QAAQ,GAAE,MAAW;IA+DvB,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAMjC,KAAK,IAAI,IAAI;IAKb,MAAM,IAAI,OAAO;IAIjB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOlC,mBAAmB,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI1E;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBpC,kBAAkB,IAAI,MAAM;IAQ5B,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,YAAY;IAMpB,OAAO,IAAI,IAAI;YAID,aAAa;IA8G3B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAsD7B,kEAAkE;YACpD,mBAAmB;IAYjC,OAAO,CAAC,QAAQ;IAWhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,gBAAgB;CAyDzB"}
|
|
@@ -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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"}
|