Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"./packages/datastore",
"./packages/github",
"./packages/team",
"./packages/@juiz/datastore-gooogle-apis-sheets"
"./packages/@juiz/datastore-gooogle-apis-sheets",
"./packages/@juiz/code-review-request"
]
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
},
"devDependencies": {
"@monorepo-utils/publish": "^2.0.1",
"@types/node": "^10.12.0",
"@types/node": "^11.11.1",
"@typescript-eslint/eslint-plugin": "^1.4.2",
"@typescript-eslint/parser": "^1.4.2",
"eslint": "^5.15.0",
Expand Down
70 changes: 70 additions & 0 deletions packages/@juiz/code-review-request/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# juiz/code-review-request

## Dependency

- [octokit/graphql.js](https://github.com/octokit/graphql.js)

## Usage

```typescript
import { PullRequestSearch } from "@juiz/code-review-request";

interface PullRequestResult {
repository: {
pullRequests: {
edges: {
url: string;
title: string;
}[];
};
};
}

(async () => {
const service = new PullRequestSearch({
token: "token"
});

const result = await service.fetch<PullRequestResult>(
`query pullRequests($owner: String!, $repo: String!, $last: Int = 50, $labels: [String!]) {
repository(owner: $owner, name: $repo) {
pullRequests(last: $last, labels: $labels) {
edges {
node {
url
title
}
}
}
}
}`,
{
owner: "octokit",
repo: "octokit.rb", // watch repo
last: 50,
labels: ["v5 release"] // PullRequest label to review
}
);

console.log(result);
// { repository: { pullRequests: { edges: [Array] } } }

console.log(result.repository.pullRequests.edges);
/*
[
{
node: {
url: 'https://github.com/octokit/octokit.rb/pull/948',
title: 'Update docs to indicate Ruby < 2.2 not supported'
}
},
{
node: {
url: 'https://github.com/octokit/octokit.rb/pull/980',
title: 'Change the default value of `update_ref` `force` to false'
}
}
]
*/
})();
```
48 changes: 48 additions & 0 deletions packages/@juiz/code-review-request/__tests__/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
//import { PullRequestSearch } from "./../lib";

interface PullRequestResult {
repository: {
pullRequests: {
edges: {
title: string;
url: string;
}[];
};
};
}

describe("@juiz/code-review-request", () => {
it("code-review-request exists", async () => {
expect(true).toBe(true);

/*
const service = new PullRequestSearch({
token: "token"
});

const result = await service.fetch<PullRequestResult>(
`query pullRequests($owner: String!, $repo: String!, $last: Int = 3, $labels: [String!]) {
repository(owner: $owner, name: $repo) {
pullRequests(last: $last, labels: $labels) {
edges {
node {
url
title
}
}
}
}
}`,
{
owner: "octokit",
repo: "octokit.rb",
last: 50,
labels: ["v5 release"]
}
);

console.log(result);
console.log(result.repository.pullRequests.edges);
*/
});
});
4 changes: 4 additions & 0 deletions packages/@juiz/code-review-request/bin/new-account
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env node

// eslint-disable-next-line node/no-missing-require
require("../build/bin/new-account");
20 changes: 20 additions & 0 deletions packages/@juiz/code-review-request/lib/account.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Account, Slack, GitHub } from "@juiz/team";

export type newAccounts = {
type: "slack" | "github";
name: string;
}[];

export const newAccount = (name: string, accounts: newAccounts): Account => {
const account = Account.new(name);

const slackVal = accounts.find(val => val.type == "slack");
const slack = Slack.new(slackVal.name);
account.appendServiceAccount(slack);

const githubVal = accounts.find(val => val.type == "github");
const github = GitHub.new(githubVal.name);
account.appendServiceAccount(github);

return account;
};
1 change: 1 addition & 0 deletions packages/@juiz/code-review-request/lib/bin/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./new-account";
36 changes: 36 additions & 0 deletions packages/@juiz/code-review-request/lib/bin/new-account.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Questions } from "inquirer";
import inquirer = require("inquirer");

import { newAccount, newAccounts } from "./../account";

const questions: Questions = [
{
type: "input",
name: "slackName",
message: "please your Slack name"
},
{
type: "input",
name: "githubName",
message: "please your GitHub name"
}
];

