diff --git a/.rc.yaml b/.rc.yaml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.rc.yaml @@ -0,0 +1 @@ +{} diff --git a/github/.rc.yaml b/github/.rc.yaml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/github/.rc.yaml @@ -0,0 +1 @@ +{} diff --git a/github/.rcappsconfig b/github/.rcappsconfig index f9892ff..eb2ac1b 100644 --- a/github/.rcappsconfig +++ b/github/.rcappsconfig @@ -1,19 +1 @@ -{ - "url": "http://localhost:3000", - "username": "", - "password": "", - "ignoredFiles": [ - "**/README.md", - "**/package-lock.json", - "**/package.json", - "**/tslint.json", - "**/tsconfig.json", - "**/*.js", - "**/*.js.map", - "**/*.d.ts", - "**/*.spec.ts", - "**/*.test.ts", - "**/dist/**", - "**/.*" - ] -} \ No newline at end of file +{"url":"http://localhost:3000","username":"","password":"","ignoredFiles":["**/README.md","**/package-lock.json","**/package.json","**/tslint.json","**/tsconfig.json","**/*.js","**/*.js.map","**/*.d.ts","**/*.spec.ts","**/*.test.ts","**/dist/**","**/.*","**/app.json"]} \ No newline at end of file diff --git a/github/ContextualBars/UserActivityContextualBar.ts b/github/ContextualBars/UserActivityContextualBar.ts new file mode 100644 index 0000000..f8a89d9 --- /dev/null +++ b/github/ContextualBars/UserActivityContextualBar.ts @@ -0,0 +1,199 @@ +import { IHttp, IModify } from "@rocket.chat/apps-engine/definition/accessors"; +import { + BlockBuilder, + BlockElementType, + ButtonStyle, + IBlockElement, + TextObjectType, +} from "@rocket.chat/apps-engine/definition/uikit"; +import { uiKitModal } from "@rocket.chat/ui-kit"; +import { IGithubActivity } from "../definitions/IGithubActivity"; +import { ModalsEnum } from "../enum/Modals"; +import { OcticonIcons } from "../enum/OcticonIcons"; +import { getBasicUserInfo, getUserActivity } from "../helpers/githubSDK"; + +function extractComment(str: string): string { + const regex = /^(?:>.*\n+)?(.*)/s; + const match = str.match(regex); + return match ? match[1] : ""; +} + +function LoadUserActivityEntry( + activity: IGithubActivity, + blocks: BlockBuilder +): void { + // Three types of Activities need to be handled + + switch (activity.type) { + case "IssuesEvent": + blocks.addContextBlock({ + elements: [ + blocks.newImageElement({ + altText: "Issue Event Image", + imageUrl: OcticonIcons.ISSUE_OPEN, + }), + blocks.newMarkdownTextObject( + activity.payload.issue + ? `*${activity.payload.issue.title!}` + : "" + ), + ], + }); + blocks.addActionsBlock({ + elements: [ + blocks.newButtonElement({ + actionId: ModalsEnum.SHOW_ISSUE_VIEW_CONTEXTUAL_BAR, + value: JSON.stringify(activity), + text: blocks.newPlainTextObject("View Issue"), + style: ButtonStyle.PRIMARY + }), + blocks.newButtonElement({ + actionId: "anything", + text: blocks.newPlainTextObject("Share Issue"), + style: ButtonStyle.PRIMARY + }) + ] + }) + break; + case "PullRequestEvent": + blocks.addContextBlock({ + elements: [ + blocks.newImageElement({ + altText: "Pull Request Image", + imageUrl: OcticonIcons.PULL_REQUEST, + }), + blocks.newMarkdownTextObject( + activity.payload.pull_request + ? `*${activity.payload.pull_request.title!}*` + : "" + ), + ], + }); + blocks.addActionsBlock({ + elements: [ + blocks.newButtonElement({ + actionId: "anything", + text: blocks.newPlainTextObject("View Pull Request"), + style: ButtonStyle.PRIMARY + }), + blocks.newButtonElement({ + actionId: "anything", + text: blocks.newPlainTextObject("Share Pull Request"), + style: ButtonStyle.PRIMARY + }) + ] + }) + break; + case "IssueCommentEvent": + console.log(activity.payload.comment?.body); + blocks.addContextBlock({ + elements: [ + blocks.newImageElement({ + altText: "Comment Image", + imageUrl: OcticonIcons.COMMENTS, + }), + blocks.newMarkdownTextObject( + activity.payload.comment + ? `*${extractComment( + activity.payload.comment.body + ).substring(0, 100)}*` + : "" + ), + ], + }); + blocks.addActionsBlock({ + elements: [ + blocks.newButtonElement({ + actionId: "anything", + text: blocks.newPlainTextObject("View Comment"), + style: ButtonStyle.PRIMARY + }), + blocks.newButtonElement({ + actionId: "anything", + text: blocks.newPlainTextObject("Share Comment"), + style: ButtonStyle.PRIMARY + }) + ] + }) + break; + } + + blocks.addContextBlock({ + elements: [ + blocks.newPlainTextObject( + activity.repo ? activity.repo.name : "", + true + ), + ], + }); + + blocks.addDividerBlock(); +} + +export async function UserActivityContextualBar( + accessToken: string, + modify: IModify, + http: IHttp, + pageNumber: number, +) { + const blocks = modify.getCreator().getBlockBuilder(); + let No_More_Elements: boolean = false; + + const user = await getBasicUserInfo(http, accessToken) + + const data = await getUserActivity( + http, + user.username ?? "", + accessToken, + pageNumber, + "MONTH", + 10 + ); + + if (data.length === 0){ + No_More_Elements = true + } + + data.forEach((activity) => { + LoadUserActivityEntry(activity, blocks); + }); + + let actionsArray: IBlockElement[] = []; + + if ( pageNumber != 1 ) { + actionsArray.unshift( + blocks.newButtonElement({ + text: { + text: "Prev", + type: TextObjectType.PLAINTEXT, + }, + actionId: ModalsEnum.SWITCH_ACTIVITY_PAGE_PREV, + value: `${pageNumber}`, + style: ButtonStyle.PRIMARY, + }), + ); + } + + if (!No_More_Elements){ + actionsArray.push(blocks.newButtonElement({ + text: { + text: "Next", + type: TextObjectType.PLAINTEXT, + }, + actionId: ModalsEnum.SWITCH_ACTIVITY_PAGE_NEXT, + value: `${pageNumber}`, + style: ButtonStyle.PRIMARY, + })) + } + + blocks.addActionsBlock({ + elements: actionsArray, + }); + + return { + // [6] + id: "contextualbarId", + title: blocks.newPlainTextObject("User's Activity"), + blocks: blocks.getBlocks(), + }; +} diff --git a/github/ContextualBars/UserCommentView.ts b/github/ContextualBars/UserCommentView.ts new file mode 100644 index 0000000..56e4156 --- /dev/null +++ b/github/ContextualBars/UserCommentView.ts @@ -0,0 +1,5 @@ +import { IGithubActivity } from "../definitions/IGithubActivity"; + +async function UserCommentView(activity: IGithubActivity){ + +} diff --git a/github/ContextualBars/UserIssueView.ts b/github/ContextualBars/UserIssueView.ts new file mode 100644 index 0000000..c90d9fa --- /dev/null +++ b/github/ContextualBars/UserIssueView.ts @@ -0,0 +1,84 @@ +import { IModify } from "@rocket.chat/apps-engine/definition/accessors"; +import { IUIKitContextualBarViewParam } from "@rocket.chat/apps-engine/definition/uikit/UIKitInteractionResponder"; +import { TextObjectType } from "@rocket.chat/ui-kit"; +import { IGithubActivity } from "../definitions/IGithubActivity"; +import { ModalsEnum } from "../enum/Modals"; +import { OcticonIcons } from "../enum/OcticonIcons"; +import { CreateIssueStatsBar } from "../lib/CreateIssueStatsBar"; +import { CreateReactionsBar } from "../lib/CreateReactionsBar"; +import { BodyMarkdownRenderer } from "../processors/bodyMarkdowmRenderer"; + +export function UserIssueView(modify: IModify,activity: IGithubActivity): IUIKitContextualBarViewParam{ + + const block = modify.getCreator().getBlockBuilder(); + + if (activity.type == "IssuesEvent" && activity.payload.issue){ + const issueInfo = activity.payload.issue + + console.log(issueInfo) + + const lastUpdated = new Date(issueInfo.last_updated_at ?? ""); + + block.addContextBlock({ + elements : [ + block.newImageElement({ + imageUrl: OcticonIcons.PENCIL, + altText: "Last Update At", + }), + block.newPlainTextObject( + `Last Updated at ${ lastUpdated.toISOString() }` + ), + ] + }) + + CreateIssueStatsBar(issueInfo, block); + + // block.addSectionBlock({ + // text : { + // text : `*${issueInfo.title}*` ?? "", + // type: TextObjectType.PLAIN_TEXT + // } + // }) + + block.addDividerBlock(); + + // issueInfo.reactions && CreateReactionsBar(issueInfo.reactions, block); + + issueInfo.body && BodyMarkdownRenderer({body : issueInfo.body, block : block}) + + // block.addActionsBlock({ + // elements : [ + // block.newButtonElement({ + // actionId : ModalsEnum.SHARE_ISSUE_ACTION, + // value : `${repoName}, ${issueNumber}`, + // text : { + // text : "Share Issue", + // type : TextObjectType.PLAINTEXT + // }, + // }), + // block.newButtonElement({ + // actionId : ModalsEnum.ADD_GITHUB_ISSUE_ASSIGNEE, + // value : `${repoName}, ${issueNumber}`, + // text : { + // text : "Assign Issue", + // type : TextObjectType.PLAINTEXT + // }, + // }) + // ] + // }) + + return { + // [6] + id: "userIssuesView", + title: block.newPlainTextObject("User Issue View"), + blocks: block.getBlocks(), + }; + } + + return { + // [6] + id: "error", + title: block.newPlainTextObject("Error View"), + blocks: block.getBlocks(), + }; +} diff --git a/github/ContextualBars/UserPullRequestView.ts b/github/ContextualBars/UserPullRequestView.ts new file mode 100644 index 0000000..a97bf85 --- /dev/null +++ b/github/ContextualBars/UserPullRequestView.ts @@ -0,0 +1,6 @@ +import { IGithubActivity } from "../definitions/IGithubActivity"; + +export async function UserPullRequestView(activity: IGithubActivity){ + + +} diff --git a/github/definitions/IGithubActivity.ts b/github/definitions/IGithubActivity.ts new file mode 100644 index 0000000..d578a3e --- /dev/null +++ b/github/definitions/IGithubActivity.ts @@ -0,0 +1,23 @@ +import { IGitHubIssue } from "./githubIssue" +import { IGithubComment } from "./IGithubComment"; +import { IGitHubPullRequest } from "./IGithubPullRequest"; + +export interface IGithubActivity { + type: "IssuesEvent" | "PullRequestEvent" | "IssueCommentEvent"; + actor: { + display_login: string; + avatar_url: string; + url: string; + }; + repo: { + name: string; + url: string; + }; + payload: { + action: string; + comment?: IGithubComment + issue?: IGitHubIssue + pull_request?: IGitHubPullRequest + }; + created_at: string; +} diff --git a/github/definitions/IGithubComment.ts b/github/definitions/IGithubComment.ts new file mode 100644 index 0000000..36c3e4c --- /dev/null +++ b/github/definitions/IGithubComment.ts @@ -0,0 +1,5 @@ +export interface IGithubComment { + body: string; + url: string; + lastUpdatedAt: string; +} diff --git a/github/definitions/IGithubPullRequest.ts b/github/definitions/IGithubPullRequest.ts new file mode 100644 index 0000000..f72e25e --- /dev/null +++ b/github/definitions/IGithubPullRequest.ts @@ -0,0 +1,14 @@ +export interface IGitHubPullRequest{ + id: string|number, + title?: string, + html_url?: string, + number?: string|number + labels?: Array, + user_login?:string, + user_avatar?:string, + last_updated_at?: string, + comments?:string|number, + state?: string, + assignees?: Array,//user ids seperated by " " + body?: string, +} diff --git a/github/enum/Modals.ts b/github/enum/Modals.ts index d4f102e..b975524 100644 --- a/github/enum/Modals.ts +++ b/github/enum/Modals.ts @@ -1,4 +1,9 @@ export enum ModalsEnum { + SHOW_COMMENT_VIEW_CONTEXTUAL_BAR = 'show-comment-view-contextual-bar', + SHOW_PULLREQUEST_VIEW_CONTEXTUAL_BAR = 'show-pullrequest-view-contextual-bar', + SHOW_ISSUE_VIEW_CONTEXTUAL_BAR = 'show-issue-view-contextual-bar', + SWITCH_ACTIVITY_PAGE_PREV = 'switch-activity-page-prev', + SWITCH_ACTIVITY_PAGE_NEXT = 'switch-activity-page-next', ADD_GITHUB_ISSUE_ASSIGNEE_PROFILE = 'add-github-issue-assignee-profile', SHARE_ISSUE_ACTION = 'share-issue-action', TRIGGER_ISSUE_DISPLAY_MODAL = 'display-issue', diff --git a/github/enum/OcticonIcons.ts b/github/enum/OcticonIcons.ts index 0174b80..9961693 100644 --- a/github/enum/OcticonIcons.ts +++ b/github/enum/OcticonIcons.ts @@ -5,5 +5,6 @@ export enum OcticonIcons { COMMIT = "https://raw.githubusercontent.com/primer/octicons/main/icons/commit-24.svg", PERSON = "https://raw.githubusercontent.com/primer/octicons/main/icons/person-24.svg", REPOSITORY = "https://raw.githubusercontent.com/primer/octicons/main/icons/repo-24.svg", + PULL_REQUEST = "https://raw.githubusercontent.com/primer/octicons/main/icons/git-pull-request-16.svg", PENCIL = "https://raw.githubusercontent.com/primer/octicons/main/icons/pencil-24.svg" } diff --git a/github/enum/Subcommands.ts b/github/enum/Subcommands.ts index 8ba32e2..8f3ee28 100644 --- a/github/enum/Subcommands.ts +++ b/github/enum/Subcommands.ts @@ -8,5 +8,6 @@ export enum SubcommandEnum { SEARCH = 'search', NEW_ISSUE = 'issue', ISSUES = 'issues', - PROFILE = 'me' + PROFILE = 'me', + ACTIVITY = 'activity', } diff --git a/github/handlers/ExecuteBlockActionHandler.ts b/github/handlers/ExecuteBlockActionHandler.ts index 066a4b4..77f4e65 100644 --- a/github/handlers/ExecuteBlockActionHandler.ts +++ b/github/handlers/ExecuteBlockActionHandler.ts @@ -48,6 +48,9 @@ import { IssueDisplayModal } from "../modals/IssueDisplayModal"; import { IGitHubIssue } from "../definitions/githubIssue"; import { BodyMarkdownRenderer } from "../processors/bodyMarkdowmRenderer"; import { CreateIssueStatsBar } from "../lib/CreateIssueStatsBar"; +import { UserActivityContextualBar } from "../ContextualBars/UserActivityContextualBar"; +import { IGithubActivity } from "../definitions/IGithubActivity"; +import { UserIssueView } from "../ContextualBars/UserIssueView"; export class ExecuteBlockActionHandler { @@ -112,6 +115,37 @@ export class ExecuteBlockActionHandler { }; } } + case ModalsEnum.SHOW_ISSUE_VIEW_CONTEXTUAL_BAR : { + const { value } = context.getInteractionData(); + const activity: IGithubActivity = JSON.parse(value!) as IGithubActivity; + console.log("===================================================") + console.log(activity.payload.issue) + const issueViewContextualBar = UserIssueView(this.modify, activity); + return context.getInteractionResponder().updateContextualBarViewResponse(issueViewContextualBar); + } + case ModalsEnum.SWITCH_ACTIVITY_PAGE_PREV : { + const {value, user } = context.getInteractionData(); + // value will include both the current page and No_More_Elements boolean for us + + const currentPageNumber = value == undefined ? 1 : +value + + const access_token = await getAccessTokenForUser(this.read, user, this.app.oauth2Config) as IAuthData; + + const activityContextualBar = await UserActivityContextualBar(access_token.token, this.modify, this.http, currentPageNumber - 1 ) + + return context.getInteractionResponder().updateContextualBarViewResponse(activityContextualBar); + } + case ModalsEnum.SWITCH_ACTIVITY_PAGE_NEXT : { + let {user, value } = context.getInteractionData(); + + const currentPageNumber = value == undefined ? 1 : +value + + const access_token = await getAccessTokenForUser(this.read, user, this.app.oauth2Config) as IAuthData; + + const activityContextualBar = await UserActivityContextualBar(access_token.token, this.modify, this.http, currentPageNumber + 1 ) + + return context.getInteractionResponder().updateContextualBarViewResponse(activityContextualBar); + } case ModalsEnum.SHARE_ISSUE_ACTION : { let {user, value, room} = context.getInteractionData(); const access_token = await getAccessTokenForUser(this.read, user, this.app.oauth2Config) as IAuthData; diff --git a/github/handlers/UserActivityHandler.ts b/github/handlers/UserActivityHandler.ts new file mode 100644 index 0000000..29aac4e --- /dev/null +++ b/github/handlers/UserActivityHandler.ts @@ -0,0 +1,38 @@ +import { IRead, IPersistence, IHttp, IModify } from "@rocket.chat/apps-engine/definition/accessors"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import { SlashCommandContext } from "@rocket.chat/apps-engine/definition/slashcommands"; +import { UIKitInteractionContext } from "@rocket.chat/apps-engine/definition/uikit"; +import { UserActivityContextualBar } from "../ContextualBars/UserActivityContextualBar"; +import { GithubApp } from "../GithubApp"; +import { getAccessTokenForUser } from "../persistance/auth"; + + +export async function UserActivityHandler( + read: IRead, + context: SlashCommandContext, + app: GithubApp, + persistence: IPersistence, + http: IHttp, + room: IRoom, + modify: IModify, + uikitcontext?: UIKitInteractionContext +){ + + let access_token = await getAccessTokenForUser( + read, + context.getSender(), + app.oauth2Config + ); + + if (access_token != undefined && access_token.token != undefined) { + const triggerID = context.getTriggerId() as string; + const user = context.getSender(); + const block = await UserActivityContextualBar(access_token.token, modify, http, 1 ) + await modify.getUiController().openContextualBarView( + block, + { triggerId: triggerID }, + user + ); + } + +} diff --git a/github/helpers/ParseGithubActivity.ts b/github/helpers/ParseGithubActivity.ts new file mode 100644 index 0000000..9bb2e5d --- /dev/null +++ b/github/helpers/ParseGithubActivity.ts @@ -0,0 +1,75 @@ +import { IGithubActivity } from "../definitions/IGithubActivity"; + +export function parseUserActivity(event: any): IGithubActivity { + let payload: any = {}; + if (event.type === "IssuesEvent") { + payload = { + action: event.payload.action, + issue: { + issue_id: event.payload.issue.id, + title: event.payload.issue.title, + html_url: event.payload.issue.html_url, + number: event.payload.issue.number, + labels: event.payload.issue.labels.map((label: any) => label.name), + user_login: event.payload.issue.user.login, + user_avatar: event.payload.issue.user.avatar_url, + last_updated_at: event.payload.issue.updated_at, + comments: event.payload.issue.comments, + state: event.payload.issue.state, + assignees: event.payload.issue.assignees.map( + (assignee: any) => assignee.login + ), + repo_url: event.repo.url, + body: event.payload.issue.body, + }, + }; + } else if (event.type === "PullRequestEvent") { + payload = { + action: event.payload.action, + pull_request: { + id: event.payload.pull_request.id, + title: event.payload.pull_request.title, + html_url: event.payload.pull_request.html_url, + number: event.payload.pull_request.number, + labels: event.payload.pull_request.labels.map( + (label: any) => label.name + ), + user_login: event.payload.pull_request.user.login, + user_avatar: event.payload.pull_request.user.avatar_url, + last_updated_at: event.payload.pull_request.updated_at, + comments: event.payload.pull_request.comments, + state: event.payload.pull_request.state, + assignees: event.payload.pull_request.assignees.map( + (assignee: any) => assignee.login + ), + body: event.payload.pull_request.body, + }, + }; + } else if (event.type === "IssueCommentEvent") { + payload = { + action: event.payload.action, + comment: { + body: event.payload.comment.body, + url: event.payload.comment.html_url, + lastUpdatedAt: event.payload.comment.updated_at, + }, + }; + } + + const userActivity: IGithubActivity = { + type: event.type, + actor: { + display_login: event.actor.display_login, + avatar_url: event.actor.avatar_url, + url: event.actor.url, + }, + repo: { + name: event.repo.name, + url: event.repo.url, + }, + payload: payload, + created_at: event.created_at, + }; + + return userActivity; +} diff --git a/github/helpers/githubSDK.ts b/github/helpers/githubSDK.ts index 8aab870..9fc8d51 100644 --- a/github/helpers/githubSDK.ts +++ b/github/helpers/githubSDK.ts @@ -1,6 +1,8 @@ import { IHttp } from "@rocket.chat/apps-engine/definition/accessors"; import { IGitHubIssue } from "../definitions/githubIssue"; +import { IGithubActivity } from "../definitions/IGithubActivity"; import { ModalsEnum } from "../enum/Modals"; +import { parseUserActivity } from "./ParseGithubActivity"; const BaseHost = "https://github.com/"; const BaseApiHost = "https://api.github.com/"; @@ -726,3 +728,37 @@ export async function updateGithubIssues( } return repsonseJSON; } + +export async function getUserActivity ( + http: IHttp, + username: String, + access_token : String, + page: number, + till_last : "WEEK" | "MONTH", + per_page?: number, +) : Promise { + per_page = per_page ?? 15; + + let timeAgo = new Date() + + if (till_last === "WEEK"){ + timeAgo = new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000); + } else { + timeAgo = new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000); + } + + // A request need to be made to get the raw data from GitHub Events + const rawFetched = await getRequest(http, access_token, `https://api.github.com/users/${username}/events?per_page=${per_page}&page=${page}`) as any + + // the data needs to be processed to get the last week or month's data + const lastWeekEvents = rawFetched.filter((event: any) => + ['PullRequestEvent', 'IssueCommentEvent', 'IssuesEvent'].includes(event.type) && + new Date(event.created_at) >= timeAgo + ); + + const userActivity: IGithubActivity[] = lastWeekEvents.map((event: any) : IGithubActivity => { + return parseUserActivity(event) + }) + + return userActivity +} diff --git a/github/lib/commandUtility.ts b/github/lib/commandUtility.ts index d2fb1c3..64b1275 100644 --- a/github/lib/commandUtility.ts +++ b/github/lib/commandUtility.ts @@ -23,6 +23,7 @@ import { import { handleSearch } from "../handlers/SearchHandler"; import { handleNewIssue } from "../handlers/HandleNewIssue"; import { handleUserProfileRequest } from "../handlers/UserProfileHandler"; +import { UserActivityHandler } from "../handlers/UserActivityHandler"; export class CommandUtility implements ExecutorProps { sender: IUser; @@ -138,6 +139,18 @@ export class CommandUtility implements ExecutorProps { ); break; } + case SubcommandEnum.ACTIVITY: { + await UserActivityHandler( + this.read, + this.context, + this.app, + this.persistence, + this.http, + this.room, + this.modify + ) + break; + } default: { await helperMessage({ room: this.room, @@ -257,4 +270,6 @@ export class CommandUtility implements ExecutorProps { } } } + + } diff --git a/github/package-lock.json b/github/package-lock.json index 2a28c63..3018d33 100644 --- a/github/package-lock.json +++ b/github/package-lock.json @@ -1,528 +1,6 @@ { - "name": "github", - "lockfileVersion": 2, "requires": true, - "packages": { - "": { - "devDependencies": { - "@rocket.chat/apps-engine": "^1.19.0", - "@types/node": "14.14.6", - "tslint": "^5.10.0", - "typescript": "^4.0.5" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@rocket.chat/apps-engine": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.32.0.tgz", - "integrity": "sha512-K+5NJto1BfO0NFiJX048tAWJqNQjdHGg5YPB24MQ/cDq206hDPnJakihF02LgardAQShIK3TIw2MnKgX1CB2/w==", - "dev": true, - "dependencies": { - "adm-zip": "^0.4.9", - "cryptiles": "^4.1.3", - "lodash.clonedeep": "^4.5.0", - "semver": "^5.5.0", - "stack-trace": "0.0.10", - "uuid": "^3.2.1" - } - }, - "node_modules/@types/node": { - "version": "14.14.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", - "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", - "dev": true - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "engines": { - "node": ">=0.3.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/boom": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", - "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", - "deprecated": "This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dev": true, - "dependencies": { - "hoek": "6.x.x" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cryptiles": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-4.1.3.tgz", - "integrity": "sha512-gT9nyTMSUC1JnziQpPbxKGBbUg8VL7Zn2NB4E1cJYvuXdElHrwxrV9bmltZGDzet45zSDGyYceueke1TjynGzw==", - "deprecated": "This module has moved and is now available at @hapi/cryptiles. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dev": true, - "dependencies": { - "boom": "7.x.x" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" - }, - "engines": { - "node": ">=4.8.0" - }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" - } - }, - "node_modules/tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" - } - }, - "node_modules/typescript": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", - "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - }, + "lockfileVersion": 1, "dependencies": { "@babel/code-frame": { "version": "7.16.7", @@ -551,29 +29,49 @@ } }, "@rocket.chat/apps-engine": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.32.0.tgz", - "integrity": "sha512-K+5NJto1BfO0NFiJX048tAWJqNQjdHGg5YPB24MQ/cDq206hDPnJakihF02LgardAQShIK3TIw2MnKgX1CB2/w==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.38.0.tgz", + "integrity": "sha512-qY1LRggfZNieOkxDBuEnaieZK6gHfA2tNLrqvv0xn7vgZWkJlWvfcuhPbfarV14q3tuEJgnqf0uIoqia3+WJFQ==", "dev": true, "requires": { - "adm-zip": "^0.4.9", + "adm-zip": "^0.5.9", "cryptiles": "^4.1.3", + "jose": "^4.11.1", "lodash.clonedeep": "^4.5.0", - "semver": "^5.5.0", + "semver": "^5.7.1", "stack-trace": "0.0.10", - "uuid": "^3.2.1" + "uuid": "^3.4.0", + "vm2": "^3.9.11" } }, + "@rocket.chat/ui-kit": { + "version": "0.31.22", + "resolved": "https://registry.npmjs.org/@rocket.chat/ui-kit/-/ui-kit-0.31.22.tgz", + "integrity": "sha512-CH7kBVBsAql57DwDMOpMvj8lp+23muEqiaQ4x0cr0CV/HjmOBBiclzJ2wvh7ab7KEkABIhDK8dwSreNgk0LiJQ==", + "dev": true + }, "@types/node": { "version": "14.14.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", "dev": true }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", "dev": true }, "ansi-styles": { @@ -762,6 +260,12 @@ "has": "^1.0.3" } }, + "jose": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", + "integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -855,7 +359,7 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dev": true }, "supports-color": { @@ -921,6 +425,16 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "vm2": { + "version": "3.9.14", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.14.tgz", + "integrity": "sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/github/package.json b/github/package.json index d70652c..d3da1ef 100644 --- a/github/package.json +++ b/github/package.json @@ -3,6 +3,7 @@ "@rocket.chat/apps-engine": "^1.36.0", "@types/node": "14.14.6", "tslint": "^5.10.0", - "typescript": "^4.0.5" + "typescript": "^4.0.5", + "@rocket.chat/ui-kit": "^0.31.22" } -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..510af5a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "Apps.Github22", + "lockfileVersion": 2, + "requires": true, + "packages": {} +}