@shivaedev/github 0.9.0 → 0.11.0

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.
Files changed (152) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +115 -7
  3. package/dist/GitHub.d.ts +279 -19
  4. package/dist/GitHub.d.ts.map +1 -1
  5. package/dist/GitHub.js +22 -10
  6. package/dist/GitHub.js.map +1 -1
  7. package/dist/adapters/manualRedirects.d.ts +4 -0
  8. package/dist/adapters/manualRedirects.d.ts.map +1 -0
  9. package/dist/adapters/manualRedirects.js +6 -0
  10. package/dist/adapters/manualRedirects.js.map +1 -0
  11. package/dist/adapters/mergeResponseHeaders.d.ts +3 -0
  12. package/dist/adapters/mergeResponseHeaders.d.ts.map +1 -0
  13. package/dist/adapters/mergeResponseHeaders.js +5 -0
  14. package/dist/adapters/mergeResponseHeaders.js.map +1 -0
  15. package/dist/adapters/resolveApiUrl.d.ts +2 -0
  16. package/dist/adapters/resolveApiUrl.d.ts.map +1 -0
  17. package/dist/adapters/resolveApiUrl.js +6 -0
  18. package/dist/adapters/resolveApiUrl.js.map +1 -0
  19. package/dist/adapters/signAppJwt.d.ts +5 -0
  20. package/dist/adapters/signAppJwt.d.ts.map +1 -0
  21. package/dist/adapters/signAppJwt.js +15 -0
  22. package/dist/adapters/signAppJwt.js.map +1 -0
  23. package/dist/adapters/verifySignature.d.ts +4 -0
  24. package/dist/adapters/verifySignature.d.ts.map +1 -0
  25. package/dist/adapters/verifySignature.js +13 -0
  26. package/dist/adapters/verifySignature.js.map +1 -0
  27. package/dist/adapters/zipEntries.d.ts +17 -0
  28. package/dist/adapters/zipEntries.d.ts.map +1 -0
  29. package/dist/adapters/zipEntries.js +57 -0
  30. package/dist/adapters/zipEntries.js.map +1 -0
  31. package/dist/appJwt.d.ts +2 -3
  32. package/dist/appJwt.d.ts.map +1 -1
  33. package/dist/appJwt.js +3 -12
  34. package/dist/appJwt.js.map +1 -1
  35. package/dist/appTokens.d.ts.map +1 -1
  36. package/dist/appTokens.js +2 -1
  37. package/dist/appTokens.js.map +1 -1
  38. package/dist/artifactErrors.d.ts +34 -0
  39. package/dist/artifactErrors.d.ts.map +1 -0
  40. package/dist/artifactErrors.js +27 -0
  41. package/dist/artifactErrors.js.map +1 -0
  42. package/dist/artifactExtraction.d.ts +12 -0
  43. package/dist/artifactExtraction.d.ts.map +1 -0
  44. package/dist/artifactExtraction.js +40 -0
  45. package/dist/artifactExtraction.js.map +1 -0
  46. package/dist/artifactPaths.d.ts +4 -0
  47. package/dist/artifactPaths.d.ts.map +1 -0
  48. package/dist/artifactPaths.js +35 -0
  49. package/dist/artifactPaths.js.map +1 -0
  50. package/dist/artifacts.d.ts +13 -8
  51. package/dist/artifacts.d.ts.map +1 -1
  52. package/dist/artifacts.js +18 -10
  53. package/dist/artifacts.js.map +1 -1
  54. package/dist/authenticatedRequest.d.ts +5 -5
  55. package/dist/authenticatedRequest.d.ts.map +1 -1
  56. package/dist/authenticatedRequest.js +6 -5
  57. package/dist/authenticatedRequest.js.map +1 -1
  58. package/dist/cache.d.ts.map +1 -1
  59. package/dist/cache.js +2 -1
  60. package/dist/cache.js.map +1 -1
  61. package/dist/checkRuns.d.ts +4 -4
  62. package/dist/checkRuns.d.ts.map +1 -1
  63. package/dist/checkRuns.js +5 -3
  64. package/dist/checkRuns.js.map +1 -1
  65. package/dist/errors.d.ts +8 -0
  66. package/dist/errors.d.ts.map +1 -1
  67. package/dist/errors.js +6 -0
  68. package/dist/errors.js.map +1 -1
  69. package/dist/gitSchemas.d.ts +195 -0
  70. package/dist/gitSchemas.d.ts.map +1 -0
  71. package/dist/gitSchemas.js +45 -0
  72. package/dist/gitSchemas.js.map +1 -0
  73. package/dist/installationClients.d.ts +291 -15
  74. package/dist/installationClients.d.ts.map +1 -1
  75. package/dist/installationClients.js +14 -5
  76. package/dist/installationClients.js.map +1 -1
  77. package/dist/markdown.d.ts +1 -0
  78. package/dist/markdown.d.ts.map +1 -1
  79. package/dist/markdown.js +3 -0
  80. package/dist/markdown.js.map +1 -1
  81. package/dist/markdownRows.d.ts +8 -1
  82. package/dist/markdownRows.d.ts.map +1 -1
  83. package/dist/markdownRows.js +39 -8
  84. package/dist/markdownRows.js.map +1 -1
  85. package/dist/pagedLists.d.ts +15 -0
  86. package/dist/pagedLists.d.ts.map +1 -0
  87. package/dist/pagedLists.js +16 -0
  88. package/dist/pagedLists.js.map +1 -0
  89. package/dist/repositoryAddress.d.ts +11 -0
  90. package/dist/repositoryAddress.d.ts.map +1 -0
  91. package/dist/repositoryAddress.js +23 -0
  92. package/dist/repositoryAddress.js.map +1 -0
  93. package/dist/repositoryReads.d.ts +262 -0
  94. package/dist/repositoryReads.d.ts.map +1 -0
  95. package/dist/repositoryReads.js +30 -0
  96. package/dist/repositoryReads.js.map +1 -0
  97. package/dist/repositorySchemas.d.ts +73 -0
  98. package/dist/repositorySchemas.d.ts.map +1 -0
  99. package/dist/repositorySchemas.js +38 -0
  100. package/dist/repositorySchemas.js.map +1 -0
  101. package/dist/representations.d.ts +5 -5
  102. package/dist/representations.d.ts.map +1 -1
  103. package/dist/representations.js +3 -2
  104. package/dist/representations.js.map +1 -1
  105. package/dist/requests.d.ts +10 -6
  106. package/dist/requests.d.ts.map +1 -1
  107. package/dist/requests.js +11 -6
  108. package/dist/requests.js.map +1 -1
  109. package/dist/status.d.ts +2 -2
  110. package/dist/status.d.ts.map +1 -1
  111. package/dist/status.js +2 -3
  112. package/dist/status.js.map +1 -1
  113. package/dist/stickyComments.d.ts +1 -1
  114. package/dist/verifyWebhook.d.ts +2 -2
  115. package/dist/verifyWebhook.d.ts.map +1 -1
  116. package/dist/verifyWebhook.js +3 -10
  117. package/dist/verifyWebhook.js.map +1 -1
  118. package/dist/viewerRepositoryAccess.d.ts +46 -0
  119. package/dist/viewerRepositoryAccess.d.ts.map +1 -0
  120. package/dist/viewerRepositoryAccess.js +54 -0
  121. package/dist/viewerRepositoryAccess.js.map +1 -0
  122. package/package.json +13 -6
  123. package/src/GitHub.ts +34 -15
  124. package/src/adapters/manualRedirects.ts +6 -0
  125. package/src/adapters/mergeResponseHeaders.ts +8 -0
  126. package/src/adapters/resolveApiUrl.ts +5 -0
  127. package/src/adapters/signAppJwt.ts +16 -0
  128. package/src/adapters/verifySignature.ts +13 -0
  129. package/src/adapters/zipEntries.ts +69 -0
  130. package/src/appJwt.ts +3 -12
  131. package/src/appTokens.ts +2 -1
  132. package/src/artifactErrors.ts +26 -0
  133. package/src/artifactExtraction.ts +62 -0
  134. package/src/artifactPaths.ts +36 -0
  135. package/src/artifacts.ts +35 -40
  136. package/src/authenticatedRequest.ts +8 -9
  137. package/src/cache.ts +2 -1
  138. package/src/checkRuns.ts +5 -5
  139. package/src/errors.ts +6 -0
  140. package/src/gitSchemas.ts +52 -0
  141. package/src/installationClients.ts +18 -12
  142. package/src/markdown.ts +4 -0
  143. package/src/markdownRows.ts +54 -9
  144. package/src/pagedLists.ts +40 -0
  145. package/src/repositoryAddress.ts +32 -0
  146. package/src/repositoryReads.ts +62 -0
  147. package/src/repositorySchemas.ts +43 -0
  148. package/src/representations.ts +6 -5
  149. package/src/requests.ts +12 -14
  150. package/src/status.ts +3 -3
  151. package/src/verifyWebhook.ts +4 -10
  152. package/src/viewerRepositoryAccess.ts +66 -0
