@mosaicast/plugin-sdk 0.8.0 → 0.9.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/testing.js CHANGED
@@ -1,21 +1,104 @@
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';
4
+ /**
5
+ * A canned failure: what the host would have answered instead of a body.
6
+ *
7
+ * Put one in {@link MockApiClient.responses} and the call rejects with a {@link PluginApiError} carrying
8
+ * that status — which is how a component's 404 branch and its 500 branch become separately testable.
9
+ *
10
+ * ```ts
11
+ * const ctx = makeMockCtx({ apiResponses: { 'get data/site/main/stats': apiError(403, {
12
+ * detail: 'this key is written by the plugin backend',
13
+ * }) } });
14
+ * ```
15
+ *
16
+ * @param status the HTTP status to fail with
17
+ * @param problem the RFC 7807 body, if the test cares about it
18
+ * @returns a marker the mock client turns into a rejection
19
+ * @since 0.9.0
20
+ */
21
+ export function apiError(status, problem) {
22
+ return { __mosaicastApiError: true, status, problem };
23
+ }
24
+ function isCannedApiError(value) {
25
+ return typeof value === 'object' && value !== null && '__mosaicastApiError' in value;
26
+ }
27
+ /** Builds the error shape the host produces, so `isPluginApiError` and `e.status` behave as in production. */
28
+ function toApiError(canned, method, path) {
29
+ const error = new Error(`${canned.status} on ${method.toUpperCase()} ${path}${canned.problem?.detail ? `: ${canned.problem.detail}` : ''}`);
30
+ error.status = canned.status;
31
+ error.problem = canned.problem;
32
+ return error;
33
+ }
34
+ /**
35
+ * Waits until every call recorded by a mock client has settled *and* the `.then` chains behind them have
36
+ * run.
37
+ *
38
+ * The two-part wait is the point: `await client.settled()` knows when the *requests* finished, and the
39
+ * microtask drain after it lets the component's own `.then(setState)` hops reach the DOM. Use it instead
40
+ * of counting `await Promise.resolve()` calls by hand.
41
+ *
42
+ * ```ts
43
+ * mount(ctx);
44
+ * await flushMockApi(ctx.api);
45
+ * expect(root.querySelector('.title')).toHaveTextContent('The Kraken');
46
+ * ```
47
+ *
48
+ * @param client the mock client — `ctx.api` from {@link makeMockCtx}
49
+ * @since 0.9.0
50
+ */
51
+ export async function flushMockApi(client) {
52
+ await client.settled();
53
+ // Two hops, because a component that chains `.then(parse).then(setState)` needs one per link and the
54
+ // cost of an extra hop is nothing. Anything deeper than this is a component doing its own async work,
55
+ // which is the component's to await.
56
+ await Promise.resolve();
57
+ await Promise.resolve();
58
+ }
3
59
  /** The unsubscribe returned by the inert `onChange` doubles — there is nothing to detach. */
4
60
  const noop = () => { };
5
61
  function makeMockApi(responses) {
6
62
  const calls = [];
63
+ const inFlight = [];
7
64
  const resolve = (method, path, body) => {
8
65
  calls.push({ method, path, body });
9
66
  const canned = api.responses[`${method} ${path}`] ?? api.responses[path];
10
- return Promise.resolve(canned);
67
+ const result = isCannedApiError(canned)
68
+ ? Promise.reject(toApiError(canned, method, path))
69
+ : Promise.resolve(canned);
70
+ // Tracked separately, and with its rejection absorbed, so `settled()` can await every call without
71
+ // becoming an unhandled-rejection source of its own.
72
+ inFlight.push(result.catch(() => undefined));
73
+ return result;
11
74
  };
12
75
  const api = {
13
76
  calls,
14
77
  responses,
15
78
  get: (path) => resolve('get', path),
79
+ getOrNull: async (path) => {
80
+ try {
81
+ return await resolve('get', path);
82
+ }
83
+ catch (e) {
84
+ // Exactly the host's rule: 404 is an answer, everything else is a failure.
85
+ if (e instanceof Error && e.status === 404) {
86
+ return null;
87
+ }
88
+ throw e;
89
+ }
90
+ },
16
91
  post: (path, body) => resolve('post', path, body),
17
92
  put: (path, body) => resolve('put', path, body),
18
93
  delete: (path) => resolve('delete', path),
94
+ settled: async () => {
95
+ // Re-read the list each round: awaiting one call can start another.
96
+ let pending = inFlight.length;
97
+ do {
98
+ pending = inFlight.length;
99
+ await Promise.all(inFlight.slice());
100
+ } while (inFlight.length !== pending);
101
+ },
19
102
  };
20
103
  return api;
21
104
  }
