@ourofoundation/ouro-js 3.8.1 → 3.8.2

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.
@@ -0,0 +1,2 @@
1
+ function $(e){return e==="default"?"card":e==="chart"?"preview":e==="preview"||e==="interactive"||e==="card"||e==="list"?e:"card"}function z(e){let s={};if(e.displayConfig&&(s=typeof e.displayConfig=="string"?JSON.parse(e.displayConfig):{...e.displayConfig}),s.visualizationId===void 0&&e.visualizationId&&(s.visualizationId=e.visualizationId),s.filters===void 0&&e.filters){let i=e.filters;s.filters=typeof i=="string"?JSON.parse(i):i;}return s}var v="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",T=new RegExp(`^(post|dataset|file|service|route|quest):(${v})$`,"i"),R=new RegExp(`^asset:(${v})$`,"i"),L=new RegExp(`^action:(${v})$`,"i"),w=new RegExp(`\\[(post|dataset|file|service|route|quest|asset|action):(${v})\\](?!\\()`,"gi"),x=new Set(["post","dataset","file","service","route","quest"]);function _(e){let s=T.exec(e);if(s){let a=s[1].toLowerCase();return x.has(a)?{id:s[2],assetType:a,legacy:false}:null}let i=R.exec(e);return i?{id:i[1],legacy:true}:null}function S(e){let s=L.exec(e);return s?{id:s[1]}:null}function m(e){if(!e)return [];let s=[],i=new RegExp(w.source,w.flags),a;for(;(a=i.exec(e))!==null;){let r=a[1].toLowerCase(),l=a[2],c=`${r}:${l}`;r==="action"?s.push({raw:a[0],href:c,id:l,action:true}):r==="asset"?s.push({raw:a[0],href:c,id:l,legacy:true}):x.has(r)&&s.push({raw:a[0],href:c,id:l,assetType:r,legacy:false});}return s}function D(e,s){let i;try{if(e.startsWith("/"))i=e;else {let d=new URL(e);if(s){let p=new URL(s).host;if(d.host!==p)return null}i=d.pathname;}}catch{return null}let a=i.match(/^\/(\w+)s\/([^/]+)\/([^/?#]+)/);if(!a)return null;let[,r,l,c]=a;return x.has(r)?{assetType:r,entity:decodeURIComponent(l),slug:decodeURIComponent(c)}:null}var k=e=>Array.isArray(e)?e.map(k):e!=null&&e.content?Array.isArray(e.content)?e.content.map(k).flat():k(e.content):e;function U(e,s){var E;if(!e||!(e!=null&&e.content))return {users:[],assets:[],actions:[],linkedAssets:[]};let i=e.content.map(k).flat(),a=i.filter(t=>t.type==="mention").map(t=>{var n,o,f;return {user_id:(n=t.attrs)==null?void 0:n.id,username:((o=t.attrs)==null?void 0:o.label)||((f=t.attrs)==null?void 0:f.username)}}).reduce((t,n)=>(t.some(o=>o.user_id&&n.user_id&&o.user_id===n.user_id||o.username&&n.username&&o.username===n.username)||t.push(n),t),[]),r=i.filter(t=>{var n,o;return t.type==="assetComponent"&&((n=t.attrs)==null?void 0:n.id)&&!((o=t.attrs)!=null&&o.partial)}).map(({attrs:t})=>({id:t.id,assetType:t.assetType,via:"embed"})).reduce((t,n)=>(t.some(o=>o.id===n.id)||t.push(n),t),[]),l=[],c=[],d=new Set(r.map(t=>t.id)),p=new Set,C=new Set,I=t=>{for(let n of m(t)){if("action"in n&&n.action){p.has(n.id)||(p.add(n.id),c.push({id:n.id,via:"link"}));continue}d.has(n.id)||(d.add(n.id),"legacy"in n&&n.legacy?r.push({id:n.id,via:"link",legacy:true}):"assetType"in n&&r.push({id:n.id,assetType:n.assetType,via:"link",legacy:false}));}};for(let t of i){if((t==null?void 0:t.type)!=="text")continue;let n=t.marks||[],o=n.some(u=>u.type==="code"),f=n.find(u=>u.type==="link");if((E=f==null?void 0:f.attrs)!=null&&E.href){let u=f.attrs.href,h=S(u);if(h){p.has(h.id)||(p.add(h.id),c.push({id:h.id,via:"link"}));continue}let A=_(u);if(A){let g=A.id;d.has(g)||(d.add(g),A.legacy?r.push({id:g,via:"link",legacy:true}):r.push({id:g,assetType:A.assetType,via:"link",legacy:false}));continue}let y=D(u,s==null?void 0:s.siteUrl);if(y){let g=`${y.assetType}:${y.entity}:${y.slug}`;C.has(g)||(C.add(g),l.push(y));}continue}!o&&typeof t.text=="string"&&I(t.text);}return {users:a,assets:r,actions:c,linkedAssets:l}}export{$ as a,z as b,_ as c,S as d,m as e,D as f,U as g};//# sourceMappingURL=chunk-AJ2O7ER6.js.map
2
+ //# sourceMappingURL=chunk-AJ2O7ER6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/air/index.ts"],"names":["normalizeViewMode","raw","resolveDisplayConfig","attrs","base","UUID_RE","TYPED_ASSET_LINK_RE","LEGACY_ASSET_LINK_RE","ACTION_LINK_RE","ASSET_WIKI_LINK_RE","VALID_ASSET_TYPES","parseAssetLinkShorthand","href","typed","assetType","legacy","parseActionLinkShorthand","match","extractAssetWikiLinks","text","matches","re","kind","id","parseOuroAssetUrl","siteUrl","pathname","url","siteHost","entity","slug","extractContent","item","getReferencesInContent","json","options","_a","content","users","_b","_c","unique","u","assets","linkedAssets","actions","seenAssetIds","a","seenActionIds","seenLinkedKeys","addWikiRefs","wiki","marks","hasCodeMark","m","linkMark","actionShorthand","shorthand","parsed","key"],"mappings":"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","file":"chunk-AJ2O7ER6.js","sourcesContent":["import { Content } from \"../../schema/posts\";\nimport { Profile } from \"../../schema/users\";\n\nexport interface DataFilter {\n column: string;\n value: string;\n operator: string;\n active?: boolean;\n}\n\nexport interface DisplayConfig {\n /** Dataset: ID of a saved visualization to render instead of the default chart. */\n visualizationId?: string | null;\n /** Dataset: column filters applied to the data. */\n filters?: DataFilter[];\n /** Route: ID of a specific action to preview (status, logs, side-effect assets). */\n actionId?: string | null;\n /** Route: author-provided defaults for an interactive route form. */\n defaultValues?: Record<string, unknown>;\n}\n\n/**\n * Normalize legacy viewMode values to the current set.\n * \"chart\" → \"preview\", \"default\" → \"card\", anything else → \"card\".\n */\nexport function normalizeViewMode(\n raw: string | undefined | null\n): \"card\" | \"preview\" | \"interactive\" | \"list\" {\n if (raw === \"default\") return \"card\";\n if (raw === \"chart\") return \"preview\";\n if (\n raw === \"preview\" ||\n raw === \"interactive\" ||\n raw === \"card\" ||\n raw === \"list\"\n )\n return raw;\n return \"card\";\n}\n\n/**\n * Build a DisplayConfig from node/element attributes, handling the legacy\n * flat `visualizationId` / `filters` attrs and the new `displayConfig` object.\n * Prefers values inside `displayConfig` when present.\n */\nexport function resolveDisplayConfig(attrs: {\n displayConfig?: DisplayConfig | string | null;\n visualizationId?: string | null;\n filters?: DataFilter[] | string | null;\n}): DisplayConfig {\n let base: DisplayConfig = {};\n\n if (attrs.displayConfig) {\n base =\n typeof attrs.displayConfig === \"string\"\n ? JSON.parse(attrs.displayConfig)\n : { ...attrs.displayConfig };\n }\n\n // Fall back to legacy flat attrs when displayConfig doesn't carry them\n if (base.visualizationId === undefined && attrs.visualizationId) {\n base.visualizationId = attrs.visualizationId;\n }\n if (base.filters === undefined && attrs.filters) {\n const raw = attrs.filters;\n base.filters =\n typeof raw === \"string\" ? JSON.parse(raw) : raw;\n }\n\n return base;\n}\n\nexport interface InlineAssetAttrs {\n id: string;\n assetType: string;\n viewMode: \"card\" | \"preview\" | \"interactive\" | \"list\";\n displayConfig?: DisplayConfig | null;\n /** @deprecated Use displayConfig.filters */\n filters?: any;\n /** @deprecated Use displayConfig.visualizationId */\n visualizationId?: string | null;\n partial?: boolean;\n}\n\n/** Assets pulled from Air JSON: embedded blocks or link href shorthands. */\nexport type ExtractedContentAsset =\n | { id: string; assetType: string; via: \"embed\" }\n | { id: string; assetType: string; via: \"link\"; legacy: false }\n | { id: string; via: \"link\"; legacy: true };\n\ninterface LinkedAssetRef {\n assetType: string;\n entity: string;\n slug: string;\n}\n\n/** UUID v4 pattern for inline link hrefs */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/** Shorthand link hrefs: `post:<uuid>`, `file:<uuid>`, … (preferred over legacy `asset:<uuid>`). */\nconst TYPED_ASSET_LINK_RE = new RegExp(\n `^(post|dataset|file|service|route|quest):(${UUID_RE})$`,\n \"i\"\n);\n\n/** @deprecated Prefer `post:<uuid>` etc.; still supported and resolved server-side. */\nconst LEGACY_ASSET_LINK_RE = new RegExp(`^asset:(${UUID_RE})$`, \"i\");\n\n/** Route action link hrefs: `action:<uuid>` → history page for that run. */\nconst ACTION_LINK_RE = new RegExp(`^action:(${UUID_RE})$`, \"i\");\n\n/**\n * Collapsed wiki-link form agents often write: `[dataset:<uuid>]` instead of\n * `[label](dataset:<uuid>)`. Negative lookahead skips real markdown links\n * whose label happens to be the shorthand (`[dataset:<uuid>](…)`).\n */\nconst ASSET_WIKI_LINK_RE = new RegExp(\n `\\\\[(post|dataset|file|service|route|quest|asset|action):(${UUID_RE})\\\\](?!\\\\()`,\n \"gi\"\n);\n\nconst VALID_ASSET_TYPES = new Set([\n \"post\",\n \"dataset\",\n \"file\",\n \"service\",\n \"route\",\n \"quest\",\n]);\n\nexport type ExtractedContentAction = { id: string; via: \"link\" };\n\n/**\n * Parse an inline link `href` for Ouro asset shorthands.\n * - `post:<uuid>`, `file:<uuid>`, … → typed (asset type known from prefix)\n * - `asset:<uuid>` → legacy (type resolved via DB when creating connections)\n */\nfunction parseAssetLinkShorthand(\n href: string\n):\n | { id: string; assetType: string; legacy: false }\n | { id: string; legacy: true }\n | null {\n const typed = TYPED_ASSET_LINK_RE.exec(href);\n if (typed) {\n const assetType = typed[1].toLowerCase();\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n return { id: typed[2], assetType, legacy: false };\n }\n const legacy = LEGACY_ASSET_LINK_RE.exec(href);\n if (legacy) return { id: legacy[1], legacy: true };\n return null;\n}\n\n/**\n * Parse an inline link `href` for a route action shorthand: `action:<uuid>`.\n * Actions are not assets — callers must resolve them separately.\n */\nfunction parseActionLinkShorthand(href: string): { id: string } | null {\n const match = ACTION_LINK_RE.exec(href);\n if (!match) return null;\n return { id: match[1] };\n}\n\nexport type AssetWikiLinkMatch =\n | { raw: string; href: string; id: string; assetType: string; legacy: false }\n | { raw: string; href: string; id: string; legacy: true }\n | { raw: string; href: string; id: string; action: true };\n\n/**\n * Find collapsed `[dataset:<uuid>]` / `[action:<uuid>]` spans in a text node.\n * Skips `[shorthand](href)` markdown links via the regex lookahead.\n */\nfunction extractAssetWikiLinks(text: string): AssetWikiLinkMatch[] {\n if (!text) return [];\n const matches: AssetWikiLinkMatch[] = [];\n const re = new RegExp(ASSET_WIKI_LINK_RE.source, ASSET_WIKI_LINK_RE.flags);\n let match: RegExpExecArray | null;\n while ((match = re.exec(text)) !== null) {\n const kind = match[1].toLowerCase();\n const id = match[2];\n const href = `${kind}:${id}`;\n if (kind === \"action\") {\n matches.push({ raw: match[0], href, id, action: true });\n } else if (kind === \"asset\") {\n matches.push({ raw: match[0], href, id, legacy: true });\n } else if (VALID_ASSET_TYPES.has(kind)) {\n matches.push({ raw: match[0], href, id, assetType: kind, legacy: false });\n }\n }\n return matches;\n}\n\n/**\n * Parse an Ouro site URL into its asset components.\n * Accepts both absolute URLs (https://ouro.foundation/posts/entity/slug)\n * and relative paths (/posts/entity/slug).\n */\nfunction parseOuroAssetUrl(\n href: string,\n siteUrl?: string\n): LinkedAssetRef | null {\n let pathname: string;\n try {\n if (href.startsWith(\"/\")) {\n pathname = href;\n } else {\n const url = new URL(href);\n if (siteUrl) {\n const siteHost = new URL(siteUrl).host;\n if (url.host !== siteHost) return null;\n }\n pathname = url.pathname;\n }\n } catch {\n return null;\n }\n\n // Pattern: /{assetType}s/{entity}/{slug}\n const match = pathname.match(\n /^\\/(\\w+)s\\/([^/]+)\\/([^/?#]+)/\n );\n if (!match) return null;\n\n const [, assetType, entity, slug] = match;\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n\n return { assetType, entity: decodeURIComponent(entity), slug: decodeURIComponent(slug) };\n}\n\nconst extractContent = (item: any): any => {\n if (Array.isArray(item)) return item.map(extractContent);\n if (item?.content) {\n if (Array.isArray(item.content))\n return item.content.map(extractContent).flat();\n else return extractContent(item.content);\n } else return item; // leaf\n};\n\nfunction getReferencesInContent(\n json: Content[\"json\"],\n options?: { siteUrl?: string }\n) {\n if (!json || !json?.content)\n return { users: [], assets: [], actions: [], linkedAssets: [] };\n const content = json.content.map(extractContent).flat();\n\n const users = content\n .filter((item: any) => item.type === \"mention\")\n .map((item: any) => ({\n user_id: item.attrs?.id,\n username: item.attrs?.label || item.attrs?.username,\n }))\n .reduce((unique: any[], item: any) => {\n if (\n !unique.some(\n (u) =>\n (u.user_id && item.user_id && u.user_id === item.user_id) ||\n (u.username && item.username && u.username === item.username)\n )\n ) {\n unique.push(item);\n }\n return unique;\n }, []) as Partial<Profile>[];\n\n const assets: ExtractedContentAsset[] = content\n .filter(\n (item: any) =>\n item.type === \"assetComponent\" && item.attrs?.id && !item.attrs?.partial\n )\n .map(({ attrs }: { attrs: InlineAssetAttrs }) => ({\n id: attrs.id,\n assetType: attrs.assetType,\n via: \"embed\" as const,\n }))\n .reduce((unique: ExtractedContentAsset[], item: ExtractedContentAsset) => {\n if (!unique.some((u) => u.id === item.id)) {\n unique.push(item);\n }\n return unique;\n }, []);\n\n // Extract asset / action references from link marks\n const linkedAssets: LinkedAssetRef[] = [];\n const actions: ExtractedContentAction[] = [];\n const seenAssetIds = new Set(assets.map((a) => a.id));\n const seenActionIds = new Set<string>();\n const seenLinkedKeys = new Set<string>();\n\n const addWikiRefs = (text: string) => {\n for (const wiki of extractAssetWikiLinks(text)) {\n if (\"action\" in wiki && wiki.action) {\n if (!seenActionIds.has(wiki.id)) {\n seenActionIds.add(wiki.id);\n actions.push({ id: wiki.id, via: \"link\" });\n }\n continue;\n }\n if (seenAssetIds.has(wiki.id)) continue;\n seenAssetIds.add(wiki.id);\n if (\"legacy\" in wiki && wiki.legacy) {\n assets.push({ id: wiki.id, via: \"link\", legacy: true });\n } else if (\"assetType\" in wiki) {\n assets.push({\n id: wiki.id,\n assetType: wiki.assetType,\n via: \"link\",\n legacy: false,\n });\n }\n }\n };\n\n for (const item of content) {\n if (item?.type !== \"text\") continue;\n const marks = item.marks || [];\n const hasCodeMark = marks.some((m: any) => m.type === \"code\");\n const linkMark = marks.find((m: any) => m.type === \"link\");\n\n if (linkMark?.attrs?.href) {\n const href: string = linkMark.attrs.href;\n\n const actionShorthand = parseActionLinkShorthand(href);\n if (actionShorthand) {\n if (!seenActionIds.has(actionShorthand.id)) {\n seenActionIds.add(actionShorthand.id);\n actions.push({ id: actionShorthand.id, via: \"link\" });\n }\n continue;\n }\n\n const shorthand = parseAssetLinkShorthand(href);\n if (shorthand) {\n const id = shorthand.id;\n if (!seenAssetIds.has(id)) {\n seenAssetIds.add(id);\n if (shorthand.legacy) {\n assets.push({ id, via: \"link\", legacy: true });\n } else {\n assets.push({\n id,\n assetType: shorthand.assetType,\n via: \"link\",\n legacy: false,\n });\n }\n }\n continue;\n }\n\n const parsed = parseOuroAssetUrl(href, options?.siteUrl);\n if (parsed) {\n const key = `${parsed.assetType}:${parsed.entity}:${parsed.slug}`;\n if (!seenLinkedKeys.has(key)) {\n seenLinkedKeys.add(key);\n linkedAssets.push(parsed);\n }\n }\n continue;\n }\n\n if (!hasCodeMark && typeof item.text === \"string\") {\n addWikiRefs(item.text);\n }\n }\n\n return {\n users,\n assets,\n actions,\n linkedAssets,\n };\n}\n\nexport {\n extractAssetWikiLinks,\n getReferencesInContent,\n parseActionLinkShorthand,\n parseAssetLinkShorthand,\n parseOuroAssetUrl,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';function $(e){return e==="default"?"card":e==="chart"?"preview":e==="preview"||e==="interactive"||e==="card"||e==="list"?e:"card"}function z(e){let s={};if(e.displayConfig&&(s=typeof e.displayConfig=="string"?JSON.parse(e.displayConfig):{...e.displayConfig}),s.visualizationId===void 0&&e.visualizationId&&(s.visualizationId=e.visualizationId),s.filters===void 0&&e.filters){let i=e.filters;s.filters=typeof i=="string"?JSON.parse(i):i;}return s}var v="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",T=new RegExp(`^(post|dataset|file|service|route|quest):(${v})$`,"i"),R=new RegExp(`^asset:(${v})$`,"i"),L=new RegExp(`^action:(${v})$`,"i"),w=new RegExp(`\\[(post|dataset|file|service|route|quest|asset|action):(${v})\\](?!\\()`,"gi"),x=new Set(["post","dataset","file","service","route","quest"]);function _(e){let s=T.exec(e);if(s){let a=s[1].toLowerCase();return x.has(a)?{id:s[2],assetType:a,legacy:false}:null}let i=R.exec(e);return i?{id:i[1],legacy:true}:null}function S(e){let s=L.exec(e);return s?{id:s[1]}:null}function m(e){if(!e)return [];let s=[],i=new RegExp(w.source,w.flags),a;for(;(a=i.exec(e))!==null;){let r=a[1].toLowerCase(),l=a[2],c=`${r}:${l}`;r==="action"?s.push({raw:a[0],href:c,id:l,action:true}):r==="asset"?s.push({raw:a[0],href:c,id:l,legacy:true}):x.has(r)&&s.push({raw:a[0],href:c,id:l,assetType:r,legacy:false});}return s}function D(e,s){let i;try{if(e.startsWith("/"))i=e;else {let d=new URL(e);if(s){let p=new URL(s).host;if(d.host!==p)return null}i=d.pathname;}}catch{return null}let a=i.match(/^\/(\w+)s\/([^/]+)\/([^/?#]+)/);if(!a)return null;let[,r,l,c]=a;return x.has(r)?{assetType:r,entity:decodeURIComponent(l),slug:decodeURIComponent(c)}:null}var k=e=>Array.isArray(e)?e.map(k):e!=null&&e.content?Array.isArray(e.content)?e.content.map(k).flat():k(e.content):e;function U(e,s){var E;if(!e||!(e!=null&&e.content))return {users:[],assets:[],actions:[],linkedAssets:[]};let i=e.content.map(k).flat(),a=i.filter(t=>t.type==="mention").map(t=>{var n,o,f;return {user_id:(n=t.attrs)==null?void 0:n.id,username:((o=t.attrs)==null?void 0:o.label)||((f=t.attrs)==null?void 0:f.username)}}).reduce((t,n)=>(t.some(o=>o.user_id&&n.user_id&&o.user_id===n.user_id||o.username&&n.username&&o.username===n.username)||t.push(n),t),[]),r=i.filter(t=>{var n,o;return t.type==="assetComponent"&&((n=t.attrs)==null?void 0:n.id)&&!((o=t.attrs)!=null&&o.partial)}).map(({attrs:t})=>({id:t.id,assetType:t.assetType,via:"embed"})).reduce((t,n)=>(t.some(o=>o.id===n.id)||t.push(n),t),[]),l=[],c=[],d=new Set(r.map(t=>t.id)),p=new Set,C=new Set,I=t=>{for(let n of m(t)){if("action"in n&&n.action){p.has(n.id)||(p.add(n.id),c.push({id:n.id,via:"link"}));continue}d.has(n.id)||(d.add(n.id),"legacy"in n&&n.legacy?r.push({id:n.id,via:"link",legacy:true}):"assetType"in n&&r.push({id:n.id,assetType:n.assetType,via:"link",legacy:false}));}};for(let t of i){if((t==null?void 0:t.type)!=="text")continue;let n=t.marks||[],o=n.some(u=>u.type==="code"),f=n.find(u=>u.type==="link");if((E=f==null?void 0:f.attrs)!=null&&E.href){let u=f.attrs.href,h=S(u);if(h){p.has(h.id)||(p.add(h.id),c.push({id:h.id,via:"link"}));continue}let A=_(u);if(A){let g=A.id;d.has(g)||(d.add(g),A.legacy?r.push({id:g,via:"link",legacy:true}):r.push({id:g,assetType:A.assetType,via:"link",legacy:false}));continue}let y=D(u,s==null?void 0:s.siteUrl);if(y){let g=`${y.assetType}:${y.entity}:${y.slug}`;C.has(g)||(C.add(g),l.push(y));}continue}!o&&typeof t.text=="string"&&I(t.text);}return {users:a,assets:r,actions:c,linkedAssets:l}}exports.a=$;exports.b=z;exports.c=_;exports.d=S;exports.e=m;exports.f=D;exports.g=U;//# sourceMappingURL=chunk-OCMBP3U7.cjs.map
2
+ //# sourceMappingURL=chunk-OCMBP3U7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/air/index.ts"],"names":["normalizeViewMode","raw","resolveDisplayConfig","attrs","base","UUID_RE","TYPED_ASSET_LINK_RE","LEGACY_ASSET_LINK_RE","ACTION_LINK_RE","ASSET_WIKI_LINK_RE","VALID_ASSET_TYPES","parseAssetLinkShorthand","href","typed","assetType","legacy","parseActionLinkShorthand","match","extractAssetWikiLinks","text","matches","re","kind","id","parseOuroAssetUrl","siteUrl","pathname","url","siteHost","entity","slug","extractContent","item","getReferencesInContent","json","options","_a","content","users","_b","_c","unique","u","assets","linkedAssets","actions","seenAssetIds","a","seenActionIds","seenLinkedKeys","addWikiRefs","wiki","marks","hasCodeMark","m","linkMark","actionShorthand","shorthand","parsed","key"],"mappings":"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","file":"chunk-OCMBP3U7.cjs","sourcesContent":["import { Content } from \"../../schema/posts\";\nimport { Profile } from \"../../schema/users\";\n\nexport interface DataFilter {\n column: string;\n value: string;\n operator: string;\n active?: boolean;\n}\n\nexport interface DisplayConfig {\n /** Dataset: ID of a saved visualization to render instead of the default chart. */\n visualizationId?: string | null;\n /** Dataset: column filters applied to the data. */\n filters?: DataFilter[];\n /** Route: ID of a specific action to preview (status, logs, side-effect assets). */\n actionId?: string | null;\n /** Route: author-provided defaults for an interactive route form. */\n defaultValues?: Record<string, unknown>;\n}\n\n/**\n * Normalize legacy viewMode values to the current set.\n * \"chart\" → \"preview\", \"default\" → \"card\", anything else → \"card\".\n */\nexport function normalizeViewMode(\n raw: string | undefined | null\n): \"card\" | \"preview\" | \"interactive\" | \"list\" {\n if (raw === \"default\") return \"card\";\n if (raw === \"chart\") return \"preview\";\n if (\n raw === \"preview\" ||\n raw === \"interactive\" ||\n raw === \"card\" ||\n raw === \"list\"\n )\n return raw;\n return \"card\";\n}\n\n/**\n * Build a DisplayConfig from node/element attributes, handling the legacy\n * flat `visualizationId` / `filters` attrs and the new `displayConfig` object.\n * Prefers values inside `displayConfig` when present.\n */\nexport function resolveDisplayConfig(attrs: {\n displayConfig?: DisplayConfig | string | null;\n visualizationId?: string | null;\n filters?: DataFilter[] | string | null;\n}): DisplayConfig {\n let base: DisplayConfig = {};\n\n if (attrs.displayConfig) {\n base =\n typeof attrs.displayConfig === \"string\"\n ? JSON.parse(attrs.displayConfig)\n : { ...attrs.displayConfig };\n }\n\n // Fall back to legacy flat attrs when displayConfig doesn't carry them\n if (base.visualizationId === undefined && attrs.visualizationId) {\n base.visualizationId = attrs.visualizationId;\n }\n if (base.filters === undefined && attrs.filters) {\n const raw = attrs.filters;\n base.filters =\n typeof raw === \"string\" ? JSON.parse(raw) : raw;\n }\n\n return base;\n}\n\nexport interface InlineAssetAttrs {\n id: string;\n assetType: string;\n viewMode: \"card\" | \"preview\" | \"interactive\" | \"list\";\n displayConfig?: DisplayConfig | null;\n /** @deprecated Use displayConfig.filters */\n filters?: any;\n /** @deprecated Use displayConfig.visualizationId */\n visualizationId?: string | null;\n partial?: boolean;\n}\n\n/** Assets pulled from Air JSON: embedded blocks or link href shorthands. */\nexport type ExtractedContentAsset =\n | { id: string; assetType: string; via: \"embed\" }\n | { id: string; assetType: string; via: \"link\"; legacy: false }\n | { id: string; via: \"link\"; legacy: true };\n\ninterface LinkedAssetRef {\n assetType: string;\n entity: string;\n slug: string;\n}\n\n/** UUID v4 pattern for inline link hrefs */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/** Shorthand link hrefs: `post:<uuid>`, `file:<uuid>`, … (preferred over legacy `asset:<uuid>`). */\nconst TYPED_ASSET_LINK_RE = new RegExp(\n `^(post|dataset|file|service|route|quest):(${UUID_RE})$`,\n \"i\"\n);\n\n/** @deprecated Prefer `post:<uuid>` etc.; still supported and resolved server-side. */\nconst LEGACY_ASSET_LINK_RE = new RegExp(`^asset:(${UUID_RE})$`, \"i\");\n\n/** Route action link hrefs: `action:<uuid>` → history page for that run. */\nconst ACTION_LINK_RE = new RegExp(`^action:(${UUID_RE})$`, \"i\");\n\n/**\n * Collapsed wiki-link form agents often write: `[dataset:<uuid>]` instead of\n * `[label](dataset:<uuid>)`. Negative lookahead skips real markdown links\n * whose label happens to be the shorthand (`[dataset:<uuid>](…)`).\n */\nconst ASSET_WIKI_LINK_RE = new RegExp(\n `\\\\[(post|dataset|file|service|route|quest|asset|action):(${UUID_RE})\\\\](?!\\\\()`,\n \"gi\"\n);\n\nconst VALID_ASSET_TYPES = new Set([\n \"post\",\n \"dataset\",\n \"file\",\n \"service\",\n \"route\",\n \"quest\",\n]);\n\nexport type ExtractedContentAction = { id: string; via: \"link\" };\n\n/**\n * Parse an inline link `href` for Ouro asset shorthands.\n * - `post:<uuid>`, `file:<uuid>`, … → typed (asset type known from prefix)\n * - `asset:<uuid>` → legacy (type resolved via DB when creating connections)\n */\nfunction parseAssetLinkShorthand(\n href: string\n):\n | { id: string; assetType: string; legacy: false }\n | { id: string; legacy: true }\n | null {\n const typed = TYPED_ASSET_LINK_RE.exec(href);\n if (typed) {\n const assetType = typed[1].toLowerCase();\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n return { id: typed[2], assetType, legacy: false };\n }\n const legacy = LEGACY_ASSET_LINK_RE.exec(href);\n if (legacy) return { id: legacy[1], legacy: true };\n return null;\n}\n\n/**\n * Parse an inline link `href` for a route action shorthand: `action:<uuid>`.\n * Actions are not assets — callers must resolve them separately.\n */\nfunction parseActionLinkShorthand(href: string): { id: string } | null {\n const match = ACTION_LINK_RE.exec(href);\n if (!match) return null;\n return { id: match[1] };\n}\n\nexport type AssetWikiLinkMatch =\n | { raw: string; href: string; id: string; assetType: string; legacy: false }\n | { raw: string; href: string; id: string; legacy: true }\n | { raw: string; href: string; id: string; action: true };\n\n/**\n * Find collapsed `[dataset:<uuid>]` / `[action:<uuid>]` spans in a text node.\n * Skips `[shorthand](href)` markdown links via the regex lookahead.\n */\nfunction extractAssetWikiLinks(text: string): AssetWikiLinkMatch[] {\n if (!text) return [];\n const matches: AssetWikiLinkMatch[] = [];\n const re = new RegExp(ASSET_WIKI_LINK_RE.source, ASSET_WIKI_LINK_RE.flags);\n let match: RegExpExecArray | null;\n while ((match = re.exec(text)) !== null) {\n const kind = match[1].toLowerCase();\n const id = match[2];\n const href = `${kind}:${id}`;\n if (kind === \"action\") {\n matches.push({ raw: match[0], href, id, action: true });\n } else if (kind === \"asset\") {\n matches.push({ raw: match[0], href, id, legacy: true });\n } else if (VALID_ASSET_TYPES.has(kind)) {\n matches.push({ raw: match[0], href, id, assetType: kind, legacy: false });\n }\n }\n return matches;\n}\n\n/**\n * Parse an Ouro site URL into its asset components.\n * Accepts both absolute URLs (https://ouro.foundation/posts/entity/slug)\n * and relative paths (/posts/entity/slug).\n */\nfunction parseOuroAssetUrl(\n href: string,\n siteUrl?: string\n): LinkedAssetRef | null {\n let pathname: string;\n try {\n if (href.startsWith(\"/\")) {\n pathname = href;\n } else {\n const url = new URL(href);\n if (siteUrl) {\n const siteHost = new URL(siteUrl).host;\n if (url.host !== siteHost) return null;\n }\n pathname = url.pathname;\n }\n } catch {\n return null;\n }\n\n // Pattern: /{assetType}s/{entity}/{slug}\n const match = pathname.match(\n /^\\/(\\w+)s\\/([^/]+)\\/([^/?#]+)/\n );\n if (!match) return null;\n\n const [, assetType, entity, slug] = match;\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n\n return { assetType, entity: decodeURIComponent(entity), slug: decodeURIComponent(slug) };\n}\n\nconst extractContent = (item: any): any => {\n if (Array.isArray(item)) return item.map(extractContent);\n if (item?.content) {\n if (Array.isArray(item.content))\n return item.content.map(extractContent).flat();\n else return extractContent(item.content);\n } else return item; // leaf\n};\n\nfunction getReferencesInContent(\n json: Content[\"json\"],\n options?: { siteUrl?: string }\n) {\n if (!json || !json?.content)\n return { users: [], assets: [], actions: [], linkedAssets: [] };\n const content = json.content.map(extractContent).flat();\n\n const users = content\n .filter((item: any) => item.type === \"mention\")\n .map((item: any) => ({\n user_id: item.attrs?.id,\n username: item.attrs?.label || item.attrs?.username,\n }))\n .reduce((unique: any[], item: any) => {\n if (\n !unique.some(\n (u) =>\n (u.user_id && item.user_id && u.user_id === item.user_id) ||\n (u.username && item.username && u.username === item.username)\n )\n ) {\n unique.push(item);\n }\n return unique;\n }, []) as Partial<Profile>[];\n\n const assets: ExtractedContentAsset[] = content\n .filter(\n (item: any) =>\n item.type === \"assetComponent\" && item.attrs?.id && !item.attrs?.partial\n )\n .map(({ attrs }: { attrs: InlineAssetAttrs }) => ({\n id: attrs.id,\n assetType: attrs.assetType,\n via: \"embed\" as const,\n }))\n .reduce((unique: ExtractedContentAsset[], item: ExtractedContentAsset) => {\n if (!unique.some((u) => u.id === item.id)) {\n unique.push(item);\n }\n return unique;\n }, []);\n\n // Extract asset / action references from link marks\n const linkedAssets: LinkedAssetRef[] = [];\n const actions: ExtractedContentAction[] = [];\n const seenAssetIds = new Set(assets.map((a) => a.id));\n const seenActionIds = new Set<string>();\n const seenLinkedKeys = new Set<string>();\n\n const addWikiRefs = (text: string) => {\n for (const wiki of extractAssetWikiLinks(text)) {\n if (\"action\" in wiki && wiki.action) {\n if (!seenActionIds.has(wiki.id)) {\n seenActionIds.add(wiki.id);\n actions.push({ id: wiki.id, via: \"link\" });\n }\n continue;\n }\n if (seenAssetIds.has(wiki.id)) continue;\n seenAssetIds.add(wiki.id);\n if (\"legacy\" in wiki && wiki.legacy) {\n assets.push({ id: wiki.id, via: \"link\", legacy: true });\n } else if (\"assetType\" in wiki) {\n assets.push({\n id: wiki.id,\n assetType: wiki.assetType,\n via: \"link\",\n legacy: false,\n });\n }\n }\n };\n\n for (const item of content) {\n if (item?.type !== \"text\") continue;\n const marks = item.marks || [];\n const hasCodeMark = marks.some((m: any) => m.type === \"code\");\n const linkMark = marks.find((m: any) => m.type === \"link\");\n\n if (linkMark?.attrs?.href) {\n const href: string = linkMark.attrs.href;\n\n const actionShorthand = parseActionLinkShorthand(href);\n if (actionShorthand) {\n if (!seenActionIds.has(actionShorthand.id)) {\n seenActionIds.add(actionShorthand.id);\n actions.push({ id: actionShorthand.id, via: \"link\" });\n }\n continue;\n }\n\n const shorthand = parseAssetLinkShorthand(href);\n if (shorthand) {\n const id = shorthand.id;\n if (!seenAssetIds.has(id)) {\n seenAssetIds.add(id);\n if (shorthand.legacy) {\n assets.push({ id, via: \"link\", legacy: true });\n } else {\n assets.push({\n id,\n assetType: shorthand.assetType,\n via: \"link\",\n legacy: false,\n });\n }\n }\n continue;\n }\n\n const parsed = parseOuroAssetUrl(href, options?.siteUrl);\n if (parsed) {\n const key = `${parsed.assetType}:${parsed.entity}:${parsed.slug}`;\n if (!seenLinkedKeys.has(key)) {\n seenLinkedKeys.add(key);\n linkedAssets.push(parsed);\n }\n }\n continue;\n }\n\n if (!hasCodeMark && typeof item.text === \"string\") {\n addWikiRefs(item.text);\n }\n }\n\n return {\n users,\n assets,\n actions,\n linkedAssets,\n };\n}\n\nexport {\n extractAssetWikiLinks,\n getReferencesInContent,\n parseActionLinkShorthand,\n parseAssetLinkShorthand,\n parseOuroAssetUrl,\n};\n"]}
@@ -0,0 +1,7 @@
1
+ 'use strict';var marked=require('marked');function o(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}function l(e,t){return `<span data-latex="${o(e)}" data-display-mode="${t}"></span>`}var p={name:"katexBlock",level:"block",start(e){let t=e.match(/\\\[/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\]/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\[([\s\S]*?)\\\]/.exec(e);if(n)return {type:"katexBlock",raw:n[0],latex:n[1].trim(),displayMode:true}},renderer(e){return l(e.latex,e.displayMode)}},m={name:"katexInline",level:"inline",start(e){let t=e.match(/\\\(/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\)/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\(([\s\S]*?)\\\)/.exec(e);if(n)return {type:"katexInline",raw:n[0],latex:n[1].trim(),displayMode:false}},renderer(e){return l(e.latex,e.displayMode)}},k={name:"assetComponent",level:"block",start(e){var t;return (t=e.match(/^```assetComponent/))==null?void 0:t.index},end(e){var t;return (t=e.match(/^```/))==null?void 0:t.index},tokenizer(e,t){let n=/^```assetComponent\s+(\{[\s\S]*?\})\n```/.exec(e);if(n)return {type:"assetComponent",raw:n[0],properties:n[1],tokens:[]}},renderer(e){let t;try{t=JSON.parse(e.properties);}catch(n){console.error("Invalid JSON in assetComponent properties:",n),t={};}return `
2
+ <asset-component ${Object.entries(t).map(([n,s])=>{let i=(typeof s=="object"&&s!==null?JSON.stringify(s):String(s)).replace(/"/g,"&quot;");return `${n}="${i}"`}).join(" ")}></asset-component>`}},y={name:"userMention",level:"inline",start(e){let t=e.match(/`\{@|(?<![`])\{@/);return t?t.index:void 0},end(e){var t,r,n;return (n=(t=e.match(/\}`/))==null?void 0:t.index)!=null?n:(r=e.match(/(?<![`])\{@[^}]*\}/))==null?void 0:r.index},tokenizer(e,t){let r=/^`\{@([a-zA-Z0-9_]+)\}`/.exec(e);if(r)return {type:"userMention",raw:r[0],username:r[1]};let n=/^\{@([a-zA-Z0-9_]+)\}/.exec(e);if(n)return {type:"userMention",raw:n[0],username:n[1]}},renderer(e){let t=o(e.username);return `<user-mention username="${t}" data-label="${t}"></user-mention>`}},f="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",h=new RegExp(`^\\[(post|dataset|file|service|route|quest|asset|action):(${f})\\](?!\\()`,"i"),x={name:"assetWikiLink",level:"inline",start(e){let t=e.match(/\[(?:post|dataset|file|service|route|quest|asset|action):/i);return t?t.index:void 0},tokenizer(e){let t=h.exec(e);if(!t)return;let r=`${t[1].toLowerCase()}:${t[2]}`;return {type:"assetWikiLink",raw:t[0],href:r}},renderer(e){let t=o(e.href);return `<a href="${t}">${t}</a>`}};marked.marked.use({gfm:true,extensions:[k,y,x,p,m],renderer:{list(e){var t;return !e.ordered&&((t=e.items)==null?void 0:t.length)>0&&e.items.every(r=>r.task)?`<ul data-type="taskList">
3
+ ${e.items.map(n=>{let s=n.tokens.filter(u=>u.type!=="checkbox"),a=this.parser.parse(s,!!n.loose);n.loose||(a=`<p>${a}</p>`);let i=n.checked?"true":"false",d=n.checked?' checked="checked"':"";return `<li data-type="taskItem" data-checked="${i}"><label contenteditable="false"><input type="checkbox"${d}></label><div>${a}</div></li>`}).join(`
4
+ `)}
5
+ </ul>
6
+ `:false}}});function $(e){return marked.marked.parse(e)}exports.a=$;//# sourceMappingURL=chunk-PJLIO4PA.cjs.map
7
+ //# sourceMappingURL=chunk-PJLIO4PA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/air/markdown-parser.ts"],"names":["escapeHtmlAttr","s","mathSpanHtml","latex","displayMode","katexBlockParser","src","match","_a","_b","_c","tokens","token","katexInlineParser","assetComponentExtension","properties","e","key","value","escapedValue","userMentionExtension","m","codeWrapped","bracesOnly","u","UUID_RE","ASSET_WIKI_LINK_TOKEN","assetWikiLinkExtension","href","marked","item","inner","t","text","checked","ckAttr","parseMarkdown","markdown"],"mappings":"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","file":"chunk-PJLIO4PA.cjs","sourcesContent":["import { marked } from \"marked\";\n\n/** Safe for double-quoted HTML attributes (e.g. data-latex). */\nfunction escapeHtmlAttr(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\");\n}\n\nfunction mathSpanHtml(latex: string, displayMode: boolean): string {\n return `<span data-latex=\"${escapeHtmlAttr(latex)}\" data-display-mode=\"${displayMode}\"></span>`;\n}\n\nconst katexBlockParser = {\n name: \"katexBlock\",\n level: \"block\",\n start(src: string) {\n const match = src.match(/\\\\\\[/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\]/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const displayRule = /^\\\\\\[([\\s\\S]*?)\\\\\\]/;\n const match = displayRule.exec(src);\n if (match) {\n return {\n type: \"katexBlock\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: true,\n };\n }\n },\n renderer(token: any) {\n // Non-self-closing span is important for client-side inline flow around the node.\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst katexInlineParser = {\n name: \"katexInline\",\n level: \"inline\",\n start(src: string) {\n const match = src.match(/\\\\\\(/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\)/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const inlineRule = /^\\\\\\(([\\s\\S]*?)\\\\\\)/;\n const match = inlineRule.exec(src);\n if (match) {\n return {\n type: \"katexInline\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: false,\n };\n }\n },\n renderer(token: any) {\n // STRANGE: The non-self-closing tag is important for client side to render as inline and render text after it\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst assetComponentExtension = {\n name: \"assetComponent\",\n level: \"block\",\n start(src: string) {\n return src.match(/^```assetComponent/)?.index;\n },\n end(src: string) {\n return src.match(/^```/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const rule = /^```assetComponent\\s+(\\{[\\s\\S]*?\\})\\n```/;\n const match = rule.exec(src);\n if (match) {\n const token = {\n type: \"assetComponent\",\n raw: match[0],\n properties: match[1],\n tokens: [],\n };\n return token;\n }\n },\n renderer(token: any) {\n let properties;\n try {\n properties = JSON.parse(token.properties);\n } catch (e) {\n console.error(\"Invalid JSON in assetComponent properties:\", e);\n properties = {};\n }\n const componentHtml = `\n <asset-component ${Object.entries(properties)\n .map(([key, value]) => {\n // Stringify arrays and objects, keep primitives as-is\n const stringValue = typeof value === 'object' && value !== null\n ? JSON.stringify(value)\n : String(value);\n // Escape quotes for HTML attributes\n const escapedValue = stringValue.replace(/\"/g, '&quot;');\n return `${key}=\"${escapedValue}\"`;\n })\n .join(\" \")}></asset-component>`;\n\n return componentHtml;\n },\n};\n\nconst userMentionExtension = {\n name: \"userMention\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(/`\\{@|(?<![`])\\{@/);\n return m ? m.index : undefined;\n },\n end(src: string) {\n return src.match(/\\}`/)?.index ?? src.match(/(?<![`])\\{@[^}]*\\}/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const codeWrapped = /^`\\{@([a-zA-Z0-9_]+)\\}`/.exec(src);\n if (codeWrapped) {\n return {\n type: \"userMention\",\n raw: codeWrapped[0],\n username: codeWrapped[1],\n };\n }\n const bracesOnly = /^\\{@([a-zA-Z0-9_]+)\\}/.exec(src);\n if (bracesOnly) {\n return {\n type: \"userMention\",\n raw: bracesOnly[0],\n username: bracesOnly[1],\n };\n }\n },\n renderer(token: any) {\n const u = escapeHtmlAttr(token.username);\n return `<user-mention username=\"${u}\" data-label=\"${u}\"></user-mention>`;\n },\n};\n\n/** UUID-shaped ids (v4 and v7) used in typed asset shorthands. */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/**\n * Collapsed `[dataset:<uuid>]` form. `(?!\\\\()` leaves `[label](dataset:<uuid>)`\n * to the built-in markdown link tokenizer.\n */\nconst ASSET_WIKI_LINK_TOKEN = new RegExp(\n `^\\\\[(post|dataset|file|service|route|quest|asset|action):(${UUID_RE})\\\\](?!\\\\()`,\n \"i\"\n);\n\nconst assetWikiLinkExtension = {\n name: \"assetWikiLink\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(\n /\\[(?:post|dataset|file|service|route|quest|asset|action):/i\n );\n return m ? m.index : undefined;\n },\n tokenizer(src: string) {\n const match = ASSET_WIKI_LINK_TOKEN.exec(src);\n if (!match) return;\n const href = `${match[1].toLowerCase()}:${match[2]}`;\n return {\n type: \"assetWikiLink\",\n raw: match[0],\n href,\n };\n },\n renderer(token: any) {\n const href = escapeHtmlAttr(token.href);\n return `<a href=\"${href}\">${href}</a>`;\n },\n};\n\nmarked.use({\n gfm: true,\n extensions: [\n assetComponentExtension,\n userMentionExtension,\n assetWikiLinkExtension,\n katexBlockParser,\n katexInlineParser,\n ],\n renderer: {\n list(token: any) {\n if (\n !token.ordered &&\n token.items?.length > 0 &&\n token.items.every((item: any) => item.task)\n ) {\n const body = token.items\n .map((item: any) => {\n const inner = item.tokens.filter(\n (t: any) => t.type !== \"checkbox\"\n );\n let text = (this as any).parser.parse(inner, !!item.loose);\n if (!item.loose) text = `<p>${text}</p>`;\n const checked = item.checked ? \"true\" : \"false\";\n const ckAttr = item.checked ? ' checked=\"checked\"' : \"\";\n return `<li data-type=\"taskItem\" data-checked=\"${checked}\"><label contenteditable=\"false\"><input type=\"checkbox\"${ckAttr}></label><div>${text}</div></li>`;\n })\n .join(\"\\n\");\n return `<ul data-type=\"taskList\">\\n${body}\\n</ul>\\n`;\n }\n return false as any;\n },\n },\n});\n\nexport function parseMarkdown(markdown: string) {\n return marked.parse(markdown);\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import {marked}from'marked';function o(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}function l(e,t){return `<span data-latex="${o(e)}" data-display-mode="${t}"></span>`}var p={name:"katexBlock",level:"block",start(e){let t=e.match(/\\\[/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\]/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\[([\s\S]*?)\\\]/.exec(e);if(n)return {type:"katexBlock",raw:n[0],latex:n[1].trim(),displayMode:true}},renderer(e){return l(e.latex,e.displayMode)}},m={name:"katexInline",level:"inline",start(e){let t=e.match(/\\\(/);return t?t.index:void 0},end(e){var r,n,s;let t=e.match(/\s\\\)/);return t?((r=t.index)!=null?r:0)+((s=(n=t[0])==null?void 0:n.length)!=null?s:0):void 0},tokenizer(e,t){let n=/^\\\(([\s\S]*?)\\\)/.exec(e);if(n)return {type:"katexInline",raw:n[0],latex:n[1].trim(),displayMode:false}},renderer(e){return l(e.latex,e.displayMode)}},k={name:"assetComponent",level:"block",start(e){var t;return (t=e.match(/^```assetComponent/))==null?void 0:t.index},end(e){var t;return (t=e.match(/^```/))==null?void 0:t.index},tokenizer(e,t){let n=/^```assetComponent\s+(\{[\s\S]*?\})\n```/.exec(e);if(n)return {type:"assetComponent",raw:n[0],properties:n[1],tokens:[]}},renderer(e){let t;try{t=JSON.parse(e.properties);}catch(n){console.error("Invalid JSON in assetComponent properties:",n),t={};}return `
2
+ <asset-component ${Object.entries(t).map(([n,s])=>{let i=(typeof s=="object"&&s!==null?JSON.stringify(s):String(s)).replace(/"/g,"&quot;");return `${n}="${i}"`}).join(" ")}></asset-component>`}},y={name:"userMention",level:"inline",start(e){let t=e.match(/`\{@|(?<![`])\{@/);return t?t.index:void 0},end(e){var t,r,n;return (n=(t=e.match(/\}`/))==null?void 0:t.index)!=null?n:(r=e.match(/(?<![`])\{@[^}]*\}/))==null?void 0:r.index},tokenizer(e,t){let r=/^`\{@([a-zA-Z0-9_]+)\}`/.exec(e);if(r)return {type:"userMention",raw:r[0],username:r[1]};let n=/^\{@([a-zA-Z0-9_]+)\}/.exec(e);if(n)return {type:"userMention",raw:n[0],username:n[1]}},renderer(e){let t=o(e.username);return `<user-mention username="${t}" data-label="${t}"></user-mention>`}},f="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",h=new RegExp(`^\\[(post|dataset|file|service|route|quest|asset|action):(${f})\\](?!\\()`,"i"),x={name:"assetWikiLink",level:"inline",start(e){let t=e.match(/\[(?:post|dataset|file|service|route|quest|asset|action):/i);return t?t.index:void 0},tokenizer(e){let t=h.exec(e);if(!t)return;let r=`${t[1].toLowerCase()}:${t[2]}`;return {type:"assetWikiLink",raw:t[0],href:r}},renderer(e){let t=o(e.href);return `<a href="${t}">${t}</a>`}};marked.use({gfm:true,extensions:[k,y,x,p,m],renderer:{list(e){var t;return !e.ordered&&((t=e.items)==null?void 0:t.length)>0&&e.items.every(r=>r.task)?`<ul data-type="taskList">
3
+ ${e.items.map(n=>{let s=n.tokens.filter(u=>u.type!=="checkbox"),a=this.parser.parse(s,!!n.loose);n.loose||(a=`<p>${a}</p>`);let i=n.checked?"true":"false",d=n.checked?' checked="checked"':"";return `<li data-type="taskItem" data-checked="${i}"><label contenteditable="false"><input type="checkbox"${d}></label><div>${a}</div></li>`}).join(`
4
+ `)}
5
+ </ul>
6
+ `:false}}});function $(e){return marked.parse(e)}export{$ as a};//# sourceMappingURL=chunk-Q4IXX6KS.js.map
7
+ //# sourceMappingURL=chunk-Q4IXX6KS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/air/markdown-parser.ts"],"names":["escapeHtmlAttr","s","mathSpanHtml","latex","displayMode","katexBlockParser","src","match","_a","_b","_c","tokens","token","katexInlineParser","assetComponentExtension","properties","e","key","value","escapedValue","userMentionExtension","m","codeWrapped","bracesOnly","u","UUID_RE","ASSET_WIKI_LINK_TOKEN","assetWikiLinkExtension","href","marked","item","inner","t","text","checked","ckAttr","parseMarkdown","markdown"],"mappings":"4BAGA,SAASA,CAAAA,CAAeC,EAAmB,CACzC,OAAOA,CACJ,CAAA,OAAA,CAAQ,KAAM,OAAO,CAAA,CACrB,OAAQ,CAAA,IAAA,CAAM,QAAQ,CACtB,CAAA,OAAA,CAAQ,IAAM,CAAA,MAAM,CACzB,CAEA,SAASC,CAAaC,CAAAA,CAAAA,CAAeC,EAA8B,CACjE,OAAO,CAAqBJ,kBAAAA,EAAAA,CAAAA,CAAeG,CAAK,CAAC,CAAA,qBAAA,EAAwBC,CAAW,CAAA,SAAA,CACtF,CAEA,IAAMC,CAAAA,CAAmB,CACvB,IAAA,CAAM,aACN,KAAO,CAAA,OAAA,CACP,KAAMC,CAAAA,CAAAA,CAAa,CACjB,IAAMC,CAAAA,CAAQD,CAAI,CAAA,KAAA,CAAM,MAAM,CAC9B,CAAA,OAAOC,CAAQA,CAAAA,CAAAA,CAAM,MAAQ,MAC/B,CAAA,CACA,GAAID,CAAAA,CAAAA,CAAa,CArBnB,IAAAE,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAsBI,IAAMH,CAAQD,CAAAA,CAAAA,CAAI,KAAM,CAAA,QAAQ,EAChC,OAAOC,CAAAA,CAAAA,CAAAA,CAASC,EAAAD,CAAM,CAAA,KAAA,GAAN,KAAAC,CAAe,CAAA,CAAA,GAAA,CAAME,CAAAD,CAAAA,CAAAA,CAAAA,CAAAF,EAAM,CAAC,CAAA,GAAP,IAAAE,CAAAA,MAAAA,CAAAA,CAAAA,CAAU,SAAV,IAAAC,CAAAA,CAAAA,CAAoB,CAAK,CAAA,CAAA,MAChE,EACA,SAAUJ,CAAAA,CAAAA,CAAaK,CAAa,CAAA,CAElC,IAAMJ,CADc,CAAA,qBAAA,CACM,IAAKD,CAAAA,CAAG,EAClC,GAAIC,CAAAA,CACF,OAAO,CACL,KAAM,YACN,CAAA,GAAA,CAAKA,CAAM,CAAA,CAAC,EACZ,KAAOA,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAAE,MAChB,CAAA,WAAA,CAAa,IACf,CAEJ,EACA,QAASK,CAAAA,CAAAA,CAAY,CAEnB,OAAOV,EAAaU,CAAM,CAAA,KAAA,CAAOA,CAAM,CAAA,WAAW,CACpD,CACF,CAAA,CAEMC,CAAoB,CAAA,CACxB,KAAM,aACN,CAAA,KAAA,CAAO,QACP,CAAA,KAAA,CAAMP,EAAa,CACjB,IAAMC,CAAQD,CAAAA,CAAAA,CAAI,MAAM,MAAM,CAAA,CAC9B,OAAOC,CAAAA,CAAQA,EAAM,KAAQ,CAAA,MAC/B,EACA,GAAID,CAAAA,CAAAA,CAAa,CAlDnB,IAAAE,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAmDI,IAAMH,CAAQD,CAAAA,CAAAA,CAAI,KAAM,CAAA,QAAQ,EAChC,OAAOC,CAAAA,CAAAA,CAAAA,CAASC,CAAAD,CAAAA,CAAAA,CAAM,QAAN,IAAAC,CAAAA,CAAAA,CAAe,CAAME,GAAAA,CAAAA,CAAAA,CAAAA,CAAAD,EAAAF,CAAM,CAAA,CAAC,CAAP,GAAA,IAAA,CAAA,MAAA,CAAAE,EAAU,MAAV,GAAA,IAAA,CAAAC,CAAoB,CAAA,CAAA,CAAA,CAAK,MAChE,CACA,CAAA,SAAA,CAAUJ,CAAaK,CAAAA,CAAAA,CAAa,CAElC,IAAMJ,CAAAA,CADa,qBACM,CAAA,IAAA,CAAKD,CAAG,CACjC,CAAA,GAAIC,CACF,CAAA,OAAO,CACL,IAAM,CAAA,aAAA,CACN,GAAKA,CAAAA,CAAAA,CAAM,CAAC,CACZ,CAAA,KAAA,CAAOA,CAAM,CAAA,CAAC,EAAE,IAAK,EAAA,CACrB,WAAa,CAAA,KACf,CAEJ,CACA,CAAA,QAAA,CAASK,CAAY,CAAA,CAEnB,OAAOV,CAAaU,CAAAA,CAAAA,CAAM,KAAOA,CAAAA,CAAAA,CAAM,WAAW,CACpD,CACF,CAEME,CAAAA,CAAAA,CAA0B,CAC9B,IAAM,CAAA,gBAAA,CACN,MAAO,OACP,CAAA,KAAA,CAAMR,EAAa,CA3ErB,IAAAE,CA4EI,CAAA,OAAA,CAAOA,EAAAF,CAAI,CAAA,KAAA,CAAM,oBAAoB,CAAA,GAA9B,YAAAE,CAAiC,CAAA,KAC1C,CACA,CAAA,GAAA,CAAIF,EAAa,CA9EnB,IAAAE,CA+EI,CAAA,OAAA,CAAOA,EAAAF,CAAI,CAAA,KAAA,CAAM,MAAM,CAAA,GAAhB,YAAAE,CAAmB,CAAA,KAC5B,CACA,CAAA,SAAA,CAAUF,EAAaK,CAAa,CAAA,CAElC,IAAMJ,CAAAA,CADO,2CACM,IAAKD,CAAAA,CAAG,EAC3B,GAAIC,CAAAA,CAOF,OANc,CACZ,IAAA,CAAM,gBACN,CAAA,GAAA,CAAKA,EAAM,CAAC,CAAA,CACZ,UAAYA,CAAAA,CAAAA,CAAM,CAAC,CACnB,CAAA,MAAA,CAAQ,EACV,CAGJ,CACA,CAAA,QAAA,CAASK,CAAY,CAAA,CACnB,IAAIG,CACJ,CAAA,GAAI,CACFA,CAAAA,CAAa,KAAK,KAAMH,CAAAA,CAAAA,CAAM,UAAU,EAC1C,OAASI,CAAG,CAAA,CACV,OAAQ,CAAA,KAAA,CAAM,6CAA8CA,CAAC,CAAA,CAC7DD,EAAa,GACf,CAcA,OAbsB;AAAA,yBAAA,EACC,MAAO,CAAA,OAAA,CAAQA,CAAU,CAAA,CAC3C,GAAI,CAAA,CAAC,CAACE,CAAAA,CAAKC,CAAK,CAAA,GAAM,CAMrB,IAAMC,GAJc,OAAOD,CAAAA,EAAU,QAAYA,EAAAA,CAAAA,GAAU,IACvD,CAAA,IAAA,CAAK,SAAUA,CAAAA,CAAK,EACpB,MAAOA,CAAAA,CAAK,CAEiB,EAAA,OAAA,CAAQ,IAAM,CAAA,QAAQ,CACvD,CAAA,OAAO,GAAGD,CAAG,CAAA,EAAA,EAAKE,CAAY,CAAA,CAAA,CAChC,CAAC,CAAA,CACA,IAAK,CAAA,GAAG,CAAC,CAAA,mBAAA,CAGhB,CACF,CAAA,CAEMC,CAAuB,CAAA,CAC3B,IAAM,CAAA,aAAA,CACN,MAAO,QACP,CAAA,KAAA,CAAMd,CAAa,CAAA,CACjB,IAAMe,CAAAA,CAAIf,CAAI,CAAA,KAAA,CAAM,kBAAkB,CACtC,CAAA,OAAOe,CAAIA,CAAAA,CAAAA,CAAE,KAAQ,CAAA,MACvB,CACA,CAAA,GAAA,CAAIf,EAAa,CA9HnB,IAAAE,CAAAC,CAAAA,CAAAA,CAAAC,CA+HI,CAAA,OAAA,CAAOA,CAAAF,CAAAA,CAAAA,CAAAA,CAAAF,CAAI,CAAA,KAAA,CAAM,KAAK,CAAA,GAAf,IAAAE,CAAAA,MAAAA,CAAAA,CAAAA,CAAkB,KAAlB,GAAA,IAAA,CAAAE,GAA2BD,CAAAH,CAAAA,CAAAA,CAAI,KAAM,CAAA,oBAAoB,CAA9B,GAAA,IAAA,CAAA,MAAA,CAAAG,CAAiC,CAAA,KACrE,EACA,SAAUH,CAAAA,CAAAA,CAAaK,CAAa,CAAA,CAClC,IAAMW,CAAAA,CAAc,yBAA0B,CAAA,IAAA,CAAKhB,CAAG,CACtD,CAAA,GAAIgB,CACF,CAAA,OAAO,CACL,IAAA,CAAM,aACN,CAAA,GAAA,CAAKA,EAAY,CAAC,CAAA,CAClB,QAAUA,CAAAA,CAAAA,CAAY,CAAC,CACzB,CAEF,CAAA,IAAMC,EAAa,uBAAwB,CAAA,IAAA,CAAKjB,CAAG,CAAA,CACnD,GAAIiB,CAAAA,CACF,OAAO,CACL,KAAM,aACN,CAAA,GAAA,CAAKA,CAAW,CAAA,CAAC,CACjB,CAAA,QAAA,CAAUA,CAAW,CAAA,CAAC,CACxB,CAEJ,CAAA,CACA,QAASX,CAAAA,CAAAA,CAAY,CACnB,IAAMY,CAAIxB,CAAAA,CAAAA,CAAeY,CAAM,CAAA,QAAQ,CACvC,CAAA,OAAO,CAA2BY,wBAAAA,EAAAA,CAAC,CAAiBA,cAAAA,EAAAA,CAAC,mBACvD,CACF,CAAA,CAGMC,CACJ,CAAA,8DAAA,CAMIC,CAAwB,CAAA,IAAI,MAChC,CAAA,CAAA,0DAAA,EAA6DD,CAAO,CACpE,WAAA,CAAA,CAAA,GACF,CAEME,CAAAA,CAAAA,CAAyB,CAC7B,IAAA,CAAM,eACN,CAAA,KAAA,CAAO,SACP,KAAMrB,CAAAA,CAAAA,CAAa,CACjB,IAAMe,CAAIf,CAAAA,CAAAA,CAAI,KACZ,CAAA,4DACF,EACA,OAAOe,CAAAA,CAAIA,CAAE,CAAA,KAAA,CAAQ,MACvB,CAAA,CACA,SAAUf,CAAAA,CAAAA,CAAa,CACrB,IAAMC,CAAAA,CAAQmB,CAAsB,CAAA,IAAA,CAAKpB,CAAG,CAAA,CAC5C,GAAI,CAACC,EAAO,OACZ,IAAMqB,CAAO,CAAA,CAAA,EAAGrB,CAAM,CAAA,CAAC,CAAE,CAAA,WAAA,EAAa,CAAIA,CAAAA,EAAAA,CAAAA,CAAM,CAAC,CAAC,CAClD,CAAA,CAAA,OAAO,CACL,IAAA,CAAM,eACN,CAAA,GAAA,CAAKA,CAAM,CAAA,CAAC,CACZ,CAAA,IAAA,CAAAqB,CACF,CACF,EACA,QAAShB,CAAAA,CAAAA,CAAY,CACnB,IAAMgB,CAAO5B,CAAAA,CAAAA,CAAeY,CAAM,CAAA,IAAI,EACtC,OAAO,CAAA,SAAA,EAAYgB,CAAI,CAAA,EAAA,EAAKA,CAAI,CAAA,IAAA,CAClC,CACF,CAAA,CAEAC,OAAO,GAAI,CAAA,CACT,GAAK,CAAA,IAAA,CACL,UAAY,CAAA,CACVf,CACAM,CAAAA,CAAAA,CACAO,EACAtB,CACAQ,CAAAA,CACF,CACA,CAAA,QAAA,CAAU,CACR,IAAA,CAAKD,CAAY,CAAA,CAzMrB,IAAAJ,CA0MM,CAAA,OACE,CAACI,CAAAA,CAAM,OACPJ,EAAAA,CAAAA,CAAAA,CAAAA,CAAAI,CAAM,CAAA,KAAA,GAAN,YAAAJ,CAAa,CAAA,MAAA,EAAS,CACtBI,EAAAA,CAAAA,CAAM,KAAM,CAAA,KAAA,CAAOkB,CAAcA,EAAAA,CAAAA,CAAK,IAAI,CAcnC,CAAA,CAAA;AAAA,EAZMlB,CAAAA,CAAM,KAChB,CAAA,GAAA,CAAKkB,CAAc,EAAA,CAClB,IAAMC,CAAQD,CAAAA,CAAAA,CAAK,MAAO,CAAA,MAAA,CACvBE,CAAWA,EAAAA,CAAAA,CAAE,OAAS,UACzB,CAAA,CACIC,CAAQ,CAAA,IAAA,CAAa,MAAO,CAAA,KAAA,CAAMF,EAAO,CAAC,CAACD,CAAK,CAAA,KAAK,CACpDA,CAAAA,CAAAA,CAAK,QAAOG,CAAO,CAAA,CAAA,GAAA,EAAMA,CAAI,CAAA,IAAA,CAAA,CAAA,CAClC,IAAMC,CAAAA,CAAUJ,EAAK,OAAU,CAAA,MAAA,CAAS,OAClCK,CAAAA,CAAAA,CAASL,CAAK,CAAA,OAAA,CAAU,qBAAuB,EACrD,CAAA,OAAO,CAA0CI,uCAAAA,EAAAA,CAAO,CAA0DC,uDAAAA,EAAAA,CAAM,iBAAiBF,CAAI,CAAA,WAAA,CAC/I,CAAC,CAAA,CACA,IAAK,CAAA;AAAA,CAAI,CAC6B;AAAA;AAAA,CAAA,CAEpC,KACT,CACF,CACF,CAAC,CAEM,CAAA,SAASG,CAAcC,CAAAA,CAAAA,CAAkB,CAC9C,OAAOR,MAAO,CAAA,KAAA,CAAMQ,CAAQ,CAC9B","file":"chunk-Q4IXX6KS.js","sourcesContent":["import { marked } from \"marked\";\n\n/** Safe for double-quoted HTML attributes (e.g. data-latex). */\nfunction escapeHtmlAttr(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\");\n}\n\nfunction mathSpanHtml(latex: string, displayMode: boolean): string {\n return `<span data-latex=\"${escapeHtmlAttr(latex)}\" data-display-mode=\"${displayMode}\"></span>`;\n}\n\nconst katexBlockParser = {\n name: \"katexBlock\",\n level: \"block\",\n start(src: string) {\n const match = src.match(/\\\\\\[/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\]/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const displayRule = /^\\\\\\[([\\s\\S]*?)\\\\\\]/;\n const match = displayRule.exec(src);\n if (match) {\n return {\n type: \"katexBlock\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: true,\n };\n }\n },\n renderer(token: any) {\n // Non-self-closing span is important for client-side inline flow around the node.\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst katexInlineParser = {\n name: \"katexInline\",\n level: \"inline\",\n start(src: string) {\n const match = src.match(/\\\\\\(/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\)/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const inlineRule = /^\\\\\\(([\\s\\S]*?)\\\\\\)/;\n const match = inlineRule.exec(src);\n if (match) {\n return {\n type: \"katexInline\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: false,\n };\n }\n },\n renderer(token: any) {\n // STRANGE: The non-self-closing tag is important for client side to render as inline and render text after it\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst assetComponentExtension = {\n name: \"assetComponent\",\n level: \"block\",\n start(src: string) {\n return src.match(/^```assetComponent/)?.index;\n },\n end(src: string) {\n return src.match(/^```/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const rule = /^```assetComponent\\s+(\\{[\\s\\S]*?\\})\\n```/;\n const match = rule.exec(src);\n if (match) {\n const token = {\n type: \"assetComponent\",\n raw: match[0],\n properties: match[1],\n tokens: [],\n };\n return token;\n }\n },\n renderer(token: any) {\n let properties;\n try {\n properties = JSON.parse(token.properties);\n } catch (e) {\n console.error(\"Invalid JSON in assetComponent properties:\", e);\n properties = {};\n }\n const componentHtml = `\n <asset-component ${Object.entries(properties)\n .map(([key, value]) => {\n // Stringify arrays and objects, keep primitives as-is\n const stringValue = typeof value === 'object' && value !== null\n ? JSON.stringify(value)\n : String(value);\n // Escape quotes for HTML attributes\n const escapedValue = stringValue.replace(/\"/g, '&quot;');\n return `${key}=\"${escapedValue}\"`;\n })\n .join(\" \")}></asset-component>`;\n\n return componentHtml;\n },\n};\n\nconst userMentionExtension = {\n name: \"userMention\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(/`\\{@|(?<![`])\\{@/);\n return m ? m.index : undefined;\n },\n end(src: string) {\n return src.match(/\\}`/)?.index ?? src.match(/(?<![`])\\{@[^}]*\\}/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const codeWrapped = /^`\\{@([a-zA-Z0-9_]+)\\}`/.exec(src);\n if (codeWrapped) {\n return {\n type: \"userMention\",\n raw: codeWrapped[0],\n username: codeWrapped[1],\n };\n }\n const bracesOnly = /^\\{@([a-zA-Z0-9_]+)\\}/.exec(src);\n if (bracesOnly) {\n return {\n type: \"userMention\",\n raw: bracesOnly[0],\n username: bracesOnly[1],\n };\n }\n },\n renderer(token: any) {\n const u = escapeHtmlAttr(token.username);\n return `<user-mention username=\"${u}\" data-label=\"${u}\"></user-mention>`;\n },\n};\n\n/** UUID-shaped ids (v4 and v7) used in typed asset shorthands. */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/**\n * Collapsed `[dataset:<uuid>]` form. `(?!\\\\()` leaves `[label](dataset:<uuid>)`\n * to the built-in markdown link tokenizer.\n */\nconst ASSET_WIKI_LINK_TOKEN = new RegExp(\n `^\\\\[(post|dataset|file|service|route|quest|asset|action):(${UUID_RE})\\\\](?!\\\\()`,\n \"i\"\n);\n\nconst assetWikiLinkExtension = {\n name: \"assetWikiLink\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(\n /\\[(?:post|dataset|file|service|route|quest|asset|action):/i\n );\n return m ? m.index : undefined;\n },\n tokenizer(src: string) {\n const match = ASSET_WIKI_LINK_TOKEN.exec(src);\n if (!match) return;\n const href = `${match[1].toLowerCase()}:${match[2]}`;\n return {\n type: \"assetWikiLink\",\n raw: match[0],\n href,\n };\n },\n renderer(token: any) {\n const href = escapeHtmlAttr(token.href);\n return `<a href=\"${href}\">${href}</a>`;\n },\n};\n\nmarked.use({\n gfm: true,\n extensions: [\n assetComponentExtension,\n userMentionExtension,\n assetWikiLinkExtension,\n katexBlockParser,\n katexInlineParser,\n ],\n renderer: {\n list(token: any) {\n if (\n !token.ordered &&\n token.items?.length > 0 &&\n token.items.every((item: any) => item.task)\n ) {\n const body = token.items\n .map((item: any) => {\n const inner = item.tokens.filter(\n (t: any) => t.type !== \"checkbox\"\n );\n let text = (this as any).parser.parse(inner, !!item.loose);\n if (!item.loose) text = `<p>${text}</p>`;\n const checked = item.checked ? \"true\" : \"false\";\n const ckAttr = item.checked ? ' checked=\"checked\"' : \"\";\n return `<li data-type=\"taskItem\" data-checked=\"${checked}\"><label contenteditable=\"false\"><input type=\"checkbox\"${ckAttr}></label><div>${text}</div></li>`;\n })\n .join(\"\\n\");\n return `<ul data-type=\"taskList\">\\n${body}\\n</ul>\\n`;\n }\n return false as any;\n },\n },\n});\n\nexport function parseMarkdown(markdown: string) {\n return marked.parse(markdown);\n}\n"]}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkEVQAA7RQ_cjs=require('./chunk-EVQAA7RQ.cjs'),chunkNSKBXBRD_cjs=require('./chunk-NSKBXBRD.cjs'),chunkUORCDNEC_cjs=require('./chunk-UORCDNEC.cjs'),chunkNAISOUTE_cjs=require('./chunk-NAISOUTE.cjs'),chunkMOEVC3KD_cjs=require('./chunk-MOEVC3KD.cjs'),chunkVGNECRJJ_cjs=require('./chunk-VGNECRJJ.cjs'),chunkPVUBGWOI_cjs=require('./chunk-PVUBGWOI.cjs'),chunkCPA7CZ7T_cjs=require('./chunk-CPA7CZ7T.cjs'),chunkXL2RQ3DZ_cjs=require('./chunk-XL2RQ3DZ.cjs'),chunkLHCGBWFP_cjs=require('./chunk-LHCGBWFP.cjs'),chunkT6UO42TO_cjs=require('./chunk-T6UO42TO.cjs'),chunkU6XOT6XH_cjs=require('./chunk-U6XOT6XH.cjs'),chunkXEA4DDOE_cjs=require('./chunk-XEA4DDOE.cjs'),chunkKHERHT26_cjs=require('./chunk-KHERHT26.cjs'),chunk5SC4M4E3_cjs=require('./chunk-5SC4M4E3.cjs'),chunkE2FDUS3B_cjs=require('./chunk-E2FDUS3B.cjs'),chunkT4BUMCXS_cjs=require('./chunk-T4BUMCXS.cjs'),chunkAIIAIQ6L_cjs=require('./chunk-AIIAIQ6L.cjs'),chunkDSJ23DIB_cjs=require('./chunk-DSJ23DIB.cjs'),chunkRMMMRN4X_cjs=require('./chunk-RMMMRN4X.cjs'),chunk3JPOAQ2M_cjs=require('./chunk-3JPOAQ2M.cjs'),chunkKU5AWMS5_cjs=require('./chunk-KU5AWMS5.cjs'),chunkYTCAK2AH_cjs=require('./chunk-YTCAK2AH.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs');require('./chunk-7HF5VHUN.cjs');var chunkJRBBNFFI_cjs=require('./chunk-JRBBNFFI.cjs');Object.defineProperty(exports,"getReferencesInContent",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.f}});Object.defineProperty(exports,"normalizeViewMode",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.a}});Object.defineProperty(exports,"parseActionLinkShorthand",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.d}});Object.defineProperty(exports,"parseAssetLinkShorthand",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.c}});Object.defineProperty(exports,"parseOuroAssetUrl",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.e}});Object.defineProperty(exports,"resolveDisplayConfig",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.b}});Object.defineProperty(exports,"parseMarkdown",{enumerable:true,get:function(){return chunkNSKBXBRD_cjs.a}});Object.defineProperty(exports,"AssetTagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.e}});Object.defineProperty(exports,"AssetTagWithTagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.f}});Object.defineProperty(exports,"CreateAssetTagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.g}});Object.defineProperty(exports,"TagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.c}});Object.defineProperty(exports,"TagSourceSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.b}});Object.defineProperty(exports,"TagTypeSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.a}});Object.defineProperty(exports,"TagWithParentSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.d}});Object.defineProperty(exports,"TagsByTypeSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.h}});Object.defineProperty(exports,"toAssetMetadataFilters",{enumerable:true,get:function(){return chunkNAISOUTE_cjs.b}});Object.defineProperty(exports,"toAssetSearchFilters",{enumerable:true,get:function(){return chunkNAISOUTE_cjs.a}});Object.defineProperty(exports,"createNameUrlSlug",{enumerable:true,get:function(){return chunkMOEVC3KD_cjs.a}});Object.defineProperty(exports,"createUrlSlug",{enumerable:true,get:function(){return chunkMOEVC3KD_cjs.b}});Object.defineProperty(exports,"getAssetUrl",{enumerable:true,get:function(){return chunkMOEVC3KD_cjs.c}});Object.defineProperty(exports,"filterListToString",{enumerable:true,get:function(){return chunkVGNECRJJ_cjs.a}});Object.defineProperty(exports,"CreateDatasetFromFileSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.h}});Object.defineProperty(exports,"CreateDatasetFromSchemaSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.i}});Object.defineProperty(exports,"DatasetEnumColumnsSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.c}});Object.defineProperty(exports,"DatasetRefsSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.b}});Object.defineProperty(exports,"DatasetSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.g}});Object.defineProperty(exports,"EnrichedDatasetSchemaFieldSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.d}});Object.defineProperty(exports,"RefKindSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.a}});Object.defineProperty(exports,"ResolvedRefSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.e}});Object.defineProperty(exports,"ResolvedRefsSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.f}});Object.defineProperty(exports,"updateDatasetSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.j}});Object.defineProperty(exports,"USER_SUBSCRIBABLE_WEBHOOK_EVENTS",{enumerable:true,get:function(){return chunkCPA7CZ7T_cjs.c}});Object.defineProperty(exports,"WEBHOOK_EVENTS",{enumerable:true,get:function(){return chunkCPA7CZ7T_cjs.a}});Object.defineProperty(exports,"WEBHOOK_EVENT_TYPES",{enumerable:true,get:function(){return chunkCPA7CZ7T_cjs.b}});Object.defineProperty(exports,"CreateFileSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.c}});Object.defineProperty(exports,"FileSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.b}});Object.defineProperty(exports,"ZipArchiveMetadataSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.a}});Object.defineProperty(exports,"updateFileSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.d}});Object.defineProperty(exports,"ActionCompleteContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.r}});Object.defineProperty(exports,"BadgeContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.q}});Object.defineProperty(exports,"CommentContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.g}});Object.defineProperty(exports,"ContentDeletedContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.z}});Object.defineProperty(exports,"ContentMovedContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.y}});Object.defineProperty(exports,"DepositContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.p}});Object.defineProperty(exports,"EventContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.A}});Object.defineProperty(exports,"FollowContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.m}});Object.defineProperty(exports,"InviteContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.n}});Object.defineProperty(exports,"MentionContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.f}});Object.defineProperty(exports,"NotificationAssetRefSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.b}});Object.defineProperty(exports,"NotificationContentAssetSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.c}});Object.defineProperty(exports,"NotificationParentRefSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.d}});Object.defineProperty(exports,"NotificationRootInfoSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.e}});Object.defineProperty(exports,"NotificationSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.B}});Object.defineProperty(exports,"NotificationTypeSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.a}});Object.defineProperty(exports,"OnboardingActionRequiredContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.v}});Object.defineProperty(exports,"OnboardingCompleteContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.u}});Object.defineProperty(exports,"OwnershipTransferContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.l}});Object.defineProperty(exports,"PaymentContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.o}});Object.defineProperty(exports,"QuestEntryAcceptedContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.t}});Object.defineProperty(exports,"QuestEntryContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.s}});Object.defineProperty(exports,"ReactionContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.j}});Object.defineProperty(exports,"ReferenceContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.i}});Object.defineProperty(exports,"ReplyContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.h}});Object.defineProperty(exports,"RouteEarningsMilestoneContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.w}});Object.defineProperty(exports,"RoutePayoutContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.x}});Object.defineProperty(exports,"ShareContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.k}});Object.defineProperty(exports,"CreateEntrySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.q}});Object.defineProperty(exports,"CreateQuestItemObjectSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.j}});Object.defineProperty(exports,"CreateQuestItemSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.k}});Object.defineProperty(exports,"CreateQuestSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.m}});Object.defineProperty(exports,"EntryEvalStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.e}});Object.defineProperty(exports,"EntrySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.p}});Object.defineProperty(exports,"EntryStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.f}});Object.defineProperty(exports,"LeaderboardOrderSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.g}});Object.defineProperty(exports,"QuestItemBaseSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.h}});Object.defineProperty(exports,"QuestItemSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.i}});Object.defineProperty(exports,"QuestItemStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.c}});Object.defineProperty(exports,"QuestSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.l}});Object.defineProperty(exports,"QuestStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.b}});Object.defineProperty(exports,"QuestTypeSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.a}});Object.defineProperty(exports,"ReviewEntrySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.r}});Object.defineProperty(exports,"RewardCurrencySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.d}});Object.defineProperty(exports,"UpdateQuestItemSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.o}});Object.defineProperty(exports,"UpdateQuestSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.n}});Object.defineProperty(exports,"KeyedAssetInputSchema",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.c}});Object.defineProperty(exports,"KeyedAssetRefsSchema",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.a}});Object.defineProperty(exports,"QuestSubmissionAssetDeclarationSchema",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.d}});Object.defineProperty(exports,"assetMatchesDeclaration",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.k}});Object.defineProperty(exports,"declarationToPickerFilters",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.j}});Object.defineProperty(exports,"declarationToSubmissionDeclaration",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.f}});Object.defineProperty(exports,"getPrimaryAssetRef",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.l}});Object.defineProperty(exports,"getPrimaryDeclarationKey",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.h}});Object.defineProperty(exports,"getRouteInputDeclarationsFromRoute",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.e}});Object.defineProperty(exports,"getSubmissionAssetShape",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.i}});Object.defineProperty(exports,"materializeContributorSubmissionAssets",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.g}});Object.defineProperty(exports,"toRouteInputAssets",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.m}});Object.defineProperty(exports,"ActionAssetRefSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.l}});Object.defineProperty(exports,"ActionSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.k}});Object.defineProperty(exports,"CreateServiceSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.b}});Object.defineProperty(exports,"ExecutionModeSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.d}});Object.defineProperty(exports,"ReadActionRouteSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.m}});Object.defineProperty(exports,"ReadActionSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.n}});Object.defineProperty(exports,"RouteInputAssetDeclarationSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.e}});Object.defineProperty(exports,"RouteInputAssetsSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.g}});Object.defineProperty(exports,"RouteMetricsSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.i}});Object.defineProperty(exports,"RouteOutputAssetDeclarationSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.f}});Object.defineProperty(exports,"RouteOutputAssetsSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.h}});Object.defineProperty(exports,"RouteSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.j}});Object.defineProperty(exports,"ServiceSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.a}});Object.defineProperty(exports,"UpdateServiceSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.c}});Object.defineProperty(exports,"FILE_FILTERS",{enumerable:true,get:function(){return chunkKHERHT26_cjs.a}});Object.defineProperty(exports,"fileTypes",{enumerable:true,get:function(){return chunkKHERHT26_cjs.b}});Object.defineProperty(exports,"getExtensionFromFileName",{enumerable:true,get:function(){return chunkKHERHT26_cjs.e}});Object.defineProperty(exports,"getExtensionFromMimeType",{enumerable:true,get:function(){return chunkKHERHT26_cjs.f}});Object.defineProperty(exports,"getFileClassification",{enumerable:true,get:function(){return chunkKHERHT26_cjs.h}});Object.defineProperty(exports,"getFileFilterLabel",{enumerable:true,get:function(){return chunkKHERHT26_cjs.c}});Object.defineProperty(exports,"getSafeFileExtension",{enumerable:true,get:function(){return chunkKHERHT26_cjs.g}});Object.defineProperty(exports,"normalizeExtension",{enumerable:true,get:function(){return chunkKHERHT26_cjs.d}});Object.defineProperty(exports,"AssetFilterFileTypeSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.b}});Object.defineProperty(exports,"AssetFilterVisibilitySchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.a}});Object.defineProperty(exports,"AssetFiltersSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.c}});Object.defineProperty(exports,"AssetMetadataFiltersSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.e}});Object.defineProperty(exports,"AssetSearchFiltersSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.d}});Object.defineProperty(exports,"CommentRepliesAggregateSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.c}});Object.defineProperty(exports,"CommentSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.a}});Object.defineProperty(exports,"CreateCommentSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.b}});Object.defineProperty(exports,"ReadCommentSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.d}});Object.defineProperty(exports,"reactionSchema",{enumerable:true,get:function(){return chunkT4BUMCXS_cjs.a}});Object.defineProperty(exports,"ConversationSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.a}});Object.defineProperty(exports,"CreateConversationSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.b}});Object.defineProperty(exports,"MessageReactionSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.e}});Object.defineProperty(exports,"MessageReactionValueSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.d}});Object.defineProperty(exports,"MessageSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.f}});Object.defineProperty(exports,"UpdateConversationSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.c}});Object.defineProperty(exports,"ContentSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.b}});Object.defineProperty(exports,"CreatePostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.d}});Object.defineProperty(exports,"ListPostsSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.g}});Object.defineProperty(exports,"PostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.c}});Object.defineProperty(exports,"ReadPostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.e}});Object.defineProperty(exports,"ReadPostsSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.f}});Object.defineProperty(exports,"TipTapSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.a}});Object.defineProperty(exports,"UpdatePostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.h}});Object.defineProperty(exports,"AssetMetadataSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.b}});Object.defineProperty(exports,"AssetSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.f}});Object.defineProperty(exports,"AttributionSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.e}});Object.defineProperty(exports,"CitationSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.d}});Object.defineProperty(exports,"CreateAssetSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.h}});Object.defineProperty(exports,"DEFAULT_ATTRIBUTION",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.g}});Object.defineProperty(exports,"RelationTypeSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.c}});Object.defineProperty(exports,"UpdateAssetSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.i}});Object.defineProperty(exports,"normalizeAssetConfigForParsing",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.a}});Object.defineProperty(exports,"CreateTeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.b}});Object.defineProperty(exports,"ReadTeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.c}});Object.defineProperty(exports,"ReadTeamsSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.d}});Object.defineProperty(exports,"TeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.a}});Object.defineProperty(exports,"UpdateTeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.e}});Object.defineProperty(exports,"ActorTypePolicySchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.a}});Object.defineProperty(exports,"MembershipSchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.d}});Object.defineProperty(exports,"OrganizationsSchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.c}});Object.defineProperty(exports,"SourcePolicySchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.b}});Object.defineProperty(exports,"ActorTypeSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.a}});Object.defineProperty(exports,"ProfileSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.b}});Object.defineProperty(exports,"ReadProfileSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.c}});Object.defineProperty(exports,"UpdateProfileSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.d}});Object.defineProperty(exports,"AssetTypeSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.a}});Object.defineProperty(exports,"ConnectionSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.g}});Object.defineProperty(exports,"EmbeddingSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.f}});Object.defineProperty(exports,"HttpMethodSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.l}});Object.defineProperty(exports,"MonetizationSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.d}});Object.defineProperty(exports,"PermissionSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.i}});Object.defineProperty(exports,"PriceCurrencySchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.e}});Object.defineProperty(exports,"PurchaseAssetSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.h}});Object.defineProperty(exports,"RoleSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.c}});Object.defineProperty(exports,"SourceSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.k}});Object.defineProperty(exports,"StatusSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.j}});Object.defineProperty(exports,"VisibilitySchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.b}});Object.defineProperty(exports,"ContentActionRefSchema",{enumerable:true,get:function(){return chunkJRBBNFFI_cjs.a}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkOCMBP3U7_cjs=require('./chunk-OCMBP3U7.cjs'),chunkPJLIO4PA_cjs=require('./chunk-PJLIO4PA.cjs'),chunkUORCDNEC_cjs=require('./chunk-UORCDNEC.cjs'),chunkNAISOUTE_cjs=require('./chunk-NAISOUTE.cjs'),chunkMOEVC3KD_cjs=require('./chunk-MOEVC3KD.cjs'),chunkVGNECRJJ_cjs=require('./chunk-VGNECRJJ.cjs'),chunkPVUBGWOI_cjs=require('./chunk-PVUBGWOI.cjs'),chunkCPA7CZ7T_cjs=require('./chunk-CPA7CZ7T.cjs'),chunkXL2RQ3DZ_cjs=require('./chunk-XL2RQ3DZ.cjs'),chunkLHCGBWFP_cjs=require('./chunk-LHCGBWFP.cjs'),chunkT6UO42TO_cjs=require('./chunk-T6UO42TO.cjs'),chunkU6XOT6XH_cjs=require('./chunk-U6XOT6XH.cjs'),chunkXEA4DDOE_cjs=require('./chunk-XEA4DDOE.cjs'),chunkKHERHT26_cjs=require('./chunk-KHERHT26.cjs'),chunk5SC4M4E3_cjs=require('./chunk-5SC4M4E3.cjs'),chunkE2FDUS3B_cjs=require('./chunk-E2FDUS3B.cjs'),chunkT4BUMCXS_cjs=require('./chunk-T4BUMCXS.cjs'),chunkAIIAIQ6L_cjs=require('./chunk-AIIAIQ6L.cjs'),chunkDSJ23DIB_cjs=require('./chunk-DSJ23DIB.cjs'),chunkRMMMRN4X_cjs=require('./chunk-RMMMRN4X.cjs'),chunk3JPOAQ2M_cjs=require('./chunk-3JPOAQ2M.cjs'),chunkKU5AWMS5_cjs=require('./chunk-KU5AWMS5.cjs'),chunkYTCAK2AH_cjs=require('./chunk-YTCAK2AH.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs');require('./chunk-7HF5VHUN.cjs');var chunkJRBBNFFI_cjs=require('./chunk-JRBBNFFI.cjs');Object.defineProperty(exports,"extractAssetWikiLinks",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.e}});Object.defineProperty(exports,"getReferencesInContent",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.g}});Object.defineProperty(exports,"normalizeViewMode",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.a}});Object.defineProperty(exports,"parseActionLinkShorthand",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.d}});Object.defineProperty(exports,"parseAssetLinkShorthand",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.c}});Object.defineProperty(exports,"parseOuroAssetUrl",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.f}});Object.defineProperty(exports,"resolveDisplayConfig",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.b}});Object.defineProperty(exports,"parseMarkdown",{enumerable:true,get:function(){return chunkPJLIO4PA_cjs.a}});Object.defineProperty(exports,"AssetTagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.e}});Object.defineProperty(exports,"AssetTagWithTagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.f}});Object.defineProperty(exports,"CreateAssetTagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.g}});Object.defineProperty(exports,"TagSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.c}});Object.defineProperty(exports,"TagSourceSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.b}});Object.defineProperty(exports,"TagTypeSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.a}});Object.defineProperty(exports,"TagWithParentSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.d}});Object.defineProperty(exports,"TagsByTypeSchema",{enumerable:true,get:function(){return chunkUORCDNEC_cjs.h}});Object.defineProperty(exports,"toAssetMetadataFilters",{enumerable:true,get:function(){return chunkNAISOUTE_cjs.b}});Object.defineProperty(exports,"toAssetSearchFilters",{enumerable:true,get:function(){return chunkNAISOUTE_cjs.a}});Object.defineProperty(exports,"createNameUrlSlug",{enumerable:true,get:function(){return chunkMOEVC3KD_cjs.a}});Object.defineProperty(exports,"createUrlSlug",{enumerable:true,get:function(){return chunkMOEVC3KD_cjs.b}});Object.defineProperty(exports,"getAssetUrl",{enumerable:true,get:function(){return chunkMOEVC3KD_cjs.c}});Object.defineProperty(exports,"filterListToString",{enumerable:true,get:function(){return chunkVGNECRJJ_cjs.a}});Object.defineProperty(exports,"CreateDatasetFromFileSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.h}});Object.defineProperty(exports,"CreateDatasetFromSchemaSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.i}});Object.defineProperty(exports,"DatasetEnumColumnsSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.c}});Object.defineProperty(exports,"DatasetRefsSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.b}});Object.defineProperty(exports,"DatasetSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.g}});Object.defineProperty(exports,"EnrichedDatasetSchemaFieldSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.d}});Object.defineProperty(exports,"RefKindSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.a}});Object.defineProperty(exports,"ResolvedRefSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.e}});Object.defineProperty(exports,"ResolvedRefsSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.f}});Object.defineProperty(exports,"updateDatasetSchema",{enumerable:true,get:function(){return chunkPVUBGWOI_cjs.j}});Object.defineProperty(exports,"USER_SUBSCRIBABLE_WEBHOOK_EVENTS",{enumerable:true,get:function(){return chunkCPA7CZ7T_cjs.c}});Object.defineProperty(exports,"WEBHOOK_EVENTS",{enumerable:true,get:function(){return chunkCPA7CZ7T_cjs.a}});Object.defineProperty(exports,"WEBHOOK_EVENT_TYPES",{enumerable:true,get:function(){return chunkCPA7CZ7T_cjs.b}});Object.defineProperty(exports,"CreateFileSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.c}});Object.defineProperty(exports,"FileSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.b}});Object.defineProperty(exports,"ZipArchiveMetadataSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.a}});Object.defineProperty(exports,"updateFileSchema",{enumerable:true,get:function(){return chunkXL2RQ3DZ_cjs.d}});Object.defineProperty(exports,"ActionCompleteContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.r}});Object.defineProperty(exports,"BadgeContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.q}});Object.defineProperty(exports,"CommentContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.g}});Object.defineProperty(exports,"ContentDeletedContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.z}});Object.defineProperty(exports,"ContentMovedContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.y}});Object.defineProperty(exports,"DepositContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.p}});Object.defineProperty(exports,"EventContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.A}});Object.defineProperty(exports,"FollowContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.m}});Object.defineProperty(exports,"InviteContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.n}});Object.defineProperty(exports,"MentionContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.f}});Object.defineProperty(exports,"NotificationAssetRefSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.b}});Object.defineProperty(exports,"NotificationContentAssetSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.c}});Object.defineProperty(exports,"NotificationParentRefSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.d}});Object.defineProperty(exports,"NotificationRootInfoSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.e}});Object.defineProperty(exports,"NotificationSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.B}});Object.defineProperty(exports,"NotificationTypeSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.a}});Object.defineProperty(exports,"OnboardingActionRequiredContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.v}});Object.defineProperty(exports,"OnboardingCompleteContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.u}});Object.defineProperty(exports,"OwnershipTransferContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.l}});Object.defineProperty(exports,"PaymentContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.o}});Object.defineProperty(exports,"QuestEntryAcceptedContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.t}});Object.defineProperty(exports,"QuestEntryContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.s}});Object.defineProperty(exports,"ReactionContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.j}});Object.defineProperty(exports,"ReferenceContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.i}});Object.defineProperty(exports,"ReplyContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.h}});Object.defineProperty(exports,"RouteEarningsMilestoneContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.w}});Object.defineProperty(exports,"RoutePayoutContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.x}});Object.defineProperty(exports,"ShareContentSchema",{enumerable:true,get:function(){return chunkLHCGBWFP_cjs.k}});Object.defineProperty(exports,"CreateEntrySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.q}});Object.defineProperty(exports,"CreateQuestItemObjectSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.j}});Object.defineProperty(exports,"CreateQuestItemSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.k}});Object.defineProperty(exports,"CreateQuestSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.m}});Object.defineProperty(exports,"EntryEvalStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.e}});Object.defineProperty(exports,"EntrySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.p}});Object.defineProperty(exports,"EntryStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.f}});Object.defineProperty(exports,"LeaderboardOrderSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.g}});Object.defineProperty(exports,"QuestItemBaseSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.h}});Object.defineProperty(exports,"QuestItemSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.i}});Object.defineProperty(exports,"QuestItemStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.c}});Object.defineProperty(exports,"QuestSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.l}});Object.defineProperty(exports,"QuestStatusSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.b}});Object.defineProperty(exports,"QuestTypeSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.a}});Object.defineProperty(exports,"ReviewEntrySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.r}});Object.defineProperty(exports,"RewardCurrencySchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.d}});Object.defineProperty(exports,"UpdateQuestItemSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.o}});Object.defineProperty(exports,"UpdateQuestSchema",{enumerable:true,get:function(){return chunkT6UO42TO_cjs.n}});Object.defineProperty(exports,"KeyedAssetInputSchema",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.c}});Object.defineProperty(exports,"KeyedAssetRefsSchema",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.a}});Object.defineProperty(exports,"QuestSubmissionAssetDeclarationSchema",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.d}});Object.defineProperty(exports,"assetMatchesDeclaration",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.k}});Object.defineProperty(exports,"declarationToPickerFilters",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.j}});Object.defineProperty(exports,"declarationToSubmissionDeclaration",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.f}});Object.defineProperty(exports,"getPrimaryAssetRef",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.l}});Object.defineProperty(exports,"getPrimaryDeclarationKey",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.h}});Object.defineProperty(exports,"getRouteInputDeclarationsFromRoute",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.e}});Object.defineProperty(exports,"getSubmissionAssetShape",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.i}});Object.defineProperty(exports,"materializeContributorSubmissionAssets",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.g}});Object.defineProperty(exports,"toRouteInputAssets",{enumerable:true,get:function(){return chunkU6XOT6XH_cjs.m}});Object.defineProperty(exports,"ActionAssetRefSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.l}});Object.defineProperty(exports,"ActionSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.k}});Object.defineProperty(exports,"CreateServiceSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.b}});Object.defineProperty(exports,"ExecutionModeSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.d}});Object.defineProperty(exports,"ReadActionRouteSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.m}});Object.defineProperty(exports,"ReadActionSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.n}});Object.defineProperty(exports,"RouteInputAssetDeclarationSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.e}});Object.defineProperty(exports,"RouteInputAssetsSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.g}});Object.defineProperty(exports,"RouteMetricsSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.i}});Object.defineProperty(exports,"RouteOutputAssetDeclarationSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.f}});Object.defineProperty(exports,"RouteOutputAssetsSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.h}});Object.defineProperty(exports,"RouteSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.j}});Object.defineProperty(exports,"ServiceSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.a}});Object.defineProperty(exports,"UpdateServiceSchema",{enumerable:true,get:function(){return chunkXEA4DDOE_cjs.c}});Object.defineProperty(exports,"FILE_FILTERS",{enumerable:true,get:function(){return chunkKHERHT26_cjs.a}});Object.defineProperty(exports,"fileTypes",{enumerable:true,get:function(){return chunkKHERHT26_cjs.b}});Object.defineProperty(exports,"getExtensionFromFileName",{enumerable:true,get:function(){return chunkKHERHT26_cjs.e}});Object.defineProperty(exports,"getExtensionFromMimeType",{enumerable:true,get:function(){return chunkKHERHT26_cjs.f}});Object.defineProperty(exports,"getFileClassification",{enumerable:true,get:function(){return chunkKHERHT26_cjs.h}});Object.defineProperty(exports,"getFileFilterLabel",{enumerable:true,get:function(){return chunkKHERHT26_cjs.c}});Object.defineProperty(exports,"getSafeFileExtension",{enumerable:true,get:function(){return chunkKHERHT26_cjs.g}});Object.defineProperty(exports,"normalizeExtension",{enumerable:true,get:function(){return chunkKHERHT26_cjs.d}});Object.defineProperty(exports,"AssetFilterFileTypeSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.b}});Object.defineProperty(exports,"AssetFilterVisibilitySchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.a}});Object.defineProperty(exports,"AssetFiltersSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.c}});Object.defineProperty(exports,"AssetMetadataFiltersSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.e}});Object.defineProperty(exports,"AssetSearchFiltersSchema",{enumerable:true,get:function(){return chunk5SC4M4E3_cjs.d}});Object.defineProperty(exports,"CommentRepliesAggregateSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.c}});Object.defineProperty(exports,"CommentSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.a}});Object.defineProperty(exports,"CreateCommentSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.b}});Object.defineProperty(exports,"ReadCommentSchema",{enumerable:true,get:function(){return chunkE2FDUS3B_cjs.d}});Object.defineProperty(exports,"reactionSchema",{enumerable:true,get:function(){return chunkT4BUMCXS_cjs.a}});Object.defineProperty(exports,"ConversationSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.a}});Object.defineProperty(exports,"CreateConversationSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.b}});Object.defineProperty(exports,"MessageReactionSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.e}});Object.defineProperty(exports,"MessageReactionValueSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.d}});Object.defineProperty(exports,"MessageSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.f}});Object.defineProperty(exports,"UpdateConversationSchema",{enumerable:true,get:function(){return chunkAIIAIQ6L_cjs.c}});Object.defineProperty(exports,"ContentSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.b}});Object.defineProperty(exports,"CreatePostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.d}});Object.defineProperty(exports,"ListPostsSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.g}});Object.defineProperty(exports,"PostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.c}});Object.defineProperty(exports,"ReadPostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.e}});Object.defineProperty(exports,"ReadPostsSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.f}});Object.defineProperty(exports,"TipTapSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.a}});Object.defineProperty(exports,"UpdatePostSchema",{enumerable:true,get:function(){return chunkDSJ23DIB_cjs.h}});Object.defineProperty(exports,"AssetMetadataSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.b}});Object.defineProperty(exports,"AssetSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.f}});Object.defineProperty(exports,"AttributionSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.e}});Object.defineProperty(exports,"CitationSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.d}});Object.defineProperty(exports,"CreateAssetSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.h}});Object.defineProperty(exports,"DEFAULT_ATTRIBUTION",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.g}});Object.defineProperty(exports,"RelationTypeSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.c}});Object.defineProperty(exports,"UpdateAssetSchema",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.i}});Object.defineProperty(exports,"normalizeAssetConfigForParsing",{enumerable:true,get:function(){return chunkRMMMRN4X_cjs.a}});Object.defineProperty(exports,"CreateTeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.b}});Object.defineProperty(exports,"ReadTeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.c}});Object.defineProperty(exports,"ReadTeamsSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.d}});Object.defineProperty(exports,"TeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.a}});Object.defineProperty(exports,"UpdateTeamSchema",{enumerable:true,get:function(){return chunk3JPOAQ2M_cjs.e}});Object.defineProperty(exports,"ActorTypePolicySchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.a}});Object.defineProperty(exports,"MembershipSchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.d}});Object.defineProperty(exports,"OrganizationsSchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.c}});Object.defineProperty(exports,"SourcePolicySchema",{enumerable:true,get:function(){return chunkKU5AWMS5_cjs.b}});Object.defineProperty(exports,"ActorTypeSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.a}});Object.defineProperty(exports,"ProfileSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.b}});Object.defineProperty(exports,"ReadProfileSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.c}});Object.defineProperty(exports,"UpdateProfileSchema",{enumerable:true,get:function(){return chunkYTCAK2AH_cjs.d}});Object.defineProperty(exports,"AssetTypeSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.a}});Object.defineProperty(exports,"ConnectionSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.g}});Object.defineProperty(exports,"EmbeddingSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.f}});Object.defineProperty(exports,"HttpMethodSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.l}});Object.defineProperty(exports,"MonetizationSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.d}});Object.defineProperty(exports,"PermissionSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.i}});Object.defineProperty(exports,"PriceCurrencySchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.e}});Object.defineProperty(exports,"PurchaseAssetSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.h}});Object.defineProperty(exports,"RoleSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.c}});Object.defineProperty(exports,"SourceSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.k}});Object.defineProperty(exports,"StatusSchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.j}});Object.defineProperty(exports,"VisibilitySchema",{enumerable:true,get:function(){return chunkYFEGRZXL_cjs.b}});Object.defineProperty(exports,"ContentActionRefSchema",{enumerable:true,get:function(){return chunkJRBBNFFI_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -22,5 +22,5 @@ export { FILE_FILTERS, FileFilter, fileTypes, getExtensionFromFileName, getExten
22
22
  export { createNameUrlSlug, createUrlSlug, getAssetUrl } from './utils/navigate.cjs';
23
23
  export { parseMarkdown } from './utils/air/markdown-parser.cjs';
24
24
  export { AssetDeclarationPickerFilters, KeyedAssetInput, KeyedAssetInputSchema, KeyedAssetRefs, KeyedAssetRefsSchema, QuestSubmissionAssetDeclaration, QuestSubmissionAssetDeclarationSchema, assetMatchesDeclaration, declarationToPickerFilters, declarationToSubmissionDeclaration, getPrimaryAssetRef, getPrimaryDeclarationKey, getRouteInputDeclarationsFromRoute, getSubmissionAssetShape, materializeContributorSubmissionAssets, toRouteInputAssets } from './utils/quest-submission.cjs';
25
- export { DataFilter, DisplayConfig, ExtractedContentAction, ExtractedContentAsset, InlineAssetAttrs, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig } from './utils/air/index.cjs';
25
+ export { AssetWikiLinkMatch, DataFilter, DisplayConfig, ExtractedContentAction, ExtractedContentAsset, InlineAssetAttrs, extractAssetWikiLinks, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig } from './utils/air/index.cjs';
26
26
  import 'zod';
package/dist/index.d.ts CHANGED
@@ -22,5 +22,5 @@ export { FILE_FILTERS, FileFilter, fileTypes, getExtensionFromFileName, getExten
22
22
  export { createNameUrlSlug, createUrlSlug, getAssetUrl } from './utils/navigate.js';
23
23
  export { parseMarkdown } from './utils/air/markdown-parser.js';
24
24
  export { AssetDeclarationPickerFilters, KeyedAssetInput, KeyedAssetInputSchema, KeyedAssetRefs, KeyedAssetRefsSchema, QuestSubmissionAssetDeclaration, QuestSubmissionAssetDeclarationSchema, assetMatchesDeclaration, declarationToPickerFilters, declarationToSubmissionDeclaration, getPrimaryAssetRef, getPrimaryDeclarationKey, getRouteInputDeclarationsFromRoute, getSubmissionAssetShape, materializeContributorSubmissionAssets, toRouteInputAssets } from './utils/quest-submission.js';
25
- export { DataFilter, DisplayConfig, ExtractedContentAction, ExtractedContentAsset, InlineAssetAttrs, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig } from './utils/air/index.js';
25
+ export { AssetWikiLinkMatch, DataFilter, DisplayConfig, ExtractedContentAction, ExtractedContentAsset, InlineAssetAttrs, extractAssetWikiLinks, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig } from './utils/air/index.js';
26
26
  import 'zod';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{f as getReferencesInContent,a as normalizeViewMode,d as parseActionLinkShorthand,c as parseAssetLinkShorthand,e as parseOuroAssetUrl,b as resolveDisplayConfig}from'./chunk-CRUIBV5F.js';export{a as parseMarkdown}from'./chunk-KXYKN3TY.js';export{e as AssetTagSchema,f as AssetTagWithTagSchema,g as CreateAssetTagSchema,c as TagSchema,b as TagSourceSchema,a as TagTypeSchema,d as TagWithParentSchema,h as TagsByTypeSchema}from'./chunk-EEXD7LGK.js';export{b as toAssetMetadataFilters,a as toAssetSearchFilters}from'./chunk-LGJ2LLH6.js';export{a as createNameUrlSlug,b as createUrlSlug,c as getAssetUrl}from'./chunk-EY4OFSDP.js';export{a as filterListToString}from'./chunk-OJQM6MWS.js';export{h as CreateDatasetFromFileSchema,i as CreateDatasetFromSchemaSchema,c as DatasetEnumColumnsSchema,b as DatasetRefsSchema,g as DatasetSchema,d as EnrichedDatasetSchemaFieldSchema,a as RefKindSchema,e as ResolvedRefSchema,f as ResolvedRefsSchema,j as updateDatasetSchema}from'./chunk-W6KXPYCB.js';export{c as USER_SUBSCRIBABLE_WEBHOOK_EVENTS,a as WEBHOOK_EVENTS,b as WEBHOOK_EVENT_TYPES}from'./chunk-MWNVL2DD.js';export{c as CreateFileSchema,b as FileSchema,a as ZipArchiveMetadataSchema,d as updateFileSchema}from'./chunk-3DGJ27WL.js';export{r as ActionCompleteContentSchema,q as BadgeContentSchema,g as CommentContentSchema,z as ContentDeletedContentSchema,y as ContentMovedContentSchema,p as DepositContentSchema,A as EventContentSchema,m as FollowContentSchema,n as InviteContentSchema,f as MentionContentSchema,b as NotificationAssetRefSchema,c as NotificationContentAssetSchema,d as NotificationParentRefSchema,e as NotificationRootInfoSchema,B as NotificationSchema,a as NotificationTypeSchema,v as OnboardingActionRequiredContentSchema,u as OnboardingCompleteContentSchema,l as OwnershipTransferContentSchema,o as PaymentContentSchema,t as QuestEntryAcceptedContentSchema,s as QuestEntryContentSchema,j as ReactionContentSchema,i as ReferenceContentSchema,h as ReplyContentSchema,w as RouteEarningsMilestoneContentSchema,x as RoutePayoutContentSchema,k as ShareContentSchema}from'./chunk-EC376C5T.js';export{q as CreateEntrySchema,j as CreateQuestItemObjectSchema,k as CreateQuestItemSchema,m as CreateQuestSchema,e as EntryEvalStatusSchema,p as EntrySchema,f as EntryStatusSchema,g as LeaderboardOrderSchema,h as QuestItemBaseSchema,i as QuestItemSchema,c as QuestItemStatusSchema,l as QuestSchema,b as QuestStatusSchema,a as QuestTypeSchema,r as ReviewEntrySchema,d as RewardCurrencySchema,o as UpdateQuestItemSchema,n as UpdateQuestSchema}from'./chunk-5CPECQKN.js';export{c as KeyedAssetInputSchema,a as KeyedAssetRefsSchema,d as QuestSubmissionAssetDeclarationSchema,k as assetMatchesDeclaration,j as declarationToPickerFilters,f as declarationToSubmissionDeclaration,l as getPrimaryAssetRef,h as getPrimaryDeclarationKey,e as getRouteInputDeclarationsFromRoute,i as getSubmissionAssetShape,g as materializeContributorSubmissionAssets,m as toRouteInputAssets}from'./chunk-O4LSX56P.js';export{l as ActionAssetRefSchema,k as ActionSchema,b as CreateServiceSchema,d as ExecutionModeSchema,m as ReadActionRouteSchema,n as ReadActionSchema,e as RouteInputAssetDeclarationSchema,g as RouteInputAssetsSchema,i as RouteMetricsSchema,f as RouteOutputAssetDeclarationSchema,h as RouteOutputAssetsSchema,j as RouteSchema,a as ServiceSchema,c as UpdateServiceSchema}from'./chunk-RS5H4XDK.js';export{a as FILE_FILTERS,b as fileTypes,e as getExtensionFromFileName,f as getExtensionFromMimeType,h as getFileClassification,c as getFileFilterLabel,g as getSafeFileExtension,d as normalizeExtension}from'./chunk-OU4JKY4M.js';export{b as AssetFilterFileTypeSchema,a as AssetFilterVisibilitySchema,c as AssetFiltersSchema,e as AssetMetadataFiltersSchema,d as AssetSearchFiltersSchema}from'./chunk-KMENBGAB.js';export{c as CommentRepliesAggregateSchema,a as CommentSchema,b as CreateCommentSchema,d as ReadCommentSchema}from'./chunk-MKRXM63S.js';export{a as reactionSchema}from'./chunk-WE6CXCEQ.js';export{a as ConversationSchema,b as CreateConversationSchema,e as MessageReactionSchema,d as MessageReactionValueSchema,f as MessageSchema,c as UpdateConversationSchema}from'./chunk-FGEMQEEM.js';export{b as ContentSchema,d as CreatePostSchema,g as ListPostsSchema,c as PostSchema,e as ReadPostSchema,f as ReadPostsSchema,a as TipTapSchema,h as UpdatePostSchema}from'./chunk-LXDNBUOU.js';export{b as AssetMetadataSchema,f as AssetSchema,e as AttributionSchema,d as CitationSchema,h as CreateAssetSchema,g as DEFAULT_ATTRIBUTION,c as RelationTypeSchema,i as UpdateAssetSchema,a as normalizeAssetConfigForParsing}from'./chunk-PGCNGDPK.js';export{b as CreateTeamSchema,c as ReadTeamSchema,d as ReadTeamsSchema,a as TeamSchema,e as UpdateTeamSchema}from'./chunk-Y6BK75KP.js';export{a as ActorTypePolicySchema,d as MembershipSchema,c as OrganizationsSchema,b as SourcePolicySchema}from'./chunk-OCG3P3PJ.js';export{a as ActorTypeSchema,b as ProfileSchema,c as ReadProfileSchema,d as UpdateProfileSchema}from'./chunk-CDJH4OT5.js';export{a as AssetTypeSchema,g as ConnectionSchema,f as EmbeddingSchema,l as HttpMethodSchema,d as MonetizationSchema,i as PermissionSchema,e as PriceCurrencySchema,h as PurchaseAssetSchema,c as RoleSchema,k as SourceSchema,j as StatusSchema,b as VisibilitySchema}from'./chunk-33C7IDRP.js';import'./chunk-DUBPWSCA.js';export{a as ContentActionRefSchema}from'./chunk-42ADEGDM.js';//# sourceMappingURL=index.js.map
1
+ export{e as extractAssetWikiLinks,g as getReferencesInContent,a as normalizeViewMode,d as parseActionLinkShorthand,c as parseAssetLinkShorthand,f as parseOuroAssetUrl,b as resolveDisplayConfig}from'./chunk-AJ2O7ER6.js';export{a as parseMarkdown}from'./chunk-Q4IXX6KS.js';export{e as AssetTagSchema,f as AssetTagWithTagSchema,g as CreateAssetTagSchema,c as TagSchema,b as TagSourceSchema,a as TagTypeSchema,d as TagWithParentSchema,h as TagsByTypeSchema}from'./chunk-EEXD7LGK.js';export{b as toAssetMetadataFilters,a as toAssetSearchFilters}from'./chunk-LGJ2LLH6.js';export{a as createNameUrlSlug,b as createUrlSlug,c as getAssetUrl}from'./chunk-EY4OFSDP.js';export{a as filterListToString}from'./chunk-OJQM6MWS.js';export{h as CreateDatasetFromFileSchema,i as CreateDatasetFromSchemaSchema,c as DatasetEnumColumnsSchema,b as DatasetRefsSchema,g as DatasetSchema,d as EnrichedDatasetSchemaFieldSchema,a as RefKindSchema,e as ResolvedRefSchema,f as ResolvedRefsSchema,j as updateDatasetSchema}from'./chunk-W6KXPYCB.js';export{c as USER_SUBSCRIBABLE_WEBHOOK_EVENTS,a as WEBHOOK_EVENTS,b as WEBHOOK_EVENT_TYPES}from'./chunk-MWNVL2DD.js';export{c as CreateFileSchema,b as FileSchema,a as ZipArchiveMetadataSchema,d as updateFileSchema}from'./chunk-3DGJ27WL.js';export{r as ActionCompleteContentSchema,q as BadgeContentSchema,g as CommentContentSchema,z as ContentDeletedContentSchema,y as ContentMovedContentSchema,p as DepositContentSchema,A as EventContentSchema,m as FollowContentSchema,n as InviteContentSchema,f as MentionContentSchema,b as NotificationAssetRefSchema,c as NotificationContentAssetSchema,d as NotificationParentRefSchema,e as NotificationRootInfoSchema,B as NotificationSchema,a as NotificationTypeSchema,v as OnboardingActionRequiredContentSchema,u as OnboardingCompleteContentSchema,l as OwnershipTransferContentSchema,o as PaymentContentSchema,t as QuestEntryAcceptedContentSchema,s as QuestEntryContentSchema,j as ReactionContentSchema,i as ReferenceContentSchema,h as ReplyContentSchema,w as RouteEarningsMilestoneContentSchema,x as RoutePayoutContentSchema,k as ShareContentSchema}from'./chunk-EC376C5T.js';export{q as CreateEntrySchema,j as CreateQuestItemObjectSchema,k as CreateQuestItemSchema,m as CreateQuestSchema,e as EntryEvalStatusSchema,p as EntrySchema,f as EntryStatusSchema,g as LeaderboardOrderSchema,h as QuestItemBaseSchema,i as QuestItemSchema,c as QuestItemStatusSchema,l as QuestSchema,b as QuestStatusSchema,a as QuestTypeSchema,r as ReviewEntrySchema,d as RewardCurrencySchema,o as UpdateQuestItemSchema,n as UpdateQuestSchema}from'./chunk-5CPECQKN.js';export{c as KeyedAssetInputSchema,a as KeyedAssetRefsSchema,d as QuestSubmissionAssetDeclarationSchema,k as assetMatchesDeclaration,j as declarationToPickerFilters,f as declarationToSubmissionDeclaration,l as getPrimaryAssetRef,h as getPrimaryDeclarationKey,e as getRouteInputDeclarationsFromRoute,i as getSubmissionAssetShape,g as materializeContributorSubmissionAssets,m as toRouteInputAssets}from'./chunk-O4LSX56P.js';export{l as ActionAssetRefSchema,k as ActionSchema,b as CreateServiceSchema,d as ExecutionModeSchema,m as ReadActionRouteSchema,n as ReadActionSchema,e as RouteInputAssetDeclarationSchema,g as RouteInputAssetsSchema,i as RouteMetricsSchema,f as RouteOutputAssetDeclarationSchema,h as RouteOutputAssetsSchema,j as RouteSchema,a as ServiceSchema,c as UpdateServiceSchema}from'./chunk-RS5H4XDK.js';export{a as FILE_FILTERS,b as fileTypes,e as getExtensionFromFileName,f as getExtensionFromMimeType,h as getFileClassification,c as getFileFilterLabel,g as getSafeFileExtension,d as normalizeExtension}from'./chunk-OU4JKY4M.js';export{b as AssetFilterFileTypeSchema,a as AssetFilterVisibilitySchema,c as AssetFiltersSchema,e as AssetMetadataFiltersSchema,d as AssetSearchFiltersSchema}from'./chunk-KMENBGAB.js';export{c as CommentRepliesAggregateSchema,a as CommentSchema,b as CreateCommentSchema,d as ReadCommentSchema}from'./chunk-MKRXM63S.js';export{a as reactionSchema}from'./chunk-WE6CXCEQ.js';export{a as ConversationSchema,b as CreateConversationSchema,e as MessageReactionSchema,d as MessageReactionValueSchema,f as MessageSchema,c as UpdateConversationSchema}from'./chunk-FGEMQEEM.js';export{b as ContentSchema,d as CreatePostSchema,g as ListPostsSchema,c as PostSchema,e as ReadPostSchema,f as ReadPostsSchema,a as TipTapSchema,h as UpdatePostSchema}from'./chunk-LXDNBUOU.js';export{b as AssetMetadataSchema,f as AssetSchema,e as AttributionSchema,d as CitationSchema,h as CreateAssetSchema,g as DEFAULT_ATTRIBUTION,c as RelationTypeSchema,i as UpdateAssetSchema,a as normalizeAssetConfigForParsing}from'./chunk-PGCNGDPK.js';export{b as CreateTeamSchema,c as ReadTeamSchema,d as ReadTeamsSchema,a as TeamSchema,e as UpdateTeamSchema}from'./chunk-Y6BK75KP.js';export{a as ActorTypePolicySchema,d as MembershipSchema,c as OrganizationsSchema,b as SourcePolicySchema}from'./chunk-OCG3P3PJ.js';export{a as ActorTypeSchema,b as ProfileSchema,c as ReadProfileSchema,d as UpdateProfileSchema}from'./chunk-CDJH4OT5.js';export{a as AssetTypeSchema,g as ConnectionSchema,f as EmbeddingSchema,l as HttpMethodSchema,d as MonetizationSchema,i as PermissionSchema,e as PriceCurrencySchema,h as PurchaseAssetSchema,c as RoleSchema,k as SourceSchema,j as StatusSchema,b as VisibilitySchema}from'./chunk-33C7IDRP.js';import'./chunk-DUBPWSCA.js';export{a as ContentActionRefSchema}from'./chunk-42ADEGDM.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkEVQAA7RQ_cjs=require('../../chunk-EVQAA7RQ.cjs');Object.defineProperty(exports,"getReferencesInContent",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.f}});Object.defineProperty(exports,"normalizeViewMode",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.a}});Object.defineProperty(exports,"parseActionLinkShorthand",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.d}});Object.defineProperty(exports,"parseAssetLinkShorthand",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.c}});Object.defineProperty(exports,"parseOuroAssetUrl",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.e}});Object.defineProperty(exports,"resolveDisplayConfig",{enumerable:true,get:function(){return chunkEVQAA7RQ_cjs.b}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkOCMBP3U7_cjs=require('../../chunk-OCMBP3U7.cjs');Object.defineProperty(exports,"extractAssetWikiLinks",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.e}});Object.defineProperty(exports,"getReferencesInContent",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.g}});Object.defineProperty(exports,"normalizeViewMode",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.a}});Object.defineProperty(exports,"parseActionLinkShorthand",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.d}});Object.defineProperty(exports,"parseAssetLinkShorthand",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.c}});Object.defineProperty(exports,"parseOuroAssetUrl",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.f}});Object.defineProperty(exports,"resolveDisplayConfig",{enumerable:true,get:function(){return chunkOCMBP3U7_cjs.b}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -87,6 +87,28 @@ declare function parseAssetLinkShorthand(href: string): {
87
87
  declare function parseActionLinkShorthand(href: string): {
88
88
  id: string;
89
89
  } | null;
90
+ type AssetWikiLinkMatch = {
91
+ raw: string;
92
+ href: string;
93
+ id: string;
94
+ assetType: string;
95
+ legacy: false;
96
+ } | {
97
+ raw: string;
98
+ href: string;
99
+ id: string;
100
+ legacy: true;
101
+ } | {
102
+ raw: string;
103
+ href: string;
104
+ id: string;
105
+ action: true;
106
+ };
107
+ /**
108
+ * Find collapsed `[dataset:<uuid>]` / `[action:<uuid>]` spans in a text node.
109
+ * Skips `[shorthand](href)` markdown links via the regex lookahead.
110
+ */
111
+ declare function extractAssetWikiLinks(text: string): AssetWikiLinkMatch[];
90
112
  /**
91
113
  * Parse an Ouro site URL into its asset components.
92
114
  * Accepts both absolute URLs (https://ouro.foundation/posts/entity/slug)
@@ -120,4 +142,4 @@ declare function getReferencesInContent(json: Content["json"], options?: {
120
142
  linkedAssets: LinkedAssetRef[];
121
143
  };
122
144
 
123
- export { type DataFilter, type DisplayConfig, type ExtractedContentAction, type ExtractedContentAsset, type InlineAssetAttrs, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig };
145
+ export { type AssetWikiLinkMatch, type DataFilter, type DisplayConfig, type ExtractedContentAction, type ExtractedContentAsset, type InlineAssetAttrs, extractAssetWikiLinks, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig };
@@ -87,6 +87,28 @@ declare function parseAssetLinkShorthand(href: string): {
87
87
  declare function parseActionLinkShorthand(href: string): {
88
88
  id: string;
89
89
  } | null;
90
+ type AssetWikiLinkMatch = {
91
+ raw: string;
92
+ href: string;
93
+ id: string;
94
+ assetType: string;
95
+ legacy: false;
96
+ } | {
97
+ raw: string;
98
+ href: string;
99
+ id: string;
100
+ legacy: true;
101
+ } | {
102
+ raw: string;
103
+ href: string;
104
+ id: string;
105
+ action: true;
106
+ };
107
+ /**
108
+ * Find collapsed `[dataset:<uuid>]` / `[action:<uuid>]` spans in a text node.
109
+ * Skips `[shorthand](href)` markdown links via the regex lookahead.
110
+ */
111
+ declare function extractAssetWikiLinks(text: string): AssetWikiLinkMatch[];
90
112
  /**
91
113
  * Parse an Ouro site URL into its asset components.
92
114
  * Accepts both absolute URLs (https://ouro.foundation/posts/entity/slug)
@@ -120,4 +142,4 @@ declare function getReferencesInContent(json: Content["json"], options?: {
120
142
  linkedAssets: LinkedAssetRef[];
121
143
  };
122
144
 
123
- export { type DataFilter, type DisplayConfig, type ExtractedContentAction, type ExtractedContentAsset, type InlineAssetAttrs, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig };
145
+ export { type AssetWikiLinkMatch, type DataFilter, type DisplayConfig, type ExtractedContentAction, type ExtractedContentAsset, type InlineAssetAttrs, extractAssetWikiLinks, getReferencesInContent, normalizeViewMode, parseActionLinkShorthand, parseAssetLinkShorthand, parseOuroAssetUrl, resolveDisplayConfig };
@@ -1,2 +1,2 @@
1
- export{f as getReferencesInContent,a as normalizeViewMode,d as parseActionLinkShorthand,c as parseAssetLinkShorthand,e as parseOuroAssetUrl,b as resolveDisplayConfig}from'../../chunk-CRUIBV5F.js';//# sourceMappingURL=index.js.map
1
+ export{e as extractAssetWikiLinks,g as getReferencesInContent,a as normalizeViewMode,d as parseActionLinkShorthand,c as parseAssetLinkShorthand,f as parseOuroAssetUrl,b as resolveDisplayConfig}from'../../chunk-AJ2O7ER6.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkNSKBXBRD_cjs=require('../../chunk-NSKBXBRD.cjs');Object.defineProperty(exports,"parseMarkdown",{enumerable:true,get:function(){return chunkNSKBXBRD_cjs.a}});//# sourceMappingURL=markdown-parser.cjs.map
1
+ 'use strict';var chunkPJLIO4PA_cjs=require('../../chunk-PJLIO4PA.cjs');Object.defineProperty(exports,"parseMarkdown",{enumerable:true,get:function(){return chunkPJLIO4PA_cjs.a}});//# sourceMappingURL=markdown-parser.cjs.map
2
2
  //# sourceMappingURL=markdown-parser.cjs.map
@@ -1,2 +1,2 @@
1
- export{a as parseMarkdown}from'../../chunk-KXYKN3TY.js';//# sourceMappingURL=markdown-parser.js.map
1
+ export{a as parseMarkdown}from'../../chunk-Q4IXX6KS.js';//# sourceMappingURL=markdown-parser.js.map
2
2
  //# sourceMappingURL=markdown-parser.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ourofoundation/ouro-js",
3
- "version": "3.8.1",
3
+ "version": "3.8.2",
4
4
  "description": "Interact with the Ouro platform in browser and node.js environments",
5
5
  "module": "./dist/index.js",
6
6
  "main": "./dist/index.cjs",
@@ -0,0 +1,52 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+
4
+ import { parseMarkdown } from "../dist/utils/air/markdown-parser.js";
5
+ import {
6
+ extractAssetWikiLinks,
7
+ getReferencesInContent,
8
+ } from "../dist/index.js";
9
+
10
+ const DATASET_ID = "01a06cb9-cb9e-72d0-acaa-c36468a1b1ba";
11
+
12
+ test("extractAssetWikiLinks finds collapsed [dataset:uuid] spans", () => {
13
+ const matches = extractAssetWikiLinks(
14
+ `See [dataset:${DATASET_ID}] and [dataset:${DATASET_ID}](dataset:${DATASET_ID}).`
15
+ );
16
+ assert.equal(matches.length, 1);
17
+ assert.equal(matches[0].href, `dataset:${DATASET_ID}`);
18
+ });
19
+
20
+ test("parseMarkdown turns [dataset:uuid] into an anchor", () => {
21
+ const html = parseMarkdown(`See [dataset:${DATASET_ID}] for rows.`);
22
+ assert.match(
23
+ String(html),
24
+ new RegExp(`href="dataset:${DATASET_ID}"`)
25
+ );
26
+ });
27
+
28
+ test("parseMarkdown leaves [label](dataset:uuid) to the built-in link tokenizer", () => {
29
+ const html = parseMarkdown(`See [results](dataset:${DATASET_ID}).`);
30
+ assert.match(String(html), />results<\/a>/);
31
+ assert.match(String(html), new RegExp(`href="dataset:${DATASET_ID}"`));
32
+ });
33
+
34
+ test("getReferencesInContent extracts wiki-links from plain text nodes", () => {
35
+ const refs = getReferencesInContent({
36
+ type: "doc",
37
+ content: [
38
+ {
39
+ type: "paragraph",
40
+ content: [
41
+ {
42
+ type: "text",
43
+ text: `Re-probed [dataset:${DATASET_ID}] via MCP`,
44
+ },
45
+ ],
46
+ },
47
+ ],
48
+ });
49
+ assert.equal(refs.assets.length, 1);
50
+ assert.equal(refs.assets[0].id, DATASET_ID);
51
+ assert.equal(refs.assets[0].assetType, "dataset");
52
+ });
@@ -1,2 +0,0 @@
1
- function _(t){return t==="default"?"card":t==="chart"?"preview":t==="preview"||t==="interactive"||t==="card"||t==="list"?t:"card"}function L(t){let n={};if(t.displayConfig&&(n=typeof t.displayConfig=="string"?JSON.parse(t.displayConfig):{...t.displayConfig}),n.visualizationId===void 0&&t.visualizationId&&(n.visualizationId=t.visualizationId),n.filters===void 0&&t.filters){let r=t.filters;n.filters=typeof r=="string"?JSON.parse(r):r;}return n}var h="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",I=new RegExp(`^(post|dataset|file|service|route|quest):(${h})$`,"i"),E=new RegExp(`^asset:(${h})$`,"i"),T=new RegExp(`^action:(${h})$`,"i"),x=new Set(["post","dataset","file","service","route","quest"]);function k(t){let n=I.exec(t);if(n){let o=n[1].toLowerCase();return x.has(o)?{id:n[2],assetType:o,legacy:false}:null}let r=E.exec(t);return r?{id:r[1],legacy:true}:null}function R(t){let n=T.exec(t);return n?{id:n[1]}:null}function S(t,n){let r;try{if(t.startsWith("/"))r=t;else {let d=new URL(t);if(n){let g=new URL(n).host;if(d.host!==g)return null}r=d.pathname;}}catch{return null}let o=r.match(/^\/(\w+)s\/([^/]+)\/([^/?#]+)/);if(!o)return null;let[,l,u,p]=o;return x.has(l)?{assetType:l,entity:decodeURIComponent(u),slug:decodeURIComponent(p)}:null}var A=t=>Array.isArray(t)?t.map(A):t!=null&&t.content?Array.isArray(t.content)?t.content.map(A).flat():A(t.content):t;function w(t,n){var C;if(!t||!(t!=null&&t.content))return {users:[],assets:[],actions:[],linkedAssets:[]};let r=t.content.map(A).flat(),o=r.filter(e=>e.type==="mention").map(e=>{var s,i,c;return {user_id:(s=e.attrs)==null?void 0:s.id,username:((i=e.attrs)==null?void 0:i.label)||((c=e.attrs)==null?void 0:c.username)}}).reduce((e,s)=>(e.some(i=>i.user_id&&s.user_id&&i.user_id===s.user_id||i.username&&s.username&&i.username===s.username)||e.push(s),e),[]),l=r.filter(e=>{var s,i;return e.type==="assetComponent"&&((s=e.attrs)==null?void 0:s.id)&&!((i=e.attrs)!=null&&i.partial)}).map(({attrs:e})=>({id:e.id,assetType:e.assetType,via:"embed"})).reduce((e,s)=>(e.some(i=>i.id===s.id)||e.push(s),e),[]),u=[],p=[],d=new Set(l.map(e=>e.id)),g=new Set,v=new Set;for(let e of r){if((e==null?void 0:e.type)!=="text"||!(e!=null&&e.marks))continue;let s=e.marks.find(a=>a.type==="link");if(!((C=s==null?void 0:s.attrs)!=null&&C.href))continue;let i=s.attrs.href,c=R(i);if(c){g.has(c.id)||(g.add(c.id),p.push({id:c.id,via:"link"}));continue}let y=k(i);if(y){let a=y.id;d.has(a)||(d.add(a),y.legacy?l.push({id:a,via:"link",legacy:true}):l.push({id:a,assetType:y.assetType,via:"link",legacy:false}));continue}let f=S(i,n==null?void 0:n.siteUrl);if(f){let a=`${f.assetType}:${f.entity}:${f.slug}`;v.has(a)||(v.add(a),u.push(f));}}return {users:o,assets:l,actions:p,linkedAssets:u}}export{_ as a,L as b,k as c,R as d,S as e,w as f};//# sourceMappingURL=chunk-CRUIBV5F.js.map
2
- //# sourceMappingURL=chunk-CRUIBV5F.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/air/index.ts"],"names":["normalizeViewMode","raw","resolveDisplayConfig","attrs","base","UUID_RE","TYPED_ASSET_LINK_RE","LEGACY_ASSET_LINK_RE","ACTION_LINK_RE","VALID_ASSET_TYPES","parseAssetLinkShorthand","href","typed","assetType","legacy","parseActionLinkShorthand","match","parseOuroAssetUrl","siteUrl","pathname","url","siteHost","entity","slug","extractContent","item","getReferencesInContent","json","options","_a","content","users","_b","_c","unique","u","assets","linkedAssets","actions","seenAssetIds","a","seenActionIds","seenLinkedKeys","linkMark","m","actionShorthand","shorthand","id","parsed","key"],"mappings":"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","file":"chunk-CRUIBV5F.js","sourcesContent":["import { Content } from \"../../schema/posts\";\nimport { Profile } from \"../../schema/users\";\n\nexport interface DataFilter {\n column: string;\n value: string;\n operator: string;\n active?: boolean;\n}\n\nexport interface DisplayConfig {\n /** Dataset: ID of a saved visualization to render instead of the default chart. */\n visualizationId?: string | null;\n /** Dataset: column filters applied to the data. */\n filters?: DataFilter[];\n /** Route: ID of a specific action to preview (status, logs, side-effect assets). */\n actionId?: string | null;\n /** Route: author-provided defaults for an interactive route form. */\n defaultValues?: Record<string, unknown>;\n}\n\n/**\n * Normalize legacy viewMode values to the current set.\n * \"chart\" → \"preview\", \"default\" → \"card\", anything else → \"card\".\n */\nexport function normalizeViewMode(\n raw: string | undefined | null\n): \"card\" | \"preview\" | \"interactive\" | \"list\" {\n if (raw === \"default\") return \"card\";\n if (raw === \"chart\") return \"preview\";\n if (\n raw === \"preview\" ||\n raw === \"interactive\" ||\n raw === \"card\" ||\n raw === \"list\"\n )\n return raw;\n return \"card\";\n}\n\n/**\n * Build a DisplayConfig from node/element attributes, handling the legacy\n * flat `visualizationId` / `filters` attrs and the new `displayConfig` object.\n * Prefers values inside `displayConfig` when present.\n */\nexport function resolveDisplayConfig(attrs: {\n displayConfig?: DisplayConfig | string | null;\n visualizationId?: string | null;\n filters?: DataFilter[] | string | null;\n}): DisplayConfig {\n let base: DisplayConfig = {};\n\n if (attrs.displayConfig) {\n base =\n typeof attrs.displayConfig === \"string\"\n ? JSON.parse(attrs.displayConfig)\n : { ...attrs.displayConfig };\n }\n\n // Fall back to legacy flat attrs when displayConfig doesn't carry them\n if (base.visualizationId === undefined && attrs.visualizationId) {\n base.visualizationId = attrs.visualizationId;\n }\n if (base.filters === undefined && attrs.filters) {\n const raw = attrs.filters;\n base.filters =\n typeof raw === \"string\" ? JSON.parse(raw) : raw;\n }\n\n return base;\n}\n\nexport interface InlineAssetAttrs {\n id: string;\n assetType: string;\n viewMode: \"card\" | \"preview\" | \"interactive\" | \"list\";\n displayConfig?: DisplayConfig | null;\n /** @deprecated Use displayConfig.filters */\n filters?: any;\n /** @deprecated Use displayConfig.visualizationId */\n visualizationId?: string | null;\n partial?: boolean;\n}\n\n/** Assets pulled from Air JSON: embedded blocks or link href shorthands. */\nexport type ExtractedContentAsset =\n | { id: string; assetType: string; via: \"embed\" }\n | { id: string; assetType: string; via: \"link\"; legacy: false }\n | { id: string; via: \"link\"; legacy: true };\n\ninterface LinkedAssetRef {\n assetType: string;\n entity: string;\n slug: string;\n}\n\n/** UUID v4 pattern for inline link hrefs */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/** Shorthand link hrefs: `post:<uuid>`, `file:<uuid>`, … (preferred over legacy `asset:<uuid>`). */\nconst TYPED_ASSET_LINK_RE = new RegExp(\n `^(post|dataset|file|service|route|quest):(${UUID_RE})$`,\n \"i\"\n);\n\n/** @deprecated Prefer `post:<uuid>` etc.; still supported and resolved server-side. */\nconst LEGACY_ASSET_LINK_RE = new RegExp(`^asset:(${UUID_RE})$`, \"i\");\n\n/** Route action link hrefs: `action:<uuid>` → history page for that run. */\nconst ACTION_LINK_RE = new RegExp(`^action:(${UUID_RE})$`, \"i\");\n\nconst VALID_ASSET_TYPES = new Set([\n \"post\",\n \"dataset\",\n \"file\",\n \"service\",\n \"route\",\n \"quest\",\n]);\n\nexport type ExtractedContentAction = { id: string; via: \"link\" };\n\n/**\n * Parse an inline link `href` for Ouro asset shorthands.\n * - `post:<uuid>`, `file:<uuid>`, … → typed (asset type known from prefix)\n * - `asset:<uuid>` → legacy (type resolved via DB when creating connections)\n */\nfunction parseAssetLinkShorthand(\n href: string\n):\n | { id: string; assetType: string; legacy: false }\n | { id: string; legacy: true }\n | null {\n const typed = TYPED_ASSET_LINK_RE.exec(href);\n if (typed) {\n const assetType = typed[1].toLowerCase();\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n return { id: typed[2], assetType, legacy: false };\n }\n const legacy = LEGACY_ASSET_LINK_RE.exec(href);\n if (legacy) return { id: legacy[1], legacy: true };\n return null;\n}\n\n/**\n * Parse an inline link `href` for a route action shorthand: `action:<uuid>`.\n * Actions are not assets — callers must resolve them separately.\n */\nfunction parseActionLinkShorthand(href: string): { id: string } | null {\n const match = ACTION_LINK_RE.exec(href);\n if (!match) return null;\n return { id: match[1] };\n}\n\n/**\n * Parse an Ouro site URL into its asset components.\n * Accepts both absolute URLs (https://ouro.foundation/posts/entity/slug)\n * and relative paths (/posts/entity/slug).\n */\nfunction parseOuroAssetUrl(\n href: string,\n siteUrl?: string\n): LinkedAssetRef | null {\n let pathname: string;\n try {\n if (href.startsWith(\"/\")) {\n pathname = href;\n } else {\n const url = new URL(href);\n if (siteUrl) {\n const siteHost = new URL(siteUrl).host;\n if (url.host !== siteHost) return null;\n }\n pathname = url.pathname;\n }\n } catch {\n return null;\n }\n\n // Pattern: /{assetType}s/{entity}/{slug}\n const match = pathname.match(\n /^\\/(\\w+)s\\/([^/]+)\\/([^/?#]+)/\n );\n if (!match) return null;\n\n const [, assetType, entity, slug] = match;\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n\n return { assetType, entity: decodeURIComponent(entity), slug: decodeURIComponent(slug) };\n}\n\nconst extractContent = (item: any): any => {\n if (Array.isArray(item)) return item.map(extractContent);\n if (item?.content) {\n if (Array.isArray(item.content))\n return item.content.map(extractContent).flat();\n else return extractContent(item.content);\n } else return item; // leaf\n};\n\nfunction getReferencesInContent(\n json: Content[\"json\"],\n options?: { siteUrl?: string }\n) {\n if (!json || !json?.content)\n return { users: [], assets: [], actions: [], linkedAssets: [] };\n const content = json.content.map(extractContent).flat();\n\n const users = content\n .filter((item: any) => item.type === \"mention\")\n .map((item: any) => ({\n user_id: item.attrs?.id,\n username: item.attrs?.label || item.attrs?.username,\n }))\n .reduce((unique: any[], item: any) => {\n if (\n !unique.some(\n (u) =>\n (u.user_id && item.user_id && u.user_id === item.user_id) ||\n (u.username && item.username && u.username === item.username)\n )\n ) {\n unique.push(item);\n }\n return unique;\n }, []) as Partial<Profile>[];\n\n const assets: ExtractedContentAsset[] = content\n .filter(\n (item: any) =>\n item.type === \"assetComponent\" && item.attrs?.id && !item.attrs?.partial\n )\n .map(({ attrs }: { attrs: InlineAssetAttrs }) => ({\n id: attrs.id,\n assetType: attrs.assetType,\n via: \"embed\" as const,\n }))\n .reduce((unique: ExtractedContentAsset[], item: ExtractedContentAsset) => {\n if (!unique.some((u) => u.id === item.id)) {\n unique.push(item);\n }\n return unique;\n }, []);\n\n // Extract asset / action references from link marks\n const linkedAssets: LinkedAssetRef[] = [];\n const actions: ExtractedContentAction[] = [];\n const seenAssetIds = new Set(assets.map((a) => a.id));\n const seenActionIds = new Set<string>();\n const seenLinkedKeys = new Set<string>();\n\n for (const item of content) {\n if (item?.type !== \"text\" || !item?.marks) continue;\n const linkMark = item.marks.find((m: any) => m.type === \"link\");\n if (!linkMark?.attrs?.href) continue;\n\n const href: string = linkMark.attrs.href;\n\n const actionShorthand = parseActionLinkShorthand(href);\n if (actionShorthand) {\n if (!seenActionIds.has(actionShorthand.id)) {\n seenActionIds.add(actionShorthand.id);\n actions.push({ id: actionShorthand.id, via: \"link\" });\n }\n continue;\n }\n\n const shorthand = parseAssetLinkShorthand(href);\n if (shorthand) {\n const id = shorthand.id;\n if (!seenAssetIds.has(id)) {\n seenAssetIds.add(id);\n if (shorthand.legacy) {\n assets.push({ id, via: \"link\", legacy: true });\n } else {\n assets.push({\n id,\n assetType: shorthand.assetType,\n via: \"link\",\n legacy: false,\n });\n }\n }\n continue;\n }\n\n // Check for Ouro site URLs\n const parsed = parseOuroAssetUrl(href, options?.siteUrl);\n if (parsed) {\n const key = `${parsed.assetType}:${parsed.entity}:${parsed.slug}`;\n if (!seenLinkedKeys.has(key)) {\n seenLinkedKeys.add(key);\n linkedAssets.push(parsed);\n }\n }\n }\n\n return {\n users,\n assets,\n actions,\n linkedAssets,\n };\n}\n\nexport {\n getReferencesInContent,\n parseActionLinkShorthand,\n parseAssetLinkShorthand,\n parseOuroAssetUrl,\n};\n"]}
@@ -1,2 +0,0 @@
1
- 'use strict';function _(t){return t==="default"?"card":t==="chart"?"preview":t==="preview"||t==="interactive"||t==="card"||t==="list"?t:"card"}function L(t){let n={};if(t.displayConfig&&(n=typeof t.displayConfig=="string"?JSON.parse(t.displayConfig):{...t.displayConfig}),n.visualizationId===void 0&&t.visualizationId&&(n.visualizationId=t.visualizationId),n.filters===void 0&&t.filters){let r=t.filters;n.filters=typeof r=="string"?JSON.parse(r):r;}return n}var h="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",I=new RegExp(`^(post|dataset|file|service|route|quest):(${h})$`,"i"),E=new RegExp(`^asset:(${h})$`,"i"),T=new RegExp(`^action:(${h})$`,"i"),x=new Set(["post","dataset","file","service","route","quest"]);function k(t){let n=I.exec(t);if(n){let o=n[1].toLowerCase();return x.has(o)?{id:n[2],assetType:o,legacy:false}:null}let r=E.exec(t);return r?{id:r[1],legacy:true}:null}function R(t){let n=T.exec(t);return n?{id:n[1]}:null}function S(t,n){let r;try{if(t.startsWith("/"))r=t;else {let d=new URL(t);if(n){let g=new URL(n).host;if(d.host!==g)return null}r=d.pathname;}}catch{return null}let o=r.match(/^\/(\w+)s\/([^/]+)\/([^/?#]+)/);if(!o)return null;let[,l,u,p]=o;return x.has(l)?{assetType:l,entity:decodeURIComponent(u),slug:decodeURIComponent(p)}:null}var A=t=>Array.isArray(t)?t.map(A):t!=null&&t.content?Array.isArray(t.content)?t.content.map(A).flat():A(t.content):t;function w(t,n){var C;if(!t||!(t!=null&&t.content))return {users:[],assets:[],actions:[],linkedAssets:[]};let r=t.content.map(A).flat(),o=r.filter(e=>e.type==="mention").map(e=>{var s,i,c;return {user_id:(s=e.attrs)==null?void 0:s.id,username:((i=e.attrs)==null?void 0:i.label)||((c=e.attrs)==null?void 0:c.username)}}).reduce((e,s)=>(e.some(i=>i.user_id&&s.user_id&&i.user_id===s.user_id||i.username&&s.username&&i.username===s.username)||e.push(s),e),[]),l=r.filter(e=>{var s,i;return e.type==="assetComponent"&&((s=e.attrs)==null?void 0:s.id)&&!((i=e.attrs)!=null&&i.partial)}).map(({attrs:e})=>({id:e.id,assetType:e.assetType,via:"embed"})).reduce((e,s)=>(e.some(i=>i.id===s.id)||e.push(s),e),[]),u=[],p=[],d=new Set(l.map(e=>e.id)),g=new Set,v=new Set;for(let e of r){if((e==null?void 0:e.type)!=="text"||!(e!=null&&e.marks))continue;let s=e.marks.find(a=>a.type==="link");if(!((C=s==null?void 0:s.attrs)!=null&&C.href))continue;let i=s.attrs.href,c=R(i);if(c){g.has(c.id)||(g.add(c.id),p.push({id:c.id,via:"link"}));continue}let y=k(i);if(y){let a=y.id;d.has(a)||(d.add(a),y.legacy?l.push({id:a,via:"link",legacy:true}):l.push({id:a,assetType:y.assetType,via:"link",legacy:false}));continue}let f=S(i,n==null?void 0:n.siteUrl);if(f){let a=`${f.assetType}:${f.entity}:${f.slug}`;v.has(a)||(v.add(a),u.push(f));}}return {users:o,assets:l,actions:p,linkedAssets:u}}exports.a=_;exports.b=L;exports.c=k;exports.d=R;exports.e=S;exports.f=w;//# sourceMappingURL=chunk-EVQAA7RQ.cjs.map
2
- //# sourceMappingURL=chunk-EVQAA7RQ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/air/index.ts"],"names":["normalizeViewMode","raw","resolveDisplayConfig","attrs","base","UUID_RE","TYPED_ASSET_LINK_RE","LEGACY_ASSET_LINK_RE","ACTION_LINK_RE","VALID_ASSET_TYPES","parseAssetLinkShorthand","href","typed","assetType","legacy","parseActionLinkShorthand","match","parseOuroAssetUrl","siteUrl","pathname","url","siteHost","entity","slug","extractContent","item","getReferencesInContent","json","options","_a","content","users","_b","_c","unique","u","assets","linkedAssets","actions","seenAssetIds","a","seenActionIds","seenLinkedKeys","linkMark","m","actionShorthand","shorthand","id","parsed","key"],"mappings":"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","file":"chunk-EVQAA7RQ.cjs","sourcesContent":["import { Content } from \"../../schema/posts\";\nimport { Profile } from \"../../schema/users\";\n\nexport interface DataFilter {\n column: string;\n value: string;\n operator: string;\n active?: boolean;\n}\n\nexport interface DisplayConfig {\n /** Dataset: ID of a saved visualization to render instead of the default chart. */\n visualizationId?: string | null;\n /** Dataset: column filters applied to the data. */\n filters?: DataFilter[];\n /** Route: ID of a specific action to preview (status, logs, side-effect assets). */\n actionId?: string | null;\n /** Route: author-provided defaults for an interactive route form. */\n defaultValues?: Record<string, unknown>;\n}\n\n/**\n * Normalize legacy viewMode values to the current set.\n * \"chart\" → \"preview\", \"default\" → \"card\", anything else → \"card\".\n */\nexport function normalizeViewMode(\n raw: string | undefined | null\n): \"card\" | \"preview\" | \"interactive\" | \"list\" {\n if (raw === \"default\") return \"card\";\n if (raw === \"chart\") return \"preview\";\n if (\n raw === \"preview\" ||\n raw === \"interactive\" ||\n raw === \"card\" ||\n raw === \"list\"\n )\n return raw;\n return \"card\";\n}\n\n/**\n * Build a DisplayConfig from node/element attributes, handling the legacy\n * flat `visualizationId` / `filters` attrs and the new `displayConfig` object.\n * Prefers values inside `displayConfig` when present.\n */\nexport function resolveDisplayConfig(attrs: {\n displayConfig?: DisplayConfig | string | null;\n visualizationId?: string | null;\n filters?: DataFilter[] | string | null;\n}): DisplayConfig {\n let base: DisplayConfig = {};\n\n if (attrs.displayConfig) {\n base =\n typeof attrs.displayConfig === \"string\"\n ? JSON.parse(attrs.displayConfig)\n : { ...attrs.displayConfig };\n }\n\n // Fall back to legacy flat attrs when displayConfig doesn't carry them\n if (base.visualizationId === undefined && attrs.visualizationId) {\n base.visualizationId = attrs.visualizationId;\n }\n if (base.filters === undefined && attrs.filters) {\n const raw = attrs.filters;\n base.filters =\n typeof raw === \"string\" ? JSON.parse(raw) : raw;\n }\n\n return base;\n}\n\nexport interface InlineAssetAttrs {\n id: string;\n assetType: string;\n viewMode: \"card\" | \"preview\" | \"interactive\" | \"list\";\n displayConfig?: DisplayConfig | null;\n /** @deprecated Use displayConfig.filters */\n filters?: any;\n /** @deprecated Use displayConfig.visualizationId */\n visualizationId?: string | null;\n partial?: boolean;\n}\n\n/** Assets pulled from Air JSON: embedded blocks or link href shorthands. */\nexport type ExtractedContentAsset =\n | { id: string; assetType: string; via: \"embed\" }\n | { id: string; assetType: string; via: \"link\"; legacy: false }\n | { id: string; via: \"link\"; legacy: true };\n\ninterface LinkedAssetRef {\n assetType: string;\n entity: string;\n slug: string;\n}\n\n/** UUID v4 pattern for inline link hrefs */\nconst UUID_RE =\n \"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\";\n\n/** Shorthand link hrefs: `post:<uuid>`, `file:<uuid>`, … (preferred over legacy `asset:<uuid>`). */\nconst TYPED_ASSET_LINK_RE = new RegExp(\n `^(post|dataset|file|service|route|quest):(${UUID_RE})$`,\n \"i\"\n);\n\n/** @deprecated Prefer `post:<uuid>` etc.; still supported and resolved server-side. */\nconst LEGACY_ASSET_LINK_RE = new RegExp(`^asset:(${UUID_RE})$`, \"i\");\n\n/** Route action link hrefs: `action:<uuid>` → history page for that run. */\nconst ACTION_LINK_RE = new RegExp(`^action:(${UUID_RE})$`, \"i\");\n\nconst VALID_ASSET_TYPES = new Set([\n \"post\",\n \"dataset\",\n \"file\",\n \"service\",\n \"route\",\n \"quest\",\n]);\n\nexport type ExtractedContentAction = { id: string; via: \"link\" };\n\n/**\n * Parse an inline link `href` for Ouro asset shorthands.\n * - `post:<uuid>`, `file:<uuid>`, … → typed (asset type known from prefix)\n * - `asset:<uuid>` → legacy (type resolved via DB when creating connections)\n */\nfunction parseAssetLinkShorthand(\n href: string\n):\n | { id: string; assetType: string; legacy: false }\n | { id: string; legacy: true }\n | null {\n const typed = TYPED_ASSET_LINK_RE.exec(href);\n if (typed) {\n const assetType = typed[1].toLowerCase();\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n return { id: typed[2], assetType, legacy: false };\n }\n const legacy = LEGACY_ASSET_LINK_RE.exec(href);\n if (legacy) return { id: legacy[1], legacy: true };\n return null;\n}\n\n/**\n * Parse an inline link `href` for a route action shorthand: `action:<uuid>`.\n * Actions are not assets — callers must resolve them separately.\n */\nfunction parseActionLinkShorthand(href: string): { id: string } | null {\n const match = ACTION_LINK_RE.exec(href);\n if (!match) return null;\n return { id: match[1] };\n}\n\n/**\n * Parse an Ouro site URL into its asset components.\n * Accepts both absolute URLs (https://ouro.foundation/posts/entity/slug)\n * and relative paths (/posts/entity/slug).\n */\nfunction parseOuroAssetUrl(\n href: string,\n siteUrl?: string\n): LinkedAssetRef | null {\n let pathname: string;\n try {\n if (href.startsWith(\"/\")) {\n pathname = href;\n } else {\n const url = new URL(href);\n if (siteUrl) {\n const siteHost = new URL(siteUrl).host;\n if (url.host !== siteHost) return null;\n }\n pathname = url.pathname;\n }\n } catch {\n return null;\n }\n\n // Pattern: /{assetType}s/{entity}/{slug}\n const match = pathname.match(\n /^\\/(\\w+)s\\/([^/]+)\\/([^/?#]+)/\n );\n if (!match) return null;\n\n const [, assetType, entity, slug] = match;\n if (!VALID_ASSET_TYPES.has(assetType)) return null;\n\n return { assetType, entity: decodeURIComponent(entity), slug: decodeURIComponent(slug) };\n}\n\nconst extractContent = (item: any): any => {\n if (Array.isArray(item)) return item.map(extractContent);\n if (item?.content) {\n if (Array.isArray(item.content))\n return item.content.map(extractContent).flat();\n else return extractContent(item.content);\n } else return item; // leaf\n};\n\nfunction getReferencesInContent(\n json: Content[\"json\"],\n options?: { siteUrl?: string }\n) {\n if (!json || !json?.content)\n return { users: [], assets: [], actions: [], linkedAssets: [] };\n const content = json.content.map(extractContent).flat();\n\n const users = content\n .filter((item: any) => item.type === \"mention\")\n .map((item: any) => ({\n user_id: item.attrs?.id,\n username: item.attrs?.label || item.attrs?.username,\n }))\n .reduce((unique: any[], item: any) => {\n if (\n !unique.some(\n (u) =>\n (u.user_id && item.user_id && u.user_id === item.user_id) ||\n (u.username && item.username && u.username === item.username)\n )\n ) {\n unique.push(item);\n }\n return unique;\n }, []) as Partial<Profile>[];\n\n const assets: ExtractedContentAsset[] = content\n .filter(\n (item: any) =>\n item.type === \"assetComponent\" && item.attrs?.id && !item.attrs?.partial\n )\n .map(({ attrs }: { attrs: InlineAssetAttrs }) => ({\n id: attrs.id,\n assetType: attrs.assetType,\n via: \"embed\" as const,\n }))\n .reduce((unique: ExtractedContentAsset[], item: ExtractedContentAsset) => {\n if (!unique.some((u) => u.id === item.id)) {\n unique.push(item);\n }\n return unique;\n }, []);\n\n // Extract asset / action references from link marks\n const linkedAssets: LinkedAssetRef[] = [];\n const actions: ExtractedContentAction[] = [];\n const seenAssetIds = new Set(assets.map((a) => a.id));\n const seenActionIds = new Set<string>();\n const seenLinkedKeys = new Set<string>();\n\n for (const item of content) {\n if (item?.type !== \"text\" || !item?.marks) continue;\n const linkMark = item.marks.find((m: any) => m.type === \"link\");\n if (!linkMark?.attrs?.href) continue;\n\n const href: string = linkMark.attrs.href;\n\n const actionShorthand = parseActionLinkShorthand(href);\n if (actionShorthand) {\n if (!seenActionIds.has(actionShorthand.id)) {\n seenActionIds.add(actionShorthand.id);\n actions.push({ id: actionShorthand.id, via: \"link\" });\n }\n continue;\n }\n\n const shorthand = parseAssetLinkShorthand(href);\n if (shorthand) {\n const id = shorthand.id;\n if (!seenAssetIds.has(id)) {\n seenAssetIds.add(id);\n if (shorthand.legacy) {\n assets.push({ id, via: \"link\", legacy: true });\n } else {\n assets.push({\n id,\n assetType: shorthand.assetType,\n via: \"link\",\n legacy: false,\n });\n }\n }\n continue;\n }\n\n // Check for Ouro site URLs\n const parsed = parseOuroAssetUrl(href, options?.siteUrl);\n if (parsed) {\n const key = `${parsed.assetType}:${parsed.entity}:${parsed.slug}`;\n if (!seenLinkedKeys.has(key)) {\n seenLinkedKeys.add(key);\n linkedAssets.push(parsed);\n }\n }\n }\n\n return {\n users,\n assets,\n actions,\n linkedAssets,\n };\n}\n\nexport {\n getReferencesInContent,\n parseActionLinkShorthand,\n parseAssetLinkShorthand,\n parseOuroAssetUrl,\n};\n"]}
@@ -1,7 +0,0 @@
1
- import {marked}from'marked';function c(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}function l(e,n){return `<span data-latex="${c(e)}" data-display-mode="${n}"></span>`}var u={name:"katexBlock",level:"block",start(e){let n=e.match(/\\\[/);return n?n.index:void 0},end(e){var r,t,s;let n=e.match(/\s\\\]/);return n?((r=n.index)!=null?r:0)+((s=(t=n[0])==null?void 0:t.length)!=null?s:0):void 0},tokenizer(e,n){let t=/^\\\[([\s\S]*?)\\\]/.exec(e);if(t)return {type:"katexBlock",raw:t[0],latex:t[1].trim(),displayMode:true}},renderer(e){return l(e.latex,e.displayMode)}},m={name:"katexInline",level:"inline",start(e){let n=e.match(/\\\(/);return n?n.index:void 0},end(e){var r,t,s;let n=e.match(/\s\\\)/);return n?((r=n.index)!=null?r:0)+((s=(t=n[0])==null?void 0:t.length)!=null?s:0):void 0},tokenizer(e,n){let t=/^\\\(([\s\S]*?)\\\)/.exec(e);if(t)return {type:"katexInline",raw:t[0],latex:t[1].trim(),displayMode:false}},renderer(e){return l(e.latex,e.displayMode)}},y={name:"assetComponent",level:"block",start(e){var n;return (n=e.match(/^```assetComponent/))==null?void 0:n.index},end(e){var n;return (n=e.match(/^```/))==null?void 0:n.index},tokenizer(e,n){let t=/^```assetComponent\s+(\{[\s\S]*?\})\n```/.exec(e);if(t)return {type:"assetComponent",raw:t[0],properties:t[1],tokens:[]}},renderer(e){let n;try{n=JSON.parse(e.properties);}catch(t){console.error("Invalid JSON in assetComponent properties:",t),n={};}return `
2
- <asset-component ${Object.entries(n).map(([t,s])=>{let o=(typeof s=="object"&&s!==null?JSON.stringify(s):String(s)).replace(/"/g,"&quot;");return `${t}="${o}"`}).join(" ")}></asset-component>`}},k={name:"userMention",level:"inline",start(e){let n=e.match(/`\{@|(?<![`])\{@/);return n?n.index:void 0},end(e){var n,r,t;return (t=(n=e.match(/\}`/))==null?void 0:n.index)!=null?t:(r=e.match(/(?<![`])\{@[^}]*\}/))==null?void 0:r.index},tokenizer(e,n){let r=/^`\{@([a-zA-Z0-9_]+)\}`/.exec(e);if(r)return {type:"userMention",raw:r[0],username:r[1]};let t=/^\{@([a-zA-Z0-9_]+)\}/.exec(e);if(t)return {type:"userMention",raw:t[0],username:t[1]}},renderer(e){let n=c(e.username);return `<user-mention username="${n}" data-label="${n}"></user-mention>`}};marked.use({gfm:true,extensions:[y,k,u,m],renderer:{list(e){var n;return !e.ordered&&((n=e.items)==null?void 0:n.length)>0&&e.items.every(r=>r.task)?`<ul data-type="taskList">
3
- ${e.items.map(t=>{let s=t.tokens.filter(p=>p.type!=="checkbox"),a=this.parser.parse(s,!!t.loose);t.loose||(a=`<p>${a}</p>`);let o=t.checked?"true":"false",d=t.checked?' checked="checked"':"";return `<li data-type="taskItem" data-checked="${o}"><label contenteditable="false"><input type="checkbox"${d}></label><div>${a}</div></li>`}).join(`
4
- `)}
5
- </ul>
6
- `:false}}});function h(e){return marked.parse(e)}export{h as a};//# sourceMappingURL=chunk-KXYKN3TY.js.map
7
- //# sourceMappingURL=chunk-KXYKN3TY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/air/markdown-parser.ts"],"names":["escapeHtmlAttr","s","mathSpanHtml","latex","displayMode","katexBlockParser","src","match","_a","_b","_c","tokens","token","katexInlineParser","assetComponentExtension","properties","e","key","value","escapedValue","userMentionExtension","m","codeWrapped","bracesOnly","u","marked","item","inner","t","text","checked","ckAttr","parseMarkdown","markdown"],"mappings":"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","file":"chunk-KXYKN3TY.js","sourcesContent":["import { marked } from \"marked\";\n\n/** Safe for double-quoted HTML attributes (e.g. data-latex). */\nfunction escapeHtmlAttr(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\");\n}\n\nfunction mathSpanHtml(latex: string, displayMode: boolean): string {\n return `<span data-latex=\"${escapeHtmlAttr(latex)}\" data-display-mode=\"${displayMode}\"></span>`;\n}\n\nconst katexBlockParser = {\n name: \"katexBlock\",\n level: \"block\",\n start(src: string) {\n const match = src.match(/\\\\\\[/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\]/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const displayRule = /^\\\\\\[([\\s\\S]*?)\\\\\\]/;\n const match = displayRule.exec(src);\n if (match) {\n return {\n type: \"katexBlock\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: true,\n };\n }\n },\n renderer(token: any) {\n // Non-self-closing span is important for client-side inline flow around the node.\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst katexInlineParser = {\n name: \"katexInline\",\n level: \"inline\",\n start(src: string) {\n const match = src.match(/\\\\\\(/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\)/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const inlineRule = /^\\\\\\(([\\s\\S]*?)\\\\\\)/;\n const match = inlineRule.exec(src);\n if (match) {\n return {\n type: \"katexInline\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: false,\n };\n }\n },\n renderer(token: any) {\n // STRANGE: The non-self-closing tag is important for client side to render as inline and render text after it\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst assetComponentExtension = {\n name: \"assetComponent\",\n level: \"block\",\n start(src: string) {\n return src.match(/^```assetComponent/)?.index;\n },\n end(src: string) {\n return src.match(/^```/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const rule = /^```assetComponent\\s+(\\{[\\s\\S]*?\\})\\n```/;\n const match = rule.exec(src);\n if (match) {\n const token = {\n type: \"assetComponent\",\n raw: match[0],\n properties: match[1],\n tokens: [],\n };\n return token;\n }\n },\n renderer(token: any) {\n let properties;\n try {\n properties = JSON.parse(token.properties);\n } catch (e) {\n console.error(\"Invalid JSON in assetComponent properties:\", e);\n properties = {};\n }\n const componentHtml = `\n <asset-component ${Object.entries(properties)\n .map(([key, value]) => {\n // Stringify arrays and objects, keep primitives as-is\n const stringValue = typeof value === 'object' && value !== null\n ? JSON.stringify(value)\n : String(value);\n // Escape quotes for HTML attributes\n const escapedValue = stringValue.replace(/\"/g, '&quot;');\n return `${key}=\"${escapedValue}\"`;\n })\n .join(\" \")}></asset-component>`;\n\n return componentHtml;\n },\n};\n\nconst userMentionExtension = {\n name: \"userMention\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(/`\\{@|(?<![`])\\{@/);\n return m ? m.index : undefined;\n },\n end(src: string) {\n return src.match(/\\}`/)?.index ?? src.match(/(?<![`])\\{@[^}]*\\}/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const codeWrapped = /^`\\{@([a-zA-Z0-9_]+)\\}`/.exec(src);\n if (codeWrapped) {\n return {\n type: \"userMention\",\n raw: codeWrapped[0],\n username: codeWrapped[1],\n };\n }\n const bracesOnly = /^\\{@([a-zA-Z0-9_]+)\\}/.exec(src);\n if (bracesOnly) {\n return {\n type: \"userMention\",\n raw: bracesOnly[0],\n username: bracesOnly[1],\n };\n }\n },\n renderer(token: any) {\n const u = escapeHtmlAttr(token.username);\n return `<user-mention username=\"${u}\" data-label=\"${u}\"></user-mention>`;\n },\n};\n\nmarked.use({\n gfm: true,\n extensions: [\n assetComponentExtension,\n userMentionExtension,\n katexBlockParser,\n katexInlineParser,\n ],\n renderer: {\n list(token: any) {\n if (\n !token.ordered &&\n token.items?.length > 0 &&\n token.items.every((item: any) => item.task)\n ) {\n const body = token.items\n .map((item: any) => {\n const inner = item.tokens.filter(\n (t: any) => t.type !== \"checkbox\"\n );\n let text = (this as any).parser.parse(inner, !!item.loose);\n if (!item.loose) text = `<p>${text}</p>`;\n const checked = item.checked ? \"true\" : \"false\";\n const ckAttr = item.checked ? ' checked=\"checked\"' : \"\";\n return `<li data-type=\"taskItem\" data-checked=\"${checked}\"><label contenteditable=\"false\"><input type=\"checkbox\"${ckAttr}></label><div>${text}</div></li>`;\n })\n .join(\"\\n\");\n return `<ul data-type=\"taskList\">\\n${body}\\n</ul>\\n`;\n }\n return false as any;\n },\n },\n});\n\nexport function parseMarkdown(markdown: string) {\n return marked.parse(markdown);\n}\n"]}
@@ -1,7 +0,0 @@
1
- 'use strict';var marked=require('marked');function c(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;")}function l(e,n){return `<span data-latex="${c(e)}" data-display-mode="${n}"></span>`}var u={name:"katexBlock",level:"block",start(e){let n=e.match(/\\\[/);return n?n.index:void 0},end(e){var r,t,s;let n=e.match(/\s\\\]/);return n?((r=n.index)!=null?r:0)+((s=(t=n[0])==null?void 0:t.length)!=null?s:0):void 0},tokenizer(e,n){let t=/^\\\[([\s\S]*?)\\\]/.exec(e);if(t)return {type:"katexBlock",raw:t[0],latex:t[1].trim(),displayMode:true}},renderer(e){return l(e.latex,e.displayMode)}},m={name:"katexInline",level:"inline",start(e){let n=e.match(/\\\(/);return n?n.index:void 0},end(e){var r,t,s;let n=e.match(/\s\\\)/);return n?((r=n.index)!=null?r:0)+((s=(t=n[0])==null?void 0:t.length)!=null?s:0):void 0},tokenizer(e,n){let t=/^\\\(([\s\S]*?)\\\)/.exec(e);if(t)return {type:"katexInline",raw:t[0],latex:t[1].trim(),displayMode:false}},renderer(e){return l(e.latex,e.displayMode)}},y={name:"assetComponent",level:"block",start(e){var n;return (n=e.match(/^```assetComponent/))==null?void 0:n.index},end(e){var n;return (n=e.match(/^```/))==null?void 0:n.index},tokenizer(e,n){let t=/^```assetComponent\s+(\{[\s\S]*?\})\n```/.exec(e);if(t)return {type:"assetComponent",raw:t[0],properties:t[1],tokens:[]}},renderer(e){let n;try{n=JSON.parse(e.properties);}catch(t){console.error("Invalid JSON in assetComponent properties:",t),n={};}return `
2
- <asset-component ${Object.entries(n).map(([t,s])=>{let o=(typeof s=="object"&&s!==null?JSON.stringify(s):String(s)).replace(/"/g,"&quot;");return `${t}="${o}"`}).join(" ")}></asset-component>`}},k={name:"userMention",level:"inline",start(e){let n=e.match(/`\{@|(?<![`])\{@/);return n?n.index:void 0},end(e){var n,r,t;return (t=(n=e.match(/\}`/))==null?void 0:n.index)!=null?t:(r=e.match(/(?<![`])\{@[^}]*\}/))==null?void 0:r.index},tokenizer(e,n){let r=/^`\{@([a-zA-Z0-9_]+)\}`/.exec(e);if(r)return {type:"userMention",raw:r[0],username:r[1]};let t=/^\{@([a-zA-Z0-9_]+)\}/.exec(e);if(t)return {type:"userMention",raw:t[0],username:t[1]}},renderer(e){let n=c(e.username);return `<user-mention username="${n}" data-label="${n}"></user-mention>`}};marked.marked.use({gfm:true,extensions:[y,k,u,m],renderer:{list(e){var n;return !e.ordered&&((n=e.items)==null?void 0:n.length)>0&&e.items.every(r=>r.task)?`<ul data-type="taskList">
3
- ${e.items.map(t=>{let s=t.tokens.filter(p=>p.type!=="checkbox"),a=this.parser.parse(s,!!t.loose);t.loose||(a=`<p>${a}</p>`);let o=t.checked?"true":"false",d=t.checked?' checked="checked"':"";return `<li data-type="taskItem" data-checked="${o}"><label contenteditable="false"><input type="checkbox"${d}></label><div>${a}</div></li>`}).join(`
4
- `)}
5
- </ul>
6
- `:false}}});function h(e){return marked.marked.parse(e)}exports.a=h;//# sourceMappingURL=chunk-NSKBXBRD.cjs.map
7
- //# sourceMappingURL=chunk-NSKBXBRD.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/air/markdown-parser.ts"],"names":["escapeHtmlAttr","s","mathSpanHtml","latex","displayMode","katexBlockParser","src","match","_a","_b","_c","tokens","token","katexInlineParser","assetComponentExtension","properties","e","key","value","escapedValue","userMentionExtension","m","codeWrapped","bracesOnly","u","marked","item","inner","t","text","checked","ckAttr","parseMarkdown","markdown"],"mappings":"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","file":"chunk-NSKBXBRD.cjs","sourcesContent":["import { marked } from \"marked\";\n\n/** Safe for double-quoted HTML attributes (e.g. data-latex). */\nfunction escapeHtmlAttr(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\");\n}\n\nfunction mathSpanHtml(latex: string, displayMode: boolean): string {\n return `<span data-latex=\"${escapeHtmlAttr(latex)}\" data-display-mode=\"${displayMode}\"></span>`;\n}\n\nconst katexBlockParser = {\n name: \"katexBlock\",\n level: \"block\",\n start(src: string) {\n const match = src.match(/\\\\\\[/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\]/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const displayRule = /^\\\\\\[([\\s\\S]*?)\\\\\\]/;\n const match = displayRule.exec(src);\n if (match) {\n return {\n type: \"katexBlock\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: true,\n };\n }\n },\n renderer(token: any) {\n // Non-self-closing span is important for client-side inline flow around the node.\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst katexInlineParser = {\n name: \"katexInline\",\n level: \"inline\",\n start(src: string) {\n const match = src.match(/\\\\\\(/);\n return match ? match.index : undefined;\n },\n end(src: string) {\n const match = src.match(/\\s\\\\\\)/);\n return match ? (match.index ?? 0) + (match[0]?.length ?? 0) : undefined;\n },\n tokenizer(src: string, tokens: any) {\n const inlineRule = /^\\\\\\(([\\s\\S]*?)\\\\\\)/;\n const match = inlineRule.exec(src);\n if (match) {\n return {\n type: \"katexInline\",\n raw: match[0],\n latex: match[1].trim(),\n displayMode: false,\n };\n }\n },\n renderer(token: any) {\n // STRANGE: The non-self-closing tag is important for client side to render as inline and render text after it\n return mathSpanHtml(token.latex, token.displayMode);\n },\n};\n\nconst assetComponentExtension = {\n name: \"assetComponent\",\n level: \"block\",\n start(src: string) {\n return src.match(/^```assetComponent/)?.index;\n },\n end(src: string) {\n return src.match(/^```/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const rule = /^```assetComponent\\s+(\\{[\\s\\S]*?\\})\\n```/;\n const match = rule.exec(src);\n if (match) {\n const token = {\n type: \"assetComponent\",\n raw: match[0],\n properties: match[1],\n tokens: [],\n };\n return token;\n }\n },\n renderer(token: any) {\n let properties;\n try {\n properties = JSON.parse(token.properties);\n } catch (e) {\n console.error(\"Invalid JSON in assetComponent properties:\", e);\n properties = {};\n }\n const componentHtml = `\n <asset-component ${Object.entries(properties)\n .map(([key, value]) => {\n // Stringify arrays and objects, keep primitives as-is\n const stringValue = typeof value === 'object' && value !== null\n ? JSON.stringify(value)\n : String(value);\n // Escape quotes for HTML attributes\n const escapedValue = stringValue.replace(/\"/g, '&quot;');\n return `${key}=\"${escapedValue}\"`;\n })\n .join(\" \")}></asset-component>`;\n\n return componentHtml;\n },\n};\n\nconst userMentionExtension = {\n name: \"userMention\",\n level: \"inline\",\n start(src: string) {\n const m = src.match(/`\\{@|(?<![`])\\{@/);\n return m ? m.index : undefined;\n },\n end(src: string) {\n return src.match(/\\}`/)?.index ?? src.match(/(?<![`])\\{@[^}]*\\}/)?.index;\n },\n tokenizer(src: string, tokens: any) {\n const codeWrapped = /^`\\{@([a-zA-Z0-9_]+)\\}`/.exec(src);\n if (codeWrapped) {\n return {\n type: \"userMention\",\n raw: codeWrapped[0],\n username: codeWrapped[1],\n };\n }\n const bracesOnly = /^\\{@([a-zA-Z0-9_]+)\\}/.exec(src);\n if (bracesOnly) {\n return {\n type: \"userMention\",\n raw: bracesOnly[0],\n username: bracesOnly[1],\n };\n }\n },\n renderer(token: any) {\n const u = escapeHtmlAttr(token.username);\n return `<user-mention username=\"${u}\" data-label=\"${u}\"></user-mention>`;\n },\n};\n\nmarked.use({\n gfm: true,\n extensions: [\n assetComponentExtension,\n userMentionExtension,\n katexBlockParser,\n katexInlineParser,\n ],\n renderer: {\n list(token: any) {\n if (\n !token.ordered &&\n token.items?.length > 0 &&\n token.items.every((item: any) => item.task)\n ) {\n const body = token.items\n .map((item: any) => {\n const inner = item.tokens.filter(\n (t: any) => t.type !== \"checkbox\"\n );\n let text = (this as any).parser.parse(inner, !!item.loose);\n if (!item.loose) text = `<p>${text}</p>`;\n const checked = item.checked ? \"true\" : \"false\";\n const ckAttr = item.checked ? ' checked=\"checked\"' : \"\";\n return `<li data-type=\"taskItem\" data-checked=\"${checked}\"><label contenteditable=\"false\"><input type=\"checkbox\"${ckAttr}></label><div>${text}</div></li>`;\n })\n .join(\"\\n\");\n return `<ul data-type=\"taskList\">\\n${body}\\n</ul>\\n`;\n }\n return false as any;\n },\n },\n});\n\nexport function parseMarkdown(markdown: string) {\n return marked.parse(markdown);\n}\n"]}