all-contributors-for-repository 0.3.0 → 0.4.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.
package/README.md CHANGED
@@ -45,7 +45,7 @@ import { getAllContributorsForRepository } from "all-contributors-for-repository
45
45
 
46
46
  const contributors = await getAllContributorsForRepository({
47
47
  owner: "JoshuaKGoldberg",
48
- repo: "template-typescript-node-package",
48
+ repo: "create-typescript-app",
49
49
  });
50
50
 
51
51
  /*
@@ -86,6 +86,8 @@ Additionally, based on PR [conventional commit titles](https://www.conventionalc
86
86
  > await $`npx all-contributors add ${contributor} ${contributionTypes}`;
87
87
  > }
88
88
  > ```
89
+ >
90
+ > See [populate-all-contributors-for-repository](https://github.com/JoshuaKGoldberg/populate-all-contributors-for-repository) for a project that does just that. 📋
89
91
 
90
92
  ### Options
91
93
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Contributor.ts"],"sourcesContent":["export class Contributor {\n\treadonly contributions: Record<string, Set<number>> = {};\n\n\tadd(number: number, type: string) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t(this.contributions[type] ??= new Set()).add(number);\n\t}\n}\n"],"mappings":"AAAO,MAAM,YAAY;AAAA,EACf,gBAA6C,CAAC;AAAA,EAEvD,IAAI,QAAgB,MAAc;AAEjC,KAAC,KAAK,cAAc,IAAI,MAAM,oBAAI,IAAI,GAAG,IAAI,MAAM;AAAA,EACpD;AACD;","names":[]}
1
+ {"version":3,"sources":["../src/Contributor.ts"],"sourcesContent":["export class Contributor {\n\treadonly contributions: Record<string, Set<number>> = {};\n\n\tadd(number: number, type: string) {\n\t\t(this.contributions[type] ??= new Set()).add(number);\n\t}\n}\n"],"mappings":"AAAO,MAAM,YAAY;AAAA,EACf,gBAA6C,CAAC;AAAA,EAEvD,IAAI,QAAgB,MAAc;AACjC,KAAC,KAAK,cAAc,IAAI,MAAM,oBAAI,IAAI,GAAG,IAAI,MAAM;AAAA,EACpD;AACD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ContributorsCollection.ts"],"sourcesContent":["import { Contributor } from \"./Contributor.js\";\n\n/**\n * For a set of logins, the contributions under those users.\n */\nexport type ContributorsContributions = Record<\n\tstring,\n\tContributorContributions\n>;\n\n/**\n * For each contribution under a login, the issue/PR numbers that count as that type.\n */\nexport type ContributorContributions = Record<string, number[]>;\n\nexport class ContributorsCollection {\n\t#contributors: Record<string, Contributor> = {};\n\t#ignoredLogins: Set<string>;\n\n\tconstructor(ignoredLogins: Set<string>) {\n\t\tthis.#ignoredLogins = ignoredLogins;\n\t}\n\n\tadd(login: string | undefined, number: number, type: string) {\n\t\tif (login && !this.#ignoredLogins.has(login)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t(this.#contributors[login.toLowerCase()] ??= new Contributor()).add(\n\t\t\t\tnumber,\n\t\t\t\ttype,\n\t\t\t);\n\t\t}\n\t}\n\n\tcollect(): ContributorsContributions {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(this.#contributors)\n\t\t\t\t.map(\n\t\t\t\t\t([login, contributor]) =>\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tlogin,\n\t\t\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\t\t\tObject.entries(contributor.contributions).map(\n\t\t\t\t\t\t\t\t\t([type, numbers]) => [\n\t\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\t\tArray.from(numbers).sort((a, b) => a - b),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t] as const,\n\t\t\t\t)\n\t\t\t\t.sort(([a], [b]) => a.localeCompare(b)),\n\t\t);\n\t}\n}\n"],"mappings":"AAAA,SAAS,mBAAmB;AAerB,MAAM,uBAAuB;AAAA,EACnC,gBAA6C,CAAC;AAAA,EAC9C;AAAA,EAEA,YAAY,eAA4B;AACvC,SAAK,iBAAiB;AAAA,EACvB;AAAA,EAEA,IAAI,OAA2B,QAAgB,MAAc;AAC5D,QAAI,SAAS,CAAC,KAAK,eAAe,IAAI,KAAK,GAAG;AAE7C,OAAC,KAAK,cAAc,MAAM,YAAY,CAAC,MAAM,IAAI,YAAY,GAAG;AAAA,QAC/D;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,UAAqC;AACpC,WAAO,OAAO;AAAA,MACb,OAAO,QAAQ,KAAK,aAAa,EAC/B;AAAA,QACA,CAAC,CAAC,OAAO,WAAW,MACnB;AAAA,UACC;AAAA,UACA,OAAO;AAAA,YACN,OAAO,QAAQ,YAAY,aAAa,EAAE;AAAA,cACzC,CAAC,CAAC,MAAM,OAAO,MAAM;AAAA,gBACpB;AAAA,gBACA,MAAM,KAAK,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,cACzC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACF,EACC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,IACxC;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../src/ContributorsCollection.ts"],"sourcesContent":["import { Contributor } from \"./Contributor.js\";\n\n/**\n * For a set of logins, the contributions under those users.\n */\nexport type ContributorsContributions = Record<\n\tstring,\n\tContributorContributions\n>;\n\n/**\n * For each contribution under a login, the issue/PR numbers that count as that type.\n */\nexport type ContributorContributions = Record<string, number[]>;\n\nexport class ContributorsCollection {\n\t#contributors: Record<string, Contributor> = {};\n\t#ignoredLogins: Set<string>;\n\n\tconstructor(ignoredLogins: Set<string>) {\n\t\tthis.#ignoredLogins = ignoredLogins;\n\t}\n\n\tadd(login: string | undefined, number: number, type: string) {\n\t\tif (login && !this.#ignoredLogins.has(login)) {\n\t\t\t(this.#contributors[login.toLowerCase()] ??= new Contributor()).add(\n\t\t\t\tnumber,\n\t\t\t\ttype,\n\t\t\t);\n\t\t}\n\t}\n\n\tcollect(): ContributorsContributions {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(this.#contributors)\n\t\t\t\t.map(\n\t\t\t\t\t([login, contributor]) =>\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tlogin,\n\t\t\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\t\t\tObject.entries(contributor.contributions).map(\n\t\t\t\t\t\t\t\t\t([type, numbers]) => [\n\t\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\t\tArray.from(numbers).sort((a, b) => a - b),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t] as const,\n\t\t\t\t)\n\t\t\t\t.sort(([a], [b]) => a.localeCompare(b)),\n\t\t);\n\t}\n}\n"],"mappings":"AAAA,SAAS,mBAAmB;AAerB,MAAM,uBAAuB;AAAA,EACnC,gBAA6C,CAAC;AAAA,EAC9C;AAAA,EAEA,YAAY,eAA4B;AACvC,SAAK,iBAAiB;AAAA,EACvB;AAAA,EAEA,IAAI,OAA2B,QAAgB,MAAc;AAC5D,QAAI,SAAS,CAAC,KAAK,eAAe,IAAI,KAAK,GAAG;AAC7C,OAAC,KAAK,cAAc,MAAM,YAAY,CAAC,MAAM,IAAI,YAAY,GAAG;AAAA,QAC/D;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,UAAqC;AACpC,WAAO,OAAO;AAAA,MACb,OAAO,QAAQ,KAAK,aAAa,EAC/B;AAAA,QACA,CAAC,CAAC,OAAO,WAAW,MACnB;AAAA,UACC;AAAA,UACA,OAAO;AAAA,YACN,OAAO,QAAQ,YAAY,aAAa,EAAE;AAAA,cACzC,CAAC,CAAC,MAAM,OAAO,MAAM;AAAA,gBACpB;AAAA,gBACA,MAAM,KAAK,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,cACzC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACF,EACC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,IACxC;AAAA,EACD;AACD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collect/adding/addAcceptedIssues.ts"],"sourcesContent":["import { descriptionToCoAuthors } from \"description-to-co-authors\";\nimport { ContributorsCollection } from \"../../ContributorsCollection.js\";\nimport { AllContributorsForRepositoryOptions } from \"../../options.js\";\nimport { AcceptedIssue } from \"../collecting/collectAcceptedIssues.js\";\n\nexport function addAcceptedIssues(\n\tacceptedIssues: AcceptedIssue[],\n\tcontributors: Pick<ContributorsCollection, \"add\">,\n\toptions: Pick<\n\t\tAllContributorsForRepositoryOptions,\n\t\t`labelType${string}` & keyof AllContributorsForRepositoryOptions\n\t>,\n) {\n\tfor (const acceptedIssue of acceptedIssues) {\n\t\tconst labels = acceptedIssue.labels.map((label) =>\n\t\t\ttypeof label === \"string\" ? label : label.name,\n\t\t);\n\n\t\tfor (const [labelType, contribution] of [\n\t\t\t// 🐛 `bug`: anybody who filed an issue labeled as accepting PRs and a bug\n\t\t\t[options.labelTypeBug, \"bug\"],\n\t\t\t// - 📖 `doc`: authors of merged PRs that address issues labeled as docs\n\t\t\t[options.labelTypeDocs, \"docs\"],\n\t\t\t// 💡 `ideas`: anybody who filed an issue labeled as accepting PRs and a feature\n\t\t\t[options.labelTypeIdeas, \"ideas\"],\n\t\t\t// - 🔧 `tool`: authors of merged PRs that address issues labeled as tooling\n\t\t\t[options.labelTypeTool, \"tool\"],\n\t\t] as const) {\n\t\t\tif (!labels.some((label) => label === labelType)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst logins = [];\n\n\t\t\tif (acceptedIssue.user) {\n\t\t\t\tlogins.push(acceptedIssue.user.login);\n\t\t\t}\n\n\t\t\tif (acceptedIssue.body) {\n\t\t\t\tfor (const coAuthor of descriptionToCoAuthors(acceptedIssue.body)) {\n\t\t\t\t\tlogins.push(coAuthor.username);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const login of logins) {\n\t\t\t\tcontributors.add(login, acceptedIssue.number, contribution);\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"AAAA,SAAS,8BAA8B;AAKhC,SAAS,kBACf,gBACA,cACA,SAIC;AACD,aAAW,iBAAiB,gBAAgB;AAC3C,UAAM,SAAS,cAAc,OAAO;AAAA,MAAI,CAAC,UACxC,OAAO,UAAU,WAAW,QAAQ,MAAM;AAAA,IAC3C;AAEA,eAAW,CAAC,WAAW,YAAY,KAAK;AAAA;AAAA,MAEvC,CAAC,QAAQ,cAAc,KAAK;AAAA;AAAA,MAE5B,CAAC,QAAQ,eAAe,MAAM;AAAA;AAAA,MAE9B,CAAC,QAAQ,gBAAgB,OAAO;AAAA;AAAA,MAEhC,CAAC,QAAQ,eAAe,MAAM;AAAA,IAC/B,GAAY;AACX,UAAI,CAAC,OAAO,KAAK,CAAC,UAAU,UAAU,SAAS,GAAG;AACjD;AAAA,MACD;AAEA,YAAM,SAAS,CAAC;AAEhB,UAAI,cAAc,MAAM;AACvB,eAAO,KAAK,cAAc,KAAK,KAAK;AAAA,MACrC;AAEA,UAAI,cAAc,MAAM;AACvB,mBAAW,YAAY,uBAAuB,cAAc,IAAI,GAAG;AAClE,iBAAO,KAAK,SAAS,QAAQ;AAAA,QAC9B;AAAA,MACD;AAEA,iBAAW,SAAS,QAAQ;AAC3B,qBAAa,IAAI,OAAO,cAAc,QAAQ,YAAY;AAAA,MAC3D;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/collect/adding/addAcceptedIssues.ts"],"sourcesContent":["import { descriptionToCoAuthors } from \"description-to-co-authors\";\n\nimport { ContributorsCollection } from \"../../ContributorsCollection.js\";\nimport { AllContributorsForRepositoryOptions } from \"../../options.js\";\nimport { AcceptedIssue } from \"../collecting/collectAcceptedIssues.js\";\n\nexport function addAcceptedIssues(\n\tacceptedIssues: AcceptedIssue[],\n\tcontributors: Pick<ContributorsCollection, \"add\">,\n\toptions: Pick<\n\t\tAllContributorsForRepositoryOptions,\n\t\t`labelType${string}` & keyof AllContributorsForRepositoryOptions\n\t>,\n) {\n\tfor (const acceptedIssue of acceptedIssues) {\n\t\tconst labels = acceptedIssue.labels.map((label) =>\n\t\t\ttypeof label === \"string\" ? label : label.name,\n\t\t);\n\n\t\tfor (const [labelType, contribution] of [\n\t\t\t// 🐛 `bug`: anybody who filed an issue labeled as accepting PRs and a bug\n\t\t\t[options.labelTypeBug, \"bug\"],\n\t\t\t// - 📖 `doc`: authors of merged PRs that address issues labeled as docs\n\t\t\t[options.labelTypeDocs, \"docs\"],\n\t\t\t// 💡 `ideas`: anybody who filed an issue labeled as accepting PRs and a feature\n\t\t\t[options.labelTypeIdeas, \"ideas\"],\n\t\t\t// - 🔧 `tool`: authors of merged PRs that address issues labeled as tooling\n\t\t\t[options.labelTypeTool, \"tool\"],\n\t\t] as const) {\n\t\t\tif (!labels.some((label) => label === labelType)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst logins = [];\n\n\t\t\tif (acceptedIssue.user) {\n\t\t\t\tlogins.push(acceptedIssue.user.login);\n\t\t\t}\n\n\t\t\tif (acceptedIssue.body) {\n\t\t\t\tfor (const coAuthor of descriptionToCoAuthors(acceptedIssue.body)) {\n\t\t\t\t\tlogins.push(coAuthor.username);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const login of logins) {\n\t\t\t\tcontributors.add(login, acceptedIssue.number, contribution);\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"AAAA,SAAS,8BAA8B;AAMhC,SAAS,kBACf,gBACA,cACA,SAIC;AACD,aAAW,iBAAiB,gBAAgB;AAC3C,UAAM,SAAS,cAAc,OAAO;AAAA,MAAI,CAAC,UACxC,OAAO,UAAU,WAAW,QAAQ,MAAM;AAAA,IAC3C;AAEA,eAAW,CAAC,WAAW,YAAY,KAAK;AAAA;AAAA,MAEvC,CAAC,QAAQ,cAAc,KAAK;AAAA;AAAA,MAE5B,CAAC,QAAQ,eAAe,MAAM;AAAA;AAAA,MAE9B,CAAC,QAAQ,gBAAgB,OAAO;AAAA;AAAA,MAEhC,CAAC,QAAQ,eAAe,MAAM;AAAA,IAC/B,GAAY;AACX,UAAI,CAAC,OAAO,KAAK,CAAC,UAAU,UAAU,SAAS,GAAG;AACjD;AAAA,MACD;AAEA,YAAM,SAAS,CAAC;AAEhB,UAAI,cAAc,MAAM;AACvB,eAAO,KAAK,cAAc,KAAK,KAAK;AAAA,MACrC;AAEA,UAAI,cAAc,MAAM;AACvB,mBAAW,YAAY,uBAAuB,cAAc,IAAI,GAAG;AAClE,iBAAO,KAAK,SAAS,QAAQ;AAAA,QAC9B;AAAA,MACD;AAEA,iBAAW,SAAS,QAAQ;AAC3B,qBAAa,IAAI,OAAO,cAAc,QAAQ,YAAY;AAAA,MAC3D;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
@@ -4,7 +4,7 @@ interface RequestDefaults {
4
4
  owner: string;
5
5
  repo: string;
6
6
  }
7
- declare function createOctokit(auth: string | undefined): Octokit;
7
+ declare function createOctokit(auth: string | undefined): Promise<Octokit>;
8
8
  interface RequestOptionsWithPage extends RequestDefaults {
9
9
  page: number;
10
10
  per_page: number;
@@ -1,12 +1,13 @@
1
- import { Octokit } from "octokit";
1
+ import { octokitFromAuthSafe } from "octokit-from-auth";
2
2
  const perPage = 100;
3
- function createOctokit(auth) {
4
- return new (Octokit.defaults({
3
+ async function createOctokit(auth) {
4
+ return await octokitFromAuthSafe({
5
+ auth,
5
6
  headers: {
6
7
  "X-GitHub-Api-Version": "2022-11-28"
7
8
  },
8
9
  per_page: perPage
9
- }))({ auth });
10
+ });
10
11
  }
11
12
  async function paginate(defaults, request) {
12
13
  const items = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/collect/api.ts"],"sourcesContent":["import { Octokit } from \"octokit\";\n\nconst perPage = 100;\n\nexport interface RequestDefaults {\n\towner: string;\n\trepo: string;\n}\n\nexport function createOctokit(auth: string | undefined): Octokit {\n\treturn new (Octokit.defaults({\n\t\theaders: {\n\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t},\n\t\tper_page: perPage,\n\t}))({ auth });\n}\n\nexport interface RequestOptionsWithPage extends RequestDefaults {\n\tpage: number;\n\tper_page: number;\n}\n\nexport async function paginate<T>(\n\tdefaults: RequestDefaults,\n\trequest: (requestOptions: RequestOptionsWithPage) => Promise<T[]>,\n) {\n\tconst items: T[] = [];\n\n\tfor (let i = 0; i < 10; i += 1) {\n\t\tconst response = await request({ page: i, per_page: perPage, ...defaults });\n\n\t\titems.push(...response);\n\n\t\tif (response.length < 100) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn items;\n}\n"],"mappings":"AAAA,SAAS,eAAe;AAExB,MAAM,UAAU;AAOT,SAAS,cAAc,MAAmC;AAChE,SAAO,KAAK,QAAQ,SAAS;AAAA,IAC5B,SAAS;AAAA,MACR,wBAAwB;AAAA,IACzB;AAAA,IACA,UAAU;AAAA,EACX,CAAC,GAAG,EAAE,KAAK,CAAC;AACb;AAOA,eAAsB,SACrB,UACA,SACC;AACD,QAAM,QAAa,CAAC;AAEpB,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC/B,UAAM,WAAW,MAAM,QAAQ,EAAE,MAAM,GAAG,UAAU,SAAS,GAAG,SAAS,CAAC;AAE1E,UAAM,KAAK,GAAG,QAAQ;AAEtB,QAAI,SAAS,SAAS,KAAK;AAC1B;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/collect/api.ts"],"sourcesContent":["import { Octokit } from \"octokit\";\nimport { octokitFromAuthSafe } from \"octokit-from-auth\";\n\nconst perPage = 100;\n\nexport interface RequestDefaults {\n\towner: string;\n\trepo: string;\n}\n\nexport async function createOctokit(\n\tauth: string | undefined,\n): Promise<Octokit> {\n\treturn await octokitFromAuthSafe({\n\t\tauth,\n\t\theaders: {\n\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t},\n\t\tper_page: perPage,\n\t});\n}\n\nexport interface RequestOptionsWithPage extends RequestDefaults {\n\tpage: number;\n\tper_page: number;\n}\n\nexport async function paginate<T>(\n\tdefaults: RequestDefaults,\n\trequest: (requestOptions: RequestOptionsWithPage) => Promise<T[]>,\n) {\n\tconst items: T[] = [];\n\n\tfor (let i = 0; i < 10; i += 1) {\n\t\tconst response = await request({ page: i, per_page: perPage, ...defaults });\n\n\t\titems.push(...response);\n\n\t\tif (response.length < 100) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn items;\n}\n"],"mappings":"AACA,SAAS,2BAA2B;AAEpC,MAAM,UAAU;AAOhB,eAAsB,cACrB,MACmB;AACnB,SAAO,MAAM,oBAAoB;AAAA,IAChC;AAAA,IACA,SAAS;AAAA,MACR,wBAAwB;AAAA,IACzB;AAAA,IACA,UAAU;AAAA,EACX,CAAC;AACF;AAOA,eAAsB,SACrB,UACA,SACC;AACD,QAAM,QAAa,CAAC;AAEpB,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC/B,UAAM,WAAW,MAAM,QAAQ,EAAE,MAAM,GAAG,UAAU,SAAS,GAAG,SAAS,CAAC;AAE1E,UAAM,KAAK,GAAG,QAAQ;AAEtB,QAAI,SAAS,SAAS,KAAK;AAC1B;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
@@ -8,7 +8,7 @@ import { collectRepoEvents } from "./collecting/collectRepoEvents.js";
8
8
  import { processContributors } from "./processing/processContributors.js";
9
9
  async function collect(options) {
10
10
  const defaults = { owner: options.owner, repo: options.repo };
11
- const octokit = createOctokit(options.auth);
11
+ const octokit = await createOctokit(options.auth);
12
12
  const [acceptedIssues, issueEvents, mergedPulls, repoEvents] = await Promise.all([
13
13
  collectAcceptedIssues(defaults, octokit, options.labelAcceptingPrs),
14
14
  collectIssueEvents(defaults, octokit),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/collect/index.ts"],"sourcesContent":["import { ContributorsContributions } from \"../ContributorsCollection.js\";\nimport { AllContributorsForRepositoryOptions } from \"../options.js\";\nimport { addAcceptedIssues } from \"./adding/addAcceptedIssues.js\";\nimport { addMergedPulls } from \"./adding/addMergedPulls.js\";\nimport { createOctokit } from \"./api.js\";\nimport { collectAcceptedIssues } from \"./collecting/collectAcceptedIssues.js\";\nimport { collectIssueEvents } from \"./collecting/collectIssueEvents.js\";\nimport { collectMergedPulls } from \"./collecting/collectMergedPulls.js\";\nimport { collectRepoEvents } from \"./collecting/collectRepoEvents.js\";\nimport { processContributors } from \"./processing/processContributors.js\";\n\nexport async function collect(\n\toptions: AllContributorsForRepositoryOptions,\n): Promise<ContributorsContributions> {\n\tconst defaults = { owner: options.owner, repo: options.repo };\n\tconst octokit = createOctokit(options.auth);\n\n\t// 1. Collect event data from the GitHub API\n\tconst [acceptedIssues, issueEvents, mergedPulls, repoEvents] =\n\t\tawait Promise.all([\n\t\t\tcollectAcceptedIssues(defaults, octokit, options.labelAcceptingPrs),\n\t\t\tcollectIssueEvents(defaults, octokit),\n\t\t\tcollectMergedPulls(defaults, octokit),\n\t\t\tcollectRepoEvents(defaults, octokit),\n\t\t]);\n\n\t// 2. Process individual contributors from those events\n\tconst contributors = processContributors(issueEvents, repoEvents, options);\n\n\t// 3. Add additional contributors based on issues and pulls\n\taddAcceptedIssues(Object.values(acceptedIssues), contributors, options);\n\tawait addMergedPulls(mergedPulls, contributors, octokit);\n\n\t// 4. Collect the contributions under each contributor\n\treturn contributors.collect();\n}\n"],"mappings":"AAEA,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AAEpC,eAAsB,QACrB,SACqC;AACrC,QAAM,WAAW,EAAE,OAAO,QAAQ,OAAO,MAAM,QAAQ,KAAK;AAC5D,QAAM,UAAU,cAAc,QAAQ,IAAI;AAG1C,QAAM,CAAC,gBAAgB,aAAa,aAAa,UAAU,IAC1D,MAAM,QAAQ,IAAI;AAAA,IACjB,sBAAsB,UAAU,SAAS,QAAQ,iBAAiB;AAAA,IAClE,mBAAmB,UAAU,OAAO;AAAA,IACpC,mBAAmB,UAAU,OAAO;AAAA,IACpC,kBAAkB,UAAU,OAAO;AAAA,EACpC,CAAC;AAGF,QAAM,eAAe,oBAAoB,aAAa,YAAY,OAAO;AAGzE,oBAAkB,OAAO,OAAO,cAAc,GAAG,cAAc,OAAO;AACtE,QAAM,eAAe,aAAa,cAAc,OAAO;AAGvD,SAAO,aAAa,QAAQ;AAC7B;","names":[]}
1
+ {"version":3,"sources":["../../src/collect/index.ts"],"sourcesContent":["import { ContributorsContributions } from \"../ContributorsCollection.js\";\nimport { AllContributorsForRepositoryOptions } from \"../options.js\";\nimport { addAcceptedIssues } from \"./adding/addAcceptedIssues.js\";\nimport { addMergedPulls } from \"./adding/addMergedPulls.js\";\nimport { createOctokit } from \"./api.js\";\nimport { collectAcceptedIssues } from \"./collecting/collectAcceptedIssues.js\";\nimport { collectIssueEvents } from \"./collecting/collectIssueEvents.js\";\nimport { collectMergedPulls } from \"./collecting/collectMergedPulls.js\";\nimport { collectRepoEvents } from \"./collecting/collectRepoEvents.js\";\nimport { processContributors } from \"./processing/processContributors.js\";\n\nexport async function collect(\n\toptions: AllContributorsForRepositoryOptions,\n): Promise<ContributorsContributions> {\n\tconst defaults = { owner: options.owner, repo: options.repo };\n\tconst octokit = await createOctokit(options.auth);\n\n\t// 1. Collect event data from the GitHub API\n\tconst [acceptedIssues, issueEvents, mergedPulls, repoEvents] =\n\t\tawait Promise.all([\n\t\t\tcollectAcceptedIssues(defaults, octokit, options.labelAcceptingPrs),\n\t\t\tcollectIssueEvents(defaults, octokit),\n\t\t\tcollectMergedPulls(defaults, octokit),\n\t\t\tcollectRepoEvents(defaults, octokit),\n\t\t]);\n\n\t// 2. Process individual contributors from those events\n\tconst contributors = processContributors(issueEvents, repoEvents, options);\n\n\t// 3. Add additional contributors based on issues and pulls\n\taddAcceptedIssues(Object.values(acceptedIssues), contributors, options);\n\tawait addMergedPulls(mergedPulls, contributors, octokit);\n\n\t// 4. Collect the contributions under each contributor\n\treturn contributors.collect();\n}\n"],"mappings":"AAEA,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AAEpC,eAAsB,QACrB,SACqC;AACrC,QAAM,WAAW,EAAE,OAAO,QAAQ,OAAO,MAAM,QAAQ,KAAK;AAC5D,QAAM,UAAU,MAAM,cAAc,QAAQ,IAAI;AAGhD,QAAM,CAAC,gBAAgB,aAAa,aAAa,UAAU,IAC1D,MAAM,QAAQ,IAAI;AAAA,IACjB,sBAAsB,UAAU,SAAS,QAAQ,iBAAiB;AAAA,IAClE,mBAAmB,UAAU,OAAO;AAAA,IACpC,mBAAmB,UAAU,OAAO;AAAA,IACpC,kBAAkB,UAAU,OAAO;AAAA,EACpC,CAAC;AAGF,QAAM,eAAe,oBAAoB,aAAa,YAAY,OAAO;AAGzE,oBAAkB,OAAO,OAAO,cAAc,GAAG,cAAc,OAAO;AACtE,QAAM,eAAe,aAAa,cAAc,OAAO;AAGvD,SAAO,aAAa,QAAQ;AAC7B;","names":[]}
@@ -2,11 +2,11 @@ import { RepoEvent } from '../collecting/collectRepoEvents.js';
2
2
  import 'octokit';
3
3
  import '../api.js';
4
4
 
5
- type PullRequestReviewEvent = RepoEvent & {
5
+ type PullRequestReviewEvent = {
6
6
  issue: {
7
7
  number: number;
8
8
  };
9
- };
9
+ } & RepoEvent;
10
10
  declare function repoEventIsPullRequestReviewEvent(repoEvent: Pick<RepoEvent, "type">): repoEvent is PullRequestReviewEvent;
11
11
 
12
12
  export { type PullRequestReviewEvent, repoEventIsPullRequestReviewEvent };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collect/processing/repoEventIsPullRequestReviewEvent.ts"],"sourcesContent":["import { RepoEvent } from \"../collecting/collectRepoEvents.js\";\n\nexport type PullRequestReviewEvent = RepoEvent & {\n\tissue: {\n\t\tnumber: number;\n\t};\n};\n\nexport function repoEventIsPullRequestReviewEvent(\n\trepoEvent: Pick<RepoEvent, \"type\">,\n): repoEvent is PullRequestReviewEvent {\n\treturn (\n\t\trepoEvent.type === \"PullRequestReviewEvent\" &&\n\t\t!!(repoEvent as Partial<PullRequestReviewEvent>).issue?.number\n\t);\n}\n"],"mappings":"AAQO,SAAS,kCACf,WACsC;AACtC,SACC,UAAU,SAAS,4BACnB,CAAC,CAAE,UAA8C,OAAO;AAE1D;","names":[]}
1
+ {"version":3,"sources":["../../../src/collect/processing/repoEventIsPullRequestReviewEvent.ts"],"sourcesContent":["import { RepoEvent } from \"../collecting/collectRepoEvents.js\";\n\nexport type PullRequestReviewEvent = {\n\tissue: {\n\t\tnumber: number;\n\t};\n} & RepoEvent;\n\nexport function repoEventIsPullRequestReviewEvent(\n\trepoEvent: Pick<RepoEvent, \"type\">,\n): repoEvent is PullRequestReviewEvent {\n\treturn (\n\t\trepoEvent.type === \"PullRequestReviewEvent\" &&\n\t\t!!(repoEvent as Partial<PullRequestReviewEvent>).issue?.number\n\t);\n}\n"],"mappings":"AAQO,SAAS,kCACf,WACsC;AACtC,SACC,UAAU,SAAS,4BACnB,CAAC,CAAE,UAA8C,OAAO;AAE1D;","names":[]}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { ContributorContributions, ContributorsContributions } from './ContributorsCollection.js';
2
2
  export { getAllContributorsForRepository } from './getAllContributorsForRepository.js';
3
- import './options.js';
3
+ export { RawAllContributorsForRepositoryOptions } from './options.js';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n\ttype ContributorContributions,\n\ttype ContributorsContributions,\n} from \"./ContributorsCollection.js\";\nexport { getAllContributorsForRepository } from \"./getAllContributorsForRepository.js\";\n"],"mappings":"AAIA,SAAS,uCAAuC;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n\ttype ContributorContributions,\n\ttype ContributorsContributions,\n} from \"./ContributorsCollection.js\";\nexport { getAllContributorsForRepository } from \"./getAllContributorsForRepository.js\";\nexport type { RawAllContributorsForRepositoryOptions } from \"./options.js\";\n"],"mappings":"AAIA,SAAS,uCAAuC;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "all-contributors-for-repository",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Generates an allcontributors list for an existing repository. 🤝",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,21 +40,22 @@
40
40
  "co-author-to-username": "^0.1.1",