@@ -197,6 +280,272 @@ export function makeMockSchema(rows = {}) {
197
280
  };
198
281
  return client;
199
282
  }
283
+ /**
284
+ * A {@link FeedsClient} double: snapshots you register, and **nothing for the ones you don't**.
285
+ *
286
+ * An unregistered slug resolves `null` (or is absent from a batch) rather than throwing, because that is
287
+ * what the host does for an episode this visitor may not see — a `WITHDRAWN` or tier-gated one is absent,
288
+ * not redacted. So the empty case a component must handle is the double's default, and a component that
289
+ * assumes every slug comes back fails here rather than in front of a visitor.
290
+ *
291
+ * ```ts
292
+ * const feeds = makeMockFeeds().withDisplay('kraken', { title: 'The Kraken', description: '' });
293
+ * const ctx = makeMockCtx({ feeds, episodes: ['kraken', 'gated'] });
294
+ *
295
+ * await mount(ctx);
296
+ * expect(root.textContent).toContain('The Kraken'); // and renders nothing for `gated`
297
+ * ```
298
+ *
299
+ * @param snapshots snapshots to start with, keyed by slug
300
+ * @returns a feeds double with `withDisplay` and a recorded `requested` list
301
+ * @since 0.9.0
302
+ */
303
+ export function makeMockFeeds(snapshots = {}) {
304
+ const stored = { ...snapshots };
305
+ const requested = [];
306
+ const client = {
307
+ requested,
308
+ withDisplay(slug, snapshot) {
309
+ stored[slug] = snapshot;
310
+ return client;
311
+ },
312
+ display: (slug) => {
313
+ requested.push(slug);
314
+ return Promise.resolve(stored[slug] ?? null);
315
+ },
316
+ displayMany: (slugs) => {
317
+ // Clamped, not rejected — the host's behaviour past the batch ceiling.
318
+ const asked = slugs.slice(0, DISPLAY_BATCH_LIMIT);
319
+ requested.push(...asked);
320
+ const result = {};
321
+ for (const slug of asked) {
322
+ const snapshot = stored[slug];
323
+ // Absent rather than null: a slug the caller may not see is simply not a key in the answer.
324
+ if (snapshot)
325
+ result[slug] = snapshot;
326
+ }
327
+ return Promise.resolve(result);
328
+ },
329
+ };
330
+ return client;
331
+ }
332
+ /** The host's canonicalisation rule: trim, collapse internal whitespace, casefold. */
333
+ function canonicalTag(tag) {
334
+ const canonical = tag.trim().replace(/\s+/g, ' ').toLowerCase();
335
+ if (canonical === '') {
336
+ throw new Error('tag must not be blank');
337
+ }
338
+ return canonical;
339
+ }
340
+ /**
341
+ * A {@link TagsClient} double that **refuses what the host refuses**.
342
+ *
343
+ * Two refusals matter, and both are invisible to a component tested against a permissive double:
344
+ *
345
+ * - **Episode writes throw** unless you pass `writesEpisodes: true`, standing in for the manifest
346
+ * declaration. Off by default, so the branch where the host says no gets exercised.
347
+ * - **`untagEpisode` removes only this plugin's own assignment.** Seed the feed's side with
348
+ * {@link MockTagsClient.withFeedTag} and the tag survives your removal, exactly as the host's `source`
349
+ * column makes it survive.
350
+ *
351
+ * Canonicalisation is applied as the host applies it, so a test that writes `'Maritime '` and reads
352
+ * `'maritime'` passes here for the same reason it passes against core.
353
+ *
354
+ * @param opts `writesEpisodes` grants the episode-write capability; `subjects` and `episodes` seed
355
+ * assignments this plugin owns
356
+ * @returns a tags double
357
+ * @since 0.9.0
358
+ */
359
+ export function makeMockTags(opts = {}) {
360
+ const labels = new Map();
361
+ // `plugin` vs `feed`: which rows this plugin is allowed to take back.
362
+ const episodeRows = [];
363
+ const subjects = new Map();
364
+ const remember = (canonical, spelling) => {
365
+ if (!labels.has(canonical))
366
+ labels.set(canonical, spelling.trim().replace(/\s+/g, ' '));
367
+ };
368
+ const addEpisodeRow = (slug, tag, source) => {
369
+ const canonical = canonicalTag(tag);
370
+ remember(canonical, tag);
371
+ if (!episodeRows.some((r) => r.slug === slug && r.tag === canonical && r.source === source)) {
372
+ episodeRows.push({ slug, tag: canonical, source });
373
+ }
374
+ };
375
+ const addSubject = (subjectKey, tag) => {
376
+ if (subjectKey === '')
377
+ throw new Error('subjectKey must not be blank');
378
+ const canonical = canonicalTag(tag);
379
+ remember(canonical, tag);
380
+ const existing = subjects.get(subjectKey) ?? new Set();
381
+ existing.add(canonical);
382
+ subjects.set(subjectKey, existing);
383
+ };
384
+ const requireEpisodeWrites = () => {
385
+ if (!opts.writesEpisodes) {
386
+ throw new Error("this plugin's manifest does not declare tags.writesEpisodes; " +
387
+ 'pass { writesEpisodes: true } to makeMockTags to test the granted case');
388
+ }
389
+ };
390
+ const infoFor = (canonical) => ({
391
+ tag: canonical,
392
+ label: labels.get(canonical) ?? canonical,
393
+ episodes: new Set(episodeRows.filter((r) => r.tag === canonical).map((r) => r.slug)).size,
394
+ subjects: [...subjects.values()].filter((tags) => tags.has(canonical)).length,
395
+ });
396
+ const tagsOnEpisode = (slug) => [...new Set(episodeRows.filter((r) => r.slug === slug).map((r) => r.tag))].sort();
397
+ for (const [slug, tags] of Object.entries(opts.episodes ?? {})) {
398
+ for (const tag of tags)
399
+ addEpisodeRow(slug, tag, 'plugin');
400
+ }
401
+ for (const [subjectKey, tags] of Object.entries(opts.subjects ?? {})) {
402
+ for (const tag of tags)
403
+ addSubject(subjectKey, tag);
404
+ }
405
+ const client = {
406
+ get episodeTags() {
407
+ const byEpisode = {};
408
+ for (const row of episodeRows)
409
+ byEpisode[row.slug] = tagsOnEpisode(row.slug);
410
+ return byEpisode;
411
+ },
412
+ get subjectTags() {
413
+ const bySubject = {};
414
+ for (const [key, tags] of subjects)
415
+ bySubject[key] = [...tags].sort();
416
+ return bySubject;
417
+ },
418
+ withFeedTag(episodeSlug, tag) {
419
+ addEpisodeRow(episodeSlug, tag, 'feed');
420
+ return client;
421
+ },
422
+ all: async () => [...labels.keys()]
423
+ .map(infoFor)
424
+ // A tag stops existing when nothing carries it — the host keeps no empty vocabulary rows.
425
+ .filter((info) => info.episodes > 0 || info.subjects > 0)
426
+ .sort((a, b) => b.episodes + b.subjects - (a.episodes + a.subjects) || a.tag.localeCompare(b.tag)),
427
+ episodesWith: async (tag) => {
428
+ const canonical = canonicalTag(tag);
429
+ return [...new Set(episodeRows.filter((r) => r.tag === canonical).map((r) => r.slug))].sort();
430
+ },
431
+ tagsOn: async (episodeSlug) => tagsOnEpisode(episodeSlug),
432
+ similarTo: async (tag, limit = 10) => {
433
+ const canonical = canonicalTag(tag);
434
+ const shared = new Map();
435
+ const bump = (other) => {
436
+ if (other !== canonical)
437
+ shared.set(other, (shared.get(other) ?? 0) + 1);
438
+ };
439
+ for (const slug of new Set(episodeRows.filter((r) => r.tag === canonical).map((r) => r.slug))) {
440
+ tagsOnEpisode(slug).forEach(bump);
441
+ }
442
+ for (const tags of subjects.values()) {
443
+ if (tags.has(canonical))
444
+ tags.forEach(bump);
445
+ }
446
+ return [...shared.entries()]
447
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
448
+ .slice(0, Math.max(0, limit))
449
+ .map(([other]) => infoFor(other));
450
+ },
451
+ subjectsWith: async (tag) => {
452
+ const canonical = canonicalTag(tag);
453
+ return [...subjects.entries()]
454
+ .filter(([, tags]) => tags.has(canonical))
455
+ .map(([key]) => key)
456
+ .sort();
457
+ },
458
+ tagsOnSubject: async (subjectKey) => [...(subjects.get(subjectKey) ?? [])].sort(),
459
+ tagSubject: async (subjectKey, tag) => {
460
+ addSubject(subjectKey, tag);
461
+ },
462
+ untagSubject: async (subjectKey, tag) => {
463
+ const tags = subjects.get(subjectKey);
464
+ if (!tags)
465
+ return;
466
+ tags.delete(canonicalTag(tag));
467
+ if (tags.size === 0)
468
+ subjects.delete(subjectKey);
469
+ },
470
+ tagEpisode: async (episodeSlug, tag) => {
471
+ requireEpisodeWrites();
472
+ addEpisodeRow(episodeSlug, tag, 'plugin');
473
+ },
474
+ untagEpisode: async (episodeSlug, tag) => {
475
+ requireEpisodeWrites();
476
+ const canonical = canonicalTag(tag);
477
+ // Only this plugin's row. A tag the feed also put here stays, and the episode keeps carrying it.
478
+ const at = episodeRows.findIndex((r) => r.slug === episodeSlug && r.tag === canonical && r.source === 'plugin');
479
+ if (at >= 0)
480
+ episodeRows.splice(at, 1);
481
+ },
482
+ };
483
+ return client;
484
+ }
485
+ /** Resolves a {@link DocTarget} to the partition path the host would address. */
486
+ function docPath(target) {
487
+ if (target === 'self')
488
+ return 'data/user/me';
489
+ if (target === 'site')
490
+ return 'data/site/main';
491
+ return `data/${target.type}/${encodeURIComponent(target.id)}`;
492
+ }
493
+ function requireDocKey(key) {
494
+ if (!DOC_KEY_PATTERN.test(key)) {
495
+ throw new Error(`doc key must match ${DOC_KEY_PATTERN.source}, got: ${JSON.stringify(key)}`);
496
+ }
497
+ return key;
498
+ }
499
+ /**
500
+ * A {@link DocClient} double: an in-memory store that **validates keys the way the client does**.
501
+ *
502
+ * A key with a `/` in it, or one over 200 characters, throws here rather than silently working — which
503
+ * matters, because against a permissive double the failure would first appear as a 400 in production.
504
+ *
505
+ * ```ts
506
+ * const docs = makeMockDocs({ 'data/user/me/marks': { b3: true } });
507
+ * const ctx = makeMockCtx({ docs });
508
+ *
509
+ * await mount(ctx);
510
+ * expect(docs.stored['data/user/me/marks']).toEqual({ b3: true, b4: true });
511
+ * ```
512
+ *
513
+ * @param initial documents to start with, keyed `"<partition>/<key>"`
514
+ * @returns a doc client double with an inspectable `stored` map
515
+ * @since 0.9.0
516
+ */
517
+ export function makeMockDocs(initial = {}) {
518
+ const stored = { ...initial };
519
+ return {
520
+ stored,
521
+ get: async (target, key) => (stored[`${docPath(target)}/${requireDocKey(key)}`] ?? null),
522
+ put: async (target, key, value) => {
523
+ stored[`${docPath(target)}/${requireDocKey(key)}`] = value;
524
+ },
525
+ list: async (target, opts) => {
526
+ const prefix = `${docPath(target)}/`;
527
+ const items = Object.entries(stored)
528
+ .filter(([path]) => path.startsWith(prefix))
529
+ .map(([path, value]) => ({ key: path.slice(prefix.length), value }))
530
+ .filter((entry) => entry.key.startsWith(opts?.prefix ?? ''))
531
+ .sort((a, b) => a.key.localeCompare(b.key));
532
+ const size = opts?.size ?? 50;
533
+ const page = opts?.page ?? 0;
534
+ const result = {
535
+ items: items.slice(page * size, page * size + size),
536
+ page,
537
+ size,
538
+ totalElements: items.length,
539
+ totalPages: Math.ceil(items.length / size),
540
+ };
541
+ return result;
542
+ },
543
+ remove: async (target, key) => {
544
+ // Idempotent, like the host: removing what is gone resolves rather than rejecting.
545
+ delete stored[`${docPath(target)}/${requireDocKey(key)}`];
546
+ },
547
+ };
548
+ }
200
549
  /** Escapes a string for literal use inside a `RegExp` — the non-wildcard parts of a `like` pattern. */