inquirer
.prompt(questions)
.then((r: { slackName: string; githubName: string }) => {
const accounts: newAccounts = [
{
name: r.githubName,
type: "github"
},
{
name: r.slackName,
type: "slack"
}
];

const account = newAccount(r.githubName, accounts);
console.log(account);
return account.toJSON();
});
1 change: 1 addition & 0 deletions packages/@juiz/code-review-request/lib/github/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./pull_request";
36 changes: 36 additions & 0 deletions packages/@juiz/code-review-request/lib/github/pull_request.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
export type GraphQLClient = Function;
export type GraphQLClientToken = string;

import GraphQL = require("@octokit/graphql");

export class PullRequestSearch {
protected readonly client: GraphQLClient;
protected readonly token: GraphQLClientToken;

public constructor(arg: { token: GraphQLClientToken }) {
this.client = GraphQL;
this.token = arg.token;
}

/**
* @see https://github.com/octokit/graphql.js/pull/3
* @description
* ⚠️ Do not use template literals in the query
* strings as they make your code vulnerable to query injection attacks Use variables instead:
*
* @param query
* @param options https://developer.github.com/v4/object/repository/
*/
public async fetch<T>(query: string, options?: object): Promise<T> {
const requestOptions = {
...options,
...{
headers: {
authorization: `token ${this.token}`
}
}
};

return await this.client(query, requestOptions);
}
}
1 change: 1 addition & 0 deletions packages/@juiz/code-review-request/lib/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./github";
53 changes: 53 additions & 0 deletions packages/@juiz/code-review-request/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"name": "@juiz/code-review-request",
"version": "0.0.1",
"description": "",
"main": "./build/index.js",
"types": "./build/index.d.ts",
"license": "Apache-2.0",
"engines": {
"node": ">=11"
},
"scripts": {
"build": "tsc",
"test": "jest",
"new-account": "yarn ts-node ./lib/bin/new-account.ts"
},
"bin": {
"new-account": "./bin/new-account"
},
"files": [
"build/",
"bin/"
],
"devDependencies": {
"@types/jest": "^23.3.1",
"jest": "^24.4.0",
"ts-jest": "^24.0.0",
"ts-node": "^7.0.1"
},
"dependencies": {
"@juiz/team": "^0.0.7",
"@octokit/graphql": "^2.0.1",
"@types/inquirer": "^0.0.44",
"inquirer": "^6.2.2",
"typescript": "^3.3.3333"
},
"jest": {
"moduleFileExtensions": [
"js",
"ts",
"tsx",
"json"
],
"transform": {
"^.+\\.(ts|tsx)$": "ts-jest"
},
"testMatch": [
"**/__tests__/**/*.+(ts|tsx|js)"
]
},
"publishConfig": {
"access": "public"
}
}
12 changes: 12 additions & 0 deletions packages/@juiz/code-review-request/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"extends": "./../../../tsconfig.json",
"compilerOptions": {
"noImplicitAny": false,
"resolveJsonModule": true,
"esModuleInterop": true,
"rootDir": "./lib",
"outDir": "./build"
},
"include": ["./lib/**/*.ts"],
"exclude": ["node_modules", "build", "__tests__"]
}
4 changes: 2 additions & 2 deletions packages/@juiz/datastore-google-apps-sheets/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
},
"devDependencies": {
"@types/jest": "^23.3.1",
"jest": "^23.5.0",
"ts-jest": "^23.1.3",
"jest": "^24.4.0",
"ts-jest": "^24.0.0",
"ts-node": "^7.0.1",
"typescript": "^3.0.1"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/datastore/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
],
"devDependencies": {
"@types/jest": "^23.3.1",
"jest": "^23.5.0",
"ts-jest": "^23.1.3",
"jest": "^24.4.0",
"ts-jest": "^24.0.0",
"typescript": "^3.0.1"
},
"dependencies": {
Expand Down
50 changes: 0 additions & 50 deletions packages/github/__tests__/clients/rest.ts

This file was deleted.

4 changes: 3 additions & 1 deletion packages/github/lib/clients/rest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ export class RestClient implements APIClientInterface {
return Promise.resolve(this.client);
}

public async createPullRequest(params: Octkit.PullRequestsCreateParams) {
public async createPullRequest(
params: Octkit.PullRequestsCreateParams
): Promise<Octkit.Response<Octkit.PullRequestsCreateResponse>> {
const client = await this.request();
return await client.pullRequests.create(params);
}
Expand Down
Loading