@mintlify/common 1.0.461 → 1.0.463

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.
@@ -35,3 +35,21 @@ export declare const getNewMarkdownUpdates: ({ newTree, previousTree, previousUp
35
35
  previousTree: Root;
36
36
  previousUpdates: RSSItemV2[];
37
37
  }) => RSSItemV2[];
38
+ export declare const containsRssProps: (updateNode: UpdateMDXComponent) => boolean;
39
+ export declare const containsMarkdownGroups: (updateNode: UpdateMDXComponent) => boolean;
40
+ export declare const containsMarkdownHeading: (updateNode: UpdateMDXComponent, title: string) => boolean;
41
+ export declare const processUpdateNode: ({ updateNode, date, }: {
42
+ updateNode: UpdateMDXComponent;
43
+ date?: string;
44
+ }) => RSSItemV2[];
45
+ export declare const processUpdatePerNode: ({ updateNode, date, title, description, }: {
46
+ updateNode: UpdateMDXComponent;
47
+ date: string;
48
+ title?: string;
49
+ description?: string;
50
+ }) => RSSItemV2[];
51
+ export declare const processUpdatePerMarkdownGroup: ({ updateNode, date, updatesByMarkdown, }: {
52
+ updateNode: UpdateMDXComponent;
53
+ date: string;
54
+ updatesByMarkdown: RootContent[][];
55
+ }) => RSSItemV2[];
package/dist/rss/index.js CHANGED
@@ -174,3 +174,85 @@ export const getNewMarkdownUpdates = ({ newTree, previousTree, previousUpdates,
174
174
  }
175
175
  return actuallyNewUpdates;
176
176
  };
177
+ export const containsRssProps = (updateNode) => {
178
+ const attributes = updateNode.attributes;
179
+ const rssData = attributes.find((attribute) => attribute.type === 'mdxJsxAttribute' && attribute.name === 'rss');
180
+ return !!rssData;
181
+ };
182
+ export const containsMarkdownGroups = (updateNode) => {
183
+ var _a, _b;
184
+ const children = updateNode.children;
185
+ const updatesByMarkdown = splitChildrenAtHeadings(children);
186
+ return updatesByMarkdown.length > 0 && ((_b = (_a = updatesByMarkdown[0]) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.type) === 'heading';
187
+ };
188
+ export const containsMarkdownHeading = (updateNode, title) => {
189
+ const children = updateNode.children;
190
+ const containsHeading = children.some((child) => child.type === 'heading' &&
191
+ child.children.some((child) => child.type === 'text' && child.value.includes(title)));
192
+ return containsHeading;
193
+ };
194
+ export const processUpdateNode = ({ updateNode, date, }) => {
195
+ const updates = [];
196
+ const nowOrOldDate = date || new Date().toISOString();
197
+ const containsRss = containsRssProps(updateNode);
198
+ const containsMarkdown = containsMarkdownGroups(updateNode);
199
+ if (containsRss) {
200
+ const { rssTitle, rssDescription } = getRssPropsData(updateNode);
201
+ const newUpdates = processUpdatePerNode({
202
+ updateNode,
203
+ date: nowOrOldDate,
204
+ title: rssTitle,
205
+ description: rssDescription,
206
+ });
207
+ updates.push(...newUpdates);
208
+ }
209
+ else if (containsMarkdown) {
210
+ const updatesByMarkdown = splitChildrenAtHeadings(updateNode.children);
211
+ const newUpdates = processUpdatePerMarkdownGroup({
212
+ updateNode,
213
+ date: nowOrOldDate,
214
+ updatesByMarkdown,
215
+ });
216
+ updates.push(...newUpdates);
217
+ }
218
+ else {
219
+ const newUpdates = processUpdatePerNode({ updateNode, date: nowOrOldDate });
220
+ updates.push(...newUpdates);
221
+ }
222
+ return updates;
223
+ };
224
+ export const processUpdatePerNode = ({ updateNode, date, title, description, }) => {
225
+ const label = getUpdateTitle(updateNode);
226
+ if (!label) {
227
+ return [];
228
+ }
229
+ const rssTitle = title || label;
230
+ const anchor = slugify(label);
231
+ const categories = getTags(updateNode);
232
+ const contentNodes = updateNode.children.filter((child) => isNormalMarkdown(child));
233
+ const contentString = stringifyTree({
234
+ type: 'root',
235
+ children: contentNodes,
236
+ });
237
+ return [
238
+ {
239
+ title: rssTitle,
240
+ date,
241
+ anchor,
242
+ description,
243
+ categories,
244
+ content: contentString,
245
+ },
246
+ ];
247
+ };
248
+ export const processUpdatePerMarkdownGroup = ({ updateNode, date, updatesByMarkdown, }) => {
249
+ const updates = [];
250
+ const categories = getTags(updateNode);
251
+ for (const group of updatesByMarkdown) {
252
+ const newUpdate = updateGroupToRSSItemV2({ group, date });
253
+ if (newUpdate) {
254
+ updates.push(Object.assign(Object.assign({}, newUpdate), { categories }));
255
+ }
256
+ }
257
+ return updates;
258
+ };