201
550
  function escapeRegExp(literal) {
202
551
  return literal.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
@@ -254,12 +603,15 @@ export function makeMockBlobs(opts = {}) {
254
603
  stored,
255
604
  upload: (file, uploadOpts) => {
256
605
  const filename = uploadOpts?.filename ?? (file instanceof File ? file.name : null);
257
- uploads.push({ filename, mime: file.type, size: file.size });
258
- if (!mimeTypes.includes(file.type)) {
259
- return Promise.reject(new Error(`content type not allowed for this plugin: ${file.type}`));
606
+ // The same normalisation the real client applies, so a `File` with an empty `type` — what Firefox
607
+ // hands over when the OS MIME lookup fails — is accepted here exactly as the host accepts it.
608
+ const declared = uploadOpts?.declaredType === 'preserve' ? file.type : declaredTypeFor(file);
609
+ uploads.push({ filename, mime: declared, size: file.size });
610
+ if (!mimeTypes.includes(declared)) {
611
+ return Promise.reject(new Error(`content type not allowed for this plugin: ${declared}`));
260
612
  }
261
613
  if (filename != null && rejected.has(filename)) {
262
- return Promise.reject(new Error(`content does not match the declared type: ${file.type}`));
614
+ return Promise.reject(new Error(`content does not match the declared type: ${declared}`));
263
615
  }
264
616
  if (file.size > maxFileBytes) {
265
617
  return Promise.reject(new Error(`file is larger than this plugin may store: ${file.size} > ${maxFileBytes}`));
@@ -270,7 +622,7 @@ export function makeMockBlobs(opts = {}) {
270
622
  const info = {
271
623
  ref: `blob-${nextRef++}`,
272
624
  filename,
273
- mime: file.type,
625
+ mime: declared,
274
626
  size: file.size,
275
627
  updatedAt: new Date().toISOString(),
276
628
  };
@@ -313,15 +665,18 @@ export function makeMockBlobs(opts = {}) {
313
665
  *
314
666
  * Defaults: `site` scope, no episodes, anonymous user, **all consent denied** (a {@link makeMockConsent}
315
667
  * double — pass your own to drive grants), empty filter, a player
316
- * parked at 0s, empty route, `en` locale, unknown progress, and {@link DEFAULT_THEME}. Pass overrides to
317
- * change any field; the returned `api` is a {@link MockApiClient} recording every call, and `logs`
318
- * collects every `ctx.log(...)`.
668
+ * parked at 0s, empty route with an empty query and hash, `en` locale, unknown progress, and
669
+ * {@link DEFAULT_THEME}. Pass overrides to change any field; the returned `api` is a
670
+ * {@link MockApiClient} recording every call, and `logs` collects every `ctx.log(...)`.
671
+ *
672
+ * `docs` and `feeds` are real doubles ({@link makeMockDocs}, {@link makeMockFeeds}), because every plugin
673
+ * has both — the empty ones give a component nothing to render, which is the case worth defaulting to.
319
674
  *
320
- * `episodeLabels` is deliberately **absent** by default, and `schema` and `blobs` are **`null`**. All three
321
- * are optional on the real context — the host supplies labels partially, and gives a plugin no schema and
322
- * no blob store unless its manifest declares them — so a component that needs any of them has to survive
323
- * its absence. The mock makes you face that unless you pass one in ({@link makeMockSchema},
324
- * {@link makeMockBlobs}).
675
+ * `episodeLabels` is deliberately **absent** by default, and `schema`, `blobs` and `tags` are **`null`**.
676
+ * All four are optional on the real context — the host supplies labels partially, and gives a plugin no
677
+ * schema, no blob store and no tag surface unless its manifest declares them — so a component that needs
678
+ * any of them has to survive its absence. The mock makes you face that unless you pass one in
679
+ * ({@link makeMockSchema}, {@link makeMockBlobs}, {@link makeMockTags}).
325
680
  *
326
681
  * **`route` is the one override that merges** rather than replacing: `route: { path: 'kraken' }` pins the
327
682
  * subpath and keeps the recording `navigate`. Everything else is all-or-nothing, because everything else
@@ -342,6 +697,14 @@ export function makeMockCtx(overrides = {}) {
342
697
  episodes: [],
343
698
  user: null,
344
699
  api: mockApi,
700
+ // Real doubles rather than null: every plugin has a doc store and every plugin can read snapshots,
701
+ // so there is no "declared it or not" case for a component to handle here.
702
+ docs: makeMockDocs(),
703
+ feeds: makeMockFeeds(),
704
+ // Null, like schema and blobs: `ctx.tags` exists only for a plugin whose manifest declares a `tags`
705
+ // block, and a component written against a context that always has one breaks on every plugin that
706
+ // does not.
707
+ tags: null,
345
708
  // Null, not a client: a plugin only has one if its manifest declares `storage.schema`, and a
346
709
  // component written against a schema that is always there never handles the doc-store case.
347
710
  schema: null,
@@ -361,6 +724,10 @@ export function makeMockCtx(overrides = {}) {
361
724
  player: { currentTime: () => 0, seekTo: () => { }, on: () => noop },
362
725
  route: {
363
726
  path: '',
727
+ // Parsed like the host's, and empty by default — a component reading a filter off the query has to
728
+ // survive arriving without one, which is how a visitor first reaches the page.
729
+ query: new URLSearchParams(),
730
+ hash: '',
364
731
  onChange: () => noop,
365
732
  // Recorded rather than applied: the double has no router and no URL, so `path` does not move.
366
733
  // Assert on `navigations`; drive a route change by rendering again with a different `path`.
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mosaicast/plugin-sdk",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Versioned plugin contract for Mosaicast: the frontend PluginContext types, a Web Component base helper, an i18n helper, plus a test kit under the /testing subpath.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {