@sealpixel/plugin-redact 1.0.0-rc.11 → 1.0.0-rc.12
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/README.md +5 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -11
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
# @sealpixel/plugin-redact
|
|
2
2
|
|
|
3
|
-
Pixelate or
|
|
3
|
+
Pixelate, blur or mosaic regions of an image. Regions are in image space, amounts in source pixels.
|
|
4
|
+
|
|
5
|
+
`pixelate` and `blur` compute the result from the pixels under the region, so it still carries information about them. `mosaic` takes its colours from around the region and never reads a pixel inside it. Use `mosaic` for licence plates, faces and anything else that identifies a person.
|
|
6
|
+
|
|
7
|
+
A pixelate cell is never smaller than 2 rendered pixels. The options `defaultAmount` and `amountRange.min` therefore start at 2. An op with a smaller amount still loads and renders cells of 2 pixels.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { OperationBase, Rect, SourcePx } from '@sealpixel/core';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* `pixelate` and `blur` are cosmetic: they compute the result from the pixels
|
|
5
|
+
* under the region, so it carries information about them. `mosaic` takes its
|
|
6
|
+
* colours from around the region and covers every pixel the region touches, so
|
|
7
|
+
* the result carries none.
|
|
8
|
+
*/
|
|
9
|
+
export type RedactMode = 'pixelate' | 'blur' | 'mosaic';
|
|
4
10
|
export type RedactRegion = {
|
|
5
11
|
kind: 'rect';
|
|
6
12
|
rect: Rect;
|
|
@@ -13,7 +19,10 @@ export interface Redaction {
|
|
|
13
19
|
id: string;
|
|
14
20
|
region: RedactRegion;
|
|
15
21
|
mode: RedactMode;
|
|
16
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Pixelate or mosaic cell size, or blur diameter, in source pixels. A
|
|
24
|
+
* pixelate cell is never smaller than 2 rendered pixels, whatever the amount.
|
|
25
|
+
*/
|
|
17
26
|
amount: SourcePx;
|
|
18
27
|
}
|
|
19
28
|
export interface RedactDoc {
|
|
@@ -66,10 +75,10 @@ export declare const redactClear: import("@sealpixel/core").OperationDef<RedactD
|
|
|
66
75
|
export interface RedactOptions {
|
|
67
76
|
/** Redaction modes offered. */
|
|
68
77
|
modes: RedactMode[];
|
|
69
|
-
/** Region shapes the user may draw. */
|
|
78
|
+
/** Region shapes the user may draw. `rect` also covers a turned rectangle. */
|
|
70
79
|
shapes: ('rect' | 'path')[];
|
|
71
80
|
defaultMode: RedactMode;
|
|
72
|
-
/**
|
|
81
|
+
/** Cell size or blur diameter a new region starts with, in source px. At least 2. */
|
|
73
82
|
defaultAmount: number;
|
|
74
83
|
amountRange: {
|
|
75
84
|
min: number;
|
|
@@ -85,6 +94,7 @@ export declare const RedactOptionsSchema: z.ZodObject<{
|
|
|
85
94
|
modes: z.ZodArray<z.ZodEnum<{
|
|
86
95
|
pixelate: "pixelate";
|
|
87
96
|
blur: "blur";
|
|
97
|
+
mosaic: "mosaic";
|
|
88
98
|
}>>;
|
|
89
99
|
shapes: z.ZodArray<z.ZodEnum<{
|
|
90
100
|
rect: "rect";
|
|
@@ -93,6 +103,7 @@ export declare const RedactOptionsSchema: z.ZodObject<{
|
|
|
93
103
|
defaultMode: z.ZodEnum<{
|
|
94
104
|
pixelate: "pixelate";
|
|
95
105
|
blur: "blur";
|
|
106
|
+
mosaic: "mosaic";
|
|
96
107
|
}>;
|
|
97
108
|
defaultAmount: z.ZodNumber;
|
|
98
109
|
amountRange: z.ZodObject<{
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CAAE,CAAC;AAEjD,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC9D,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AACD,MAAM,WAAW,cAAe,SAAQ,aAAa,CAAC,eAAe,CAAC;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AACD,MAAM,WAAW,cAAe,SAAQ,aAAa,CAAC,eAAe,CAAC;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;AAE1D,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAU,iBAAiB;QACzB,YAAY,EAAE,WAAW,CAAC;QAC1B,eAAe,EAAE,cAAc,CAAC;QAChC,eAAe,EAAE,cAAc,CAAC;QAChC,cAAc,EAAE,aAAa,CAAC;KAC/B;IACD,UAAU,gBAAgB;QACxB,MAAM,EAAE,SAAS,CAAC;KACnB;CACF;AAMD,eAAO,MAAM,YAAY;;;;;;;;;;;4BAWvB,CAAC;AAmBH,eAAO,MAAM,SAAS,gEAmBpB,CAAC;AAEH,eAAO,MAAM,YAAY,mEAyBvB,CAAC;AAEH,eAAO,MAAM,YAAY,mEAOvB,CAAC;AAEH,eAAO,MAAM,WAAW,kEAKtB,CAAC;AAEH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,8EAA8E;IAC9E,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B,WAAW,EAAE,UAAU,CAAC;IACxB,qFAAqF;IACrF,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;kBAkB7B,CAAC;AAEJ,eAAO,MAAM,sBAAsB,EAAE,aAQpC,CAAC;AAkCF,eAAO,MAAM,YAAY,wFA+CvB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,8 +16,22 @@ export const RegionSchema = z.discriminatedUnion('kind', [
|
|
|
16
16
|
})
|
|
17
17
|
.strict(),
|
|
18
18
|
]);
|
|
19
|
-
const ModeSchema = z.enum(['pixelate', 'blur']);
|
|
19
|
+
const ModeSchema = z.enum(['pixelate', 'blur', 'mosaic']);
|
|
20
|
+
/**
|
|
21
|
+
* Version 2 added the `mosaic` mode. Version 3 renders a pixelate cell of at
|
|
22
|
+
* least 2 pixels; the bump changes the render cache key, so a render of an
|
|
23
|
+
* older log with a smaller cell is not served again. An older op is valid as
|
|
24
|
+
* it is.
|
|
25
|
+
*/
|
|
26
|
+
const unchanged = (_from, op) => op;
|
|
27
|
+
/**
|
|
28
|
+
* An op accepts any positive amount, so a log written before the options
|
|
29
|
+
* minimum below still loads. The kernel renders a pixelate cell of at least
|
|
30
|
+
* two pixels whatever the amount: a one-pixel cell would show the pixel itself.
|
|
31
|
+
*/
|
|
20
32
|
const AmountSchema = z.number().gt(0).max(4096);
|
|
33
|
+
/** Host options start at 2 source px, the smallest cell that hides a pixel. */
|
|
34
|
+
const OptionAmountSchema = AmountSchema.min(2);
|
|
21
35
|
const base = { id: z.string().min(1), at: z.number().optional() };
|
|
22
36
|
export const redactAdd = defineOperation({
|
|
23
37
|
type: 'redact.add',
|
|
@@ -31,6 +45,7 @@ export const redactAdd = defineOperation({
|
|
|
31
45
|
regionId: z.string().min(1).optional(),
|
|
32
46
|
})
|
|
33
47
|
.strict(),
|
|
48
|
+
migrate: unchanged,
|
|
34
49
|
reduce: (slice, op) => ({
|
|
35
50
|
regions: [
|
|
36
51
|
...slice.regions.filter((r) => r.id !== (op.regionId ?? op.id)),
|
|
@@ -50,6 +65,7 @@ export const redactUpdate = defineOperation({
|
|
|
50
65
|
amount: AmountSchema.optional(),
|
|
51
66
|
})
|
|
52
67
|
.strict(),
|
|
68
|
+
migrate: unchanged,
|
|
53
69
|
reduce: (slice, op) => ({
|
|
54
70
|
regions: slice.regions.map((r) => r.id === op.regionId
|
|
55
71
|
? {
|
|
@@ -66,11 +82,13 @@ export const redactRemove = defineOperation({
|
|
|
66
82
|
schema: z
|
|
67
83
|
.object({ type: z.literal('redact.remove'), ...base, regionId: z.string().min(1) })
|
|
68
84
|
.strict(),
|
|
85
|
+
migrate: unchanged,
|
|
69
86
|
reduce: (slice, op) => ({ regions: slice.regions.filter((r) => r.id !== op.regionId) }),
|
|
70
87
|
});
|
|
71
88
|
export const redactClear = defineOperation({
|
|
72
89
|
type: 'redact.clear',
|
|
73
90
|
schema: z.object({ type: z.literal('redact.clear'), ...base }).strict(),
|
|
91
|
+
migrate: unchanged,
|
|
74
92
|
reduce: () => ({ regions: [] }),
|
|
75
93
|
});
|
|
76
94
|
export const RedactOptionsSchema = z
|
|
@@ -78,9 +96,9 @@ export const RedactOptionsSchema = z
|
|
|
78
96
|
modes: z.array(ModeSchema).min(1),
|
|
79
97
|
shapes: z.array(z.enum(['rect', 'path'])).min(1),
|
|
80
98
|
defaultMode: ModeSchema,
|
|
81
|
-
defaultAmount:
|
|
99
|
+
defaultAmount: OptionAmountSchema,
|
|
82
100
|
amountRange: z
|
|
83
|
-
.object({ min:
|
|
101
|
+
.object({ min: OptionAmountSchema, max: OptionAmountSchema, step: z.number().positive() })
|
|
84
102
|
.strict()
|
|
85
103
|
.refine((r) => r.min < r.max, 'min must be below max'),
|
|
86
104
|
enforce: z.boolean(),
|
|
@@ -90,7 +108,7 @@ export const RedactOptionsSchema = z
|
|
|
90
108
|
.refine((o) => o.modes.includes(o.defaultMode), 'defaultMode must be one of modes')
|
|
91
109
|
.refine((o) => o.defaultAmount >= o.amountRange.min && o.defaultAmount <= o.amountRange.max, 'defaultAmount must lie within amountRange');
|
|
92
110
|
export const REDACT_DEFAULT_OPTIONS = {
|
|
93
|
-
modes: ['pixelate', 'blur'],
|
|
111
|
+
modes: ['pixelate', 'blur', 'mosaic'],
|
|
94
112
|
shapes: ['rect', 'path'],
|
|
95
113
|
defaultMode: 'pixelate',
|
|
96
114
|
defaultAmount: 12,
|
|
@@ -98,9 +116,37 @@ export const REDACT_DEFAULT_OPTIONS = {
|
|
|
98
116
|
enforce: false,
|
|
99
117
|
transform: true,
|
|
100
118
|
};
|
|
119
|
+
/**
|
|
120
|
+
* True when a region is a path of four points that form a rectangle on the
|
|
121
|
+
* source, at any angle. The turn handle writes a turned rectangle this way, so
|
|
122
|
+
* `shapes: ['rect']` accepts it. The test runs in source pixels, because a
|
|
123
|
+
* turned rectangle is a parallelogram in normalised space when the source is
|
|
124
|
+
* not square. The diagonals must share their midpoint, which holds exactly
|
|
125
|
+
* under any scale. The right angle has a tolerance of 1% in its cosine, which
|
|
126
|
+
* covers a preview whose aspect ratio differs from the source by rounding.
|
|
127
|
+
*/
|
|
128
|
+
function isTurnedRectangle(region, size) {
|
|
129
|
+
if (region.kind !== 'path' || region.points.length !== 4)
|
|
130
|
+
return false;
|
|
131
|
+
const [a, b, c, d] = region.points.map(([x, y]) => [x * size.width, y * size.height]);
|
|
132
|
+
const [ax = 0, ay = 0] = a;
|
|
133
|
+
const [bx = 0, by = 0] = b;
|
|
134
|
+
const [cx = 0, cy = 0] = c;
|
|
135
|
+
const [dx = 0, dy = 0] = d;
|
|
136
|
+
const e0 = [bx - ax, by - ay];
|
|
137
|
+
const e1 = [cx - bx, cy - by];
|
|
138
|
+
const len0 = Math.hypot(e0[0], e0[1]);
|
|
139
|
+
const len1 = Math.hypot(e1[0], e1[1]);
|
|
140
|
+
if (!(len0 > 1e-9 && len1 > 1e-9))
|
|
141
|
+
return false;
|
|
142
|
+
const tol = 1e-3 * Math.max(len0, len1);
|
|
143
|
+
const midpointsMeet = Math.hypot(ax + cx - bx - dx, ay + cy - by - dy) <= 2 * tol;
|
|
144
|
+
const rightAngle = Math.abs(e0[0] * e1[0] + e0[1] * e1[1]) <= 0.01 * len0 * len1;
|
|
145
|
+
return midpointsMeet && rightAngle;
|
|
146
|
+
}
|
|
101
147
|
export const redactPlugin = definePlugin({
|
|
102
148
|
id: 'redact',
|
|
103
|
-
version:
|
|
149
|
+
version: 3,
|
|
104
150
|
operations: [redactAdd, redactUpdate, redactRemove, redactClear],
|
|
105
151
|
initialDocument: { regions: [] },
|
|
106
152
|
stage: { name: 'redact', order: 200 },
|
|
@@ -112,22 +158,24 @@ export const redactPlugin = definePlugin({
|
|
|
112
158
|
schema: RedactOptionsSchema,
|
|
113
159
|
defaults: REDACT_DEFAULT_OPTIONS,
|
|
114
160
|
describe: {
|
|
115
|
-
modes: 'Redaction modes offered (pixelate, blur).',
|
|
116
|
-
shapes: 'Region shapes the user may draw (rect, path).',
|
|
161
|
+
modes: 'Redaction modes offered (pixelate, blur, mosaic). Only mosaic leaves no information about the covered pixels.',
|
|
162
|
+
shapes: 'Region shapes the user may draw (rect, path). With enforce, rect also accepts a turned rectangle, which is written as a four-point path.',
|
|
117
163
|
defaultMode: 'Mode a new region starts with.',
|
|
118
|
-
defaultAmount: 'Cell size or blur
|
|
119
|
-
amountRange: 'Amounts accepted with enforce; the UI has no slider, new regions use defaultAmount.',
|
|
164
|
+
defaultAmount: 'Cell size or blur diameter a new region starts with, in source px. At least 2: a pixelate cell of one pixel shows the pixel.',
|
|
165
|
+
amountRange: 'Amounts accepted with enforce, min at least 2; the UI has no slider, new regions use defaultAmount.',
|
|
120
166
|
enforce: 'Reject regions with modes, shapes or amounts outside the options.',
|
|
121
167
|
transform: 'Handles to resize and turn a region after it is drawn; a turned rectangle is written as a four-point path. UI only.',
|
|
122
168
|
},
|
|
123
169
|
},
|
|
124
|
-
validate: (op, { options }) => {
|
|
170
|
+
validate: (op, { options, source }) => {
|
|
125
171
|
if ((op.type !== 'redact.add' && op.type !== 'redact.update') || !options.enforce)
|
|
126
172
|
return null;
|
|
127
173
|
const o = op;
|
|
128
174
|
if (o.mode !== undefined && !options.modes.includes(o.mode))
|
|
129
175
|
return `mode "${o.mode}" is not offered`;
|
|
130
|
-
if (o.region !== undefined &&
|
|
176
|
+
if (o.region !== undefined &&
|
|
177
|
+
!options.shapes.includes(o.region.kind) &&
|
|
178
|
+
!(options.shapes.includes('rect') && isTurnedRectangle(o.region, source)))
|
|
131
179
|
return `region shape "${o.region.kind}" is not offered`;
|
|
132
180
|
if (o.amount !== undefined &&
|
|
133
181
|
(o.amount < options.amountRange.min - 1e-9 || o.amount > options.amountRange.max + 1e-9))
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sealpixel/plugin-redact",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
4
|
-
"description": "Pixelate or
|
|
3
|
+
"version": "1.0.0-rc.12",
|
|
4
|
+
"description": "Pixelate, blur or mosaic rectangular and freeform regions. Mosaic never reads the pixels it covers. Cells snap to the source grid so proxy and full renders match.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"./package.json": "./package.json"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@sealpixel/plugin-sdk": "1.0.0-rc.
|
|
30
|
+
"@sealpixel/plugin-sdk": "1.0.0-rc.12"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@sealpixel/core": "1.0.0-rc.
|
|
33
|
+
"@sealpixel/core": "1.0.0-rc.12",
|
|
34
34
|
"zod": "^4.0.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@sealpixel/config": "0.0.0",
|
|
38
|
-
"@sealpixel/core": "1.0.0-rc.
|
|
38
|
+
"@sealpixel/core": "1.0.0-rc.12",
|
|
39
39
|
"@types/node": "^24.0.0",
|
|
40
40
|
"typescript": "^6.0.0",
|
|
41
41
|
"vitest": "^5.0.0",
|