diff --git a/lexicons/embed/commit.json b/lexicons/embed/commit.json new file mode 100644 index 000000000..ace51b8a9 --- /dev/null +++ b/lexicons/embed/commit.json @@ -0,0 +1,17 @@ +{ + "lexicon": 1, + "id": "sh.tangled.embed.commit", + "defs": { + "main": { + "type": "object", + "required": [ + "repo", + "commit" + ], + "properties": { + "repo": { "type": "string", "format": "did" }, + "commit": { "type": "union", "refs": ["sh.tangled.git.oid"] } + } + } + } +} diff --git a/lexicons/feed/comment.json b/lexicons/feed/comment.json index 8af9e31e4..5439e80bb 100644 --- a/lexicons/feed/comment.json +++ b/lexicons/feed/comment.json @@ -31,6 +31,12 @@ "type": "ref", "ref": "com.atproto.repo.strongRef" }, + "embed": { + "type": "union", + "refs": [ + "sh.tangled.embed.commit" + ] + }, "pullRoundIdx": { "type": "integer", "minimum": 0, diff --git a/lexicons/git/oid.json b/lexicons/git/oid.json new file mode 100644 index 000000000..19f14dece --- /dev/null +++ b/lexicons/git/oid.json @@ -0,0 +1,17 @@ +{ + "lexicon": 1, + "id": "sh.tangled.git.oid", + "defs": { + "main": { + "type": "object", + "required": ["oid"], + "properties": { + "oid": { + "type": "string", + "minLength": 40, + "maxLength": 128 + } + } + } + } +} diff --git a/web/lex.config.ts b/web/lex.config.ts index 07045d357..cd2ecf815 100644 --- a/web/lex.config.ts +++ b/web/lex.config.ts @@ -12,6 +12,7 @@ export default defineLexiconConfig({ "../lexicons/bobbin/**/*.json", "../lexicons/actor/**/*.json", "../lexicons/ci/**/*.json", + "../lexicons/embed/**/*.json", "../lexicons/feed/**/*.json", "../lexicons/git/**/*.json", "../lexicons/graph/**/*.json", diff --git a/web/src/lib/api/lexicons/index.ts b/web/src/lib/api/lexicons/index.ts index bbdcaddc5..b9a586bb2 100644 --- a/web/src/lib/api/lexicons/index.ts +++ b/web/src/lib/api/lexicons/index.ts @@ -12,6 +12,7 @@ export * as ShTangledCiQueryPipelines from "./types/sh/tangled/ci/queryPipelines export * as ShTangledCiSubscribePipelineLogs from "./types/sh/tangled/ci/subscribePipelineLogs.js"; export * as ShTangledCiTrigger from "./types/sh/tangled/ci/trigger.js"; export * as ShTangledCiTriggerPipeline from "./types/sh/tangled/ci/triggerPipeline.js"; +export * as ShTangledEmbedCommit from "./types/sh/tangled/embed/commit.js"; export * as ShTangledFeedComment from "./types/sh/tangled/feed/comment.js"; export * as ShTangledFeedCountComments from "./types/sh/tangled/feed/countComments.js"; export * as ShTangledFeedCountCommentsBy from "./types/sh/tangled/feed/countCommentsBy.js"; @@ -38,6 +39,7 @@ export * as ShTangledGitListRefUpdatesBy from "./types/sh/tangled/git/listRefUpd export * as ShTangledGitListRefs from "./types/sh/tangled/git/listRefs.js"; export * as ShTangledGitMergeCheck from "./types/sh/tangled/git/mergeCheck.js"; export * as ShTangledGitMergeCommit from "./types/sh/tangled/git/mergeCommit.js"; +export * as ShTangledGitOid from "./types/sh/tangled/git/oid.js"; export * as ShTangledGitRefUpdate from "./types/sh/tangled/git/refUpdate.js"; export * as ShTangledGitTempAnalyzeMerge from "./types/sh/tangled/git/temp/analyzeMerge.js"; export * as ShTangledGitTempDefs from "./types/sh/tangled/git/temp/defs.js"; diff --git a/web/src/lib/api/lexicons/types/sh/tangled/embed/commit.ts b/web/src/lib/api/lexicons/types/sh/tangled/embed/commit.ts new file mode 100644 index 000000000..a62564cd6 --- /dev/null +++ b/web/src/lib/api/lexicons/types/sh/tangled/embed/commit.ts @@ -0,0 +1,21 @@ +import type {} from "@atcute/lexicons"; +import * as v from "@atcute/lexicons/validations"; +import * as ShTangledGitOid from "../git/oid.js"; + +const _mainSchema = /*#__PURE__*/ v.object({ + $type: /*#__PURE__*/ v.optional( + /*#__PURE__*/ v.literal("sh.tangled.embed.commit"), + ), + get commit() { + return /*#__PURE__*/ v.variant([ShTangledGitOid.mainSchema]); + }, + repo: /*#__PURE__*/ v.didString(), +}); + +type main$schematype = typeof _mainSchema; + +export interface mainSchema extends main$schematype {} + +export const mainSchema = _mainSchema as mainSchema; + +export interface Main extends v.InferInput {} diff --git a/web/src/lib/api/lexicons/types/sh/tangled/feed/comment.ts b/web/src/lib/api/lexicons/types/sh/tangled/feed/comment.ts index adf15ad78..d55717ace 100644 --- a/web/src/lib/api/lexicons/types/sh/tangled/feed/comment.ts +++ b/web/src/lib/api/lexicons/types/sh/tangled/feed/comment.ts @@ -2,6 +2,7 @@ import type {} from "@atcute/lexicons"; import * as v from "@atcute/lexicons/validations"; import type {} from "@atcute/lexicons/ambient"; import * as ComAtprotoRepoStrongRef from "@atcute/atproto/types/repo/strongRef"; +import * as ShTangledEmbedCommit from "../embed/commit.js"; import * as ShTangledMarkupMarkdown from "../markup/markdown.js"; const _mainSchema = /*#__PURE__*/ v.record( @@ -12,6 +13,11 @@ const _mainSchema = /*#__PURE__*/ v.record( return /*#__PURE__*/ v.variant([ShTangledMarkupMarkdown.mainSchema]); }, createdAt: /*#__PURE__*/ v.datetimeString(), + get embed() { + return /*#__PURE__*/ v.optional( + /*#__PURE__*/ v.variant([ShTangledEmbedCommit.mainSchema]), + ); + }, /** * optional pull submission round index. required when subject is sh.tangled.repo.pull * @minimum 0 diff --git a/web/src/lib/api/lexicons/types/sh/tangled/git/oid.ts b/web/src/lib/api/lexicons/types/sh/tangled/git/oid.ts new file mode 100644 index 000000000..88145ebe1 --- /dev/null +++ b/web/src/lib/api/lexicons/types/sh/tangled/git/oid.ts @@ -0,0 +1,23 @@ +import type {} from "@atcute/lexicons"; +import * as v from "@atcute/lexicons/validations"; + +const _mainSchema = /*#__PURE__*/ v.object({ + $type: /*#__PURE__*/ v.optional( + /*#__PURE__*/ v.literal("sh.tangled.git.oid"), + ), + /** + * @minLength 40 + * @maxLength 128 + */ + oid: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ + /*#__PURE__*/ v.stringLength(40, 128), + ]), +}); + +type main$schematype = typeof _mainSchema; + +export interface mainSchema extends main$schematype {} + +export const mainSchema = _mainSchema as mainSchema; + +export interface Main extends v.InferInput {}