diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/knot.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/knot.tsp deleted file mode 100644 index 7b61d5f..0000000 --- a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/knot.tsp +++ /dev/null @@ -1,8 +0,0 @@ -import "@typelex/emitter"; - -namespace sh.tangled.knot { - @rec("any") - model Main { - @required createdAt: datetime; - } -} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label.op.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label.op.tsp deleted file mode 100644 index d4cbc5a..0000000 --- a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label.op.tsp +++ /dev/null @@ -1,24 +0,0 @@ -import "@typelex/emitter"; - -namespace sh.tangled.label.`op` { - @rec("tid") - model Main { - /** The subject (task, pull or discussion) of this label. Appviews may apply a `scope` check and refuse this op. */ - @required - subject: atUri; - - @required performedAt: datetime; - @required add: Operand[]; - @required delete: Operand[]; - } - - model Operand { - /** ATURI to the label definition */ - @required - key: atUri; - - /** Stringified value of the label. This is first unstringed by appviews and then interpreted as a concrete value. */ - @required - value: string; - } -} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label/op.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label/op.tsp new file mode 100644 index 0000000..6c99ccf --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/label/op.tsp @@ -0,0 +1,29 @@ +import "@typelex/emitter"; + +namespace sh.tangled.label.`op` { + @rec("tid") + model Main { + @doc("The subject (task, pull or discussion) of this label. Appviews may apply a `scope` check and refuse this op.") + @required + subject: atUri; + + @required + add: Operand[]; + + @required + delete: Operand[]; + + @required + performedAt: datetime; + } + + model Operand { + @doc("ATURI to the label definition") + @required + key: atUri; + + @doc("Stringified value of the label. This is first unstringed by appviews and then interpreted as a concrete value.") + @required + value: string; + } +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/pipeline.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/pipeline.tsp deleted file mode 100644 index 8e6b452..0000000 --- a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/pipeline.tsp +++ /dev/null @@ -1,81 +0,0 @@ -import "@typelex/emitter"; - -namespace sh.tangled.pipeline { - @rec("tid") - model Main { - @required triggerMetadata: TriggerMetadata; - @required workflows: Workflow[]; - } - - @closed - @inline - union TriggerKind { - "push", - "pull_request", - "manual", - } - - model TriggerMetadata { - @required kind: TriggerKind; - @required repo: TriggerRepo; - - push?: PushTriggerData; - pullRequest?: PullRequestTriggerData; - manual?: ManualTriggerData; - } - - model TriggerRepo { - @required knot: string; - @required did: did; - @required repo: string; - @required defaultBranch: string; - } - - model PushTriggerData { - @required ref: string; - - @minLength(40) - @maxLength(40) - @required - newSha: string; - - @minLength(40) - @maxLength(40) - @required - oldSha: string; - } - - model PullRequestTriggerData { - @required sourceBranch: string; - @required targetBranch: string; - - @minLength(40) - @maxLength(40) - @required - sourceSha: string; - - @required action: string; - } - - model ManualTriggerData { - inputs?: Pair[]; - } - - model Workflow { - @required name: string; - @required engine: string; - @required clone: CloneOpts; - @required raw: string; - } - - model CloneOpts { - @required skip: boolean; - @required depth: integer; - @required submodules: boolean; - } - - model Pair { - @required key: string; - @required value: string; - } -} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo.tsp new file mode 100644 index 0000000..9e0dd5c --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo.tsp @@ -0,0 +1,30 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo { + @rec("tid") + model Main { + @doc("name of the repo") + @required + name: string; + + @doc("knot where the repo was created") + @required + knot: string; + + @doc("CI runner to send jobs to and receive results from") + spindle?: string; + + @minGraphemes(1) + @maxGraphemes(140) + description?: string; + + @doc("source of the repo") + source?: uri; + + @doc("List of labels that this repo subscribes to") + labels?: atUri[]; + + @required + createdAt: datetime; + } +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/addSecret.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/addSecret.tsp new file mode 100644 index 0000000..4154709 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/addSecret.tsp @@ -0,0 +1,20 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.addSecret { + @procedure + @doc("Add a CI secret") + op main(input: { + @required + repo: atUri; + + @required + @maxLength(50) + @minLength(1) + key: string; + + @required + @maxLength(200) + @minLength(1) + value: string; + }): void; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/archive.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/archive.tsp new file mode 100644 index 0000000..bec1d3b --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/archive.tsp @@ -0,0 +1,44 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.archive { + @query + @encoding("*/*") + @errors(RepoNotFound, RefNotFound, InvalidRequest, ArchiveError) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("Git reference (branch, tag, or commit SHA)") + @required + ref: string, + + @doc("Archive format") + format?: ArchiveFormat = "tar.gz", + + @doc("Prefix for files in the archive") + prefix?: string + ): never; + + @closed + @inline + union ArchiveFormat { + "tar", + "zip", + "tar.gz", + "tar.bz2", + "tar.xz" + } + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Git reference not found") + model RefNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} + + @doc("Failed to create archive") + model ArchiveError {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/artifact.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/artifact.tsp new file mode 100644 index 0000000..2cc6350 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/artifact.tsp @@ -0,0 +1,28 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.artifact { + @rec("tid") + model Main { + @doc("name of the artifact") + @required + name: string; + + @doc("repo that this artifact is being uploaded to") + @required + repo: atUri; + + @doc("hash of the tag object that this artifact is attached to (only annotated tags are supported)") + @required + @minBytes(20) + @maxBytes(20) + tag: bytes; + + @doc("time of creation of this artifact") + @required + createdAt: datetime; + + @doc("the artifact") + @required + artifact: Blob<#["*/*"], 52428800>; + } +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/blob.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/blob.tsp new file mode 100644 index 0000000..85d8cfe --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/blob.tsp @@ -0,0 +1,100 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.blob { + @query + @errors(RepoNotFound, RefNotFound, FileNotFound, InvalidRequest) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("Git reference (branch, tag, or commit SHA)") + @required + ref: string, + + @doc("Path to the file within the repository") + @required + path: string, + + @doc("Return raw file content instead of JSON response") + raw?: boolean = false + ): { + @doc("The git reference used") + @required + ref: string; + + @doc("The file path") + @required + path: string; + + @doc("File content (base64 encoded for binary files)") + @required + content: string; + + @doc("Content encoding") + encoding?: ContentEncoding; + + @doc("File size in bytes") + size?: integer; + + @doc("Whether the file is binary") + isBinary?: boolean; + + @doc("MIME type of the file") + mimeType?: string; + + lastCommit?: LastCommit; + }; + + @closed + @inline + union ContentEncoding { + "utf-8", + "base64" + } + + model LastCommit { + @doc("Commit hash") + @required + hash: string; + + @doc("Short commit hash") + shortHash?: string; + + @doc("Commit message") + @required + message: string; + + author?: Signature; + + @doc("Commit timestamp") + @required + when: datetime; + } + + model Signature { + @doc("Author name") + @required + name: string; + + @doc("Author email") + @required + email: string; + + @doc("Author timestamp") + @required + when: datetime; + } + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Git reference not found") + model RefNotFound {} + + @doc("File not found at the specified path") + model FileNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branch.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branch.tsp new file mode 100644 index 0000000..8191e3a --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branch.tsp @@ -0,0 +1,61 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.branch { + @query + @errors(RepoNotFound, BranchNotFound, InvalidRequest) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("Branch name to get information for") + @required + name: string + ): { + @doc("Branch name") + @required + name: string; + + @doc("Latest commit hash on this branch") + @required + hash: string; + + @doc("Short commit hash") + shortHash?: string; + + @doc("Timestamp of latest commit") + @required + when: datetime; + + @doc("Latest commit message") + message?: string; + + author?: Signature; + + @doc("Whether this is the default branch") + isDefault?: boolean; + }; + + model Signature { + @doc("Author name") + @required + name: string; + + @doc("Author email") + @required + email: string; + + @doc("Author timestamp") + @required + when: datetime; + } + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Branch not found") + model BranchNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branches.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branches.tsp new file mode 100644 index 0000000..aa0af24 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/branches.tsp @@ -0,0 +1,26 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.branches { + @query + @encoding("*/*") + @errors(RepoNotFound, InvalidRequest) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("Maximum number of branches to return") + @minValue(1) + @maxValue(100) + limit?: integer = 50, + + @doc("Pagination cursor") + cursor?: string + ): never; + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/collaborator.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/collaborator.tsp new file mode 100644 index 0000000..aba6b7d --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/collaborator.tsp @@ -0,0 +1,16 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.collaborator { + @rec("tid") + model Main { + @required + subject: did; + + @doc("repo to add this user to") + @required + repo: atUri; + + @required + createdAt: datetime; + } +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/compare.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/compare.tsp new file mode 100644 index 0000000..1c3642e --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/compare.tsp @@ -0,0 +1,32 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.compare { + @query + @encoding("*/*") + @errors(RepoNotFound, RevisionNotFound, InvalidRequest, CompareError) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("First revision (commit, branch, or tag)") + @required + rev1: string, + + @doc("Second revision (commit, branch, or tag)") + @required + rev2: string + ): never; + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("One or both revisions not found") + model RevisionNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} + + @doc("Failed to compare revisions") + model CompareError {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/create.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/create.tsp new file mode 100644 index 0000000..17b3168 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/create.tsp @@ -0,0 +1,17 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.create { + @procedure + @doc("Create a new repository") + op main(input: { + @doc("Rkey of the repository record") + @required + rkey: string; + + @doc("Default branch to push to") + defaultBranch?: string; + + @doc("A source URL to clone from, populate this when forking or importing a repository.") + source?: string; + }): void; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/delete.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/delete.tsp new file mode 100644 index 0000000..b148db9 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/delete.tsp @@ -0,0 +1,19 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.delete { + @procedure + @doc("Delete a repository") + op main(input: { + @doc("DID of the repository owner") + @required + did: did; + + @doc("Name of the repository to delete") + @required + name: string; + + @doc("Rkey of the repository record") + @required + rkey: string; + }): void; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/diff.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/diff.tsp new file mode 100644 index 0000000..349d08b --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/diff.tsp @@ -0,0 +1,25 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.diff { + @query + @encoding("*/*") + @errors(RepoNotFound, RefNotFound, InvalidRequest) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("Git reference (branch, tag, or commit SHA)") + @required + ref: string + ): never; + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Git reference not found") + model RefNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkStatus.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkStatus.tsp new file mode 100644 index 0000000..bb6806a --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkStatus.tsp @@ -0,0 +1,31 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.forkStatus { + @procedure + @doc("Check fork status relative to upstream source") + op main(input: { + @doc("DID of the fork owner") + @required + did: did; + + @doc("Name of the forked repository") + @required + name: string; + + @doc("Source repository URL") + @required + source: string; + + @doc("Branch to check status for") + @required + branch: string; + + @doc("Hidden ref to use for comparison") + @required + hiddenRef: string; + }): { + @doc("Fork status: 0=UpToDate, 1=FastForwardable, 2=Conflict, 3=MissingBranch") + @required + status: integer; + }; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkSync.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkSync.tsp new file mode 100644 index 0000000..8041cab --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/forkSync.tsp @@ -0,0 +1,23 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.forkSync { + @procedure + @doc("Sync a forked repository with its upstream source") + op main(input: { + @doc("DID of the fork owner") + @required + did: did; + + @doc("AT-URI of the source repository") + @required + source: atUri; + + @doc("Name of the forked repository") + @required + name: string; + + @doc("Branch to sync") + @required + branch: string; + }): void; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/getDefaultBranch.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/getDefaultBranch.tsp new file mode 100644 index 0000000..9854d20 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/getDefaultBranch.tsp @@ -0,0 +1,51 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.getDefaultBranch { + @query + @errors(RepoNotFound, InvalidRequest) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string + ): { + @doc("Default branch name") + @required + name: string; + + @doc("Latest commit hash on default branch") + @required + hash: string; + + @doc("Short commit hash") + shortHash?: string; + + @doc("Timestamp of latest commit") + @required + when: datetime; + + @doc("Latest commit message") + message?: string; + + author?: Signature; + }; + + model Signature { + @doc("Author name") + @required + name: string; + + @doc("Author email") + @required + email: string; + + @doc("Author timestamp") + @required + when: datetime; + } + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/hiddenRef.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/hiddenRef.tsp new file mode 100644 index 0000000..e454f5e --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/hiddenRef.tsp @@ -0,0 +1,29 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.hiddenRef { + @procedure + @doc("Create a hidden ref in a repository") + op main(input: { + @doc("AT-URI of the repository") + @required + repo: atUri; + + @doc("Fork reference name") + @required + forkRef: string; + + @doc("Remote reference name") + @required + remoteRef: string; + }): { + @doc("Whether the hidden ref was created successfully") + @required + success: boolean; + + @doc("The created hidden ref name") + ref?: string; + + @doc("Error message if creation failed") + error?: string; + }; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/languages.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/languages.tsp new file mode 100644 index 0000000..7ecec5d --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/languages.tsp @@ -0,0 +1,59 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.languages { + @query + @errors(RepoNotFound, RefNotFound, InvalidRequest) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("Git reference (branch, tag, or commit SHA)") + ref?: string = "HEAD" + ): { + @doc("The git reference used") + @required + ref: string; + + @required + languages: Language[]; + + @doc("Total size of all analyzed files in bytes") + totalSize?: integer; + + @doc("Total number of files analyzed") + totalFiles?: integer; + }; + + model Language { + @doc("Programming language name") + @required + name: string; + + @doc("Total size of files in this language (bytes)") + @required + size: integer; + + @doc("Percentage of total codebase (0-100)") + @required + percentage: integer; + + @doc("Number of files in this language") + fileCount?: integer; + + @doc("Hex color code for this language") + color?: string; + + @doc("File extensions associated with this language") + extensions?: string[]; + } + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Git reference not found") + model RefNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/listSecrets.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/listSecrets.tsp new file mode 100644 index 0000000..ae0eed1 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/listSecrets.tsp @@ -0,0 +1,28 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.listSecrets { + @query + op main( + @required + repo: atUri + ): { + @required + secrets: Secret[]; + }; + + model Secret { + @required + repo: atUri; + + @required + @maxLength(50) + @minLength(1) + key: string; + + @required + createdAt: datetime; + + @required + createdBy: did; + } +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/log.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/log.tsp new file mode 100644 index 0000000..27f9408 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/log.tsp @@ -0,0 +1,39 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.log { + @query + @encoding("*/*") + @errors(RepoNotFound, RefNotFound, PathNotFound, InvalidRequest) + op main( + @doc("Repository identifier in format 'did:plc:.../repoName'") + @required + repo: string, + + @doc("Git reference (branch, tag, or commit SHA)") + @required + ref: string, + + @doc("Path to filter commits by") + path?: string = "", + + @doc("Maximum number of commits to return") + @minValue(1) + @maxValue(100) + limit?: integer = 50, + + @doc("Pagination cursor (commit SHA)") + cursor?: string + ): never; + + @doc("Repository not found or access denied") + model RepoNotFound {} + + @doc("Git reference not found") + model RefNotFound {} + + @doc("Path not found in repository") + model PathNotFound {} + + @doc("Invalid request parameters") + model InvalidRequest {} +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/merge.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/merge.tsp new file mode 100644 index 0000000..4f6791b --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/merge.tsp @@ -0,0 +1,35 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.merge { + @procedure + @doc("Merge a patch into a repository branch") + op main(input: { + @doc("DID of the repository owner") + @required + did: did; + + @doc("Name of the repository") + @required + name: string; + + @doc("Patch content to merge") + @required + patch: string; + + @doc("Target branch to merge into") + @required + branch: string; + + @doc("Author name for the merge commit") + authorName?: string; + + @doc("Author email for the merge commit") + authorEmail?: string; + + @doc("Additional commit message body") + commitBody?: string; + + @doc("Merge commit message") + commitMessage?: string; + }): void; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/pull.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/pull.tsp index ccf8131..1b4aa0b 100644 --- a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/pull.tsp +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/pull.tsp @@ -23,9 +23,9 @@ namespace sh.tangled.repo.pull { model Source { @required branch: string; + @required @minLength(40) @maxLength(40) - @required sha: string; repo?: atUri; diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/setDefaultBranch.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/setDefaultBranch.tsp new file mode 100644 index 0000000..d2d54dd --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/repo/setDefaultBranch.tsp @@ -0,0 +1,13 @@ +import "@typelex/emitter"; + +namespace sh.tangled.repo.setDefaultBranch { + @procedure + @doc("Set the default branch for a repository") + op main(input: { + @required + repo: atUri; + + @required + defaultBranch: string; + }): void; +} diff --git a/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/spindle/member.tsp b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/spindle/member.tsp new file mode 100644 index 0000000..e3d9dc3 --- /dev/null +++ b/packages/emitter/test/integration/lexicon-examples/input/sh/tangled/spindle/member.tsp @@ -0,0 +1,16 @@ +import "@typelex/emitter"; + +namespace sh.tangled.spindle.member { + @rec("tid") + model Main { + @required + subject: did; + + @doc("spindle instance that the subject is now a member of") + @required + instance: string; + + @required + createdAt: datetime; + } +} diff --git a/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot/knot.json b/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot.json similarity index 100% rename from packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot/knot.json rename to packages/emitter/test/integration/lexicon-examples/output/sh/tangled/knot.json diff --git a/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline/pipeline.json b/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline.json similarity index 100% rename from packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline/pipeline.json rename to packages/emitter/test/integration/lexicon-examples/output/sh/tangled/pipeline.json diff --git a/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/repo.json b/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo.json similarity index 100% rename from packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/repo.json rename to packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo.json diff --git a/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/defaultBranch.json b/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/setDefaultBranch.json similarity index 100% rename from packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/defaultBranch.json rename to packages/emitter/test/integration/lexicon-examples/output/sh/tangled/repo/setDefaultBranch.json diff --git a/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle/spindle.json b/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle.json similarity index 100% rename from packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle/spindle.json rename to packages/emitter/test/integration/lexicon-examples/output/sh/tangled/spindle.json diff --git a/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string/string.json b/packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string.json similarity index 100% rename from packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string/string.json rename to packages/emitter/test/integration/lexicon-examples/output/sh/tangled/string.json