@@ -0,0 +1,16 @@
1
+ import { Effect, Option, Schema, Stream } from "effect";
2
+ export function decodedPages(client, path, schema, options = {}) {
3
+ const settings = typeof options === "number" ? { responseByteLimit: options } : options;
4
+ const decode = Schema.decodeUnknownEffect(schema);
5
+ return Stream.unwrap(client.list(path, settings.beforeRequest, settings.responseByteLimit)).pipe(Stream.mapEffect((page) => Effect.gen(function* () {
6
+ const body = yield* page.decode(Schema.Unknown);
7
+ const source = settings.arrayKey === undefined
8
+ ? body
9
+ : (yield* Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown))(body))[settings.arrayKey];
10
+ const values = yield* Schema.decodeUnknownEffect(Schema.Array(Schema.Unknown))(source);
11
+ const decoded = yield* Effect.forEach(values, (value) => decode(value).pipe(Effect.map(Option.some), Effect.catchTag("SchemaError", (error) => (settings.onDecodeError === "skip" ? Effect.succeed(Option.none()) : Effect.fail(error)))));
12
+ const items = decoded.flatMap(Option.toArray);
13
+ return { hasNext: page.hasNext, items, skipped: values.length - items.length };
14
+ })));
15
+ }
16
+ //# sourceMappingURL=pagedLists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagedLists.js","sourceRoot":"","sources":["../src/pagedLists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAWxD,MAAM,UAAU,YAAY,CAC3B,MAAuB,EACvB,IAAY,EACZ,MAAe,EACf,OAAO,GAA4B,EAAE;IAErC,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAC/F,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GACX,QAAQ,CAAC,QAAQ,KAAK,SAAS;YAC9B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/G,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACvD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACnI,CACD,CAAC;QACF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAChF,CAAC,CAAC,CACF,CACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Result } from "effect";
2
+ import { GitHubAddressInvalid } from "./errors.ts";
3
+ export interface RepositoryAddress {
4
+ readonly kind: "remote" | "shorthand" | "pull-request";
5
+ readonly name: string;
6
+ readonly number: number | undefined;
7
+ readonly owner: string;
8
+ readonly repository: string;
9
+ }
10
+ export declare function parseRepositoryAddress(address: string): Result.Result<RepositoryAddress, GitHubAddressInvalid>;
11
+ //# sourceMappingURL=repositoryAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositoryAddress.d.ts","sourceRoot":"","sources":["../src/repositoryAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAC;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAMD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAgB9G"}
@@ -0,0 +1,23 @@
1
+ import { Result } from "effect";
2
+ import { GitHubAddressInvalid } from "./errors.js";
3
+ const REPOSITORY = /^(?:(?<remote>(?:git\+)?(?:https?:\/\/github\.com\/|ssh:\/\/git@github\.com\/|git:\/\/github\.com\/|git@github\.com:))|github:)?(?<owner>[A-Za-z0-9-]+)\/(?<name>[\w.-]+?)(?:\.git)?\/?$/u;
4
+ const PULL_REQUEST = /^https:\/\/github\.com\/(?<owner>[A-Za-z0-9-]+)\/(?<name>[\w.-]+)\/pull\/(?<number>[1-9]\d*)$/u;
5
+ export function parseRepositoryAddress(address) {
6
+ const input = address.trim();
7
+ const groups = (PULL_REQUEST.exec(input) ?? REPOSITORY.exec(input))?.groups;
8
+ const owner = groups?.owner;
9
+ const name = groups?.name;
10
+ const number = groups?.number === undefined ? undefined : Number(groups.number);
11
+ if (owner === undefined || name === undefined || name === "." || name === ".." || (number !== undefined && !Number.isSafeInteger(number))) {
12
+ return Result.fail(new GitHubAddressInvalid({}));
13
+ }
14
+ let kind = "shorthand";
15
+ if (number !== undefined) {
16
+ kind = "pull-request";
17
+ }
18
+ else if (groups?.remote !== undefined) {
19
+ kind = "remote";
20
+ }
21
+ return Result.succeed({ kind, name, number, owner, repository: `${owner}/${name}` });
22
+ }
23
+ //# sourceMappingURL=repositoryAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositoryAddress.js","sourceRoot":"","sources":["../src/repositoryAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAUnD,MAAM,UAAU,GACf,2LAA2L,CAAC;AAC7L,MAAM,YAAY,GAAG,gGAAgG,CAAC;AAEtH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;IAC5E,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChF,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC3I,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,GAA8B,WAAW,CAAC;IAClD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,GAAG,cAAc,CAAC;IACvB,CAAC;SAAM,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,IAAI,GAAG,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,262 @@
1
+ import { Effect } from "effect";
2
+ import type { ServiceUnavailable } from "@shivaedev/errors/taxonomy.ts";
3
+ import { type ListOptions } from "#pagedLists.ts";
4
+ import type { Representations } from "#representations.ts";
5
+ export interface RepositoryListOptions<E = ServiceUnavailable> extends ListOptions<E> {
6
+ readonly query?: Readonly<Record<string, string | number | boolean | undefined>>;
7
+ }
8
+ export declare function repositoryReads(client: Representations): {
9
+ compareCommits: (owner: string, repo: string, base: string, head: string, byteLimit?: number) => Effect.Effect<{
10
+ readonly aheadBy: number;
11
+ readonly behindBy: number;
12
+ readonly commits: readonly {
13
+ readonly author: {
14
+ readonly avatarUrl: string;
15
+ readonly htmlUrl: string;
16
+ readonly id: number;
17
+ readonly login: string;
18
+ readonly type: string;
19
+ } | null;
20
+ readonly commit: {
21
+ readonly author: {
22
+ readonly date: string;
23
+ readonly email: string;
24
+ readonly name: string;
25
+ } | null;
26
+ readonly committer: {
27
+ readonly date: string;
28
+ readonly email: string;
29
+ readonly name: string;
30
+ } | null;
31
+ readonly message: string;
32
+ readonly tree: {
33
+ readonly sha: string;
34
+ readonly url: string;
35
+ };
36
+ };
37
+ readonly committer: {
38
+ readonly avatarUrl: string;
39
+ readonly htmlUrl: string;
40
+ readonly id: number;
41
+ readonly login: string;
42
+ readonly type: string;
43
+ } | null;
44
+ readonly htmlUrl: string;
45
+ readonly parents: readonly {
46
+ readonly sha: string;
47
+ readonly url: string;
48
+ }[];
49
+ readonly sha: string;
50
+ }[];
51
+ readonly files?: readonly {
52
+ readonly additions: number;
53
+ readonly changes: number;
54
+ readonly deletions: number;
55
+ readonly filename: string;
56
+ readonly patch?: string | undefined;
57
+ readonly previousFilename?: string | undefined;
58
+ readonly sha: string;
59
+ readonly status: string;
60
+ }[] | undefined;
61
+ readonly status: "ahead" | "behind" | "diverged" | "identical";
62
+ readonly totalCommits: number;
63
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>;
64
+ getCollaboratorPermission: (owner: string, repo: string, username: string, byteLimit?: number) => Effect.Effect<{
65
+ readonly permission: string;
66
+ readonly roleName: string;
67
+ readonly user: {
68
+ readonly avatarUrl: string;
69
+ readonly htmlUrl: string;
70
+ readonly id: number;
71
+ readonly login: string;
72
+ readonly type: string;
73
+ };
74
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>;
75
+ getCommit: (owner: string, repo: string, ref: string, byteLimit?: number) => Effect.Effect<{
76
+ readonly author: {
77
+ readonly avatarUrl: string;
78
+ readonly htmlUrl: string;
79
+ readonly id: number;
80
+ readonly login: string;
81
+ readonly type: string;
82
+ } | null;
83
+ readonly commit: {
84
+ readonly author: {
85
+ readonly date: string;
86
+ readonly email: string;
87
+ readonly name: string;
88
+ } | null;
89
+ readonly committer: {
90
+ readonly date: string;
91
+ readonly email: string;
92
+ readonly name: string;
93
+ } | null;
94
+ readonly message: string;
95
+ readonly tree: {
96
+ readonly sha: string;
97
+ readonly url: string;
98
+ };
99
+ };
100
+ readonly committer: {
101
+ readonly avatarUrl: string;
102
+ readonly htmlUrl: string;
103
+ readonly id: number;
104
+ readonly login: string;
105
+ readonly type: string;
106
+ } | null;
107
+ readonly htmlUrl: string;
108
+ readonly parents: readonly {
109
+ readonly sha: string;
110
+ readonly url: string;
111
+ }[];
112
+ readonly sha: string;
113
+ readonly files?: readonly {
114
+ readonly additions: number;
115
+ readonly changes: number;
116
+ readonly deletions: number;
117
+ readonly filename: string;
118
+ readonly patch?: string | undefined;
119
+ readonly previousFilename?: string | undefined;
120
+ readonly sha: string;
121
+ readonly status: string;
122
+ }[] | undefined;
123
+ readonly stats: {
124
+ readonly additions: number;
125
+ readonly deletions: number;
126
+ readonly total: number;
127
+ };
128
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>;
129
+ getIssue: (owner: string, repo: string, number: number, byteLimit?: number) => Effect.Effect<{
130
+ readonly body: string | null;
131
+ readonly closedAt: string | null;
132
+ readonly createdAt: string;
133
+ readonly htmlUrl: string;
134
+ readonly id: number;
135
+ readonly labels: readonly (string | {
136
+ readonly name?: string | undefined;
137
+ })[];
138
+ readonly number: number;
139
+ readonly pullRequest?: {
140
+ readonly url: string;
141
+ } | undefined;
142
+ readonly state: "closed" | "open";
143
+ readonly title: string;
144
+ readonly updatedAt: string;
145
+ readonly user: {
146
+ readonly avatarUrl: string;
147
+ readonly htmlUrl: string;
148
+ readonly id: number;
149
+ readonly login: string;
150
+ readonly type: string;
151
+ } | null;
152
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>;
153
+ getTree: (owner: string, repo: string, sha: string, options?: {
154
+ readonly recursive?: boolean;
155
+ readonly responseByteLimit?: number | undefined;
156
+ }) => Effect.Effect<{
157
+ readonly sha: string;
158
+ readonly tree: readonly {
159
+ readonly mode: string;
160
+ readonly path: string;
161
+ readonly sha: string;
162
+ readonly size?: number | undefined;
163
+ readonly type: "blob" | "commit" | "tree";
164
+ readonly url?: string | undefined;
165
+ }[];
166
+ readonly truncated: boolean;
167
+ readonly url: string;
168
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>;
169
+ getUser: (username?: string, byteLimit?: number) => Effect.Effect<{
170
+ readonly avatarUrl: string;
171
+ readonly htmlUrl: string;
172
+ readonly id: number;
173
+ readonly login: string;
174
+ readonly type: string;
175
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>;
176
+ listCommits: <E = ServiceUnavailable>(owner: string, repo: string, options?: RepositoryListOptions<E>) => Effect.Effect<import("effect/Stream").Stream<{
177
+ hasNext: boolean;
178
+ items: {
179
+ readonly author: {
180
+ readonly avatarUrl: string;
181
+ readonly htmlUrl: string;
182
+ readonly id: number;
183
+ readonly login: string;
184
+ readonly type: string;
185
+ } | null;
186
+ readonly commit: {
187
+ readonly author: {
188
+ readonly date: string;
189
+ readonly email: string;
190
+ readonly name: string;
191
+ } | null;
192
+ readonly committer: {
193
+ readonly date: string;
194
+ readonly email: string;
195
+ readonly name: string;
196
+ } | null;
197
+ readonly message: string;
198
+ readonly tree: {
199
+ readonly sha: string;
200
+ readonly url: string;
201
+ };
202
+ };
203
+ readonly committer: {
204
+ readonly avatarUrl: string;
205
+ readonly htmlUrl: string;
206
+ readonly id: number;
207
+ readonly login: string;
208
+ readonly type: string;
209
+ } | null;
210
+ readonly htmlUrl: string;
211
+ readonly parents: readonly {
212
+ readonly sha: string;
213
+ readonly url: string;
214
+ }[];
215
+ readonly sha: string;
216
+ }[];
217
+ skipped: number;
218
+ }, E | import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("effect/Cause").NoSuchElementError | import("@shivaedev/http/errors.ts").PaginationLinkError | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>, never, never>;
219
+ listIssues: <E = ServiceUnavailable>(owner: string, repo: string, options?: RepositoryListOptions<E>) => Effect.Effect<import("effect/Stream").Stream<{
220
+ hasNext: boolean;
221
+ items: {
222
+ readonly body: string | null;
223
+ readonly closedAt: string | null;
224
+ readonly createdAt: string;
225
+ readonly htmlUrl: string;
226
+ readonly id: number;
227
+ readonly labels: readonly (string | {
228
+ readonly name?: string | undefined;
229
+ })[];
230
+ readonly number: number;
231
+ readonly pullRequest?: {
232
+ readonly url: string;
233
+ } | undefined;
234
+ readonly state: "closed" | "open";
235
+ readonly title: string;
236
+ readonly updatedAt: string;
237
+ readonly user: {
238
+ readonly avatarUrl: string;
239
+ readonly htmlUrl: string;
240
+ readonly id: number;
241
+ readonly login: string;
242
+ readonly type: string;
243
+ } | null;
244
+ }[];
245
+ skipped: number;
246
+ }, E | import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("effect/Cause").NoSuchElementError | import("@shivaedev/http/errors.ts").PaginationLinkError | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>, never, never>;
247
+ listPullRequestFiles: <E = ServiceUnavailable>(owner: string, repo: string, number: number, options?: RepositoryListOptions<E>) => Effect.Effect<import("effect/Stream").Stream<{
248
+ hasNext: boolean;
249
+ items: {
250
+ readonly additions: number;
251
+ readonly changes: number;
252
+ readonly deletions: number;
253
+ readonly filename: string;
254
+ readonly patch?: string | undefined;
255
+ readonly previousFilename?: string | undefined;
256
+ readonly sha: string;
257
+ readonly status: string;
258
+ }[];
259
+ skipped: number;
260
+ }, E | import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("effect/Cause").NoSuchElementError | import("@shivaedev/http/errors.ts").PaginationLinkError | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("effect/Schema").SchemaError, never>, never, never>;
261
+ };
262
+ //# sourceMappingURL=repositoryReads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositoryReads.d.ts","sourceRoot":"","sources":["../src/repositoryReads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,kBAAkB,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACpF,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;CACjF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe;IAcrD,cAAc,UAAU,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,cAAc,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAI5F,yBAAyB,UAAU,MAAM,QAAQ,MAAM,YAAY,MAAM,cAAc,MAAM;;;;;;;;;;;IAI7F,SAAS,UAAU,MAAM,QAAQ,MAAM,OAAO,MAAM,cAAc,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAExE,QAAQ,UAAU,MAAM,QAAQ,MAAM,UAAU,MAAM,cAAc,MAAM;;;;;;;;;;;;;;;;;;;;;;;;IAE1E,OAAO,UACC,MAAM,QACP,MAAM,OACP,MAAM,YACD;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;;;;;;;;;;;;;IAS5F,OAAO,cAAc,MAAM,cAAc,MAAM;;;;;;;IAI/C,WAAW,GAAG,CAAC,GAAG,kBAAkB,SAAS,MAAM,QAAQ,MAAM,YAAY,qBAAqB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAErG,UAAU,GAAG,CAAC,GAAG,kBAAkB,SAAS,MAAM,QAAQ,MAAM,YAAY,qBAAqB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEpG,oBAAoB,GAAG,CAAC,GAAG,kBAAkB,SAAS,MAAM,QAAQ,MAAM,UAAU,MAAM,YAAY,qBAAqB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;EAG/H"}
@@ -0,0 +1,30 @@
1
+ import { Effect } from "effect";
2
+ import { Commit, CommitDetail, Comparison, GitTree } from "#gitSchemas.ts";
3
+ import { decodedPages } from "#pagedLists.ts";
4
+ import { CollaboratorPermission, Issue, PullRequestFile, User } from "#repositorySchemas.ts";
5
+ export function repositoryReads(client) {
6
+ function repository(owner, repo) {
7
+ return `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`;
8
+ }
9
+ function pathWithQuery(path, options) {
10
+ const query = new URLSearchParams({ "per_page": "100" });
11
+ for (const [key, value] of Object.entries(options?.query ?? {})) {
12
+ if (value !== undefined) {
13
+ query.set(key, String(value));
14
+ }
15
+ }
16
+ return `${path}?${query}`;
17
+ }
18
+ return {
19
+ compareCommits: (owner, repo, base, head, byteLimit) => Effect.flatMap(client.read(`${repository(owner, repo)}/compare/${encodeURIComponent(base)}...${encodeURIComponent(head)}`, byteLimit), (page) => page.decode(Comparison)),
20
+ getCollaboratorPermission: (owner, repo, username, byteLimit) => Effect.flatMap(client.read(`${repository(owner, repo)}/collaborators/${encodeURIComponent(username)}/permission`, byteLimit), (page) => page.decode(CollaboratorPermission)),
21
+ getCommit: (owner, repo, ref, byteLimit) => Effect.flatMap(client.read(`${repository(owner, repo)}/commits/${encodeURIComponent(ref)}`, byteLimit), (page) => page.decode(CommitDetail)),
22
+ getIssue: (owner, repo, number, byteLimit) => Effect.flatMap(client.read(`${repository(owner, repo)}/issues/${number}`, byteLimit), (page) => page.decode(Issue)),
23
+ getTree: (owner, repo, sha, options) => Effect.flatMap(client.read(`${repository(owner, repo)}/git/trees/${encodeURIComponent(sha)}${options?.recursive ? "?recursive=1" : ""}`, options?.responseByteLimit), (page) => page.decode(GitTree)),
24
+ getUser: (username, byteLimit) => Effect.flatMap(client.read(username === undefined ? "/user" : `/users/${encodeURIComponent(username)}`, byteLimit), (page) => page.decode(User)),
25
+ listCommits: (owner, repo, options) => Effect.succeed(decodedPages(client, pathWithQuery(`${repository(owner, repo)}/commits`, options), Commit, options)),
26
+ listIssues: (owner, repo, options) => Effect.succeed(decodedPages(client, pathWithQuery(`${repository(owner, repo)}/issues`, options), Issue, options)),
27
+ listPullRequestFiles: (owner, repo, number, options) => Effect.succeed(decodedPages(client, pathWithQuery(`${repository(owner, repo)}/pulls/${number}/files`, options), PullRequestFile, options)),
28
+ };
29
+ }
30
+ //# sourceMappingURL=repositoryReads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositoryReads.js","sourceRoot":"","sources":["../src/repositoryReads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { Schema } from "effect";
2
+ export declare const User: Schema.encodeKeys<Schema.Struct<{
3
+ readonly avatarUrl: Schema.String;
4
+ readonly htmlUrl: Schema.String;
5
+ readonly id: Schema.Number;
6
+ readonly login: Schema.String;
7
+ readonly type: Schema.String;
8
+ }>, {
9
+ readonly avatarUrl: "avatar_url";
10
+ readonly htmlUrl: "html_url";
11
+ }>;
12
+ export declare const Issue: Schema.encodeKeys<Schema.Struct<{
13
+ readonly body: Schema.NullOr<Schema.String>;
14
+ readonly closedAt: Schema.NullOr<Schema.String>;
15
+ readonly createdAt: Schema.String;
16
+ readonly htmlUrl: Schema.String;
17
+ readonly id: Schema.Number;
18
+ readonly labels: Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Struct<{
19
+ readonly name: Schema.optional<Schema.String>;
20
+ }>]>>;
21
+ readonly number: Schema.Number;
22
+ readonly pullRequest: Schema.optional<Schema.Struct<{
23
+ readonly url: Schema.String;
24
+ }>>;
25
+ readonly state: Schema.Literals<readonly ["open", "closed"]>;
26
+ readonly title: Schema.String;
27
+ readonly updatedAt: Schema.String;
28
+ readonly user: Schema.NullOr<Schema.encodeKeys<Schema.Struct<{
29
+ readonly avatarUrl: Schema.String;
30
+ readonly htmlUrl: Schema.String;
31
+ readonly id: Schema.Number;
32
+ readonly login: Schema.String;
33
+ readonly type: Schema.String;
34
+ }>, {
35
+ readonly avatarUrl: "avatar_url";
36
+ readonly htmlUrl: "html_url";
37
+ }>>;
38
+ }>, {
39
+ readonly closedAt: "closed_at";
40
+ readonly createdAt: "created_at";
41
+ readonly htmlUrl: "html_url";
42
+ readonly pullRequest: "pull_request";
43
+ readonly updatedAt: "updated_at";
44
+ }>;
45
+ export declare const PullRequestFile: Schema.encodeKeys<Schema.Struct<{
46
+ readonly additions: Schema.Number;
47
+ readonly changes: Schema.Number;
48
+ readonly deletions: Schema.Number;
49
+ readonly filename: Schema.String;
50
+ readonly patch: Schema.optional<Schema.String>;
51
+ readonly previousFilename: Schema.optional<Schema.String>;
52
+ readonly sha: Schema.String;
53
+ readonly status: Schema.String;
54
+ }>, {
55
+ readonly previousFilename: "previous_filename";
56
+ }>;
57
+ export declare const CollaboratorPermission: Schema.encodeKeys<Schema.Struct<{
58
+ readonly permission: Schema.String;
59
+ readonly roleName: Schema.String;
60
+ readonly user: Schema.encodeKeys<Schema.Struct<{
61
+ readonly avatarUrl: Schema.String;
62
+ readonly htmlUrl: Schema.String;
63
+ readonly id: Schema.Number;
64
+ readonly login: Schema.String;
65
+ readonly type: Schema.String;
66
+ }>, {
67
+ readonly avatarUrl: "avatar_url";
68
+ readonly htmlUrl: "html_url";
69
+ }>;
70
+ }>, {
71
+ readonly roleName: "role_name";
72
+ }>;
73
+ //# sourceMappingURL=repositorySchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositorySchemas.d.ts","sourceRoot":"","sources":["../src/repositorySchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,IAAI;;;;;;;;;EAM2D,CAAC;AAE7E,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAejB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;EASyC,CAAC;AAEtE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAIkB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { Schema } from "effect";
2
+ export const User = Schema.Struct({
3
+ avatarUrl: Schema.String,
4
+ htmlUrl: Schema.String,
5
+ id: Schema.Number,
6
+ login: Schema.String,
7
+ type: Schema.String,
8
+ }).pipe(Schema.encodeKeys({ avatarUrl: "avatar_url", htmlUrl: "html_url" }));
9
+ export const Issue = Schema.Struct({
10
+ body: Schema.NullOr(Schema.String),
11
+ closedAt: Schema.NullOr(Schema.String),
12
+ createdAt: Schema.String,
13
+ htmlUrl: Schema.String,
14
+ id: Schema.Number,
15
+ labels: Schema.Array(Schema.Union([Schema.String, Schema.Struct({ name: Schema.optional(Schema.String) })])),
16
+ number: Schema.Number,
17
+ pullRequest: Schema.optional(Schema.Struct({ url: Schema.String })),
18
+ state: Schema.Literals(["open", "closed"]),
19
+ title: Schema.String,
20
+ updatedAt: Schema.String,
21
+ user: Schema.NullOr(User),
22
+ }).pipe(Schema.encodeKeys({ closedAt: "closed_at", createdAt: "created_at", htmlUrl: "html_url", pullRequest: "pull_request", updatedAt: "updated_at" }));
23
+ export const PullRequestFile = Schema.Struct({
24
+ additions: Schema.Number,
25
+ changes: Schema.Number,
26
+ deletions: Schema.Number,
27
+ filename: Schema.String,
28
+ patch: Schema.optional(Schema.String),
29
+ previousFilename: Schema.optional(Schema.String),
30
+ sha: Schema.String,
31
+ status: Schema.String,
32
+ }).pipe(Schema.encodeKeys({ previousFilename: "previous_filename" }));
33
+ export const CollaboratorPermission = Schema.Struct({
34
+ permission: Schema.String,
35
+ roleName: Schema.String,
36
+ user: User,
37
+ }).pipe(Schema.encodeKeys({ roleName: "role_name" }));
38
+ //# sourceMappingURL=repositorySchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositorySchemas.js","sourceRoot":"","sources":["../src/repositorySchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;CACnB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;CACzB,CAAC,CAAC,IAAI,CACN,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAChJ,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAChD,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,IAAI,EAAE,IAAI;CACV,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC"}
@@ -2,18 +2,18 @@ import { Effect, Stream } from "effect";
2
2
  import { HttpClientRequest } from "effect/http";
3
3
  import type { ServiceUnavailable } from "@shivaedev/errors/taxonomy.ts";
4
4
  import type { requests } from "#requests.ts";
5
- export declare function representations(apiUrl: string, request: ReturnType<typeof requests>, resource: (path: string) => string, responseByteLimit?: number): {
5
+ export declare function representations(apiUrl: string, request: Effect.Success<ReturnType<typeof requests>>, resource: (path: string) => string, responseByteLimit?: number): {
6
6
  get: (path: string, accept?: string) => HttpClientRequest.HttpClientRequest;
7
- list: (path: string, beforeRequest?: (resource: string) => Effect.Effect<void, ServiceUnavailable>, byteLimit?: number) => Effect.Effect<Stream.Stream<{
7
+ list: <E = ServiceUnavailable>(path: string, beforeRequest?: (resource: string) => Effect.Effect<void, E>, byteLimit?: number) => Effect.Effect<Stream.Stream<{
8
8
  decode: <TSchema extends import("effect/Schema").Constraint>(schema: TSchema) => Effect.Effect<TSchema["Type"], import("effect/Schema").SchemaError, TSchema["DecodingServices"]>;
9
9
  hasNext: boolean;
10
- }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("effect/Cause").NoSuchElementError | import("@shivaedev/http/errors.ts").PaginationLinkError | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | ServiceUnavailable | import("@shivaedev/http/errors.ts").RemoteStatusError, never>, never, never>;
10
+ }, E | import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("effect/Cause").NoSuchElementError | import("@shivaedev/http/errors.ts").PaginationLinkError | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge, never>, never, never>;
11
11
  read: (path: string, byteLimit?: number) => Effect.Effect<{
12
12
  decode: <TSchema extends import("effect/Schema").Constraint>(schema: TSchema) => Effect.Effect<TSchema["Type"], import("effect/Schema").SchemaError, TSchema["DecodingServices"]>;
13
- }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("@shivaedev/http/errors.ts").RemoteStatusError, never>;
13
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge, never>;
14
14
  write: (method: "POST" | "PATCH" | "PUT" | "DELETE", path: string, body?: unknown, byteLimit?: number) => Effect.Effect<{
15
15
  decode: <TSchema extends import("effect/Schema").Constraint>(schema: TSchema) => Effect.Effect<TSchema["Type"], import("effect/Schema").SchemaError, TSchema["DecodingServices"]>;
16
- }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("effect/http/HttpBody").HttpBodyError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge | import("@shivaedev/http/errors.ts").RemoteStatusError, never>;
16
+ }, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | import("./errors.ts").GitHubTransportError | import("effect/http/HttpBody").HttpBodyError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | import("@shivaedev/http/errors.ts").ResponseBodyTooLarge, never>;
17
17
  };
18
18
  export type Representations = Omit<ReturnType<typeof representations>, "get">;
19
19
  //# sourceMappingURL=representations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"representations.d.ts","sourceRoot":"","sources":["../src/representations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAc,iBAAiB,EAA2B,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAKxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,wBAAgB,eAAe,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,EACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAClC,iBAAiB,SAAc;gBAEZ,MAAM;iBAOlB,MAAM,kBACI,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC;;;;iBAL5C,MAAM;;;oBA6BH,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,QAAQ,MAAM,SAAS,OAAO;;;EAQtG;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"representations.d.ts","sourceRoot":"","sources":["../src/representations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAc,iBAAiB,EAA2B,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAMxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,wBAAgB,eAAe,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,EACpD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAClC,iBAAiB,SAAc;gBAEZ,MAAM;WAMI,CAAC,6BACvB,MAAM,kBACI,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;;;;iBAL3B,MAAM;;;oBA6BH,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,QAAQ,MAAM,SAAS,OAAO;;;EAQtG;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC"}
@@ -2,10 +2,11 @@ import { Effect, Stream } from "effect";
2
2
  import { HttpClient, HttpClientRequest } from "effect/http";
3
3
  import { nextLink } from "@shivaedev/http/nextLink.ts";
4
4
  import { paginate } from "@shivaedev/http/paginate.ts";
5
+ import { resolveApiUrl } from "#adapters/resolveApiUrl.ts";
5
6
  import { jsonResponse } from "#json.ts";
6
7
  export function representations(apiUrl, request, resource, responseByteLimit = 1024 * 1024) {
7
8
  function get(path, accept = "application/vnd.github+json") {
8
- return HttpClientRequest.get(new URL(path, apiUrl).href, { headers: { Accept: accept } });
9
+ return HttpClientRequest.get(resolveApiUrl(apiUrl, path), { headers: { Accept: accept } });
9
10
  }
10
11
  function readRepresentation(path, byteLimit = responseByteLimit) {
11
12
  return Effect.map(request(get(path), byteLimit), jsonResponse);
@@ -22,7 +23,7 @@ export function representations(apiUrl, request, resource, responseByteLimit = 1
22
23
  return Effect.succeed(paginate(client, get(path)).pipe(Stream.mapEffect((response) => Effect.fromNullishOr(entries.get(response))), Stream.map((entry) => ({ ...jsonResponse(entry), hasNext: nextLink(entry.response.headers.link) !== undefined }))));
23
24
  }
24
25
  function writeRepresentation(method, path, body, byteLimit = responseByteLimit) {
25
- return HttpClientRequest.make(method)(new URL(path, apiUrl).href, { headers: { Accept: "application/vnd.github+json" } }).pipe((input) => (body === undefined ? Effect.succeed(input) : HttpClientRequest.bodyJson(input, body)), Effect.flatMap((input) => request(input, byteLimit)), Effect.map(jsonResponse));
26
+ return HttpClientRequest.make(method)(resolveApiUrl(apiUrl, path), { headers: { Accept: "application/vnd.github+json" } }).pipe((input) => (body === undefined ? Effect.succeed(input) : HttpClientRequest.bodyJson(input, body)), Effect.flatMap((input) => request(input, byteLimit)), Effect.map(jsonResponse));
26
27
  }
27
28
  return { get, list: listRepresentations, read: readRepresentation, write: writeRepresentation };
28
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"representations.js","sourceRoot":"","sources":["../src/representations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"representations.js","sourceRoot":"","sources":["../src/representations.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,14 @@
1
1
  import { Effect } from "effect";
2
2
  import { HttpClient, HttpClientRequest } from "effect/http";
3
3
  import { ResponseBodyTooLarge } from "@shivaedev/http/errors.ts";
4
- import { type CachedResponse } from "./cache.ts";
5
- import { GitHubTransportError } from "./errors.ts";
6
- import type { GitHubToken } from "./GitHubToken.ts";
7
- import type { RateLimits } from "./rateLimits.ts";
8
- import type { TokenRefresh } from "./TokenRefresh.ts";
9
- export declare function requests(client: HttpClient.HttpClient, token: GitHubToken["Service"], rates: RateLimits, refresh?: typeof TokenRefresh.Service): (input: HttpClientRequest.HttpClientRequest, limit: number) => Effect.Effect<CachedResponse, import("./errors.ts").GitHubAppError | import("./errors.ts").GitHubConversationLocked | import("./errors.ts").GitHubPermissionDenied | import("./errors.ts").GitHubRateLimited | GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | ResponseBodyTooLarge | import("@shivaedev/http/errors.ts").RemoteStatusError, never>;
4
+ import { type CachedResponse } from "#cache.ts";
5
+ import { GitHubTransportError } from "#errors.ts";
6
+ import { GitHubToken } from "#GitHubToken.ts";
7
+ export declare const requests: (rates: {
8
+ blocked: Map<string, import("#errors.ts").GitHubRateLimited>;
9
+ failures: Map<string, number>;
10
+ observations: Map<string, import("#rateLimits.ts").RateLimitObservation>;
11
+ observe(response: import("effect/http/HttpClientResponse").HttpClientResponse): string;
12
+ resource: (path: string) => string;
13
+ }) => Effect.Effect<(input: HttpClientRequest.HttpClientRequest, limit: number) => Effect.Effect<CachedResponse, import("#errors.ts").GitHubAppError | import("#errors.ts").GitHubConversationLocked | import("#errors.ts").GitHubPermissionDenied | import("#errors.ts").GitHubRateLimited | GitHubTransportError | import("@shivaedev/http/errors.ts").InvalidBodyLimit | import("@shivaedev/http/errors.ts").RemoteGone | import("@shivaedev/http/errors.ts").RemoteHttpError | import("@shivaedev/http/errors.ts").RemoteNotFound | import("@shivaedev/http/errors.ts").RemoteRateLimited | import("@shivaedev/http/errors.ts").RemoteUnauthorized | ResponseBodyTooLarge, never>, never, GitHubToken | HttpClient.HttpClient>;
10
14
  //# sourceMappingURL=requests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,KAAK,cAAc,EAAsC,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,wBAAgB,QAAQ,CACvB,MAAM,EAAE,UAAU,CAAC,UAAU,EAC7B,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAC7B,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,OAAO,YAAY,CAAC,OAAmB,obA6BhD"}
1
+ {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,KAAK,cAAc,EAAsC,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9C,eAAO,MAAM,QAAQ;;;;;;ksBA+BnB,CAAC"}