@ghfs/cli 0.1.1 → 0.2.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 (78) hide show
  1. package/README.md +41 -1
  2. package/dist/cli.mjs +5710 -572
  3. package/dist/{factory-DmX3S7tf.mjs → factory-UMSInaa_.mjs} +379 -102
  4. package/dist/index.d.mts +363 -2
  5. package/dist/index.mjs +1 -1
  6. package/dist/ui/200.html +1 -1
  7. package/dist/ui/404.html +1 -1
  8. package/dist/ui/_nuxt/3t-6YNGz.js +1 -0
  9. package/dist/ui/_nuxt/{D8rZpOte.js → B0tHio-l.js} +1 -1
  10. package/dist/ui/_nuxt/BBxLfTx_.js +1 -0
  11. package/dist/ui/_nuxt/{Bp3cYrEr.js → BDEKrZIi.js} +1 -1
  12. package/dist/ui/_nuxt/{oH_c3LbQ.js → BMKCr1FU.js} +1 -1
  13. package/dist/ui/_nuxt/BO53GVu8.js +1 -0
  14. package/dist/ui/_nuxt/BvOdM423.js +1 -0
  15. package/dist/ui/_nuxt/Bzq9aFVy.js +1 -0
  16. package/dist/ui/_nuxt/{BLtJtn59.js → CRqJ_cUM.js} +1 -1
  17. package/dist/ui/_nuxt/{DbWOdLaN.js → CV3vykTa.js} +1 -1
  18. package/dist/ui/_nuxt/{8syuri0t.js → ChS_g7wu.js} +1 -1
  19. package/dist/ui/_nuxt/{DWX1VroF.js → ChgxH8nk.js} +1 -1
  20. package/dist/ui/_nuxt/CrQuFoFY.js +1 -0
  21. package/dist/ui/_nuxt/D0jeqgqx.js +1 -0
  22. package/dist/ui/_nuxt/DCJHYwE6.js +67 -0
  23. package/dist/ui/_nuxt/{CANp3yme.js → DMkUaiYH.js} +1 -1
  24. package/dist/ui/_nuxt/DRcdqDVD.js +1 -0
  25. package/dist/ui/_nuxt/DRje8inN.js +1 -0
  26. package/dist/ui/_nuxt/DS2KJUFh.js +1 -0
  27. package/dist/ui/_nuxt/{COcwbKMJ.js → DSvCPggb.js} +1 -1
  28. package/dist/ui/_nuxt/DToHIG1N.js +1 -0
  29. package/dist/ui/_nuxt/{D4Qn4bBI.js → DWbelWgw.js} +1 -1
  30. package/dist/ui/_nuxt/Dc-i7Zfu.js +1 -0
  31. package/dist/ui/_nuxt/{B6eN_cS4.js → Df2X-ZUM.js} +1 -1
  32. package/dist/ui/_nuxt/{CG8Ifv2g.js → DhaYTIfE.js} +1 -1
  33. package/dist/ui/_nuxt/DiuiI0_S.js +1 -0
  34. package/dist/ui/_nuxt/Dl1uYT3n.js +15 -0
  35. package/dist/ui/_nuxt/Dqspr-GT.js +1 -0
  36. package/dist/ui/_nuxt/{DN-Z_aST.js → Dsmy0J62.js} +1 -1
  37. package/dist/ui/_nuxt/{DM8c43g1.js → HgPamjhh.js} +1 -1
  38. package/dist/ui/_nuxt/KW6xsasC.js +1 -0
  39. package/dist/ui/_nuxt/{CRBrlGZW.js → LYj2JSs-.js} +1 -1
  40. package/dist/ui/_nuxt/MRO5bC_T.js +1 -0
  41. package/dist/ui/_nuxt/Project.BMA756E4.css +1 -0
  42. package/dist/ui/_nuxt/W70NOuRA.js +1 -0
  43. package/dist/ui/_nuxt/builds/latest.json +1 -1
  44. package/dist/ui/_nuxt/builds/meta/283a6ae8-b1fa-4a56-aab5-927ed1779674.json +1 -0
  45. package/dist/ui/_nuxt/{C7UmGho8.js → e9S_qqu4.js} +1 -1
  46. package/dist/ui/_nuxt/entry.DnCs62PI.css +1 -0
  47. package/dist/ui/_nuxt/error-404.CiGdHkfa.css +1 -0
  48. package/dist/ui/_nuxt/error-500.DrZuPeVU.css +1 -0
  49. package/dist/ui/_nuxt/index.C3E0NnSu.css +1 -0
  50. package/dist/ui/_nuxt/ivQhLDHX.js +11 -0
  51. package/dist/ui/_nuxt/{DElX3lK9.js → ka8bt-K2.js} +17 -17
  52. package/dist/ui/_nuxt/zinMudAE.js +1 -0
  53. package/dist/ui/hub/index.html +1 -0
  54. package/dist/ui/hub/queue/index.html +1 -0
  55. package/dist/ui/hub/recent/index.html +1 -0
  56. package/dist/ui/index.html +1 -1
  57. package/dist/ui/queue/index.html +1 -0
  58. package/dist/ui/recent/index.html +1 -0
  59. package/package.json +25 -26
  60. package/skills/ghfs/SKILL.md +10 -0
  61. package/dist/provider-DCIsHVeA.d.mts +0 -249
  62. package/dist/server/index.d.mts +0 -330
  63. package/dist/server/index.mjs +0 -2
  64. package/dist/server-BwSU4kqr.mjs +0 -3518
  65. package/dist/ui/_nuxt/BhrAK1vL.js +0 -1
  66. package/dist/ui/_nuxt/C-HG3fhB.js +0 -1
  67. package/dist/ui/_nuxt/C4zNGwhW.js +0 -1
  68. package/dist/ui/_nuxt/CFbOZP3I.js +0 -75
  69. package/dist/ui/_nuxt/D8_7TLub.js +0 -1
  70. package/dist/ui/_nuxt/DU1UobuO.js +0 -1
  71. package/dist/ui/_nuxt/DnF83RMp.js +0 -1
  72. package/dist/ui/_nuxt/JZbLTBME.js +0 -1
  73. package/dist/ui/_nuxt/W9tJ9s81.js +0 -1
  74. package/dist/ui/_nuxt/builds/meta/12d68071-f4db-447f-b929-9033d66eadc3.json +0 -1
  75. package/dist/ui/_nuxt/entry.DfrFFNxd.css +0 -1
  76. package/dist/ui/_nuxt/eo99z4R2.js +0 -1
  77. package/dist/ui/_nuxt/error-404.C93cll2q.css +0 -1
  78. package/dist/ui/_nuxt/error-500.CPQqaJsC.css +0 -1
