Shared lexicon schemas for long-form publishing on AT Protocol. Uses typescript to json via prototypey.

Update lexicon descriptions

brookie.blog 621d7e81 faa1ade2

verified
+12 -11
src/lexicons/site.standard.document.ts
··· 9 9 site: lx.string({ 10 10 required: true, 11 11 format: 'uri', 12 - description: 'Required URI for parent site or publication (https:// or at://). Use https:// for loose documents. Avoid trailing slashes.' 12 + description: 'Points to a publication record (at://) or a publication url (https://) for loose documents. Avoid trailing slashes.' 13 13 }), 14 14 path: lx.string({ 15 - description: 'Optional path, combined with site or publication url value to construct a full url to the document. Prepend with a leading slash.' 15 + description: 'Combine with site or publication url to construct a canonical URL to the document. Prepend with a leading slash.' 16 16 }), 17 17 title: lx.string({ 18 18 required: true, 19 19 maxLength: 1280, 20 20 maxGraphemes: 128, 21 - description: 'Required title of the document.' 21 + description: 'Title of the document.' 22 22 }), 23 23 description: lx.string({ 24 24 maxLength: 3000, 25 25 maxGraphemes: 300, 26 - description: 'Optional brief description or expert of the document.' 26 + description: 'A brief description or excerpt from the document.' 27 27 }), 28 28 coverImage: lx.blob({ 29 29 maxSize: 1 * MB, 30 30 accept: ['image/*'], 31 - description: 'Optional image to use as the documents cover. Less than 1MB is size.' 31 + description: 'Image to used for thumbnail or cover image. Less than 1MB is size.' 32 32 }), 33 33 content: lx.union([], { 34 34 closed: false, 35 - description: 'Optional open union to construct content within the record. Can be extended with other lexicons to define any content format.' 35 + description: 'Open union used to define the record\'s content. Each entry must specify a $type and may be extended with other lexicons to support additional content formats.' 36 36 }), 37 37 textContent: lx.string({ 38 - description: 'Optional plaintext representation of the documents contents. Useful for search and other cases.' 38 + description: 'Plaintext representation of the documents contents. Should not contain markdown or other formatting.' 39 39 }), 40 40 bskyPostRef: lx.ref('com.atproto.repo.strongRef', { 41 - description: 'Optional strong reference to a Bluesky post. Useful to keep track of comments off-platform.' 41 + description: 'Strong reference to a Bluesky post. Useful to keep track of comments off-platform.' 42 42 }), 43 43 tags: lx.array({ 44 44 type: 'string', 45 45 }, { 46 46 maxLength: 100, 47 - description: 'Optional array of strings used to tag/categorize the document. Avoid prepending tags with hashtags ("#").' 47 + description: 'Array of strings used to tag or categorize the document. Avoid prepending tags with hashtags.' 48 48 }), 49 49 publishedAt: lx.string({ 50 50 required: true, 51 51 format: 'datetime', 52 - description: 'Required timestamp of the documents publication.' 52 + description: 'Timestamp of the documents publish time.' 53 53 }), 54 54 updatedAt: lx.string({ 55 55 format: 'datetime', 56 - description: 'Optional timestamp of the documents last edit.' 56 + description: 'Timestamp of the documents last edit.' 57 57 }) 58 58 }), 59 + description: 'A document record representing a published article, blog post, or other content. Documents can belong to a publication or exist independently.' 59 60 }) 60 61 })
+1 -1
src/lexicons/site.standard.graph.subscription.ts
··· 8 8 publication: lx.string({ 9 9 required: true, 10 10 format: 'at-uri', 11 - description: 'Required publication at-uri.' 11 + description: 'AT-URI reference to the publication record being subscribed to (ex: at://did:plc:abc123/site.standard.publication/xyz789).' 12 12 }) 13 13 }), 14 14 description: 'Record declaring a subscription to a publication.'
+11 -8
src/lexicons/site.standard.publication.ts
··· 10 10 url: lx.string({ 11 11 required: true, 12 12 format: 'uri', 13 - description: 'Required base publication URL (ex: https://standard.site).' 13 + description: 'Base publication url (ex: https://standard.site). The canonical document URL is formed by combining this value with the document path.' 14 14 }), 15 15 icon: lx.blob({ 16 16 maxSize: 1 * MB, 17 - accept: ['image/*'] 17 + accept: ['image/*'], 18 + description: 'Square image to identify the publication. Should be at least 256x256.' 18 19 }), 19 20 name: lx.string({ 20 21 required: true, 21 22 maxLength: 1280, 22 23 maxGraphemes: 128, 23 - description: 'Required name of the publication.' 24 + description: 'Name of the publication.' 24 25 }), 25 26 description: lx.string({ 26 27 maxLength: 3000, 27 28 maxGraphemes: 300, 28 - description: 'Optional brief description of the publication.' 29 + description: 'Brief description of the publication.' 29 30 }), 30 31 basicTheme: lx.ref(siteStandardThemeBasic.json.id, { 31 - description: 'Optional simplified publication theme for tools and apps to easily implement when displaying content.' 32 + description: 'Simplified publication theme for tools and apps to utilize when displaying content.' 32 33 }), 33 34 preferences: lx.ref('#preferences', { 34 - description: 'Optional object containing platform specific preferences (with a few shared properties).' 35 + description: 'Object containing platform specific preferences (with a few shared properties).' 35 36 }) 36 37 }), 38 + description: 'A publication record representing a blog, website, or content platform. Publications serve as containers for documents and define the overall branding and settings.' 37 39 }), 38 40 preferences: lx.object({ 39 41 showInDiscover: lx.boolean({ 40 42 default: true, 41 - description: 'Optional boolean which decides whether the publication should appear in discovery feeds.' 42 - }) 43 + description: 'Boolean which decides whether the publication should appear in discovery feeds.' 44 + }), 45 + description: 'Platform-specific preferences for the publication, including discovery and visibility settings.' 43 46 }) 44 47 })
+5 -4
src/lexicons/site.standard.theme.basic.ts
··· 8 8 record: lx.object({ 9 9 background: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 10 10 required: true, 11 - description: 'Required color used for content background.' 11 + description: 'Color used for content background.' 12 12 }), 13 13 foreground: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 14 14 required: true, 15 - description: 'Required color used for content text.' 15 + description: 'Color used for content text.' 16 16 }), 17 17 accent: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 18 18 required: true, 19 - description: 'Required color used for links and button backgrounds.' 19 + description: 'Color used for links and button backgrounds.' 20 20 }), 21 21 accentForeground: lx.union([siteStandardThemeColor.json.id + '#rgb'], { 22 22 required: true, 23 - description: 'Required color used for button text.' 23 + description: 'Color used for button text.' 24 24 }) 25 25 }), 26 + description: 'A simplified theme definition for publications, providing basic color customization for content display across different platforms and applications.' 26 27 }) 27 28 })