@ourofoundation/ouro-js 3.8.0 → 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.
- package/dist/chunk-3DGJ27WL.js +2 -0
- package/dist/chunk-3DGJ27WL.js.map +1 -0
- package/dist/{chunk-RRDGLT3N.cjs → chunk-3JPOAQ2M.cjs} +2 -2
- package/dist/{chunk-RRDGLT3N.cjs.map → chunk-3JPOAQ2M.cjs.map} +1 -1
- package/dist/{chunk-APZA6MIM.js → chunk-5CPECQKN.js} +2 -2
- package/dist/{chunk-APZA6MIM.js.map → chunk-5CPECQKN.js.map} +1 -1
- package/dist/{chunk-RNBIB6S7.cjs → chunk-AIIAIQ6L.cjs} +2 -2
- package/dist/{chunk-RNBIB6S7.cjs.map → chunk-AIIAIQ6L.cjs.map} +1 -1
- package/dist/chunk-AJ2O7ER6.js +2 -0
- package/dist/chunk-AJ2O7ER6.js.map +1 -0
- package/dist/{chunk-G6GCUGMM.js → chunk-CDJH4OT5.js} +2 -2
- package/dist/chunk-CDJH4OT5.js.map +1 -0
- package/dist/{chunk-23FTPTDP.cjs → chunk-DSJ23DIB.cjs} +2 -2
- package/dist/{chunk-23FTPTDP.cjs.map → chunk-DSJ23DIB.cjs.map} +1 -1
- package/dist/{chunk-N3HC2ASR.cjs → chunk-E2FDUS3B.cjs} +2 -2
- package/dist/{chunk-N3HC2ASR.cjs.map → chunk-E2FDUS3B.cjs.map} +1 -1
- package/dist/{chunk-CXMEZGVG.js → chunk-EC376C5T.js} +2 -2
- package/dist/{chunk-CXMEZGVG.js.map → chunk-EC376C5T.js.map} +1 -1
- package/dist/{chunk-U5JVCESS.js → chunk-FGEMQEEM.js} +2 -2
- package/dist/{chunk-U5JVCESS.js.map → chunk-FGEMQEEM.js.map} +1 -1
- package/dist/{chunk-BELCP7OL.cjs → chunk-KU5AWMS5.cjs} +2 -2
- package/dist/{chunk-BELCP7OL.cjs.map → chunk-KU5AWMS5.cjs.map} +1 -1
- package/dist/{chunk-RQUVICCB.cjs → chunk-LHCGBWFP.cjs} +2 -2
- package/dist/{chunk-RQUVICCB.cjs.map → chunk-LHCGBWFP.cjs.map} +1 -1
- package/dist/{chunk-6OO4SOWL.js → chunk-LXDNBUOU.js} +2 -2
- package/dist/{chunk-6OO4SOWL.js.map → chunk-LXDNBUOU.js.map} +1 -1
- package/dist/{chunk-GT7CSIDN.js → chunk-MKRXM63S.js} +2 -2
- package/dist/{chunk-GT7CSIDN.js.map → chunk-MKRXM63S.js.map} +1 -1
- package/dist/{chunk-5CKFMTWZ.js → chunk-O4LSX56P.js} +2 -2
- package/dist/{chunk-5CKFMTWZ.js.map → chunk-O4LSX56P.js.map} +1 -1
- package/dist/{chunk-EIB2YGN3.js → chunk-OCG3P3PJ.js} +2 -2
- package/dist/{chunk-EIB2YGN3.js.map → chunk-OCG3P3PJ.js.map} +1 -1
- package/dist/chunk-OCMBP3U7.cjs +2 -0
- package/dist/chunk-OCMBP3U7.cjs.map +1 -0
- package/dist/{chunk-GX6RCMZR.js → chunk-PGCNGDPK.js} +2 -2
- package/dist/{chunk-GX6RCMZR.js.map → chunk-PGCNGDPK.js.map} +1 -1
- package/dist/chunk-PJLIO4PA.cjs +7 -0
- package/dist/chunk-PJLIO4PA.cjs.map +1 -0
- package/dist/{chunk-O6RFWCC4.cjs → chunk-PVUBGWOI.cjs} +2 -2
- package/dist/{chunk-O6RFWCC4.cjs.map → chunk-PVUBGWOI.cjs.map} +1 -1
- package/dist/chunk-Q4IXX6KS.js +7 -0
- package/dist/chunk-Q4IXX6KS.js.map +1 -0
- package/dist/{chunk-7R5EIIIR.cjs → chunk-RMMMRN4X.cjs} +2 -2
- package/dist/{chunk-7R5EIIIR.cjs.map → chunk-RMMMRN4X.cjs.map} +1 -1
- package/dist/{chunk-3UE4H5TR.js → chunk-RS5H4XDK.js} +2 -2
- package/dist/{chunk-3UE4H5TR.js.map → chunk-RS5H4XDK.js.map} +1 -1
- package/dist/{chunk-NVKZLT3M.cjs → chunk-T6UO42TO.cjs} +2 -2
- package/dist/{chunk-NVKZLT3M.cjs.map → chunk-T6UO42TO.cjs.map} +1 -1
- package/dist/{chunk-M2ZH6MMH.cjs → chunk-U6XOT6XH.cjs} +2 -2
- package/dist/{chunk-M2ZH6MMH.cjs.map → chunk-U6XOT6XH.cjs.map} +1 -1
- package/dist/{chunk-QUBJLDJY.js → chunk-W6KXPYCB.js} +2 -2
- package/dist/{chunk-QUBJLDJY.js.map → chunk-W6KXPYCB.js.map} +1 -1
- package/dist/{chunk-W4V643O5.cjs → chunk-XEA4DDOE.cjs} +2 -2
- package/dist/{chunk-W4V643O5.cjs.map → chunk-XEA4DDOE.cjs.map} +1 -1
- package/dist/chunk-XL2RQ3DZ.cjs +2 -0
- package/dist/chunk-XL2RQ3DZ.cjs.map +1 -0
- package/dist/{chunk-M5ZLLARC.js → chunk-Y6BK75KP.js} +2 -2
- package/dist/{chunk-M5ZLLARC.js.map → chunk-Y6BK75KP.js.map} +1 -1
- package/dist/{chunk-L6SVUDFH.cjs → chunk-YTCAK2AH.cjs} +2 -2
- package/dist/chunk-YTCAK2AH.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/schema/assets.cjs +1 -1
- package/dist/schema/assets.js +1 -1
- package/dist/schema/comments.cjs +1 -1
- package/dist/schema/comments.js +1 -1
- package/dist/schema/conversations.cjs +1 -1
- package/dist/schema/conversations.js +1 -1
- package/dist/schema/datasets.cjs +1 -1
- package/dist/schema/datasets.js +1 -1
- package/dist/schema/files.cjs +1 -1
- package/dist/schema/files.d.cts +1 -1
- package/dist/schema/files.d.ts +1 -1
- package/dist/schema/files.js +1 -1
- package/dist/schema/notifications.cjs +1 -1
- package/dist/schema/notifications.js +1 -1
- package/dist/schema/organizations.cjs +1 -1
- package/dist/schema/organizations.js +1 -1
- package/dist/schema/posts.cjs +1 -1
- package/dist/schema/posts.js +1 -1
- package/dist/schema/quests.cjs +1 -1
- package/dist/schema/quests.js +1 -1
- package/dist/schema/services.cjs +1 -1
- package/dist/schema/services.js +1 -1
- package/dist/schema/teams.cjs +1 -1
- package/dist/schema/teams.js +1 -1
- package/dist/schema/users.cjs +1 -1
- package/dist/schema/users.d.cts +0 -5
- package/dist/schema/users.d.ts +0 -5
- package/dist/schema/users.js +1 -1
- package/dist/utils/air/index.cjs +1 -1
- package/dist/utils/air/index.d.cts +23 -1
- package/dist/utils/air/index.d.ts +23 -1
- package/dist/utils/air/index.js +1 -1
- package/dist/utils/air/markdown-parser.cjs +1 -1
- package/dist/utils/air/markdown-parser.js +1 -1
- package/dist/utils/quest-submission.cjs +1 -1
- package/dist/utils/quest-submission.js +1 -1
- package/package.json +2 -2
- package/tests/files.test.mjs +29 -0
- package/tests/markdown-parser.test.mjs +52 -0
- package/tests/users.test.mjs +13 -0
- package/dist/chunk-AUDVUOLX.js +0 -2
- package/dist/chunk-AUDVUOLX.js.map +0 -1
- package/dist/chunk-CRUIBV5F.js +0 -2
- package/dist/chunk-CRUIBV5F.js.map +0 -1
- package/dist/chunk-EVQAA7RQ.cjs +0 -2
- package/dist/chunk-EVQAA7RQ.cjs.map +0 -1
- package/dist/chunk-G6GCUGMM.js.map +0 -1
- package/dist/chunk-KXYKN3TY.js +0 -7
- package/dist/chunk-KXYKN3TY.js.map +0 -1
- package/dist/chunk-L6SVUDFH.cjs.map +0 -1
- package/dist/chunk-NSKBXBRD.cjs +0 -7
- package/dist/chunk-NSKBXBRD.cjs.map +0 -1
- package/dist/chunk-SZWAE35B.cjs +0 -2
- package/dist/chunk-SZWAE35B.cjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ourofoundation/ouro-js",
|
|
3
|
-
"version": "3.8.
|
|
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",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"marked": "^18.0.0",
|
|
59
59
|
"uuidv7": "^1.0.0",
|
|
60
|
-
"zod": "^4.
|
|
60
|
+
"zod": "^4.5.4"
|
|
61
61
|
},
|
|
62
62
|
"typesVersions": {
|
|
63
63
|
"*": {
|
package/tests/files.test.mjs
CHANGED
|
@@ -3,6 +3,35 @@ import test from "node:test";
|
|
|
3
3
|
|
|
4
4
|
import { CreateFileSchema } from "../dist/index.js";
|
|
5
5
|
|
|
6
|
+
const successMetadata = {
|
|
7
|
+
id: "019b7d6d-2cc5-7df8-a575-91ecbfc72fc0",
|
|
8
|
+
path: "user/results.zip",
|
|
9
|
+
bucket: "public-files",
|
|
10
|
+
name: "results.zip",
|
|
11
|
+
type: "application/zip",
|
|
12
|
+
extension: "zip",
|
|
13
|
+
size: 1024,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
test("CreateFileSchema defaults omitted state to success", () => {
|
|
17
|
+
const file = CreateFileSchema.parse({
|
|
18
|
+
name: "results.zip",
|
|
19
|
+
asset_type: "file",
|
|
20
|
+
metadata: successMetadata,
|
|
21
|
+
});
|
|
22
|
+
assert.equal(file.state, "success");
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test("CreateFileSchema accepts in-progress stubs", () => {
|
|
26
|
+
const file = CreateFileSchema.parse({
|
|
27
|
+
name: "results.zip",
|
|
28
|
+
asset_type: "file",
|
|
29
|
+
state: "in-progress",
|
|
30
|
+
metadata: { type: "application/zip" },
|
|
31
|
+
});
|
|
32
|
+
assert.equal(file.state, "in-progress");
|
|
33
|
+
});
|
|
34
|
+
|
|
6
35
|
test("ZIP preview rows and archive metadata parse together", () => {
|
|
7
36
|
const file = CreateFileSchema.parse({
|
|
8
37
|
name: "results.zip",
|
|
@@ -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
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
|
|
4
|
+
import { UpdateProfileSchema } from "../dist/index.js";
|
|
5
|
+
|
|
6
|
+
test("profile updates omit protected actor type changes", () => {
|
|
7
|
+
const profile = UpdateProfileSchema.parse({
|
|
8
|
+
bio: "Updated bio",
|
|
9
|
+
actor_type: "agent",
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
assert.deepEqual(profile, { bio: "Updated bio" });
|
|
13
|
+
});
|
package/dist/chunk-AUDVUOLX.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {b as b$1,f,h as h$1,a}from'./chunk-GX6RCMZR.js';import {object,boolean,number,optional,string,enum as _enum,uuid,literal,discriminatedUnion}from'zod';var h=object({entry_count:number(),file_count:number(),directory_count:number(),total_uncompressed_size:number(),total_compressed_size:number(),preview_truncated:boolean()}),S=object({id:uuid(),path:string(),bucket:_enum(["public-files","files"]),name:string(),type:string(),extension:string(),size:number(),width:optional(number()),height:optional(number()),archive:optional(h)}),_=object({type:string()}),c=S.extend(b$1.partial().shape),y=_.extend(b$1.partial().shape),F=f.extend({asset_type:literal("file").default("file"),metadata:c}),b=discriminatedUnion("state",[h$1.extend({asset_type:literal("file").default("file"),state:literal("success").default("success"),metadata:c}),h$1.extend({asset_type:literal("file").default("file"),state:literal("in-progress").default("in-progress"),metadata:y})]).transform(i=>a(i)),M=F.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,is_pinned_in_team:true}).extend({last_updated:string().default(()=>new Date().toISOString())}).transform(i=>a(i));export{h as a,F as b,b as c,M as d};//# sourceMappingURL=chunk-AUDVUOLX.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-AUDVUOLX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schema/files.ts"],"names":["ZipArchiveMetadataSchema","object","number","boolean","BaseFileMetadataSchema","uuid","string","zodEnum","optional","BaseStubFileMetadataSchema","FileMetadataSchema","AssetMetadataSchema","StubFileMetadataSchema","FileSchema","AssetSchema","literal","CreateFileSchema","discriminatedUnion","CreateAssetSchema","value","normalizeAssetConfigForParsing","updateFileSchema"],"mappings":"kKAqBMA,CAA2BC,CAAAA,MAAAA,CAAO,CACtC,WAAA,CAAaC,MAAO,EAAA,CACpB,WAAYA,MAAO,EAAA,CACnB,eAAiBA,CAAAA,MAAAA,EACjB,CAAA,uBAAA,CAAyBA,QACzB,CAAA,qBAAA,CAAuBA,MAAO,EAAA,CAC9B,iBAAmBC,CAAAA,OAAAA,EACrB,CAAC,CAAA,CAEKC,CAAyBH,CAAAA,MAAAA,CAAO,CACpC,EAAA,CAAII,IAAK,EAAA,CACT,IAAMC,CAAAA,MAAAA,EACN,CAAA,MAAA,CAAQC,KAAQ,CAAA,CAAC,eAAgB,OAAO,CAAC,CACzC,CAAA,IAAA,CAAMD,MAAO,EAAA,CACb,KAAMA,MAAO,EAAA,CACb,SAAWA,CAAAA,MAAAA,EACX,CAAA,IAAA,CAAMJ,QAEN,CAAA,KAAA,CAAOM,QAASN,CAAAA,MAAAA,EAAQ,CAAA,CACxB,OAAQM,QAASN,CAAAA,MAAAA,EAAQ,CAAA,CACzB,OAASM,CAAAA,QAAAA,CAASR,CAAwB,CAC5C,CAAC,CAEKS,CAAAA,CAAAA,CAA6BR,MAAO,CAAA,CACxC,KAAMK,MAAO,EACf,CAAC,CAAA,CAEKI,CAAqBN,CAAAA,CAAAA,CAAuB,OAChDO,GAAoB,CAAA,OAAA,EAAU,CAAA,KAChC,CAEMC,CAAAA,CAAAA,CAAyBH,CAA2B,CAAA,MAAA,CACxDE,GAAoB,CAAA,OAAA,EAAU,CAAA,KAChC,CAEME,CAAAA,CAAAA,CAAaC,EAAY,MAAO,CAAA,CACpC,UAAYC,CAAAA,OAAAA,CAAQ,MAAM,CAAA,CAAE,QAAQ,MAAM,CAAA,CAC1C,QAAUL,CAAAA,CACZ,CAAC,CAAA,CAEKM,EAAmBC,kBAAmB,CAAA,OAAA,CAAS,CAEnDC,GAAAA,CAAkB,MAAO,CAAA,CACvB,WAAYH,OAAQ,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,MAAM,CAAA,CAC1C,MAAOA,OAAQ,CAAA,SAAS,CAAE,CAAA,OAAA,CAAQ,SAAS,CAAA,CAC3C,SAAUL,CACZ,CAAC,CAEDQ,CAAAA,GAAAA,CAAkB,MAAO,CAAA,CACvB,WAAYH,OAAQ,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,MAAM,CAAA,CAC1C,KAAOA,CAAAA,OAAAA,CAAQ,aAAa,CAAA,CAAE,OAAQ,CAAA,aAAa,CACnD,CAAA,QAAA,CAAUH,CACZ,CAAC,CACH,CAAC,CAAA,CAAE,SAAWO,CAAAA,CAAAA,EAAUC,EAA+BD,CAAK,CAAC,CAEvDE,CAAAA,CAAAA,CAAmBR,CAAW,CAAA,OAAA,GACjC,IAAK,CAAA,CACJ,OAAS,CAAA,IAAA,CACT,EAAI,CAAA,IAAA,CACJ,UAAY,CAAA,IAAA,CACZ,YAAc,CAAA,IAAA,CACd,YAAc,CAAA,IAAA,CACd,IAAM,CAAA,IAAA,CACN,KAAM,IACN,CAAA,IAAA,CAAM,IACN,CAAA,iBAAA,CAAmB,IACrB,CAAC,EACA,MAAO,CAAA,CACN,YAAcP,CAAAA,MAAAA,EAAS,CAAA,OAAA,CAAQ,IAAM,IAAI,IAAA,EAAO,CAAA,WAAA,EAAa,CAC/D,CAAC,CAAA,CACA,SAAWa,CAAAA,CAAAA,EAAUC,CAA+BD,CAAAA,CAAK,CAAC","file":"chunk-AUDVUOLX.js","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n enum as zodEnum,\n type z,\n optional,\n literal,\n discriminatedUnion,\n nullable,\n boolean\n} from \"zod\";\n\nimport {\n AssetSchema,\n CreateAssetSchema,\n AssetMetadataSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\n\nconst ZipArchiveMetadataSchema = object({\n entry_count: number(),\n file_count: number(),\n directory_count: number(),\n total_uncompressed_size: number(),\n total_compressed_size: number(),\n preview_truncated: boolean(),\n});\n\nconst BaseFileMetadataSchema = object({\n id: uuid(), // The id of the file object\n path: string(), // The path of the file in storage\n bucket: zodEnum([\"public-files\", \"files\"]),\n name: string(),\n type: string(),\n extension: string(),\n size: number(),\n // If the file is an image, we store width and height\n width: optional(number()),\n height: optional(number()),\n archive: optional(ZipArchiveMetadataSchema),\n});\n\nconst BaseStubFileMetadataSchema = object({\n type: string(),\n});\n\nconst FileMetadataSchema = BaseFileMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst StubFileMetadataSchema = BaseStubFileMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst FileSchema = AssetSchema.extend({\n asset_type: literal(\"file\").default(\"file\"),\n metadata: FileMetadataSchema,\n});\n\nconst CreateFileSchema = discriminatedUnion(\"state\", [\n // Success state, file is ready\n CreateAssetSchema.extend({\n asset_type: literal(\"file\").default(\"file\"),\n state: literal(\"success\").default(\"success\"),\n metadata: FileMetadataSchema,\n }),\n // In-progress state, file is being processed\n CreateAssetSchema.extend({\n asset_type: literal(\"file\").default(\"file\"),\n state: literal(\"in-progress\").default(\"in-progress\"),\n metadata: StubFileMetadataSchema,\n }),\n]).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst updateFileSchema = FileSchema.partial()\n .omit({\n user_id: true,\n id: true,\n created_at: true,\n last_updated: true,\n organization: true,\n user: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n FileSchema,\n CreateFileSchema,\n updateFileSchema,\n ZipArchiveMetadataSchema,\n};\nexport type File = z.infer<typeof FileSchema>;\nexport type CreateFile = z.infer<typeof CreateFileSchema>;\nexport type UpdateFile = z.infer<typeof updateFileSchema>;\nexport type ZipArchiveMetadata = z.infer<typeof ZipArchiveMetadataSchema>;\n"]}
|
package/dist/chunk-CRUIBV5F.js
DELETED
|
@@ -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"]}
|
package/dist/chunk-EVQAA7RQ.cjs
DELETED
|
@@ -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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schema/users.ts"],"names":["ActorTypeSchema","zodEnum","ProfileSchema","object","uuid","optional","nullable","string","boolean","array","ReadProfileSchema","number","UpdateProfileSchema"],"mappings":"0FAaMA,IAAAA,CAAAA,CAAkBC,KAAQ,CAAA,CAAC,OAAQ,OAAS,CAAA,UAAU,CAAC,CAEvDC,CAAAA,CAAAA,CAAgBC,OAAO,CAC3B,EAAA,CAAIC,MACJ,CAAA,OAAA,CAASA,MACT,CAAA,QAAA,CAAUC,SAASC,QAASC,CAAAA,MAAAA,EAAQ,CAAC,CAAA,CACrC,IAAMF,CAAAA,QAAAA,CAASC,SAASC,MAAO,EAAC,CAAC,CACjC,CAAA,UAAA,CAAYF,SAASC,QAASC,CAAAA,MAAAA,EAAQ,CAAC,CAAA,CACvC,UAAWF,QAASC,CAAAA,QAAAA,CAASC,QAAQ,CAAC,EACtC,WAAaF,CAAAA,QAAAA,CAASC,QAASC,CAAAA,MAAAA,EAAQ,CAAC,CAAA,CACxC,IAAKF,QAASC,CAAAA,QAAAA,CAASC,QAAQ,CAAC,EAChC,cAAgBF,CAAAA,QAAAA,CAASG,SAAS,CAAA,CAClC,WAAYH,QAASC,CAAAA,QAAAA,CAASC,QAAQ,CAAC,CACvC,CAAA,IAAA,CAAMF,SACJI,KACEN,CAAAA,MAAAA,CAAO,CACL,KAAOI,CAAAA,MAAAA,GAAS,GAAI,EACtB,CAAC,CACH,CACF,EACA,OAASF,CAAAA,QAAAA,CAASC,SAASF,IAAK,EAAC,CAAC,CAClC,CAAA,UAAA,CAAYJ,CACZ,CAAA,SAAA,CAAWC,MAAQ,CAAC,MAAA,CAAQ,MAAM,CAAC,CAAA,CACnC,YAAaM,MAAO,EACtB,CAAC,CAEKG,CAAAA,CAAAA,CAAoBR,EAAc,MAAO,CAAA,CAC7C,YAAaM,OAAQ,EAAA,CACrB,WAAYA,OAAQ,EAAA,CACpB,MAAQA,CAAAA,OAAAA,GACR,SAAWG,CAAAA,MAAAA,GAAS,OAAQ,CAAA,CAAC,EAC7B,SAAWA,CAAAA,MAAAA,GAAS,OAAQ,CAAA,CAAC,EAC7B,OAASA,CAAAA,MAAAA,GAAS,OAAQ,CAAA,CAAC,EAC3B,KAAOA,CAAAA,MAAAA,GAAS,OAAQ,CAAA,CAAC,CAC3B,CAAC,CAAA,CAEKC,EAAsBV,CAAc,CAAA,OAAA,GAAU,IAAK,CAAA,CACvD,GAAI,IACJ,CAAA,OAAA,CAAS,KACT,WAAa,CAAA,IAAA,CACb,eAAgB,IAChB,CAAA,UAAA,CAAY,IAEd,CAAC","file":"chunk-G6GCUGMM.js","sourcesContent":["import {\n object,\n string,\n number,\n array,\n boolean,\n enum as zodEnum,\n type z,\n optional,\n nullable,\n uuid\n} from \"zod\";\n\nconst ActorTypeSchema = zodEnum([\"base\", \"agent\", \"verified\"]);\n\nconst ProfileSchema = object({\n id: uuid(),\n user_id: uuid(),\n username: optional(nullable(string())),\n name: optional(nullable(string())),\n first_name: optional(nullable(string())),\n last_name: optional(nullable(string())),\n avatar_path: optional(nullable(string())),\n bio: optional(nullable(string())),\n is_provisioned: optional(boolean()),\n claimed_at: optional(nullable(string())),\n urls: optional(\n array(\n object({\n value: string().url(),\n })\n )\n ),\n post_id: optional(nullable(uuid())),\n actor_type: ActorTypeSchema,\n plan_type: zodEnum([\"free\", \"gold\"]),\n last_active: string(),\n});\n\nconst ReadProfileSchema = ProfileSchema.extend({\n isFollowing: boolean(),\n isFollowed: boolean(),\n isSelf: boolean(),\n followers: number().default(0),\n following: number().default(0),\n totalXp: number().default(0),\n level: number().default(1),\n});\n\nconst UpdateProfileSchema = ProfileSchema.partial().omit({\n id: true,\n user_id: true,\n last_active: true,\n is_provisioned: true,\n claimed_at: true,\n // username: true, // once set, users cannot update their username\n});\n\nexport { ActorTypeSchema, ProfileSchema, ReadProfileSchema, UpdateProfileSchema };\nexport type ActorType = z.infer<typeof ActorTypeSchema>;\nexport type Profile = z.infer<typeof ProfileSchema>;\nexport type UpdateProfile = z.infer<typeof UpdateProfileSchema>;\nexport type ReadProfile = z.infer<typeof ReadProfileSchema>;\n"]}
|
package/dist/chunk-KXYKN3TY.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import {marked}from'marked';function c(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<")}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,""");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, \"&\")\n .replace(/\"/g, \""\")\n .replace(/</g, \"<\");\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, '"');\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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schema/users.ts"],"names":["ActorTypeSchema","zodEnum","ProfileSchema","object","uuid","optional","nullable","string","boolean","array","ReadProfileSchema","number","UpdateProfileSchema"],"mappings":"oCAaMA,IAAAA,CAAAA,CAAkBC,QAAQ,CAAA,CAAC,OAAQ,OAAS,CAAA,UAAU,CAAC,CAEvDC,CAAAA,CAAAA,CAAgBC,WAAO,CAC3B,EAAA,CAAIC,UACJ,CAAA,OAAA,CAASA,UACT,CAAA,QAAA,CAAUC,aAASC,YAASC,CAAAA,UAAAA,EAAQ,CAAC,CAAA,CACrC,IAAMF,CAAAA,YAAAA,CAASC,aAASC,UAAO,EAAC,CAAC,CACjC,CAAA,UAAA,CAAYF,aAASC,YAASC,CAAAA,UAAAA,EAAQ,CAAC,CAAA,CACvC,UAAWF,YAASC,CAAAA,YAAAA,CAASC,YAAQ,CAAC,EACtC,WAAaF,CAAAA,YAAAA,CAASC,YAASC,CAAAA,UAAAA,EAAQ,CAAC,CAAA,CACxC,IAAKF,YAASC,CAAAA,YAAAA,CAASC,YAAQ,CAAC,EAChC,cAAgBF,CAAAA,YAAAA,CAASG,aAAS,CAAA,CAClC,WAAYH,YAASC,CAAAA,YAAAA,CAASC,YAAQ,CAAC,CACvC,CAAA,IAAA,CAAMF,aACJI,SACEN,CAAAA,UAAAA,CAAO,CACL,KAAOI,CAAAA,UAAAA,GAAS,GAAI,EACtB,CAAC,CACH,CACF,EACA,OAASF,CAAAA,YAAAA,CAASC,aAASF,QAAK,EAAC,CAAC,CAClC,CAAA,UAAA,CAAYJ,CACZ,CAAA,SAAA,CAAWC,SAAQ,CAAC,MAAA,CAAQ,MAAM,CAAC,CAAA,CACnC,YAAaM,UAAO,EACtB,CAAC,CAEKG,CAAAA,CAAAA,CAAoBR,EAAc,MAAO,CAAA,CAC7C,YAAaM,WAAQ,EAAA,CACrB,WAAYA,WAAQ,EAAA,CACpB,MAAQA,CAAAA,WAAAA,GACR,SAAWG,CAAAA,UAAAA,GAAS,OAAQ,CAAA,CAAC,EAC7B,SAAWA,CAAAA,UAAAA,GAAS,OAAQ,CAAA,CAAC,EAC7B,OAASA,CAAAA,UAAAA,GAAS,OAAQ,CAAA,CAAC,EAC3B,KAAOA,CAAAA,UAAAA,GAAS,OAAQ,CAAA,CAAC,CAC3B,CAAC,CAAA,CAEKC,EAAsBV,CAAc,CAAA,OAAA,GAAU,IAAK,CAAA,CACvD,GAAI,IACJ,CAAA,OAAA,CAAS,KACT,WAAa,CAAA,IAAA,CACb,eAAgB,IAChB,CAAA,UAAA,CAAY,IAEd,CAAC","file":"chunk-L6SVUDFH.cjs","sourcesContent":["import {\n object,\n string,\n number,\n array,\n boolean,\n enum as zodEnum,\n type z,\n optional,\n nullable,\n uuid\n} from \"zod\";\n\nconst ActorTypeSchema = zodEnum([\"base\", \"agent\", \"verified\"]);\n\nconst ProfileSchema = object({\n id: uuid(),\n user_id: uuid(),\n username: optional(nullable(string())),\n name: optional(nullable(string())),\n first_name: optional(nullable(string())),\n last_name: optional(nullable(string())),\n avatar_path: optional(nullable(string())),\n bio: optional(nullable(string())),\n is_provisioned: optional(boolean()),\n claimed_at: optional(nullable(string())),\n urls: optional(\n array(\n object({\n value: string().url(),\n })\n )\n ),\n post_id: optional(nullable(uuid())),\n actor_type: ActorTypeSchema,\n plan_type: zodEnum([\"free\", \"gold\"]),\n last_active: string(),\n});\n\nconst ReadProfileSchema = ProfileSchema.extend({\n isFollowing: boolean(),\n isFollowed: boolean(),\n isSelf: boolean(),\n followers: number().default(0),\n following: number().default(0),\n totalXp: number().default(0),\n level: number().default(1),\n});\n\nconst UpdateProfileSchema = ProfileSchema.partial().omit({\n id: true,\n user_id: true,\n last_active: true,\n is_provisioned: true,\n claimed_at: true,\n // username: true, // once set, users cannot update their username\n});\n\nexport { ActorTypeSchema, ProfileSchema, ReadProfileSchema, UpdateProfileSchema };\nexport type ActorType = z.infer<typeof ActorTypeSchema>;\nexport type Profile = z.infer<typeof ProfileSchema>;\nexport type UpdateProfile = z.infer<typeof UpdateProfileSchema>;\nexport type ReadProfile = z.infer<typeof ReadProfileSchema>;\n"]}
|
package/dist/chunk-NSKBXBRD.cjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
'use strict';var marked=require('marked');function c(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<")}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,""");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, \"&\")\n .replace(/\"/g, \""\")\n .replace(/</g, \"<\");\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, '"');\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"]}
|
package/dist/chunk-SZWAE35B.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunk7R5EIIIR_cjs=require('./chunk-7R5EIIIR.cjs'),zod=require('zod');var h=zod.object({entry_count:zod.number(),file_count:zod.number(),directory_count:zod.number(),total_uncompressed_size:zod.number(),total_compressed_size:zod.number(),preview_truncated:zod.boolean()}),S=zod.object({id:zod.uuid(),path:zod.string(),bucket:zod.enum(["public-files","files"]),name:zod.string(),type:zod.string(),extension:zod.string(),size:zod.number(),width:zod.optional(zod.number()),height:zod.optional(zod.number()),archive:zod.optional(h)}),_=zod.object({type:zod.string()}),c=S.extend(chunk7R5EIIIR_cjs.b.partial().shape),y=_.extend(chunk7R5EIIIR_cjs.b.partial().shape),F=chunk7R5EIIIR_cjs.f.extend({asset_type:zod.literal("file").default("file"),metadata:c}),b=zod.discriminatedUnion("state",[chunk7R5EIIIR_cjs.h.extend({asset_type:zod.literal("file").default("file"),state:zod.literal("success").default("success"),metadata:c}),chunk7R5EIIIR_cjs.h.extend({asset_type:zod.literal("file").default("file"),state:zod.literal("in-progress").default("in-progress"),metadata:y})]).transform(i=>chunk7R5EIIIR_cjs.a(i)),M=F.partial().omit({user_id:true,id:true,created_at:true,last_updated:true,organization:true,user:true,team:true,slug:true,is_pinned_in_team:true}).extend({last_updated:zod.string().default(()=>new Date().toISOString())}).transform(i=>chunk7R5EIIIR_cjs.a(i));exports.a=h;exports.b=F;exports.c=b;exports.d=M;//# sourceMappingURL=chunk-SZWAE35B.cjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-SZWAE35B.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schema/files.ts"],"names":["ZipArchiveMetadataSchema","object","number","boolean","BaseFileMetadataSchema","uuid","string","zodEnum","optional","BaseStubFileMetadataSchema","FileMetadataSchema","AssetMetadataSchema","StubFileMetadataSchema","FileSchema","AssetSchema","literal","CreateFileSchema","discriminatedUnion","CreateAssetSchema","value","normalizeAssetConfigForParsing","updateFileSchema"],"mappings":"0FAqBMA,CAA2BC,CAAAA,UAAAA,CAAO,CACtC,WAAA,CAAaC,UAAO,EAAA,CACpB,WAAYA,UAAO,EAAA,CACnB,eAAiBA,CAAAA,UAAAA,EACjB,CAAA,uBAAA,CAAyBA,YACzB,CAAA,qBAAA,CAAuBA,UAAO,EAAA,CAC9B,iBAAmBC,CAAAA,WAAAA,EACrB,CAAC,CAAA,CAEKC,CAAyBH,CAAAA,UAAAA,CAAO,CACpC,EAAA,CAAII,QAAK,EAAA,CACT,IAAMC,CAAAA,UAAAA,EACN,CAAA,MAAA,CAAQC,QAAQ,CAAA,CAAC,eAAgB,OAAO,CAAC,CACzC,CAAA,IAAA,CAAMD,UAAO,EAAA,CACb,KAAMA,UAAO,EAAA,CACb,SAAWA,CAAAA,UAAAA,EACX,CAAA,IAAA,CAAMJ,YAEN,CAAA,KAAA,CAAOM,YAASN,CAAAA,UAAAA,EAAQ,CAAA,CACxB,OAAQM,YAASN,CAAAA,UAAAA,EAAQ,CAAA,CACzB,OAASM,CAAAA,YAAAA,CAASR,CAAwB,CAC5C,CAAC,CAEKS,CAAAA,CAAAA,CAA6BR,UAAO,CAAA,CACxC,KAAMK,UAAO,EACf,CAAC,CAAA,CAEKI,CAAqBN,CAAAA,CAAAA,CAAuB,OAChDO,mBAAoB,CAAA,OAAA,EAAU,CAAA,KAChC,CAEMC,CAAAA,CAAAA,CAAyBH,CAA2B,CAAA,MAAA,CACxDE,mBAAoB,CAAA,OAAA,EAAU,CAAA,KAChC,CAEME,CAAAA,CAAAA,CAAaC,oBAAY,MAAO,CAAA,CACpC,UAAYC,CAAAA,WAAAA,CAAQ,MAAM,CAAA,CAAE,QAAQ,MAAM,CAAA,CAC1C,QAAUL,CAAAA,CACZ,CAAC,CAAA,CAEKM,EAAmBC,sBAAmB,CAAA,OAAA,CAAS,CAEnDC,mBAAAA,CAAkB,MAAO,CAAA,CACvB,WAAYH,WAAQ,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,MAAM,CAAA,CAC1C,MAAOA,WAAQ,CAAA,SAAS,CAAE,CAAA,OAAA,CAAQ,SAAS,CAAA,CAC3C,SAAUL,CACZ,CAAC,CAEDQ,CAAAA,mBAAAA,CAAkB,MAAO,CAAA,CACvB,WAAYH,WAAQ,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,MAAM,CAAA,CAC1C,KAAOA,CAAAA,WAAAA,CAAQ,aAAa,CAAA,CAAE,OAAQ,CAAA,aAAa,CACnD,CAAA,QAAA,CAAUH,CACZ,CAAC,CACH,CAAC,CAAA,CAAE,SAAWO,CAAAA,CAAAA,EAAUC,oBAA+BD,CAAK,CAAC,CAEvDE,CAAAA,CAAAA,CAAmBR,CAAW,CAAA,OAAA,GACjC,IAAK,CAAA,CACJ,OAAS,CAAA,IAAA,CACT,EAAI,CAAA,IAAA,CACJ,UAAY,CAAA,IAAA,CACZ,YAAc,CAAA,IAAA,CACd,YAAc,CAAA,IAAA,CACd,IAAM,CAAA,IAAA,CACN,KAAM,IACN,CAAA,IAAA,CAAM,IACN,CAAA,iBAAA,CAAmB,IACrB,CAAC,EACA,MAAO,CAAA,CACN,YAAcP,CAAAA,UAAAA,EAAS,CAAA,OAAA,CAAQ,IAAM,IAAI,IAAA,EAAO,CAAA,WAAA,EAAa,CAC/D,CAAC,CAAA,CACA,SAAWa,CAAAA,CAAAA,EAAUC,mBAA+BD,CAAAA,CAAK,CAAC","file":"chunk-SZWAE35B.cjs","sourcesContent":["import {\n object,\n string,\n uuid,\n number,\n enum as zodEnum,\n type z,\n optional,\n literal,\n discriminatedUnion,\n nullable,\n boolean\n} from \"zod\";\n\nimport {\n AssetSchema,\n CreateAssetSchema,\n AssetMetadataSchema,\n normalizeAssetConfigForParsing,\n} from \"./assets\";\n\nconst ZipArchiveMetadataSchema = object({\n entry_count: number(),\n file_count: number(),\n directory_count: number(),\n total_uncompressed_size: number(),\n total_compressed_size: number(),\n preview_truncated: boolean(),\n});\n\nconst BaseFileMetadataSchema = object({\n id: uuid(), // The id of the file object\n path: string(), // The path of the file in storage\n bucket: zodEnum([\"public-files\", \"files\"]),\n name: string(),\n type: string(),\n extension: string(),\n size: number(),\n // If the file is an image, we store width and height\n width: optional(number()),\n height: optional(number()),\n archive: optional(ZipArchiveMetadataSchema),\n});\n\nconst BaseStubFileMetadataSchema = object({\n type: string(),\n});\n\nconst FileMetadataSchema = BaseFileMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst StubFileMetadataSchema = BaseStubFileMetadataSchema.extend(\n AssetMetadataSchema.partial().shape\n);\n\nconst FileSchema = AssetSchema.extend({\n asset_type: literal(\"file\").default(\"file\"),\n metadata: FileMetadataSchema,\n});\n\nconst CreateFileSchema = discriminatedUnion(\"state\", [\n // Success state, file is ready\n CreateAssetSchema.extend({\n asset_type: literal(\"file\").default(\"file\"),\n state: literal(\"success\").default(\"success\"),\n metadata: FileMetadataSchema,\n }),\n // In-progress state, file is being processed\n CreateAssetSchema.extend({\n asset_type: literal(\"file\").default(\"file\"),\n state: literal(\"in-progress\").default(\"in-progress\"),\n metadata: StubFileMetadataSchema,\n }),\n]).transform((value) => normalizeAssetConfigForParsing(value));\n\nconst updateFileSchema = FileSchema.partial()\n .omit({\n user_id: true,\n id: true,\n created_at: true,\n last_updated: true,\n organization: true,\n user: true,\n team: true,\n slug: true,\n is_pinned_in_team: true,\n })\n .extend({\n last_updated: string().default(() => new Date().toISOString()),\n })\n .transform((value) => normalizeAssetConfigForParsing(value));\n\nexport {\n FileSchema,\n CreateFileSchema,\n updateFileSchema,\n ZipArchiveMetadataSchema,\n};\nexport type File = z.infer<typeof FileSchema>;\nexport type CreateFile = z.infer<typeof CreateFileSchema>;\nexport type UpdateFile = z.infer<typeof updateFileSchema>;\nexport type ZipArchiveMetadata = z.infer<typeof ZipArchiveMetadataSchema>;\n"]}
|