@forumulate/cli 0.4.0 → 0.8.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.
Files changed (229) hide show
  1. package/README.md +116 -5
  2. package/dist/api/args.d.ts +21 -0
  3. package/dist/api/args.d.ts.map +1 -0
  4. package/dist/api/args.js +81 -0
  5. package/dist/api/args.js.map +1 -0
  6. package/dist/api/command.d.ts +17 -0
  7. package/dist/api/command.d.ts.map +1 -0
  8. package/dist/api/command.js +182 -0
  9. package/dist/api/command.js.map +1 -0
  10. package/dist/api/describe.d.ts +5 -0
  11. package/dist/api/describe.d.ts.map +1 -0
  12. package/dist/api/describe.js +121 -0
  13. package/dist/api/describe.js.map +1 -0
  14. package/dist/api/http.d.ts +81 -0
  15. package/dist/api/http.d.ts.map +1 -0
  16. package/dist/api/http.js +183 -0
  17. package/dist/api/http.js.map +1 -0
  18. package/dist/api/operations.json +1 -0
  19. package/dist/api/output.d.ts +35 -0
  20. package/dist/api/output.d.ts.map +1 -0
  21. package/dist/api/output.js +176 -0
  22. package/dist/api/output.js.map +1 -0
  23. package/dist/api/request.d.ts +37 -0
  24. package/dist/api/request.d.ts.map +1 -0
  25. package/dist/api/request.js +230 -0
  26. package/dist/api/request.js.map +1 -0
  27. package/dist/api/send.d.ts +35 -0
  28. package/dist/api/send.d.ts.map +1 -0
  29. package/dist/api/send.js +85 -0
  30. package/dist/api/send.js.map +1 -0
  31. package/dist/api/spec.d.ts +96 -0
  32. package/dist/api/spec.d.ts.map +1 -0
  33. package/dist/api/spec.js +126 -0
  34. package/dist/api/spec.js.map +1 -0
  35. package/dist/cli.js +12 -0
  36. package/dist/cli.js.map +1 -1
  37. package/dist/commands/completion.d.ts +12 -0
  38. package/dist/commands/completion.d.ts.map +1 -0
  39. package/dist/commands/completion.js +153 -0
  40. package/dist/commands/completion.js.map +1 -0
  41. package/dist/commands/config.d.ts +33 -0
  42. package/dist/commands/config.d.ts.map +1 -0
  43. package/dist/commands/config.js +144 -0
  44. package/dist/commands/config.js.map +1 -0
  45. package/dist/commands/context.d.ts +35 -0
  46. package/dist/commands/context.d.ts.map +1 -0
  47. package/dist/commands/context.js +59 -0
  48. package/dist/commands/context.js.map +1 -0
  49. package/dist/commands/groups-api.d.ts +11 -0
  50. package/dist/commands/groups-api.d.ts.map +1 -0
  51. package/dist/commands/groups-api.js +140 -0
  52. package/dist/commands/groups-api.js.map +1 -0
  53. package/dist/commands/groups-community.d.ts +15 -0
  54. package/dist/commands/groups-community.d.ts.map +1 -0
  55. package/dist/commands/groups-community.js +344 -0
  56. package/dist/commands/groups-community.js.map +1 -0
  57. package/dist/commands/groups-content.d.ts +10 -0
  58. package/dist/commands/groups-content.d.ts.map +1 -0
  59. package/dist/commands/groups-content.js +331 -0
  60. package/dist/commands/groups-content.js.map +1 -0
  61. package/dist/commands/groups-docs.d.ts +12 -0
  62. package/dist/commands/groups-docs.d.ts.map +1 -0
  63. package/dist/commands/groups-docs.js +414 -0
  64. package/dist/commands/groups-docs.js.map +1 -0
  65. package/dist/commands/groups-org.d.ts +10 -0
  66. package/dist/commands/groups-org.d.ts.map +1 -0
  67. package/dist/commands/groups-org.js +405 -0
  68. package/dist/commands/groups-org.js.map +1 -0
  69. package/dist/commands/groups-site.d.ts +3 -0
  70. package/dist/commands/groups-site.d.ts.map +1 -0
  71. package/dist/commands/groups-site.js +230 -0
  72. package/dist/commands/groups-site.js.map +1 -0
  73. package/dist/commands/groups-spaces.d.ts +3 -0
  74. package/dist/commands/groups-spaces.d.ts.map +1 -0
  75. package/dist/commands/groups-spaces.js +273 -0
  76. package/dist/commands/groups-spaces.js.map +1 -0
  77. package/dist/commands/groups-types.d.ts +3 -0
  78. package/dist/commands/groups-types.d.ts.map +1 -0
  79. package/dist/commands/groups-types.js +251 -0
  80. package/dist/commands/groups-types.js.map +1 -0
  81. package/dist/commands/groups.d.ts +4 -0
  82. package/dist/commands/groups.d.ts.map +1 -0
  83. package/dist/commands/groups.js +71 -0
  84. package/dist/commands/groups.js.map +1 -0
  85. package/dist/commands/index.d.ts +25 -0
  86. package/dist/commands/index.d.ts.map +1 -0
  87. package/dist/commands/index.js +118 -0
  88. package/dist/commands/index.js.map +1 -0
  89. package/dist/commands/resource.d.ts +86 -0
  90. package/dist/commands/resource.d.ts.map +1 -0
  91. package/dist/commands/resource.js +314 -0
  92. package/dist/commands/resource.js.map +1 -0
  93. package/dist/content/command.d.ts +34 -0
  94. package/dist/content/command.d.ts.map +1 -0
  95. package/dist/content/command.js +225 -0
  96. package/dist/content/command.js.map +1 -0
  97. package/dist/content/library.d.ts +23 -0
  98. package/dist/content/library.d.ts.map +1 -0
  99. package/dist/content/library.js +41 -0
  100. package/dist/content/library.js.map +1 -0
  101. package/dist/content/render.d.ts +15 -0
  102. package/dist/content/render.d.ts.map +1 -0
  103. package/dist/content/render.js +85 -0
  104. package/dist/content/render.js.map +1 -0
  105. package/dist/content/types-gen.d.ts +40 -0
  106. package/dist/content/types-gen.d.ts.map +1 -0
  107. package/dist/content/types-gen.js +200 -0
  108. package/dist/content/types-gen.js.map +1 -0
  109. package/dist/help.d.ts +3 -0
  110. package/dist/help.d.ts.map +1 -0
  111. package/dist/help.js +142 -0
  112. package/dist/help.js.map +1 -0
  113. package/dist/import/coerce.d.ts +34 -0
  114. package/dist/import/coerce.d.ts.map +1 -0
  115. package/dist/import/coerce.js +134 -0
  116. package/dist/import/coerce.js.map +1 -0
  117. package/dist/import/command.d.ts +25 -0
  118. package/dist/import/command.d.ts.map +1 -0
  119. package/dist/import/command.js +127 -0
  120. package/dist/import/command.js.map +1 -0
  121. package/dist/import/config.d.ts +39 -0
  122. package/dist/import/config.d.ts.map +1 -0
  123. package/dist/import/config.js +48 -0
  124. package/dist/import/config.js.map +1 -0
  125. package/dist/import/contentful.d.ts +3 -0
  126. package/dist/import/contentful.d.ts.map +1 -0
  127. package/dist/import/contentful.js +179 -0
  128. package/dist/import/contentful.js.map +1 -0
  129. package/dist/import/disk.d.ts +4 -0
  130. package/dist/import/disk.d.ts.map +1 -0
  131. package/dist/import/disk.js +19 -0
  132. package/dist/import/disk.js.map +1 -0
  133. package/dist/import/engine-locales.d.ts +35 -0
  134. package/dist/import/engine-locales.d.ts.map +1 -0
  135. package/dist/import/engine-locales.js +61 -0
  136. package/dist/import/engine-locales.js.map +1 -0
  137. package/dist/import/engine.d.ts +29 -0
  138. package/dist/import/engine.d.ts.map +1 -0
  139. package/dist/import/engine.js +248 -0
  140. package/dist/import/engine.js.map +1 -0
  141. package/dist/import/media.d.ts +24 -0
  142. package/dist/import/media.d.ts.map +1 -0
  143. package/dist/import/media.js +39 -0
  144. package/dist/import/media.js.map +1 -0
  145. package/dist/import/model-fields.d.ts +22 -0
  146. package/dist/import/model-fields.d.ts.map +1 -0
  147. package/dist/import/model-fields.js +60 -0
  148. package/dist/import/model-fields.js.map +1 -0
  149. package/dist/import/payload/index.d.ts +9 -0
  150. package/dist/import/payload/index.d.ts.map +1 -0
  151. package/dist/import/payload/index.js +129 -0
  152. package/dist/import/payload/index.js.map +1 -0
  153. package/dist/import/report.d.ts +5 -0
  154. package/dist/import/report.d.ts.map +1 -0
  155. package/dist/import/report.js +52 -0
  156. package/dist/import/report.js.map +1 -0
  157. package/dist/import/richtext-core.d.ts +26 -0
  158. package/dist/import/richtext-core.d.ts.map +1 -0
  159. package/dist/import/richtext-core.js +65 -0
  160. package/dist/import/richtext-core.js.map +1 -0
  161. package/dist/import/richtext-html.d.ts +5 -0
  162. package/dist/import/richtext-html.d.ts.map +1 -0
  163. package/dist/import/richtext-html.js +311 -0
  164. package/dist/import/richtext-html.js.map +1 -0
  165. package/dist/import/richtext-json.d.ts +10 -0
  166. package/dist/import/richtext-json.d.ts.map +1 -0
  167. package/dist/import/richtext-json.js +250 -0
  168. package/dist/import/richtext-json.js.map +1 -0
  169. package/dist/import/sanity.d.ts +8 -0
  170. package/dist/import/sanity.d.ts.map +1 -0
  171. package/dist/import/sanity.js +158 -0
  172. package/dist/import/sanity.js.map +1 -0
  173. package/dist/import/strapi-archive.d.ts +6 -0
  174. package/dist/import/strapi-archive.d.ts.map +1 -0
  175. package/dist/import/strapi-archive.js +127 -0
  176. package/dist/import/strapi-archive.js.map +1 -0
  177. package/dist/import/strapi.d.ts +7 -0
  178. package/dist/import/strapi.d.ts.map +1 -0
  179. package/dist/import/strapi.js +185 -0
  180. package/dist/import/strapi.js.map +1 -0
  181. package/dist/import/tar.d.ts +3 -0
  182. package/dist/import/tar.d.ts.map +1 -0
  183. package/dist/import/tar.js +48 -0
  184. package/dist/import/tar.js.map +1 -0
  185. package/dist/import/types.d.ts +157 -0
  186. package/dist/import/types.d.ts.map +1 -0
  187. package/dist/import/types.js +12 -0
  188. package/dist/import/types.js.map +1 -0
  189. package/dist/import/wordpress.d.ts +15 -0
  190. package/dist/import/wordpress.d.ts.map +1 -0
  191. package/dist/import/wordpress.js +147 -0
  192. package/dist/import/wordpress.js.map +1 -0
  193. package/dist/publish/scan.d.ts +1 -1
  194. package/dist/publish/scan.d.ts.map +1 -1
  195. package/dist/publish/scan.js +2 -2
  196. package/dist/publish/scan.js.map +1 -1
  197. package/dist/publish-dir.d.ts +54 -0
  198. package/dist/publish-dir.d.ts.map +1 -0
  199. package/dist/publish-dir.js +119 -0
  200. package/dist/publish-dir.js.map +1 -0
  201. package/dist/run.d.ts +21 -1
  202. package/dist/run.d.ts.map +1 -1
  203. package/dist/run.js +70 -65
  204. package/dist/run.js.map +1 -1
  205. package/dist/translations/command.d.ts +36 -0
  206. package/dist/translations/command.d.ts.map +1 -0
  207. package/dist/translations/command.js +411 -0
  208. package/dist/translations/command.js.map +1 -0
  209. package/dist/translations/extras.d.ts +29 -0
  210. package/dist/translations/extras.d.ts.map +1 -0
  211. package/dist/translations/extras.js +123 -0
  212. package/dist/translations/extras.js.map +1 -0
  213. package/dist/translations/files.d.ts +22 -0
  214. package/dist/translations/files.d.ts.map +1 -0
  215. package/dist/translations/files.js +75 -0
  216. package/dist/translations/files.js.map +1 -0
  217. package/dist/translations/sync.d.ts +89 -0
  218. package/dist/translations/sync.d.ts.map +1 -0
  219. package/dist/translations/sync.js +215 -0
  220. package/dist/translations/sync.js.map +1 -0
  221. package/dist/translations/target.d.ts +33 -0
  222. package/dist/translations/target.d.ts.map +1 -0
  223. package/dist/translations/target.js +54 -0
  224. package/dist/translations/target.js.map +1 -0
  225. package/dist/translations/xliff.d.ts +29 -0
  226. package/dist/translations/xliff.d.ts.map +1 -0
  227. package/dist/translations/xliff.js +62 -0
  228. package/dist/translations/xliff.js.map +1 -0
  229. package/package.json +6 -4
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromLexical = fromLexical;
4
+ exports.fromPortableText = fromPortableText;
5
+ exports.fromContentful = fromContentful;
6
+ exports.fromStrapiBlocks = fromStrapiBlocks;
7
+ /**
8
+ * The structured rich-text formats to a BlockDoc: Payload's Lexical,
9
+ * Sanity's Portable Text, Contentful's rich text and Strapi's `blocks`.
10
+ *
11
+ * Each walks its own tree and writes the same few node kinds through
12
+ * ./richtext-core. A node a format has and the block model does not (an
13
+ * embedded entry, a custom Portable Text object) becomes its plain text, or
14
+ * nothing when it has none; `skipped` counts them so the report can say so
15
+ * instead of the page silently coming out shorter.
16
+ */
17
+ const richtext_core_1 = require("./richtext-core");
18
+ const isObj = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
19
+ const arr = (v) => (Array.isArray(v) ? v : []);
20
+ const str = (v) => (typeof v === 'string' ? v : undefined);
21
+ /* ------------------------------ Lexical ------------------------------ */
22
+ /** Lexical's `format` bitmask on a text node. */
23
+ const LEXICAL_FORMATS = [[1, 'bold'], [2, 'italic'], [4, 'strike'], [8, 'underline'], [16, 'code']];
24
+ function fromLexical(value, imageOf, mediaUrl = () => null) {
25
+ const root = isObj(value) && isObj(value.root) ? value.root : null;
26
+ if (!root)
27
+ return null;
28
+ const runs = (children, href) => children.flatMap((c) => {
29
+ if (!isObj(c))
30
+ return [];
31
+ if (c.type === 'linebreak')
32
+ return [{ text: '\n', marks: [] }];
33
+ if (c.type === 'text') {
34
+ const f = typeof c.format === 'number' ? c.format : 0;
35
+ return [{ text: str(c.text) ?? '', marks: LEXICAL_FORMATS.filter(([bit]) => f & bit).map(([, m]) => m), href }];
36
+ }
37
+ if (c.type === 'link' || c.type === 'autolink') {
38
+ const fields = isObj(c.fields) ? c.fields : {};
39
+ return runs(arr(c.children), (0, richtext_core_1.safeHref)(str(fields.url) ?? str(c.url)) ?? href);
40
+ }
41
+ return runs(arr(c.children), href);
42
+ });
43
+ const blocks = (nodes) => nodes.flatMap((n) => {
44
+ if (!isObj(n))
45
+ return [];
46
+ const kids = arr(n.children);
47
+ switch (n.type) {
48
+ case 'paragraph': {
49
+ const r = runs(kids);
50
+ return r.length ? [(0, richtext_core_1.paragraph)(r)] : [];
51
+ }
52
+ case 'heading':
53
+ return [(0, richtext_core_1.heading)(Number(String(n.tag ?? 'h2').slice(1)) || 2, runs(kids))];
54
+ case 'quote':
55
+ return [{ type: 'blockquote', content: [(0, richtext_core_1.paragraph)(runs(kids))] }];
56
+ case 'list':
57
+ return [(0, richtext_core_1.list)(n.listType === 'number', kids.map((li) => (isObj(li) ? blocks(arr(li.children).some((x) => isObj(x) && x.type === 'list') ? arr(li.children) : [{ type: 'paragraph', children: li.children }]) : [])))];
58
+ case 'code':
59
+ return [(0, richtext_core_1.codeBlock)(kids.map((k) => (isObj(k) ? (k.type === 'linebreak' ? '\n' : (str(k.text) ?? '')) : '')).join(''), str(n.language))];
60
+ case 'horizontalrule':
61
+ return [{ type: 'horizontalRule' }];
62
+ case 'upload': {
63
+ const v = isObj(n.value) ? n.value : {};
64
+ const src = str(v.url) ?? mediaUrl(n.value) ?? undefined;
65
+ return src ? [(0, richtext_core_1.image)(imageOf(src, str(v.alt)), str(v.alt))] : [];
66
+ }
67
+ default:
68
+ return kids.length ? blocks(kids) : [];
69
+ }
70
+ });
71
+ return (0, richtext_core_1.doc)(blocks(arr(root.children)));
72
+ }
73
+ /* --------------------------- Portable Text --------------------------- */
74
+ const PT_MARKS = { strong: 'bold', em: 'italic', code: 'code', 'strike-through': 'strike', underline: 'underline' };
75
+ function fromPortableText(value, imageOf, assetUrl) {
76
+ if (!Array.isArray(value))
77
+ return null;
78
+ const out = [];
79
+ // Consecutive list items of one kind are one list; a list item's `level` nests it.
80
+ let open = null;
81
+ const closeList = () => {
82
+ if (!open)
83
+ return;
84
+ const build = (level, from) => {
85
+ const items = [];
86
+ let i = from;
87
+ while (i < open.items.length && open.items[i].level >= level) {
88
+ const it = open.items[i];
89
+ const kids = [...it.content];
90
+ i++;
91
+ if (i < open.items.length && open.items[i].level > level) {
92
+ const nested = build(level + 1, i);
93
+ kids.push(...nested.node);
94
+ i = nested.next;
95
+ }
96
+ items.push(kids);
97
+ }
98
+ return { node: [(0, richtext_core_1.list)(open.kind === 'number', items)], next: i };
99
+ };
100
+ out.push(...build(Math.min(...open.items.map((x) => x.level)), 0).node);
101
+ open = null;
102
+ };
103
+ for (const b of value) {
104
+ if (!isObj(b))
105
+ continue;
106
+ if (b._type === 'block') {
107
+ const defs = new Map(arr(b.markDefs).filter(isObj).map((d) => [str(d._key) ?? '', d]));
108
+ const runs = arr(b.children).filter(isObj).map((s) => {
109
+ const marks = [];
110
+ let href;
111
+ for (const m of arr(s.marks)) {
112
+ if (typeof m !== 'string')
113
+ continue;
114
+ if (PT_MARKS[m])
115
+ marks.push(PT_MARKS[m]);
116
+ else if (defs.get(m)?._type === 'link')
117
+ href = (0, richtext_core_1.safeHref)(str(defs.get(m).href));
118
+ }
119
+ return { text: str(s.text) ?? '', marks, href };
120
+ });
121
+ if (typeof b.listItem === 'string') {
122
+ if (open && open.kind !== b.listItem)
123
+ closeList();
124
+ (open ??= { kind: b.listItem, items: [] }).items.push({ level: Number(b.level) || 1, content: [(0, richtext_core_1.paragraph)(runs)] });
125
+ continue;
126
+ }
127
+ closeList();
128
+ const style = str(b.style) ?? 'normal';
129
+ const h = /^h([1-6])$/.exec(style);
130
+ if (h)
131
+ out.push((0, richtext_core_1.heading)(Number(h[1]), runs));
132
+ else if (style === 'blockquote')
133
+ out.push({ type: 'blockquote', content: [(0, richtext_core_1.paragraph)(runs)] });
134
+ else if (runs.some((r) => r.text))
135
+ out.push((0, richtext_core_1.paragraph)(runs));
136
+ continue;
137
+ }
138
+ closeList();
139
+ if (b._type === 'image') {
140
+ const ref = isObj(b.asset) ? str(b.asset._ref) : undefined;
141
+ const url = ref ? assetUrl(ref) : null;
142
+ if (url)
143
+ out.push((0, richtext_core_1.image)(imageOf(url, str(b.alt)), str(b.alt)));
144
+ }
145
+ else if (b._type === 'code')
146
+ out.push((0, richtext_core_1.codeBlock)(str(b.code) ?? '', str(b.language)));
147
+ }
148
+ closeList();
149
+ return (0, richtext_core_1.doc)(out);
150
+ }
151
+ /* ---------------------------- Contentful ---------------------------- */
152
+ const CF_MARKS = { bold: 'bold', italic: 'italic', code: 'code', underline: 'underline' };
153
+ /** `assetOf` maps a linked asset id to the URL the engine will rewrite to the uploaded file. */
154
+ function fromContentful(value, imageOf, assetOf) {
155
+ if (!isObj(value) || value.nodeType !== 'document')
156
+ return null;
157
+ const runs = (nodes, href) => nodes.flatMap((n) => {
158
+ if (!isObj(n))
159
+ return [];
160
+ if (n.nodeType === 'text') {
161
+ return [{ text: str(n.value) ?? '', marks: arr(n.marks).filter(isObj).map((m) => CF_MARKS[str(m.type) ?? '']).filter((m) => !!m), href }];
162
+ }
163
+ const data = isObj(n.data) ? n.data : {};
164
+ return runs(arr(n.content), n.nodeType === 'hyperlink' ? (0, richtext_core_1.safeHref)(str(data.uri)) : href);
165
+ });
166
+ const blocks = (nodes) => nodes.flatMap((n) => {
167
+ if (!isObj(n))
168
+ return [];
169
+ const kids = arr(n.content);
170
+ const nt = str(n.nodeType) ?? '';
171
+ const h = /^heading-([1-6])$/.exec(nt);
172
+ if (h)
173
+ return [(0, richtext_core_1.heading)(Number(h[1]), runs(kids))];
174
+ switch (nt) {
175
+ case 'paragraph': {
176
+ const r = runs(kids);
177
+ return r.some((x) => x.text) ? [(0, richtext_core_1.paragraph)(r)] : [];
178
+ }
179
+ case 'unordered-list':
180
+ case 'ordered-list':
181
+ return [(0, richtext_core_1.list)(nt === 'ordered-list', kids.map((li) => (isObj(li) ? blocks(arr(li.content)) : [])))];
182
+ case 'blockquote':
183
+ return [{ type: 'blockquote', content: blocks(kids) }];
184
+ case 'hr':
185
+ return [{ type: 'horizontalRule' }];
186
+ case 'embedded-asset-block': {
187
+ const data = isObj(n.data) ? n.data : {};
188
+ const target = isObj(data.target) && isObj(data.target.sys) ? str(data.target.sys.id) : undefined;
189
+ const asset = target ? assetOf(target) : null;
190
+ return asset ? [(0, richtext_core_1.image)(imageOf(asset.url, asset.alt), asset.alt)] : [];
191
+ }
192
+ default:
193
+ return kids.length ? blocks(kids) : [];
194
+ }
195
+ });
196
+ return (0, richtext_core_1.doc)(blocks(arr(value.content)));
197
+ }
198
+ /* ------------------------------ Strapi ------------------------------ */
199
+ function fromStrapiBlocks(value, imageOf) {
200
+ if (!Array.isArray(value))
201
+ return null;
202
+ const runs = (nodes, href) => nodes.flatMap((n) => {
203
+ if (!isObj(n))
204
+ return [];
205
+ if (n.type === 'link')
206
+ return runs(arr(n.children), (0, richtext_core_1.safeHref)(str(n.url)) ?? href);
207
+ if (n.type !== undefined && n.type !== 'text')
208
+ return runs(arr(n.children), href);
209
+ const marks = [];
210
+ if (n.bold)
211
+ marks.push('bold');
212
+ if (n.italic)
213
+ marks.push('italic');
214
+ if (n.strikethrough)
215
+ marks.push('strike');
216
+ if (n.underline)
217
+ marks.push('underline');
218
+ if (n.code)
219
+ marks.push('code');
220
+ return [{ text: str(n.text) ?? '', marks, href }];
221
+ });
222
+ const blocks = (nodes) => nodes.flatMap((n) => {
223
+ if (!isObj(n))
224
+ return [];
225
+ const kids = arr(n.children);
226
+ switch (n.type) {
227
+ case 'paragraph': {
228
+ const r = runs(kids);
229
+ return r.some((x) => x.text) ? [(0, richtext_core_1.paragraph)(r)] : [];
230
+ }
231
+ case 'heading':
232
+ return [(0, richtext_core_1.heading)(Number(n.level) || 2, runs(kids))];
233
+ case 'quote':
234
+ return [{ type: 'blockquote', content: [(0, richtext_core_1.paragraph)(runs(kids))] }];
235
+ case 'code':
236
+ return [(0, richtext_core_1.codeBlock)(kids.map((k) => (isObj(k) ? (str(k.text) ?? '') : '')).join(''), str(n.language))];
237
+ case 'list':
238
+ return [(0, richtext_core_1.list)(n.format === 'ordered', kids.map((li) => (isObj(li) ? (arr(li.children).some((x) => isObj(x) && x.type === 'list') ? [(0, richtext_core_1.paragraph)(runs(arr(li.children).filter((x) => !isObj(x) || x.type !== 'list'))), ...blocks(arr(li.children).filter((x) => isObj(x) && x.type === 'list'))] : [(0, richtext_core_1.paragraph)(runs(arr(li.children)))]) : [])))];
239
+ case 'image': {
240
+ const img = isObj(n.image) ? n.image : {};
241
+ const url = str(img.url);
242
+ return url ? [(0, richtext_core_1.image)(imageOf(url, str(img.alternativeText)), str(img.alternativeText))] : [];
243
+ }
244
+ default:
245
+ return [];
246
+ }
247
+ });
248
+ return (0, richtext_core_1.doc)(blocks(value));
249
+ }
250
+ //# sourceMappingURL=richtext-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"richtext-json.js","sourceRoot":"","sources":["../../src/import/richtext-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ImportSource } from './types';
2
+ /** `image-<hash>-<w>x<h>-<ext>` → `<hash>-<w>x<h>.<ext>`, the name Sanity's CDN serves it under. */
3
+ export declare const assetFilename: (ref: string) => string;
4
+ export declare function readSanityExport(ndjson: string, opts?: {
5
+ projectId?: string;
6
+ dataset?: string;
7
+ }): ImportSource;
8
+ //# sourceMappingURL=sanity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanity.d.ts","sourceRoot":"","sources":["../../src/import/sanity.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAA0B,MAAM,SAAS,CAAC;AA4BpE,oGAAoG;AACpG,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MAG3C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,YAAY,CA2GlH"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assetFilename = void 0;
4
+ exports.readSanityExport = readSanityExport;
5
+ /**
6
+ * Sanity: the NDJSON `sanity dataset export` writes (`data.ndjson`: one JSON
7
+ * document per line, asset documents included).
8
+ *
9
+ * Sanity keeps its schema in code, not in the export, so the model is
10
+ * INFERRED from the documents: per `_type`, each field's kind comes from the
11
+ * values it holds (a Portable Text array is rich text, an `image` is an
12
+ * upload, a `reference` is a relationship). A field whose values disagree
13
+ * becomes JSON rather than being forced into one kind and losing data. A
14
+ * `drafts.` document whose published twin exists is the twin's pending edit
15
+ * and is not imported twice.
16
+ */
17
+ const config_1 = require("./config");
18
+ const richtext_json_1 = require("./richtext-json");
19
+ const isObj = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
20
+ const arr = (v) => (Array.isArray(v) ? v : []);
21
+ const isPortable = (v) => Array.isArray(v) && v.length > 0 && v.every((b) => isObj(b) && typeof b._type === 'string' && (b._type === 'block' || b._type === 'image' || b._type === 'code'));
22
+ const isImage = (v) => isObj(v) && isObj(v.asset) && typeof v.asset._ref === 'string' && /^(image|file)-/.test(v.asset._ref);
23
+ const isRef = (v) => isObj(v) && typeof v._ref === 'string' && !('asset' in v);
24
+ const DATE = /^\d{4}-\d{2}-\d{2}(T[\d:.+Z-]+)?$/;
25
+ function kindOf(v) {
26
+ if (typeof v === 'string')
27
+ return DATE.test(v) ? 'date' : v.length > 160 || v.includes('\n') ? 'textarea' : 'text';
28
+ if (typeof v === 'number')
29
+ return 'number';
30
+ if (typeof v === 'boolean')
31
+ return 'checkbox';
32
+ if (isPortable(v))
33
+ return 'richText';
34
+ if (isImage(v))
35
+ return 'upload';
36
+ if (isRef(v))
37
+ return 'relationship';
38
+ return 'json';
39
+ }
40
+ /** `image-<hash>-<w>x<h>-<ext>` → `<hash>-<w>x<h>.<ext>`, the name Sanity's CDN serves it under. */
41
+ const assetFilename = (ref) => {
42
+ const m = /^(?:image|file)-(.+)-([a-z0-9]+)$/.exec(ref);
43
+ return m ? `${m[1]}.${m[2]}` : ref;
44
+ };
45
+ exports.assetFilename = assetFilename;
46
+ function readSanityExport(ndjson, opts = {}) {
47
+ const notes = [];
48
+ const docs = [];
49
+ ndjson.split(/\r?\n/).forEach((line, i) => {
50
+ if (!line.trim())
51
+ return;
52
+ try {
53
+ const d = JSON.parse(line);
54
+ if (isObj(d) && typeof d._id === 'string' && typeof d._type === 'string')
55
+ docs.push(d);
56
+ }
57
+ catch {
58
+ notes.push(`Line ${i + 1} is not JSON and was skipped.`);
59
+ }
60
+ });
61
+ const media = [];
62
+ const assetById = new Map();
63
+ for (const d of docs) {
64
+ if (d._type !== 'sanity.imageAsset' && d._type !== 'sanity.fileAsset')
65
+ continue;
66
+ if (typeof d.url !== 'string')
67
+ continue;
68
+ const m = {
69
+ id: d._id,
70
+ filename: typeof d.originalFilename === 'string' && d.originalFilename ? d.originalFilename : (0, exports.assetFilename)(d._id),
71
+ location: d.url,
72
+ ...(typeof d.mimeType === 'string' ? { contentType: d.mimeType } : {}),
73
+ aliases: [d.url],
74
+ };
75
+ media.push(m);
76
+ assetById.set(m.id, m);
77
+ }
78
+ const published = new Set(docs.filter((d) => !d._id.startsWith('drafts.')).map((d) => d._id));
79
+ const content = docs.filter((d) => !String(d._type).startsWith('sanity.') && !(String(d._id).startsWith('_.')));
80
+ const live = content.filter((d) => {
81
+ const draft = d._id.startsWith('drafts.');
82
+ return !draft || !published.has(d._id.slice(7));
83
+ });
84
+ const typeOfId = new Map(content.map((d) => [d._id.replace(/^drafts\./, ''), (0, config_1.keyOf)(d._type)]));
85
+ // Sanity's `{ _type: 'slug', current }` is plain text here, so the model and the values agree.
86
+ const valuesOf = (d) => Object.entries(d)
87
+ .filter(([k, v]) => !k.startsWith('_') && v !== null && v !== undefined)
88
+ .map(([k, v]) => [k, isObj(v) && v._type === 'slug' && typeof v.current === 'string' ? v.current : v]);
89
+ const seen = new Map();
90
+ for (const d of live) {
91
+ const slug = (0, config_1.keyOf)(d._type);
92
+ const fields = seen.get(slug) ?? seen.set(slug, new Map()).get(slug);
93
+ for (const [k, v] of valuesOf(d)) {
94
+ // An empty list says nothing about what the field holds.
95
+ if (Array.isArray(v) && v.length === 0)
96
+ continue;
97
+ const entry = fields.get(k) ?? fields.set(k, { kinds: new Set(), many: false, targets: new Set() }).get(k);
98
+ const list = Array.isArray(v) && !isPortable(v);
99
+ const items = list ? v : [v];
100
+ entry.many ||= list;
101
+ for (const item of items) {
102
+ entry.kinds.add(list && kindOf(item) === 'textarea' ? 'text' : kindOf(item));
103
+ if (isRef(item))
104
+ entry.targets.add(typeOfId.get(String(item._ref).replace(/^drafts\./, '')) ?? '');
105
+ }
106
+ }
107
+ }
108
+ const collections = [...seen].map(([slug, fields]) => ({
109
+ slug,
110
+ fields: [...fields]
111
+ .map(([k, f]) => {
112
+ const kind = (f.kinds.size === 1 ? [...f.kinds][0] : 'json');
113
+ const name = (0, config_1.keyOf)(k);
114
+ if (kind === 'relationship') {
115
+ const to = [...f.targets].filter(Boolean);
116
+ return { name, type: 'relationship', relationTo: to.length === 1 ? to[0] : to.length ? to : [...seen.keys()], ...(f.many ? { hasMany: true } : {}) };
117
+ }
118
+ if (kind === 'upload')
119
+ return f.many ? (0, config_1.listOf)(name, { type: 'upload', relationTo: 'media' }) : { name, type: 'upload', relationTo: 'media' };
120
+ // A list of scalars is a list of one-value rows; a list of anything else is JSON.
121
+ if (f.many && (kind === 'text' || kind === 'number'))
122
+ return (0, config_1.listOf)(name, { type: kind });
123
+ if (f.many)
124
+ return { name, type: 'json' };
125
+ return { name, type: kind };
126
+ }),
127
+ }));
128
+ const records = live.map((d) => {
129
+ const id = d._id.replace(/^drafts\./, '');
130
+ const values = Object.fromEntries(valuesOf(d).map(([k, v]) => [(0, config_1.keyOf)(k), v]));
131
+ const slugValue = values.slug;
132
+ return {
133
+ type: (0, config_1.keyOf)(d._type),
134
+ id,
135
+ published: !d._id.startsWith('drafts.'),
136
+ ...(typeof slugValue === 'string' ? { slug: slugValue } : {}),
137
+ values,
138
+ };
139
+ });
140
+ if (opts.projectId)
141
+ notes.push(`Assets are fetched from their cdn.sanity.io URLs (project ${opts.projectId}${opts.dataset ? `, dataset ${opts.dataset}` : ''}).`);
142
+ const assetUrl = (ref) => assetById.get(ref)?.location ?? null;
143
+ return {
144
+ name: 'sanity',
145
+ modelSource: collections.length ? (0, config_1.payloadConfigSource)(collections) : undefined,
146
+ records,
147
+ media,
148
+ notes,
149
+ richText: (raw, image) => (0, richtext_json_1.fromPortableText)(raw, image, assetUrl),
150
+ mediaId: (raw) => {
151
+ const items = Array.isArray(raw) ? raw : [raw];
152
+ const first = items.find(isImage);
153
+ return first ? String(first.asset._ref) : null;
154
+ },
155
+ refs: (raw) => (Array.isArray(raw) ? raw : [raw]).flatMap((v) => (isRef(v) ? [{ type: typeOfId.get(String(v._ref).replace(/^drafts\./, '')), id: String(v._ref).replace(/^drafts\./, '') }] : [])),
156
+ };
157
+ }
158
+ //# sourceMappingURL=sanity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanity.js","sourceRoot":"","sources":["../../src/import/sanity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ImportFiles } from './types';
2
+ export declare const STRAPI_ARCHIVE_ROOT = "/strapi-archive";
3
+ export declare const isStrapiArchive: (path: string) => boolean;
4
+ /** An in-memory `ImportFiles` laid out the way `readStrapiExport` reads a folder. */
5
+ export declare function strapiArchiveFiles(archive: Uint8Array, archiveName?: string): ImportFiles;
6
+ //# sourceMappingURL=strapi-archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-archive.d.ts","sourceRoot":"","sources":["../../src/import/strapi-archive.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAO3C,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,OAA0D,CAAC;AAe1G,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,SAAgB,GAAG,WAAW,CA4EhG"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStrapiArchive = exports.STRAPI_ARCHIVE_ROOT = void 0;
4
+ exports.strapiArchiveFiles = strapiArchiveFiles;
5
+ /**
6
+ * Strapi's own `strapi export --no-encrypt` archive (`.tar.gz`), turned into
7
+ * the folder the REST/schema reader (`./strapi`) already understands, in
8
+ * memory: one reader, so a Strapi export maps the same whichever way it was
9
+ * made.
10
+ *
11
+ * The archive holds JSON lines: `schemas/` (every content type),
12
+ * `entities/` (`{ type, id, data }`), `links/` (relations and media, which
13
+ * Strapi stores OUTSIDE the entity) and `assets/` (`uploads/<file>` bytes).
14
+ * Links are folded back into the entity's own fields here, using the schema to
15
+ * tell a to-many field (a list) from a to-one (one value). Component and
16
+ * dynamic-zone links are not folded; the reader already imports those fields
17
+ * as JSON and says so.
18
+ *
19
+ * An encrypted archive (`.tar.gz.enc`) cannot be read; the error says to export
20
+ * with `--no-encrypt`.
21
+ */
22
+ const tar_1 = require("./tar");
23
+ const isObj = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
24
+ const UPLOAD = 'plugin::upload.file';
25
+ const norm = (p) => p.replace(/\\/g, '/').replace(/\/+$/, '');
26
+ exports.STRAPI_ARCHIVE_ROOT = '/strapi-archive';
27
+ const isStrapiArchive = (path) => /\.(tar\.gz|tgz|tar|tar\.gz\.enc)$/i.test(path);
28
+ exports.isStrapiArchive = isStrapiArchive;
29
+ function jsonl(files, dir) {
30
+ const out = [];
31
+ for (const [p, b] of [...files].sort(([a], [z]) => a.localeCompare(z))) {
32
+ if (!p.startsWith(`${dir}/`) || !p.endsWith('.jsonl'))
33
+ continue;
34
+ for (const line of Buffer.from(b).toString('utf8').split('\n')) {
35
+ if (!line.trim())
36
+ continue;
37
+ const v = JSON.parse(line);
38
+ if (isObj(v))
39
+ out.push(v);
40
+ }
41
+ }
42
+ return out;
43
+ }
44
+ /** An in-memory `ImportFiles` laid out the way `readStrapiExport` reads a folder. */
45
+ function strapiArchiveFiles(archive, archiveName = 'the archive') {
46
+ if (/\.enc$/i.test(archiveName)) {
47
+ throw new Error(`${archiveName} is encrypted. Export again with \`strapi export --no-encrypt\`.`);
48
+ }
49
+ const raw = (0, tar_1.readTar)(archive);
50
+ // Archives carry no wrapper folder today, but tolerate one: drop a shared first segment.
51
+ const first = new Set([...raw.keys()].map((k) => k.split('/')[0]));
52
+ const strip = first.size === 1 && ![...raw.keys()].some((k) => !k.includes('/')) ? `${[...first][0]}/` : '';
53
+ const tar = new Map([...raw].map(([k, v]) => [strip ? k.slice(strip.length) : k, v]));
54
+ if (!tar.size || ![...tar.keys()].some((k) => k.startsWith('entities/') || k.startsWith('schemas/'))) {
55
+ throw new Error(`${archiveName} is not a Strapi export (no schemas/ or entities/ inside).`);
56
+ }
57
+ const vfs = new Map();
58
+ const put = (path, content) => vfs.set(path, typeof content === 'string' ? new TextEncoder().encode(content) : content);
59
+ const schemas = jsonl(tar, 'schemas').filter((s) => typeof s.uid === 'string');
60
+ const byUid = new Map();
61
+ for (const s of schemas) {
62
+ const info = isObj(s.info) ? s.info : {};
63
+ if (s.modelType === 'component' || typeof info.singularName !== 'string' || !String(s.uid).startsWith('api::'))
64
+ continue;
65
+ byUid.set(String(s.uid), { plural: typeof info.pluralName === 'string' ? info.pluralName : info.singularName, attrs: isObj(s.attributes) ? s.attributes : {} });
66
+ put(`${info.singularName}.schema.json`, JSON.stringify({ ...s, info }));
67
+ }
68
+ // links → fields. A to-many attribute collects every link; a to-one keeps the first.
69
+ const linked = new Map();
70
+ for (const l of jsonl(tar, 'links')) {
71
+ const left = isObj(l.left) ? l.left : null;
72
+ const right = isObj(l.right) ? l.right : null;
73
+ if (!left || !right || typeof left.field !== 'string' || !byUid.has(String(left.type)))
74
+ continue;
75
+ const k = `${left.type}\u0000${left.ref}`;
76
+ const fields = linked.get(k) ?? linked.set(k, new Map()).get(k);
77
+ (fields.get(left.field) ?? fields.set(left.field, []).get(left.field)).push({ id: right.ref });
78
+ }
79
+ const many = (attr) => isObj(attr) && (attr.multiple === true || /ToMany$/.test(String(attr.relation)));
80
+ const rows = new Map();
81
+ const media = [];
82
+ for (const e of jsonl(tar, 'entities')) {
83
+ const data = isObj(e.data) ? e.data : null;
84
+ if (!data)
85
+ continue;
86
+ const id = e.id ?? data.id;
87
+ if (e.type === UPLOAD) {
88
+ media.push({ ...data, id });
89
+ continue;
90
+ }
91
+ const model = byUid.get(String(e.type));
92
+ if (!model)
93
+ continue;
94
+ const row = { ...data, id };
95
+ for (const [field, refs] of linked.get(`${e.type}\u0000${id}`) ?? []) {
96
+ row[field] = many(model.attrs[field]) ? refs : refs[0];
97
+ }
98
+ (rows.get(model.plural) ?? rows.set(model.plural, []).get(model.plural)).push(row);
99
+ }
100
+ for (const [plural, list] of rows)
101
+ put(`${plural}.json`, JSON.stringify({ data: list }));
102
+ if (media.length)
103
+ put('media.json', JSON.stringify({ data: media }));
104
+ for (const [p, b] of tar)
105
+ if (p.startsWith('assets/uploads/'))
106
+ put(`uploads/${p.slice('assets/uploads/'.length)}`, b);
107
+ const key = (p) => norm(p).replace(new RegExp(`^${exports.STRAPI_ARCHIVE_ROOT}/?`), '');
108
+ const names = (dir) => [...vfs.keys()].filter((p) => (dir ? p.startsWith(`${dir}/`) : true)).map((p) => (dir ? p.slice(dir.length + 1) : p)).filter((p) => p && !p.includes('/'));
109
+ return {
110
+ read: (p) => {
111
+ const b = vfs.get(key(p));
112
+ if (!b)
113
+ throw new Error(`No ${key(p)} in the Strapi archive.`);
114
+ return Buffer.from(b).toString('utf8');
115
+ },
116
+ readBytes: (p) => {
117
+ const b = vfs.get(key(p));
118
+ if (!b)
119
+ throw new Error(`No ${key(p)} in the Strapi archive.`);
120
+ return b;
121
+ },
122
+ exists: (p) => key(p) === '' || vfs.has(key(p)),
123
+ list: (dir) => names(key(dir)),
124
+ isDir: (p) => key(p) === '' || [...vfs.keys()].some((k) => k.startsWith(`${key(p)}/`)),
125
+ };
126
+ }
127
+ //# sourceMappingURL=strapi-archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-archive.js","sourceRoot":"","sources":["../../src/import/strapi-archive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ImportFiles, ImportSource } from './types';
2
+ export interface StrapiOptions {
3
+ /** Where relative upload URLs (`/uploads/x.png`) are served from, when the file is not in `uploads/`. */
4
+ baseUrl?: string;
5
+ }
6
+ export declare function readStrapiExport(dir: string, files: ImportFiles, opts?: StrapiOptions): ImportSource;
7
+ //# sourceMappingURL=strapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi.d.ts","sourceRoot":"","sources":["../../src/import/strapi.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAA0B,MAAM,SAAS,CAAC;AAUjF,MAAM,WAAW,aAAa;IAC5B,yGAAyG;IACzG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CAyJxG"}