···44import { exists, loadConfig } from "../utils.ts";
55import { Client, simpleFetchHandler } from "@atcute/client";
66import type { ActorIdentifier } from "@atcute/lexicons/syntax";
77+import type { SiteStandardPublication } from "@atcute/standard-site";
7889export const configCmd = defineCommand({
910 async run(context) {
···3637 printConfigLine("Glob pattern", config.glob.pattern);
3738 if (config.glob.base) printConfigLine("Search folder", config.glob.base);
3839 if (config.publicationUri) {
3939- let publicationStatus: "HandleNotProvided" | "NotFound" | "Found" | "ServerError" = "ServerError";
4040+ let publicationStatus: "HandleNotProvided" | "NotFound" | "Found" | "NotLeafletPublication" | "ServerError" =
4141+ "ServerError";
40424143 try {
4244 if (!process.env.BSKY_HANDLE) {
···4951 const recordRes = await slingshot.get("com.atproto.repo.getRecord", {
5052 params: {
5153 repo: process.env.BSKY_HANDLE as ActorIdentifier,
5252- collection: "pub.leaflet.publication",
5454+ collection: "site.standard.publication",
5355 rkey: rkey,
5456 },
5557 });
···61636264 if (!recordRes.ok) {
6365 publicationStatus = "ServerError";
6666+ throw new Error();
6767+ }
6868+6969+ const url = (recordRes.data.value as SiteStandardPublication.Main).url;
7070+7171+ if (!url.endsWith(".leaflet.pub")) {
7272+ publicationStatus = "NotLeafletPublication";
6473 throw new Error();
6574 }
6675
+20-12
src/commands/sync-cmd.ts
···2424import { isBun } from "std-env";
2525import { Entry } from "@napi-rs/keyring";
2626import { noKeyring } from "../cli.ts";
2727+import type { SiteStandardPublication } from "@atcute/standard-site";
27282829export const syncCmd = defineCommand({
2930 async run({ cmd, args }) {
···9495 const res = await ok(
9596 client.get("com.atproto.repo.listRecords", {
9697 params: {
9797- collection: "pub.leaflet.document",
9898+ collection: "site.standard.document",
9899 repo: miniDoc.did,
99100 limit: 100,
100101 cursor: docCursor,
···120121 const rkey = config.publicationUri.split("/").at(-1) as string;
121122122123 const res = await client.get("com.atproto.repo.getRecord", {
123123- params: { collection: "pub.leaflet.publication", repo: miniDoc.did, rkey: rkey },
124124+ params: { collection: "site.standard.publication", repo: miniDoc.did, rkey: rkey },
124125 });
125126126127 if (!res.ok) throw new Error("Could not find publication from the config.");
128128+ const publication = res.data.value as SiteStandardPublication.Main;
129129+ if (!publication.url.endsWith(".leaflet.pub"))
130130+ throw new Error("Publication specified in the config is not from leaflet.pub");
127131 publicationUri = config.publicationUri;
128128- publicationName = (res.data.value as PubLeafletPublication.Main).name;
132132+ publicationName = publication.name;
129133 } else {
130134 const res = await ok(
131135 client.get("com.atproto.repo.listRecords", {
132132- params: { collection: "pub.leaflet.publication", repo: miniDoc.did, limit: 3 },
136136+ params: { collection: "site.standard.publication", repo: miniDoc.did, limit: 3 },
133137 })
134138 );
135139136136- if (res.records.length > 0) {
137137- if (res.records.length > 1)
140140+ const leafletPublications = res.records.filter((val) =>
141141+ (val.value as SiteStandardPublication.Main).url.endsWith(".leaflet.pub")
142142+ );
143143+144144+ if (leafletPublications.length > 0) {
145145+ if (leafletPublications.length > 1)
138146 throw new Error(
139147 "There are more then 1 publications in your repo.\nPlease specify which one to use in your config."
140148 );
141149142142- publicationUri = `at://${miniDoc.did}/pub.leaflet.publication/${res.records[0]!.uri.split("/").at(-1)}`;
143143- publicationName = (res.records[0]!.value as PubLeafletPublication.Main).name;
150150+ publicationUri = `at://${miniDoc.did}/site.standard.publication/${leafletPublications[0]!.uri.split("/").at(-1)}`;
151151+ publicationName = (leafletPublications[0]!.value as SiteStandardPublication.Main).name;
144152 } else {
145153 throw new Error("Could not find any publications in your repo.");
146154 }
···330338331339 uploadDate ??= new Date(Date.now()).toISOString();
332340341341+ const tid = rkey ? rkey : TID.now();
342342+333343 const doc = generateDoc(
334334- miniDoc.did,
344344+ tid,
335345 publicationUri,
336346 [...prependBlocks, ...generateBlocks(ast.children, uploadedImages, codeblockTheme), ...appendBlocks],
337347 title,
···346356 continue;
347357 }
348358349349- const tid = rkey ? rkey : TID.now();
350350-351359 const res = await client.post("com.atproto.repo.putRecord", {
352360 input: {
353353- collection: "pub.leaflet.document",
361361+ collection: "site.standard.document",
354362 repo: miniDoc.did,
355363 rkey: tid,
356364 record: doc,
+1-1
src/config.ts
···24242525export function defineConfig(config: Config) {
2626 if (config.publicationUri) {
2727- if (!config.publicationUri.includes("/pub.leaflet.publication/"))
2727+ if (!config.publicationUri.includes("/site.standard.publication/"))
2828 throw new Error("Invalid publicationUri inside of the config.");
2929 }
3030
+17-11
src/doc.ts
···11-import type { PubLeafletDocument, PubLeafletPagesLinearDocument } from "@atcute/leaflet";
22-import type { ActorIdentifier, ResourceUri } from "@atcute/lexicons";
11+import type { PubLeafletContent, PubLeafletPagesLinearDocument } from "@atcute/leaflet";
22+import type { ResourceUri } from "@atcute/lexicons";
33+import type { SiteStandardDocument } from "@atcute/standard-site";
3445export function generateDoc(
55- author: ActorIdentifier,
66+ tid: string,
67 publicationUri: ResourceUri,
78 blocks: PubLeafletPagesLinearDocument.Block[],
89 title?: string,
910 description?: string,
1011 uploadDate?: Date
1111-): PubLeafletDocument.Main {
1212- return {
1313- $type: "pub.leaflet.document",
1414- author: author,
1515- title: title ? title : "Testing",
1616- description: description ? description : "test",
1717- publishedAt: uploadDate ? uploadDate.toISOString() : new Date().toISOString(),
1818- publication: publicationUri,
1212+): SiteStandardDocument.Main {
1313+ const content: PubLeafletContent.Main = {
1414+ $type: "pub.leaflet.content",
1915 pages: [
2016 {
2117 $type: "pub.leaflet.pages.linearDocument",
2218 blocks: blocks,
2319 },
2420 ],
2121+ };
2222+2323+ return {
2424+ $type: "site.standard.document",
2525+ path: "/" + tid,
2626+ site: publicationUri,
2727+ title: title ? title : "Testing",
2828+ description: description ? description : "test",
2929+ publishedAt: uploadDate ? uploadDate.toISOString() : new Date().toISOString(),
3030+ content: content as any,
2531 };
2632}