@@ -0,0 +1 @@
1
+ import{e as v,Z as m,r as d}from"./Dl1uYT3n.js";import{aY as b,i as y,H as c,o as g,c as x,C as k,K as N,A as a,r as S,D as Y}from"./ivQhLDHX.js";import"./DiuiI0_S.js";import"./CrQuFoFY.js";import"./DCJHYwE6.js";import"./3t-6YNGz.js";var z=v({__name:"SparkTooltip",props:{svgRef:{type:Object},x:{type:Number,required:!0},y:{type:Number,required:!0},prevX:{type:Number,required:!0},prevY:{type:Number,required:!0},offsetY:{type:Number,default:0},background:{type:String},backgroundOpacity:{type:Number,default:100},borderRadius:{type:Number,default:2},borderWidth:{type:Number,default:0},borderColor:{type:String,default:"#FFFFFF"},color:{type:String},fontSize:{type:Number}},setup(f){let e=f,u=b(e.svgRef),r=a(null),l=a(0),p=a(0),s=a(!1),n=S(()=>m(e.background,e.backgroundOpacity)),i=async()=>{if(!u.value||!r.value)return;let t=d({svgElement:u.value,element:r.value,x:e.x,y:e.y,offsetY:e.offsetY}),o=d({svgElement:u.value,element:r.value,x:e.prevX,y:e.prevY,offsetY:e.offsetY});!t||!o||(s.value=!1,l.value=o.top,p.value=o.left,await Y(),setTimeout(()=>{s.value=!0,l.value=t.top,p.value=t.left},50))};return y(i),c(()=>[e.x,e.y,e.prevX,e.prevY],()=>i(),{immediate:!0}),(t,o)=>(g(),x("div",{ref_key:"tooltipRef",ref:r,class:"vue-data-ui-spark-tooltip",style:N({position:"fixed",top:`${l.value}px`,left:`${p.value}px`,pointerEvents:"none",background:n.value,color:e.color,fontSize:`${e.fontSize}px`,borderRadius:`${e.borderRadius}px`,border:`${e.borderWidth}px solid ${e.borderColor}`,transition:s.value?"top 0.3s ease-out, left 0.3s ease-out":"none"})},[k(t.$slots,"default",{},void 0,!0)],4))}},[["__scopeId","data-v-57d870b0"]]);export{z as default};
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ghfs</title><link rel="stylesheet" href="/_nuxt/entry.DnCs62PI.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ivQhLDHX.js"><script type="module" src="/_nuxt/ivQhLDHX.js" crossorigin></script><link rel="icon" href="./favicon.svg" type="image/svg+xml"><script id="unhead:payload" type="application/json">{"title":"ghfs"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"283a6ae8-b1fa-4a56-aab5-927ed1779674",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1779476779093,false]</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ghfs</title><link rel="stylesheet" href="/_nuxt/entry.DnCs62PI.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ivQhLDHX.js"><script type="module" src="/_nuxt/ivQhLDHX.js" crossorigin></script><link rel="icon" href="./favicon.svg" type="image/svg+xml"><script id="unhead:payload" type="application/json">{"title":"ghfs"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"283a6ae8-b1fa-4a56-aab5-927ed1779674",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1779476779093,false]</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ghfs</title><link rel="stylesheet" href="/_nuxt/entry.DnCs62PI.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ivQhLDHX.js"><script type="module" src="/_nuxt/ivQhLDHX.js" crossorigin></script><link rel="icon" href="./favicon.svg" type="image/svg+xml"><script id="unhead:payload" type="application/json">{"title":"ghfs"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"283a6ae8-b1fa-4a56-aab5-927ed1779674",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1779476779093,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ghfs</title><link rel="stylesheet" href="/_nuxt/entry.DfrFFNxd.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CFbOZP3I.js"><script type="module" src="/_nuxt/CFbOZP3I.js" crossorigin></script><link rel="icon" href="./favicon.svg" type="image/svg+xml"><script id="unhead:payload" type="application/json">{"title":"ghfs"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"12d68071-f4db-447f-b929-9033d66eadc3",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1777011700449,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ghfs</title><link rel="stylesheet" href="/_nuxt/entry.DnCs62PI.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ivQhLDHX.js"><script type="module" src="/_nuxt/ivQhLDHX.js" crossorigin></script><link rel="icon" href="./favicon.svg" type="image/svg+xml"><script id="unhead:payload" type="application/json">{"title":"ghfs"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"283a6ae8-b1fa-4a56-aab5-927ed1779674",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1779476779094,false]</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ghfs</title><link rel="stylesheet" href="/_nuxt/entry.DnCs62PI.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ivQhLDHX.js"><script type="module" src="/_nuxt/ivQhLDHX.js" crossorigin></script><link rel="icon" href="./favicon.svg" type="image/svg+xml"><script id="unhead:payload" type="application/json">{"title":"ghfs"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"283a6ae8-b1fa-4a56-aab5-927ed1779674",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1779476779088,false]</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>ghfs</title><link rel="stylesheet" href="/_nuxt/entry.DnCs62PI.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ivQhLDHX.js"><script type="module" src="/_nuxt/ivQhLDHX.js" crossorigin></script><link rel="icon" href="./favicon.svg" type="image/svg+xml"><script id="unhead:payload" type="application/json">{"title":"ghfs"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"283a6ae8-b1fa-4a56-aab5-927ed1779674",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1779476779093,false]</script></body></html>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ghfs/cli",
3
3
  "type": "module",
4
- "version": "0.1.1",
4
+ "version": "0.2.0",
5
5
  "description": "GitHub issues/PRs as filesystem, for offline view and operations in batch. Designed for human and agents.",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -20,55 +20,50 @@
20
20
  ".": "./dist/index.mjs",
21
21
  "./cli": "./dist/cli.mjs",
22
22
  "./dir": "./dist/dir.mjs",
23
- "./server": "./dist/server/index.mjs",
24
23
  "./package.json": "./package.json"
25
24
  },
26
25
  "types": "./dist/index.d.mts",
27
26
  "bin": {
28
- "ghfs": "./dist/cli.mjs"
27
+ "cli": "./dist/cli.mjs"
29
28
  },
30
29
  "files": [
31
30
  "dist",
32
31
  "skills/ghfs"
33
32
  ],
34
33
  "dependencies": {
35
- "@clack/prompts": "^1.2.0",
34
+ "@clack/prompts": "^1.4.0",
36
35
  "@octokit/plugin-retry": "^8.1.0",
37
36
  "@octokit/plugin-throttling": "^11.0.3",
38
- "ansis": "^4.2.0",
39
- "birpc": "^4.0.0",
37
+ "ansis": "^4.3.0",
40
38
  "cac": "^7.0.0",
39
+ "devframe": "^0.4.1",
41
40
  "dotenv": "^17.4.2",
42
- "get-port-please": "^3.2.0",
43
- "h3": "^1.15.11",
44
- "jiti": "^2.6.1",
45
- "listhen": "^1.9.1",
46
- "logs-sdk": "^0.0.6",
41
+ "jiti": "^2.7.0",
42
+ "listhen": "^1.10.0",
43
+ "nostics": "^0.2.0",
47
44
  "octokit": "^5.0.5",
48
45
  "ohash": "^2.0.11",
49
46
  "open": "^11.0.0",
50
47
  "pathe": "^2.0.3",
51
- "portless": "^0.10.3",
52
- "structured-clone-es": "^2.0.0",
53
- "valibot": "^1.3.1",
54
- "ws": "^8.20.0",
55
- "yaml": "^2.8.3"
48
+ "portless": "^0.13.0",
49
+ "valibot": "^1.4.0",
50
+ "yaml": "^2.9.0"
56
51
  },
57
52
  "devDependencies": {
58
- "@antfu/eslint-config": "^8.2.0",
59
- "@types/node": "^25.6.0",
60
- "@types/ws": "^8.18.1",
53
+ "@antfu/eslint-config": "^9.0.0",
54
+ "@playwright/test": "^1.60.0",
55
+ "@types/node": "^25.9.1",
61
56
  "@vitest/coverage-v8": "4.0.18",
62
- "bumpp": "^11.0.1",
63
- "eslint": "^10.2.1",
64
- "lint-staged": "^16.4.0",
57
+ "bumpp": "^11.1.0",
58
+ "eslint": "^10.4.0",
59
+ "lint-staged": "^17.0.5",
65
60
  "simple-git-hooks": "^2.13.1",
66
61
  "skills-npm": "^1.1.1",
67
- "tsdown": "^0.21.10",
68
- "tsx": "^4.21.0",
62
+ "tsdown": "^0.22.0",
63
+ "tsx": "^4.22.3",
69
64
  "typescript": "^6.0.3",
70
- "unimport": "^6.1.1",
71
- "vitest": "^4.1.5"
65
+ "unimport": "^6.3.0",
66
+ "vitest": "^4.1.7"
72
67
  },
73
68
  "simple-git-hooks": {
74
69
  "pre-commit": "pnpm i --frozen-lockfile --ignore-scripts --offline && npx lint-staged"
@@ -85,8 +80,12 @@
85
80
  "dev:server": "GHFS_UI_DEV=1 tsx src/cli.ts ui --no-open --port 7710",
86
81
  "dev:ui": "pnpm --filter @ghfs/ui dev",
87
82
  "dev:at": "trap 'kill 0' EXIT INT TERM; pnpm run dev:ui & GHFS_UI_DEV=1 tsx src/cli.ts ui --no-open --port 7710 --cwd",
83
+ "dev:hub": "trap 'kill 0' EXIT INT TERM; pnpm run dev:ui & GHFS_UI_DEV=1 tsx src/cli.ts hub --no-open --port 7710 --cwd ..",
88
84
  "typecheck": "tsc --noEmit",
89
85
  "test": "vitest run",
86
+ "pretest:e2e": "tsx tests/e2e/_support/run-setup.ts",
87
+ "test:e2e": "playwright test",
88
+ "test:e2e:install": "playwright install --with-deps chromium",
90
89
  "coverage": "vitest run --coverage",
91
90
  "lint": "eslint",
92
91
  "release": "bumpp",
@@ -86,6 +86,15 @@ Keep root as a YAML array and include `number` + `action` for each entry.
86
86
  action: request-reviewers
87
87
  reviewers: [octocat]
88
88
  ifUnchangedSince: '2026-03-05T04:10:00Z'
89
+
90
+ - number: 130
91
+ action: add-reaction
92
+ reaction: heart
93
+
94
+ - number: 130
95
+ action: add-reaction
96
+ reaction: '+1'
97
+ target: {kind: comment, commentId: 9876543}
89
98
  ```
90
99
 
91
100
  Map user intent to action fields:
@@ -103,6 +112,7 @@ Map user intent to action fields:
103
112
  | Lock/unlock conversation | `lock`, `unlock` | optional `reason` for lock |
104
113
  | PR reviewer actions | `request-reviewers`, `remove-reviewers` | `reviewers` (non-empty string array) |
105
114
  | PR draft state | `mark-ready-for-review`, `convert-to-draft` | none |
115
+ | Add/remove a reaction | `add-reaction`, `remove-reaction` | `reaction` (one of `+1`, `-1`, `laugh`, `hooray`, `confused`, `heart`, `rocket`, `eyes`); optional `target` (defaults to the issue/PR body) |
106
116
 
107
117
  Rules:
108
118
  - `number` must be a positive integer.
@@ -1,249 +0,0 @@
1
- //#region src/types/config.d.ts
2
- interface GhfsUserConfig {
3
- /**
4
- * The repository to sync.
5
- *
6
- * Will try to detect the repository from the current working directory or the `package.json` file.
7
- */
8
- repo?: string;
9
- /**
10
- * The directory to store the synced issues and pull requests.
11
- *
12
- * @default '.ghfs'
13
- */
14
- directory?: string;
15
- /**
16
- * The authentication configuration.
17
- */
18
- auth?: {
19
- /**
20
- * The GitHub personal access token to use for authentication.
21
- *
22
- * When not provided, will try to get the token from `gh auth token` or the environment variables `GH_TOKEN` or `GITHUB_TOKEN`.
23
- */
24
- token?: string;
25
- };
26
- sync?: {
27
- /**
28
- * Whether to sync issues.
29
- *
30
- * @default true
31
- */
32
- issues?: boolean;
33
- /**
34
- * Whether to sync pull requests.
35
- *
36
- * @default true
37
- */
38
- pulls?: boolean;
39
- /**
40
- * When to sync closed issues and pull requests.
41
- *
42
- * - `true`: sync all closed issues and pull requests.
43
- * - `false`: don't sync any closed issues and pull requests. And delete any existing closed issues and pull requests from the local filesystem.
44
- *
45
- * @default false
46
- */
47
- closed?: boolean;
48
- /**
49
- * When to download the pull request patch files.
50
- *
51
- * - `'open'`: only download open pull request patch files.
52
- * - `'all'`: download all pull request patch files.
53
- * - `false`: don't download any pull request patch files.
54
- *
55
- * @default 'open'
56
- */
57
- patches?: 'open' | 'all' | false;
58
- };
59
- }
60
- type GhfsResolvedConfig = Required<GhfsUserConfig> & {
61
- cwd: string;
62
- auth: Required<GhfsUserConfig['auth']>;
63
- sync: Required<GhfsUserConfig['sync']>;
64
- };
65
- //#endregion
66
- //#region src/types/issue.d.ts
67
- type IssueKind = 'issue' | 'pull';
68
- type IssueState = 'open' | 'closed';
69
- //#endregion
70
- //#region src/types/provider.d.ts
71
- interface ProviderReactions {
72
- totalCount: number;
73
- plusOne: number;
74
- minusOne: number;
75
- laugh: number;
76
- hooray: number;
77
- confused: number;
78
- heart: number;
79
- rocket: number;
80
- eyes: number;
81
- }
82
- type IssueStateReason = 'completed' | 'not_planned' | 'reopened';
83
- interface ProviderItem {
84
- number: number;
85
- kind: IssueKind;
86
- url?: string;
87
- state: IssueState;
88
- stateReason?: IssueStateReason | null;
89
- updatedAt: string;
90
- createdAt: string;
91
- closedAt: string | null;
92
- title: string;
93
- body: string | null;
94
- author: string | null;
95
- labels: string[];
96
- assignees: string[];
97
- milestone: string | null;
98
- reactions?: ProviderReactions;
99
- }
100
- interface ProviderComment {
101
- id: number;
102
- body: string | null;
103
- createdAt: string;
104
- updatedAt: string;
105
- author: string | null;
106
- reactions?: ProviderReactions;
107
- }
108
- interface ProviderPullMetadata {
109
- isDraft: boolean;
110
- merged: boolean;
111
- mergedAt: string | null;
112
- baseRef: string;
113
- headRef: string;
114
- requestedReviewers: string[];
115
- }
116
- interface ProviderCommit {
117
- sha: string;
118
- message: string;
119
- authorLogin: string | null;
120
- authorName: string | null;
121
- authorDate: string;
122
- committerLogin: string | null;
123
- committerDate: string;
124
- url?: string;
125
- }
126
- type ProviderTimelineEventKind = 'committed' | 'closed' | 'reopened' | 'merged' | 'labeled' | 'unlabeled' | 'assigned' | 'unassigned' | 'review_requested' | 'review_request_removed' | 'reviewed' | 'commented' | 'renamed' | 'head_ref_force_pushed' | 'head_ref_deleted' | 'head_ref_restored' | 'locked' | 'unlocked' | 'ready_for_review' | 'convert_to_draft' | 'referenced' | 'cross-referenced' | 'unknown';
127
- type ProviderReviewState = 'approved' | 'changes_requested' | 'commented' | 'dismissed' | 'pending';
128
- interface ProviderTimelineEvent {
129
- id: string;
130
- kind: ProviderTimelineEventKind;
131
- createdAt: string;
132
- actor: string | null;
133
- sha?: string;
134
- commitMessage?: string;
135
- label?: {
136
- name: string;
137
- color: string;
138
- };
139
- assignee?: string;
140
- requestedReviewer?: string;
141
- review?: {
142
- state: ProviderReviewState;
143
- body: string | null;
144
- submittedAt: string;
145
- };
146
- commentId?: number;
147
- body?: string | null;
148
- rename?: {
149
- from: string;
150
- to: string;
151
- };
152
- stateReason?: string | null;
153
- }
154
- interface ProviderRepository {
155
- name: string;
156
- full_name: string;
157
- description: string | null;
158
- private: boolean;
159
- archived: boolean;
160
- default_branch: string;
161
- html_url: string;
162
- fork: boolean;
163
- open_issues_count: number;
164
- has_issues: boolean;
165
- has_projects: boolean;
166
- has_wiki: boolean;
167
- created_at: string;
168
- updated_at: string;
169
- pushed_at: string | null;
170
- owner: {
171
- login: string;
172
- };
173
- }
174
- interface ProviderLabel {
175
- name: string;
176
- color: string;
177
- description: string | null;
178
- default: boolean;
179
- }
180
- interface ProviderAuthenticatedUser {
181
- login: string;
182
- name: string | null;
183
- avatarUrl: string;
184
- }
185
- interface ProviderMilestone {
186
- number: number;
187
- title: string;
188
- state: 'open' | 'closed';
189
- description: string | null;
190
- due_on: string | null;
191
- open_issues: number;
192
- closed_issues: number;
193
- created_at: string;
194
- updated_at: string;
195
- closed_at: string | null;
196
- }
197
- interface ProviderItemSnapshot {
198
- number: number;
199
- kind: IssueKind;
200
- updatedAt: string | null;
201
- }
202
- interface ProviderUpdateCounts {
203
- issues: number;
204
- pulls: number;
205
- }
206
- type ProviderLockReason = 'resolved' | 'off-topic' | 'too heated' | 'too-heated' | 'spam';
207
- interface PaginateItemsOptions {
208
- state: IssueState | 'all';
209
- since?: string;
210
- }
211
- interface RepositoryProvider {
212
- paginateItems: (options: PaginateItemsOptions) => AsyncIterable<ProviderItem[]>;
213
- fetchItems: (options: PaginateItemsOptions) => Promise<ProviderItem[]>;
214
- eachItem: (options: PaginateItemsOptions) => AsyncIterable<ProviderItem>;
215
- fetchItemsByNumbers: (numbers: number[]) => Promise<ProviderItem[]>;
216
- fetchComments: (number: number) => Promise<ProviderComment[]>;
217
- fetchPullMetadata: (number: number) => Promise<ProviderPullMetadata>;
218
- fetchPullPatch: (number: number) => Promise<string>;
219
- fetchPullCommits: (number: number) => Promise<ProviderCommit[]>;
220
- fetchTimeline: (number: number) => Promise<ProviderTimelineEvent[]>;
221
- fetchItemSnapshot: (number: number) => Promise<ProviderItemSnapshot>;
222
- fetchRepository: () => Promise<ProviderRepository>;
223
- fetchRepositoryLabels: () => Promise<ProviderLabel[]>;
224
- fetchRepositoryMilestones: () => Promise<ProviderMilestone[]>;
225
- fetchAuthenticatedUser: () => Promise<ProviderAuthenticatedUser | null>;
226
- countUpdatedSince: (since: string) => Promise<ProviderUpdateCounts>;
227
- getRequestCount: () => number;
228
- actionClose: (number: number) => Promise<void>;
229
- actionReopen: (number: number) => Promise<void>;
230
- actionSetTitle: (number: number, title: string) => Promise<void>;
231
- actionSetBody: (number: number, body: string) => Promise<void>;
232
- actionAddComment: (number: number, body: string) => Promise<void>;
233
- actionAddLabels: (number: number, labels: string[]) => Promise<void>;
234
- actionRemoveLabels: (number: number, labels: string[]) => Promise<void>;
235
- actionSetLabels: (number: number, labels: string[]) => Promise<void>;
236
- actionAddAssignees: (number: number, assignees: string[]) => Promise<void>;
237
- actionRemoveAssignees: (number: number, assignees: string[]) => Promise<void>;
238
- actionSetAssignees: (number: number, assignees: string[]) => Promise<void>;
239
- actionSetMilestone: (number: number, milestone: string | number) => Promise<void>;
240
- actionClearMilestone: (number: number) => Promise<void>;
241
- actionLock: (number: number, reason?: ProviderLockReason) => Promise<void>;
242
- actionUnlock: (number: number) => Promise<void>;
243
- actionRequestReviewers: (number: number, reviewers: string[]) => Promise<void>;
244
- actionRemoveReviewers: (number: number, reviewers: string[]) => Promise<void>;
245
- actionMarkReadyForReview: (number: number) => Promise<void>;
246
- actionConvertToDraft: (number: number) => Promise<void>;
247
- }
248
- //#endregion
249
- export { ProviderItemSnapshot as a, ProviderTimelineEvent as c, IssueState as d, GhfsResolvedConfig as f, ProviderItem as i, RepositoryProvider as l, ProviderComment as n, ProviderLockReason as o, GhfsUserConfig as p, ProviderCommit as r, ProviderPullMetadata as s, PaginateItemsOptions as t, IssueKind as u };