41
41
  "conventional-commits-parser": "^6.0.0",
42
42
  "description-to-co-authors": "^0.3.0",
43
- "octokit": "^4.0.0"
43
+ "octokit": "^4.0.0",
44
+ "octokit-from-auth": "^0.3.0"
44
45
  },
45
46
  "devDependencies": {
46
- "@release-it/conventional-changelog": "^8.0.1",
47
+ "@release-it/conventional-changelog": "^9.0.0",
47
48
  "@types/conventional-commits-parser": "^5.0.0",
48
49
  "@types/eslint": "^9.0.0",
49
- "@typescript-eslint/eslint-plugin": "^8.0.0",
50
- "@typescript-eslint/parser": "^7.0.0",
50
+ "@typescript-eslint/eslint-plugin": "^8.0.1",
51
+ "@typescript-eslint/parser": "^8.0.1",
51
52
  "@vitest/coverage-v8": "^1.1.3",
52
- "console-fail-test": "^0.4.0",
53
+ "console-fail-test": "^0.5.0",
53
54
  "cspell": "^8.3.2",
54
- "eslint": "^9.0.0",
55
- "eslint-plugin-deprecation": "^2.0.0",
55
+ "eslint": "^8.57.0",
56
+ "eslint-plugin-deprecation": "^3.0.0",
56
57
  "eslint-plugin-eslint-comments": "^3.2.0",
57
- "eslint-plugin-jsdoc": "^48.0.2",
58
+ "eslint-plugin-jsdoc": "^50.0.0",
58
59
  "eslint-plugin-jsonc": "^2.11.2",
59
60
  "eslint-plugin-markdown": "^5.0.0",
60
61
  "eslint-plugin-n": "^17.0.0",
@@ -65,14 +66,14 @@
65
66
  "eslint-plugin-yml": "^1.11.0",
66
67
  "husky": "^9.0.0",
67
68
  "jsonc-eslint-parser": "^2.4.0",
68
- "knip": "5.27.0",
69
+ "knip": "5.40.0",
69
70
  "lint-staged": "^15.2.0",
70
- "markdownlint": "^0.34.0",
71
- "markdownlint-cli": "^0.41.0",
72
- "npm-package-json-lint": "^7.1.0",
73
- "npm-package-json-lint-config-default": "^6.0.0",
71
+ "markdownlint": "^0.37.0",
72
+ "markdownlint-cli": "^0.43.0",
73
+ "npm-package-json-lint": "^8.0.0",
74
+ "npm-package-json-lint-config-default": "^7.0.0",
74
75
  "prettier": "^3.1.1",
75
- "prettier-plugin-curly": "^0.2.0",
76
+ "prettier-plugin-curly": "^0.3.0",
76
77
  "prettier-plugin-packagejson": "^2.4.9",
77
78
  "release-it": "^17.0.1",
78
79
  "sentences-per-line": "^0.2.1",
@@ -82,7 +83,7 @@
82
83
  "vitest": "^1.1.3",
83
84
  "yaml-eslint-parser": "^1.2.2"
84
85
  },
85
- "packageManager": "pnpm@9.6.0",
86
+ "packageManager": "pnpm@9.15.0",
86
87
  "engines": {
87
88
  "node": ">=18"
88
89
  },