@refrakt-md/media 0.34.0 → 0.36.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,eAAO,MAAM,KAAK,EAAE,MAmEnB,CAAC;AAEF,eAAe,KAAK,CAAC;AAErB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,eAAO,MAAM,KAAK,EAAE,MA+EnB,CAAC;AAEF,eAAe,KAAK,CAAC;AAErB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { config } from './config.js';
5
5
  export const media = {
6
6
  name: 'media',
7
7
  displayName: 'Media',
8
- version: '0.34.0',
8
+ version: '0.36.0',
9
9
  runes: {
10
10
  playlist: {
11
11
  transform: playlist,
@@ -26,14 +26,23 @@ export const media = {
26
26
  '- **${6:Track Two}** (${7:4:20})',
27
27
  '{% /playlist %}',
28
28
  ],
29
- fixture: `{% playlist type="album" artist="Pink Floyd" %}
29
+ // WORK-569 — the fixture is also the review surface for `playlistSchema`
30
+ // (`refrakt inspect playlist`), so it exercises every source the child
31
+ // row names: a date, a per-track link, and one `{% track %}` child,
32
+ // which is the only form that can carry a position.
33
+ fixture: `{% playlist type="album" artist="Pink Floyd" media-position="start" %}
34
+ ![Cover](/images/dsotm.jpg)
35
+
36
+ ---
37
+
30
38
  # The Dark Side of the Moon
31
39
 
32
- ![Cover](/images/dsotm.jpg)
40
+ 1. **Speak to Me** (1:13) — March 1973
41
+ 2. **[Breathe](/tracks/breathe)** (2:43) — March 1973
33
42
 
34
- 1. **Speak to Me** (1:13)
35
- 2. **Breathe** (2:43)
36
- 3. **On the Run** (3:36)
43
+ {% track number=3 duration="3:36" date="March 1973" url="/tracks/on-the-run" %}
44
+ # On the Run
45
+ {% /track %}
37
46
  {% /playlist %}`,
38
47
  },
39
48
  track: {
@@ -48,7 +57,10 @@ export const media = {
48
57
  '# ${4:Track Name}',
49
58
  '{% /track %}',
50
59
  ],
51
- fixture: `{% track src="/audio/breathe.mp3" artist="Pink Floyd" duration="PT2M43S" %}
60
+ // WORK-569 — every source `trackSchema`'s rows name, so
61
+ // `refrakt inspect track --type=all` reviews a fully resolved row rather
62
+ // than one the example happens not to exercise.
63
+ fixture: `{% track src="/audio/breathe.mp3" artist="Pink Floyd" duration="PT2M43S" number=2 date="March 1973" url="/tracks/breathe" %}
52
64
  Breathe
53
65
  {% /track %}`,
54
66
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAW;IAC5B,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,OAAO;IACpB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE;QACN,QAAQ,EAAE;YACT,SAAS,EAAE,QAAQ;YACnB,4EAA4E;YAC5E,2EAA2E;YAC3E,6EAA6E;YAC7E,0EAA0E;YAC1E,2EAA2E;YAC3E,OAAO,EAAE,CAAC,gBAAgB,CAAC;YAC3B,WAAW,EAAE,mEAAmE;YAChF,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE;gBACR,qFAAqF;gBACrF,sBAAsB;gBACtB,EAAE;gBACF,kCAAkC;gBAClC,kCAAkC;gBAClC,iBAAiB;aACjB;YACD,OAAO,EAAE;;;;;;;;gBAQI;SACb;QACD,KAAK,EAAE;YACN,SAAS,EAAE,KAAK;YAChB,iFAAiF;YACjF,OAAO,EAAE,CAAC,iBAAiB,CAAC;YAC5B,WAAW,EAAE,wEAAwE;YACrF,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE;gBACR,4EAA4E;gBAC5E,mBAAmB;gBACnB,cAAc;aACd;YACD,OAAO,EAAE;;aAEC;SACV;QACD,KAAK,EAAE;YACN,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,CAAC,sDAAsD,CAAC;YACjE,OAAO,EAAE;;;;;;aAMC;SACV;KACD;IACD,KAAK,EAAE;QACN,KAAK,EAAE,MAA4D;KACnE;CACD,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAW;IAC5B,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,OAAO;IACpB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE;QACN,QAAQ,EAAE;YACT,SAAS,EAAE,QAAQ;YACnB,4EAA4E;YAC5E,2EAA2E;YAC3E,6EAA6E;YAC7E,0EAA0E;YAC1E,2EAA2E;YAC3E,OAAO,EAAE,CAAC,gBAAgB,CAAC;YAC3B,WAAW,EAAE,mEAAmE;YAChF,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE;gBACR,qFAAqF;gBACrF,sBAAsB;gBACtB,EAAE;gBACF,kCAAkC;gBAClC,kCAAkC;gBAClC,iBAAiB;aACjB;YACD,yEAAyE;YACzE,uEAAuE;YACvE,oEAAoE;YACpE,oDAAoD;YACpD,OAAO,EAAE;;;;;;;;;;;;;gBAaI;SACb;QACD,KAAK,EAAE;YACN,SAAS,EAAE,KAAK;YAChB,iFAAiF;YACjF,OAAO,EAAE,CAAC,iBAAiB,CAAC;YAC5B,WAAW,EAAE,wEAAwE;YACrF,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE;gBACR,4EAA4E;gBAC5E,mBAAmB;gBACnB,cAAc;aACd;YACD,wDAAwD;YACxD,yEAAyE;YACzE,gDAAgD;YAChD,OAAO,EAAE;;aAEC;SACV;QACD,KAAK,EAAE;YACN,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,CAAC,sDAAsD,CAAC;YACjE,OAAO,EAAE;;;;;;aAMC;SACV;KACD;IACD,KAAK,EAAE;QACN,KAAK,EAAE,MAA4D;KACnE;CACD,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -1,4 +1,141 @@
1
1
  import Markdoc from '@markdoc/markdoc';
2
+ export declare const playlistSchema: {
3
+ by: string;
4
+ rows: {
5
+ album: {
6
+ type: string;
7
+ properties: {
8
+ headline: string;
9
+ mediaImage: string;
10
+ artist: string;
11
+ };
12
+ lists: string[];
13
+ children: {
14
+ track: {
15
+ type: string;
16
+ property: string;
17
+ properties: {
18
+ readonly 'track-name': "name";
19
+ readonly 'track-artist': "byArtist";
20
+ readonly duration: "duration";
21
+ readonly 'track-meta': "datePublished";
22
+ readonly url: "url";
23
+ readonly position: "position";
24
+ };
25
+ };
26
+ };
27
+ };
28
+ mix: {
29
+ type: string;
30
+ properties: {
31
+ headline: string;
32
+ mediaImage: string;
33
+ artist: string;
34
+ };
35
+ lists: string[];
36
+ children: {
37
+ track: {
38
+ type: string;
39
+ property: string;
40
+ properties: {
41
+ readonly 'track-name': "name";
42
+ readonly 'track-artist': "byArtist";
43
+ readonly duration: "duration";
44
+ readonly 'track-meta': "datePublished";
45
+ readonly url: "url";
46
+ readonly position: "position";
47
+ };
48
+ };
49
+ };
50
+ };
51
+ podcast: {
52
+ type: string;
53
+ properties: {
54
+ headline: string;
55
+ mediaImage: string;
56
+ };
57
+ lists: string[];
58
+ children: {
59
+ track: {
60
+ type: string;
61
+ property: string;
62
+ properties: {
63
+ readonly 'track-name': "name";
64
+ readonly duration: "duration";
65
+ readonly 'track-meta': "datePublished";
66
+ readonly url: "url";
67
+ readonly position: "position";
68
+ };
69
+ };
70
+ };
71
+ };
72
+ audiobook: {
73
+ type: string;
74
+ properties: {
75
+ headline: string;
76
+ mediaImage: string;
77
+ };
78
+ lists: string[];
79
+ children: {
80
+ track: {
81
+ type: string;
82
+ property: string;
83
+ properties: {
84
+ readonly 'track-name': "name";
85
+ readonly duration: "duration";
86
+ readonly 'track-meta': "datePublished";
87
+ readonly url: "url";
88
+ readonly position: "position";
89
+ };
90
+ };
91
+ };
92
+ };
93
+ series: {
94
+ type: string;
95
+ properties: {
96
+ headline: string;
97
+ mediaImage: string;
98
+ };
99
+ lists: string[];
100
+ children: {
101
+ track: {
102
+ type: string;
103
+ property: string;
104
+ properties: {
105
+ readonly 'track-name': "name";
106
+ readonly duration: "duration";
107
+ readonly 'track-meta': "datePublished";
108
+ readonly url: "url";
109
+ readonly position: "position";
110
+ };
111
+ };
112
+ };
113
+ };
114
+ };
115
+ fallback: {
116
+ type: string;
117
+ properties: {
118
+ headline: string;
119
+ mediaImage: string;
120
+ artist: string;
121
+ };
122
+ lists: string[];
123
+ children: {
124
+ track: {
125
+ type: string;
126
+ property: string;
127
+ properties: {
128
+ readonly 'track-name': "name";
129
+ readonly 'track-artist': "byArtist";
130
+ readonly duration: "duration";
131
+ readonly 'track-meta': "datePublished";
132
+ readonly url: "url";
133
+ readonly position: "position";
134
+ };
135
+ };
136
+ };
137
+ };
138
+ };
2
139
  export declare const playlistSections: {
3
140
  readonly preamble: "preamble";
4
141
  readonly headline: "title";
@@ -1 +1 @@
1
- {"version":3,"file":"playlist.d.ts","sourceRoot":"","sources":["../../src/tags/playlist.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AA2BvC,eAAO,MAAM,gBAAgB;;;;;;CAMnB,CAAC;AACX,eAAO,MAAM,kBAAkB;;CAA8B,CAAC;AAE9D,eAAO,MAAM,QAAQ,gBA0RnB,CAAC"}
1
+ {"version":3,"file":"playlist.d.ts","sourceRoot":"","sources":["../../src/tags/playlist.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AA+FvC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa1B,CAAC;AAUF,eAAO,MAAM,gBAAgB;;;;;;CAMnB,CAAC;AACX,eAAO,MAAM,kBAAkB;;CAA8B,CAAC;AAE9D,eAAO,MAAM,QAAQ,gBA4UnB,CAAC"}
@@ -2,8 +2,92 @@ import Markdoc from '@markdoc/markdoc';
2
2
  const { Tag } = Markdoc;
3
3
  import { createContentModelSchema, createComponentRenderable, asNodes, pageSectionProperties, RenderableNodeCursor, SplitLayoutModel, buildLayoutMetas, extractMediaImage, } from '@refrakt-md/runes';
4
4
  import { parseDuration } from '../duration.js';
5
+ import { TYPE_IMPLICIT } from './track.js';
5
6
  const playlistType = ['album', 'podcast', 'audiobook', 'series', 'mix'];
7
+ /**
8
+ * The track kind a playlist gives a nested `{% track %}` that states none
9
+ * (WORK-572). The parent retypes its children; a child never declares its
10
+ * context (SPEC-130 D9), and Markdoc's bottom-up transform order means a child
11
+ * could not see its parent even if it wanted to.
12
+ */
13
+ const CHILD_KIND = {
14
+ album: 'song',
15
+ mix: 'song',
16
+ podcast: 'episode',
17
+ audiobook: 'chapter',
18
+ series: 'episode',
19
+ };
6
20
  const contentType = ['auto', 'lyrics', 'chapters'];
21
+ /**
22
+ * SPEC-130 / WORK-569 — the driving case, and the other half of BUG-013.
23
+ *
24
+ * `playlist` declared five kinds and published `MusicPlaylist` with
25
+ * `MusicRecording` items for every one of them, so `{% playlist type="podcast" %}`
26
+ * announced a podcast as a music playlist whose episodes were music recordings.
27
+ * The rune already knew what its content was and emitted the wrong schema anyway.
28
+ *
29
+ * | `type` | was | is |
30
+ * |-------------|-------------------------|--------------------------------|
31
+ * | `album` | `MusicPlaylist`/`track` | `MusicAlbum`/`track` |
32
+ * | `mix` | `MusicPlaylist`/`track` | unchanged |
33
+ * | `podcast` | `MusicPlaylist`/`track` | `PodcastSeries`/`hasPart` |
34
+ * | `audiobook` | `MusicPlaylist`/`track` | `Audiobook`/`hasPart` |
35
+ * | `series` | `MusicPlaylist`/`track` | `CreativeWorkSeries`/`hasPart` |
36
+ *
37
+ * **A child row is a type and a property map, not a type alone.** Retyping the
38
+ * item and leaving its stamps would put `byArtist` on a `PodcastEpisode`, which
39
+ * does not have that property — worse than the `MusicRecording` it replaced,
40
+ * which was at least coherently wrong. So the parent's map is the whole truth
41
+ * for a child it retypes, and the applier clears what it does not name.
42
+ *
43
+ * `Chapter` for an `Audiobook` and `CreativeWork` for a `CreativeWorkSeries` are
44
+ * the rows worth a second opinion. Nothing validates them (D5) — read them in
45
+ * `refrakt inspect playlist --type=all` and disagree there.
46
+ */
47
+ const MUSIC_ITEM = {
48
+ 'track-name': 'name',
49
+ 'track-artist': 'byArtist',
50
+ duration: 'duration',
51
+ 'track-meta': 'datePublished',
52
+ url: 'url',
53
+ position: 'position',
54
+ };
55
+ // Everything but the artist: `byArtist` is a `MusicRecording` property, and a
56
+ // series carries its publisher rather than each item doing so.
57
+ const SPOKEN_ITEM = {
58
+ 'track-name': 'name',
59
+ duration: 'duration',
60
+ 'track-meta': 'datePublished',
61
+ url: 'url',
62
+ position: 'position',
63
+ };
64
+ const musicRow = (type) => ({
65
+ type,
66
+ properties: { headline: 'name', mediaImage: 'image', artist: 'byArtist' },
67
+ lists: ['track'],
68
+ children: { track: { type: 'MusicRecording', property: 'track', properties: MUSIC_ITEM } },
69
+ });
70
+ const spokenRow = (type, itemType) => ({
71
+ type,
72
+ // No `byArtist` here either, for the same reason it is absent from the item.
73
+ properties: { headline: 'name', mediaImage: 'image' },
74
+ lists: ['hasPart'],
75
+ children: { track: { type: itemType, property: 'hasPart', properties: SPOKEN_ITEM } },
76
+ });
77
+ export const playlistSchema = {
78
+ by: 'type',
79
+ rows: {
80
+ album: musicRow('MusicAlbum'),
81
+ mix: musicRow('MusicPlaylist'),
82
+ podcast: spokenRow('PodcastSeries', 'PodcastEpisode'),
83
+ audiobook: spokenRow('Audiobook', 'Chapter'),
84
+ series: spokenRow('CreativeWorkSeries', 'CreativeWork'),
85
+ },
86
+ // The attribute defaults to `album` in the transform, so the absent case is
87
+ // an album — and `MusicAlbum`, a subtype of `MusicPlaylist`, has been
88
+ // available and unused the whole time.
89
+ fallback: musicRow('MusicAlbum'),
90
+ };
7
91
  // SPEC-125 Phase 2 — join tables the rune declares about itself. Referenced
8
92
  // from the theme config rather than owned by it: a theme may not redefine
9
93
  // what a section *is* (ADR-028).
@@ -21,6 +105,7 @@ export const playlistSections = {
21
105
  };
22
106
  export const playlistMediaSlots = { media: 'cover' };
23
107
  export const playlist = createContentModelSchema({
108
+ schema: playlistSchema,
24
109
  sections: playlistSections,
25
110
  provides: ['prose'],
26
111
  mediaSlots: playlistMediaSlots,
@@ -85,8 +170,14 @@ export const playlist = createContentModelSchema({
85
170
  description: 'Playlist description',
86
171
  },
87
172
  {
173
+ // WORK-572 — `tag:track` alongside `list` so the composition the
174
+ // docs promise works. Greedy because the two forms may alternate,
175
+ // and greedy collection is *consecutive*: prose between two tracks
176
+ // ends the run and pushes the rest to `body`. Documented on the
177
+ // rune page rather than left for an author to discover.
88
178
  name: 'tracks',
89
- match: 'list',
179
+ match: 'list|tag:track',
180
+ greedy: true,
90
181
  optional: false,
91
182
  description: 'Track listing',
92
183
  template: '- **Track Name** (3:45)\n- **Another Track** (4:20)',
@@ -152,18 +243,26 @@ export const playlist = createContentModelSchema({
152
243
  const duration = track.duration ?? '';
153
244
  const date = track.date?.trim() ?? '';
154
245
  const cuePoints = track.cuePoints ?? [];
155
- const trackNameTag = new Tag('span', { 'data-name': 'track-name', property: 'name' }, [name]);
246
+ // WORK-569 — no `property=` here any more: `playlistSchema`'s child row
247
+ // stamps both populations, so the list form and a nested `{% track %}`
248
+ // take the same mapping instead of one being declared and one written
249
+ // out by hand.
250
+ const trackNameTag = new Tag('span', { 'data-name': 'track-name' }, [name]);
156
251
  const trackChildrenArr = [trackNameTag];
157
252
  if (artist) {
158
- trackChildrenArr.push(new Tag('span', { 'data-name': 'track-artist', property: 'byArtist' }, [artist]));
253
+ trackChildrenArr.push(new Tag('span', { 'data-name': 'track-artist' }, [artist]));
159
254
  }
160
255
  if (duration) {
161
256
  trackChildrenArr.push(new Tag('span', { 'data-name': 'track-duration' }, [duration]));
162
257
  const durationSeconds = parseDuration(duration);
163
- trackChildrenArr.push(new Tag('meta', { property: 'duration', content: `PT${durationSeconds}S` }));
258
+ // Named `duration`, matching what `{% track %}` calls its ISO carrier,
259
+ // so one source reaches both forms. `track-duration` beside it is the
260
+ // *rendered* value ("3:45") and stays unmapped — publishing that as a
261
+ // schema.org duration is what naming them apart prevents.
262
+ trackChildrenArr.push(new Tag('meta', { 'data-name': 'duration', content: `PT${durationSeconds}S` }));
164
263
  }
165
264
  if (date) {
166
- trackChildrenArr.push(new Tag('span', { 'data-name': 'track-meta', property: 'datePublished' }, [date]));
265
+ trackChildrenArr.push(new Tag('span', { 'data-name': 'track-meta' }, [date]));
167
266
  }
168
267
  // Build cue point elements
169
268
  if (cuePoints.length > 0) {
@@ -171,12 +270,51 @@ export const playlist = createContentModelSchema({
171
270
  if (cueListTag)
172
271
  trackChildrenArr.push(cueListTag);
173
272
  }
174
- const trackAttrs = { typeof: 'MusicRecording' };
273
+ // No `typeof` either — the child row types these. A list item states no
274
+ // kind of its own, so the parent is the only authority on what it is.
275
+ const trackAttrs = {};
175
276
  if (src)
176
277
  trackAttrs['data-src'] = src;
177
278
  return new Tag('li', trackAttrs, trackChildrenArr);
178
279
  });
179
- const tracksOl = new Tag('ol', { 'data-name': 'tracks' }, trackChildren);
280
+ // WORK-572 / BUG-016 — merge nested `{% track %}` children with the list
281
+ // items, in document order.
282
+ //
283
+ // `resolved.tracks` holds the matched nodes in source order; `tracksData`
284
+ // is the flat itemModel extraction across every list among them. Walking
285
+ // the nodes and consuming `tracksData` by list length is what keeps the two
286
+ // forms interleaved correctly, rather than appending one block after the
287
+ // other.
288
+ //
289
+ // Before this, a `{% track %}` inside a `{% playlist %}` fell through to the
290
+ // greedy `body` field: it rendered as an `<li>` outside any list and floated
291
+ // up as a detached top-level entity, while the docs recommended the
292
+ // composition.
293
+ const trackNodes = (contentZone.tracks ?? []);
294
+ const childKind = CHILD_KIND[playlistTypeValue] ?? 'song';
295
+ const orderedTracks = [];
296
+ let listCursor = 0;
297
+ for (const node of Array.isArray(trackNodes) ? trackNodes : [trackNodes]) {
298
+ if (!node || typeof node !== 'object')
299
+ continue;
300
+ if (node.type === 'list') {
301
+ const count = (node.children ?? []).length;
302
+ orderedTracks.push(...trackChildren.slice(listCursor, listCursor + count));
303
+ listCursor += count;
304
+ continue;
305
+ }
306
+ const transformed = new RenderableNodeCursor(Markdoc.transform([node], config))
307
+ .tag('li')
308
+ .toArray();
309
+ for (const li of transformed) {
310
+ orderedTracks.push(adoptNestedTrack(li, childKind, artistValue));
311
+ }
312
+ }
313
+ // Any list items a node walk missed (defensive: a shape the resolver
314
+ // collected but this loop did not recognise) still belong in the listing.
315
+ if (listCursor < trackChildren.length)
316
+ orderedTracks.push(...trackChildren.slice(listCursor));
317
+ const tracksOl = new Tag('ol', { 'data-name': 'tracks' }, orderedTracks);
180
318
  // Build player element (when player attribute is set)
181
319
  let playerEl = null;
182
320
  if (hasPlayer) {
@@ -242,10 +380,12 @@ export const playlist = createContentModelSchema({
242
380
  children.push(tracksOl);
243
381
  if (bodyDiv)
244
382
  children.push(bodyDiv.next());
245
- const trackItems = new RenderableNodeCursor(trackChildren);
383
+ // WORK-572 — the merged, ordered set, not just the list items: this is the
384
+ // cursor `schema: { track }` stamps `property="track"` onto, and an unstamped
385
+ // child floats up as a detached top-level entity (BUG-016 symptom 2).
386
+ const trackItems = new RenderableNodeCursor(orderedTracks);
246
387
  return createComponentRenderable({
247
388
  rune: 'playlist',
248
- schemaOrgType: 'MusicPlaylist',
249
389
  tag: 'section',
250
390
  property: 'contentSection',
251
391
  properties: {
@@ -262,17 +402,85 @@ export const playlist = createContentModelSchema({
262
402
  ...sectionProps,
263
403
  ...(bodyDiv ? { body: bodyDiv } : {}),
264
404
  media: mediaDiv,
265
- },
266
- schema: {
267
- name: sectionProps.headline,
268
- ...(seoImage ? { image: seoImage } : {}),
269
- ...(artistMeta ? { byArtist: artistMeta } : {}),
270
- track: trackItems,
405
+ // WORK-561 — see the note on `recipe`: `image` is taken by
406
+ // `sectionProps`, so the media slot's image is `mediaImage`.
407
+ ...(seoImage ? { mediaImage: seoImage } : {}),
271
408
  },
272
409
  children,
273
410
  });
274
411
  },
275
412
  });
413
+ /**
414
+ * Adopt a nested `{% track %}` into its playlist (WORK-572).
415
+ *
416
+ * Two channels, and they behave differently (SPEC-130 D9):
417
+ *
418
+ * - **`typeof` — what the child *is* — is the child's when stated, else the
419
+ * parent's child-row default.** The `TYPE_IMPLICIT` marker is how the parent
420
+ * tells those apart; without it an absent `type` and an explicit
421
+ * `type="song"` are the same value by transform time.
422
+ * - **`property` — which collection it joins — is always the parent's**, and it
423
+ * is stamped by `createComponentRenderable`'s `schema:` map further down, not
424
+ * here. `collectJsonLd` nests a typed node only when it carries both `typeof`
425
+ * and `property`, so a child the parent never stamps floats free whatever type
426
+ * it has.
427
+ *
428
+ * The artist default rides along for the same reason the type does: the list
429
+ * form does `track.artist ?? playlistArtist`, so without it the two forms would
430
+ * disagree on `byArtist` and the equivalence would be false.
431
+ */
432
+ function adoptNestedTrack(li, childKind, playlistArtist) {
433
+ if (!li || typeof li !== 'object')
434
+ return li;
435
+ if (!li[TYPE_IMPLICIT]) {
436
+ // The marker means "the author stated this type" (WORK-569), so its absence
437
+ // is what licenses adoption. The schema type is the applier's to set from
438
+ // `playlistSchema`'s child row, and the marker stays on the node for it to
439
+ // read; what is left here is the *rendered* modifier, so a podcast's nested
440
+ // track does not present itself as a song.
441
+ const raw = li.attributes['data-rune-fields'];
442
+ if (typeof raw === 'string') {
443
+ try {
444
+ const bag = JSON.parse(raw);
445
+ bag.type = childKind;
446
+ li.attributes['data-rune-fields'] = JSON.stringify(bag);
447
+ }
448
+ catch {
449
+ // A malformed bag is not this function's to repair.
450
+ }
451
+ }
452
+ for (const child of li.children ?? []) {
453
+ if (child?.name === 'meta' && child.attributes?.['data-field'] === 'type') {
454
+ child.attributes.content = childKind;
455
+ }
456
+ }
457
+ }
458
+ if (playlistArtist && !hasArtist(li)) {
459
+ // Named rather than stamped, so the child row decides whether a playlist's
460
+ // artist reaches the item at all — on a podcast or an audiobook it does
461
+ // not, because the series carries its publisher.
462
+ const artistMeta = new Markdoc.Tag('meta', {
463
+ content: playlistArtist,
464
+ 'data-name': 'track-artist',
465
+ });
466
+ li.children = [...(li.children ?? []), artistMeta];
467
+ }
468
+ return li;
469
+ }
470
+ /** Whether a track already carries its own artist. */
471
+ function hasArtist(li) {
472
+ const raw = li.attributes?.['data-rune-fields'];
473
+ if (typeof raw === 'string') {
474
+ try {
475
+ if (JSON.parse(raw).artist)
476
+ return true;
477
+ }
478
+ catch {
479
+ // fall through to the node scan
480
+ }
481
+ }
482
+ return (li.children ?? []).some((c) => c?.attributes?.property === 'byArtist' || c?.attributes?.['data-name'] === 'track-artist');
483
+ }
276
484
  /**
277
485
  * Build cue point list (chapters or lyrics) from extracted itemModel data.
278
486
  */
@@ -1 +1 @@
1
- {"version":3,"file":"playlist.js","sourceRoot":"","sources":["../../src/tags/playlist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playlist.js","sourceRoot":"","sources":["../../src/tags/playlist.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,83 @@
1
1
  import Markdoc from '@markdoc/markdoc';
2
+ /**
3
+ * Marks a track whose `type` the author **did** state (WORK-572 / WORK-569).
4
+ *
5
+ * WORK-572 introduced this the other way round, as "the author stated nothing",
6
+ * because `playlist` was the only reader and adoption was the special case.
7
+ * WORK-569 moved it into the applier and inverted it: D9's default is that a
8
+ * parent retypes its children, so what needs marking is the exception — a type
9
+ * the author wrote, which no parent may overrule.
10
+ *
11
+ * Re-exported under the old name because `playlist` also reads it to decide
12
+ * whether to adopt the *rendered* kind, which is not a schema concern.
13
+ */
14
+ export declare const TYPE_IMPLICIT: symbol;
15
+ export declare const trackSchema: {
16
+ by: string;
17
+ rows: {
18
+ song: {
19
+ type: string;
20
+ properties: {
21
+ artist: string;
22
+ name: "name";
23
+ duration: "duration";
24
+ url: "url";
25
+ position: "position";
26
+ datePublished: "datePublished";
27
+ };
28
+ };
29
+ episode: {
30
+ type: string;
31
+ properties: {
32
+ readonly name: "name";
33
+ readonly duration: "duration";
34
+ readonly url: "url";
35
+ readonly position: "position";
36
+ readonly datePublished: "datePublished";
37
+ };
38
+ };
39
+ chapter: {
40
+ type: string;
41
+ properties: {
42
+ readonly name: "name";
43
+ readonly duration: "duration";
44
+ readonly url: "url";
45
+ readonly position: "position";
46
+ readonly datePublished: "datePublished";
47
+ };
48
+ };
49
+ talk: {
50
+ type: string;
51
+ properties: {
52
+ readonly name: "name";
53
+ readonly duration: "duration";
54
+ readonly url: "url";
55
+ readonly position: "position";
56
+ readonly datePublished: "datePublished";
57
+ };
58
+ };
59
+ video: {
60
+ type: string;
61
+ properties: {
62
+ readonly name: "name";
63
+ readonly duration: "duration";
64
+ readonly url: "url";
65
+ readonly position: "position";
66
+ readonly datePublished: "datePublished";
67
+ };
68
+ };
69
+ };
70
+ fallback: {
71
+ type: string;
72
+ properties: {
73
+ artist: string;
74
+ name: "name";
75
+ duration: "duration";
76
+ url: "url";
77
+ position: "position";
78
+ datePublished: "datePublished";
79
+ };
80
+ };
81
+ };
2
82
  export declare const track: Markdoc.Schema;
3
83
  //# sourceMappingURL=track.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/tags/track.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAavC,eAAO,MAAM,KAAK,gBA+IhB,CAAC"}
1
+ {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/tags/track.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAcvC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,QAAuB,CAAC;AA+BlD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAavB,CAAC;AAEF,eAAO,MAAM,KAAK,gBA4JhB,CAAC"}
@@ -1,9 +1,65 @@
1
1
  import Markdoc from '@markdoc/markdoc';
2
2
  const { Tag } = Markdoc;
3
- import { createContentModelSchema, createComponentRenderable, asNodes, RenderableNodeCursor, } from '@refrakt-md/runes';
3
+ import { createContentModelSchema, createComponentRenderable, asNodes, RenderableNodeCursor, SCHEMA_TYPE_EXPLICIT, } from '@refrakt-md/runes';
4
4
  import { parseDuration, formatDuration } from '../duration.js';
5
5
  const trackType = ['song', 'episode', 'chapter', 'talk', 'video'];
6
+ /**
7
+ * Marks a track whose `type` the author **did** state (WORK-572 / WORK-569).
8
+ *
9
+ * WORK-572 introduced this the other way round, as "the author stated nothing",
10
+ * because `playlist` was the only reader and adoption was the special case.
11
+ * WORK-569 moved it into the applier and inverted it: D9's default is that a
12
+ * parent retypes its children, so what needs marking is the exception — a type
13
+ * the author wrote, which no parent may overrule.
14
+ *
15
+ * Re-exported under the old name because `playlist` also reads it to decide
16
+ * whether to adopt the *rendered* kind, which is not a schema concern.
17
+ */
18
+ export const TYPE_IMPLICIT = SCHEMA_TYPE_EXPLICIT;
19
+ /**
20
+ * SPEC-130 / WORK-569 — `track` keys off the enum its author already set.
21
+ *
22
+ * The rune declared five kinds and emitted `MusicRecording` for all of them, so
23
+ * `{% track type="episode" %}` published a podcast episode as a music
24
+ * recording. Half of BUG-013; `playlist` is the other half, and the two tables
25
+ * are independent — neither rune declares anything about the other (D9).
26
+ *
27
+ * **`byArtist` is on the music row only.** It belongs to `MusicRecording`; a
28
+ * `PodcastEpisode`, `Chapter`, `CreativeWork` or `VideoObject` does not have it,
29
+ * and carrying it across would be worse than the type it replaced, which was at
30
+ * least coherently wrong. Mapping the artist to `author` on those rows is
31
+ * arguable and deliberately not done here: `author` expects a Person or
32
+ * Organization and the value is a bare string, so it is a new claim rather than
33
+ * a relocation. Nothing checks either judgement (D5) — read the row in
34
+ * `refrakt inspect` and disagree there.
35
+ *
36
+ * `talk` is the row with no obvious type. `CreativeWork` is the honest answer:
37
+ * schema.org has no talk, and `PresentationDigitalDocument` describes the slides
38
+ * rather than the talk.
39
+ */
40
+ const trackCommon = {
41
+ name: 'name',
42
+ duration: 'duration',
43
+ url: 'url',
44
+ position: 'position',
45
+ datePublished: 'datePublished',
46
+ };
47
+ export const trackSchema = {
48
+ by: 'type',
49
+ rows: {
50
+ song: { type: 'MusicRecording', properties: { ...trackCommon, artist: 'byArtist' } },
51
+ episode: { type: 'PodcastEpisode', properties: trackCommon },
52
+ chapter: { type: 'Chapter', properties: trackCommon },
53
+ talk: { type: 'CreativeWork', properties: trackCommon },
54
+ video: { type: 'VideoObject', properties: trackCommon },
55
+ },
56
+ // A standalone track with no stated kind is a song, matching the `'song'`
57
+ // fallback the transform has always used. Nested, the marker above lets its
58
+ // playlist replace this.
59
+ fallback: { type: 'MusicRecording', properties: { ...trackCommon, artist: 'byArtist' } },
60
+ };
6
61
  export const track = createContentModelSchema({
62
+ schema: trackSchema,
7
63
  attributes: {
8
64
  src: {
9
65
  type: String,
@@ -56,7 +112,14 @@ export const track = createContentModelSchema({
56
112
  const number = attrs.number;
57
113
  const date = attrs.date ?? '';
58
114
  const url = attrs.url ?? '';
59
- const typeValue = attrs.type ?? 'song';
115
+ // WORK-572 — an absent `type` and an explicit `type="song"` must stay
116
+ // distinguishable. Coalescing here made them identical by transform time,
117
+ // so "no explicit type → inherit the playlist's" could never fire. The
118
+ // `'song'` default is now the *standalone* fallback only; a nested track
119
+ // with no explicit type is retyped by its parent (SPEC-130 D9 — the parent
120
+ // retypes its children; a child never declares its context).
121
+ const explicitType = attrs.type;
122
+ const typeValue = explicitType ?? 'song';
60
123
  // Transform title
61
124
  const titleNodes = new RenderableNodeCursor(Markdoc.transform(asNodes(resolved.title), config));
62
125
  // Extract track name from title heading or paragraph
@@ -106,15 +169,24 @@ export const track = createContentModelSchema({
106
169
  const urlMeta = url ? new Tag('meta', { content: url }) : undefined;
107
170
  const numberMeta = number !== undefined ? new Tag('meta', { content: String(number) }) : undefined;
108
171
  const dateMeta = date ? new Tag('meta', { content: date }) : undefined;
172
+ // WORK-572 — `artistMeta` and `durationMeta` were declared in `properties`
173
+ // and `schema` but never pushed here, so they were stamped onto nodes that
174
+ // were not in the tree: a standalone `{% track artist="Radiohead"
175
+ // duration="4:01" %}` published its name and nothing else. The visible
176
+ // `track-artist` / `track-duration` spans carry no `property=`, so
177
+ // `collectProperties` never saw a value either.
178
+ if (artistMeta)
179
+ children.push(artistMeta);
180
+ if (durationMeta)
181
+ children.push(durationMeta);
109
182
  if (urlMeta)
110
183
  children.push(urlMeta);
111
184
  if (numberMeta)
112
185
  children.push(numberMeta);
113
186
  if (dateMeta)
114
187
  children.push(dateMeta);
115
- return createComponentRenderable({
188
+ const renderable = createComponentRenderable({
116
189
  rune: 'track',
117
- schemaOrgType: 'MusicRecording',
118
190
  tag: 'li',
119
191
  properties: {
120
192
  name: nameTag,
@@ -125,16 +197,14 @@ export const track = createContentModelSchema({
125
197
  ...(dateMeta ? { datePublished: dateMeta } : {}),
126
198
  type: typeMeta,
127
199
  },
128
- schema: {
129
- name: nameTag,
130
- ...(artistMeta ? { byArtist: artistMeta } : {}),
131
- ...(durationMeta ? { duration: durationMeta } : {}),
132
- ...(urlMeta ? { url: urlMeta } : {}),
133
- ...(numberMeta ? { position: numberMeta } : {}),
134
- ...(dateMeta ? { datePublished: dateMeta } : {}),
135
- },
136
200
  children,
137
201
  });
202
+ // `rootAttrs` was assembled and then never applied, so `src` was dropped on
203
+ // a standalone track — the audio file the author pointed at reached nothing.
204
+ Object.assign(renderable.attributes, rootAttrs);
205
+ if (explicitType !== undefined)
206
+ renderable[TYPE_IMPLICIT] = true;
207
+ return renderable;
138
208
  },
139
209
  });
140
210
  function extractText(tag) {
@@ -1 +1 @@
1
- {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/tags/track.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/tags/track.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,OAAO,EACP,oBAAoB,EACpB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,GAAG;IACnB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QACpF,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE;QAC5D,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE;QACrD,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE;QACvD,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE;KACvD;IACD,0EAA0E;IAC1E,4EAA4E;IAC5E,yBAAyB;IACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;CACxF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,wBAAwB,CAAC;IAC7C,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE;QACX,GAAG,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,gDAAgD;SAC7D;QACD,MAAM,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,2CAA2C;SACxD;QACD,QAAQ,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,6DAA6D;SAC1E;QACD,MAAM,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,qDAAqD;SAClE;QACD,IAAI,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,4CAA4C;SACzD;QACD,GAAG,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,gEAAgE;SAC7E;QACD,IAAI,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE;YAC1B,WAAW,EAAE,yDAAyD;SACtE;KACD;IACD,YAAY,EAAE;QACb,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;SAC5D;KACD;IACD,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;QAChC,MAAM,GAAG,GAAI,KAAK,CAAC,GAAc,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAI,KAAK,CAAC,MAAiB,IAAI,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAmB,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B,CAAC;QAClD,MAAM,IAAI,GAAI,KAAK,CAAC,IAAe,IAAI,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAI,KAAK,CAAC,GAAc,IAAI,EAAE,CAAC;QACxC,sEAAsE;QACtE,0EAA0E;QAC1E,uEAAuE;QACvE,yEAAyE;QACzE,2EAA2E;QAC3E,6DAA6D;QAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,IAA0B,CAAC;QACtD,MAAM,SAAS,GAAG,YAAY,IAAI,MAAM,CAAC;QAEzC,kBAAkB;QAClB,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAC1C,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAyB,CAC1E,CAAC;QAEF,qDAAqD;QACrD,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;gBAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,oBAAoB,CACzC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAyB,CACzE,CAAC;QAEF,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAU,CAAC,OAAO,CAAC,CAAC;QAElC,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAI,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC1C,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC,CAAC,QAAQ,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACV,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,mBAAmB;QACnB,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,IAAI,GAAG;YAAE,SAAS,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QAErC,MAAM,YAAY,GAAG,QAAQ;YAC5B,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;gBAChB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC,GAAG;aAC/E,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,MAAM,UAAU,GACf,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,2EAA2E;QAC3E,2EAA2E;QAC3E,kEAAkE;QAClE,uEAAuE;QACvE,mEAAmE;QACnE,gDAAgD;QAChD,IAAI,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,YAAY;YAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtC,MAAM,UAAU,GAAG,yBAAyB,CAAC;YAC5C,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,IAAI;YACT,UAAU,EAAE;gBACX,IAAI,EAAE,OAAO;gBACb,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,IAAI,EAAE,QAAQ;aACd;YACD,QAAQ;SACR,CAAC,CAAC;QAEH,4EAA4E;QAC5E,6EAA6E;QAC7E,MAAM,CAAC,MAAM,CAAE,UAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,YAAY,KAAK,SAAS;YAAG,UAAkB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAC1E,OAAO,UAAU,CAAC;IACnB,CAAC;CACD,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,GAAQ;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@refrakt-md/media",
3
3
  "description": "Media runes for refrakt.md — music playlists and recordings",
4
- "version": "0.34.0",
4
+ "version": "0.36.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -21,9 +21,9 @@
21
21
  "build": "tsc"
22
22
  },
23
23
  "dependencies": {
24
- "@refrakt-md/types": "0.34.0",
25
- "@refrakt-md/transform": "0.34.0",
26
- "@refrakt-md/runes": "0.34.0",
24
+ "@refrakt-md/types": "0.36.0",
25
+ "@refrakt-md/transform": "0.36.0",
26
+ "@refrakt-md/runes": "0.36.0",
27
27
  "@markdoc/markdoc": "0.4.0",
28
28
  "iso8601-duration": "2.1.2",
29
29
  "reflect-metadata": "^0.2.0"