docs: add copy subscriber button (#12405)

* docs: add copy subscriber button

* re-generate

* fixes + update copy button
This commit is contained in:
Shahed Nasser
2025-05-08 12:48:44 +03:00
committed by GitHub
parent f929185021
commit f81eb51b67
38 changed files with 20525 additions and 18707 deletions
@@ -67,7 +67,7 @@ function formatEventsType(
eventVariable.name.replaceAll("WorkflowEvents", "")
)
if (showHeader) {
content.push(`## ${header} Events`)
content.push(`${"#".repeat(subtitleLevel - 1)} ${header} Events`)
}
content.push("")
@@ -93,9 +93,7 @@ function formatEventsType(
.find((tag) => tag.tag === "@eventName")
?.content.map((content) => content.text)
.join("") || ""
eventName = `[${eventName}](#${slugify(eventName.replace(".", ""), {
lower: true,
})})`
eventName = `[${eventName}](#${getEventNameSlug(eventName)})`
const eventDescription = event.comment?.summary
.map((content) => content.text)
.join("")
@@ -149,32 +147,30 @@ function formatEventsType(
const deprecatedTag = event.comment?.blockTags.find(
(tag) => tag.tag === "@deprecated"
)
const deprecatedMessage = deprecatedTag?.content
.map((content) => content.text)
.join("")
.trim()
content.push(`${subHeaderPrefix} \`${eventName}\``)
content.push(
getEventHeading({
titleLevel: subtitleLevel,
eventName: eventName || "",
payload: eventPayload || "",
deprecated: !!deprecatedTag,
deprecatedMessage,
})
)
content.push("")
if (deprecatedTag) {
const deprecationText = deprecatedTag.content
.map((content) => content.text)
.join("")
.trim()
if (deprecationText.length) {
content.push(`<Tooltip text="${deprecationText}">`)
}
content.push(`<Badge variant="orange">Deprecated</Badge>`)
if (deprecationText.length) {
content.push(`</Tooltip>`)
}
content.push("")
}
content.push(eventDescription || "")
content.push("")
content.push(`${subHeaderPrefix}# Payload`)
content.push("")
content.push(eventPayload || "")
content.push("")
content.push(`${subHeaderPrefix}# Workflows Emitting this Event`)
content.push(
`${subHeaderPrefix}# Workflows Emitting this Event\n\nThe following workflows emit this event when they're executed. These workflows are executed by Medusa's API routes. You can also view the events emitted by API routes in the [Store](https://docs.medusajs.com/api/store) and [Admin](https://docs.medusajs.com/api/admin) API references.`
)
content.push("")
workflows?.forEach((workflow) => {
content.push(`- [${workflow}](/references/medusa-workflows/${workflow})`)
@@ -188,3 +184,42 @@ function formatEventsType(
return content.join("\n")
}
function getEventHeading({
titleLevel,
eventName,
payload,
deprecated = false,
deprecatedMessage,
}: {
titleLevel: number
eventName: string
payload: string
deprecated?: boolean
deprecatedMessage?: string
}) {
const heading = [eventName]
if (deprecated) {
if (deprecatedMessage?.length) {
heading.push(`<Tooltip text="${deprecatedMessage}">`)
}
heading.push(`<Badge variant="orange">Deprecated</Badge>`)
if (deprecatedMessage?.length) {
heading.push(`</Tooltip>`)
}
}
return `<EventHeader headerLvl="${titleLevel}" headerProps={{ id: "${getEventNameSlug(
eventName
)}", children: (<>${heading.join(
"\n"
)}</>), className: "flex flex-wrap justify-center gap-docs_0.25" }} eventName="${eventName}" payload={\`${payload.replaceAll(
"`",
"\\`"
)}\`} />`
}
function getEventNameSlug(eventName: string) {
return slugify(eventName.replace(".", ""), { lower: true })
}
@@ -25,6 +25,7 @@ export default function () {
str += ` <Table.HeaderCell>\nEvent\n</Table.HeaderCell>\n`
str += ` <Table.HeaderCell>\nDescription\n</Table.HeaderCell>\n`
str += ` <Table.HeaderCell>\nPayload\n</Table.HeaderCell>\n`
str += ` <Table.HeaderCell>\nAction\n</Table.HeaderCell>\n`
str += ` </Table.Row>\n`
str += ` </Table.Header>\n`
str += ` <Table.Body>\n`
@@ -33,29 +34,35 @@ export default function () {
.map((c) => c.text)
.join(" ")
.split("--")
let eventName = `\`${commentContent[0].trim()}\``
const eventName = commentContent[0].trim()
const eventPayload = commentContent[2]?.trim() || ""
let eventNameFormatted = `\`${eventName}\``
const eventDescription = commentContent[1]?.trim() || ""
const eventPayload = (commentContent[2]?.trim() || "")
const eventPayloadFormatted = eventPayload
.replace("```ts\n", "")
.replace("\n```", "")
const isDeprecated = commentContent.length >= 4
if (isDeprecated) {
const deprecatedText = commentContent[4]?.trim()
eventName += `\n`
eventNameFormatted += `\n`
if (deprecatedText) {
eventName += `<Tooltip text="${deprecatedText}">`
eventNameFormatted += `<Tooltip text="${deprecatedText}">`
}
eventName += `<Badge variant="orange">Deprecated</Badge>`
eventNameFormatted += `<Badge variant="orange">Deprecated</Badge>`
if (deprecatedText) {
eventName += `</Tooltip>`
eventNameFormatted += `</Tooltip>`
}
}
str += ` <Table.Row>\n`
str += ` <Table.Cell>\n${eventName}\n</Table.Cell>\n`
str += ` <Table.Cell>\n${eventNameFormatted}\n</Table.Cell>\n`
str += ` <Table.Cell>\n${eventDescription}\n</Table.Cell>\n`
str += ` <Table.Cell>\n\`\`\`ts blockStyle="inline"\n${eventPayload}\n\`\`\`\n</Table.Cell>\n`
str += ` <Table.Cell>\n\`\`\`ts blockStyle="inline"\n${eventPayloadFormatted}\n\`\`\`\n</Table.Cell>\n`
str += ` <Table.Cell>\n<CopyGeneratedSnippetButton tooltipText="Copy subscriber for event" type="subscriber" options={{
event: "${eventName}",
payload: \`${eventPayload.replaceAll("`", "\\`")}\`
}}/>\n</Table.Cell>\n`
str += ` </Table.Row>\n`
})
str += ` </Table.Body>\n`