From 22ba62b182e31e9a273215a938c6eff1733beaf4 Mon Sep 17 00:00:00 2001 From: Houssene Dao Date: Wed, 15 Dec 2021 17:00:06 +0000 Subject: [PATCH] chore(): initial commit --- .commitlintrc.json | 28 + .eslintignore | 4 + .eslintrc.js | 24 + .github/ISSUE_TEMPLATE/.gitkeep | 0 .github/PULL_REQUEST_TEMPLATE.md | 41 + .github/workflows/release.yml | 25 + .gitignore | 34 + .husky/commit-msg | 4 + .husky/pre-commit | 5 + .prettierrc | 4 + .releaserc.js | 22 + CONTRIBUTING.md | 253 + README.md | 1 + index.ts | 1 + ...ebase-cloud-messaging-channel.interface.ts | 17 + .../fcm/firebase-cloud-messaging.channel.ts | 14 + lib/channels/fcm/index.ts | 2 + lib/channels/index.ts | 8 + lib/channels/nexmo/index.ts | 1 + lib/channels/nexmo/nexmo.channel.ts | 13 + lib/channels/sendgrid/index.ts | 1 + lib/channels/sendgrid/sendgrid.channel.ts | 13 + lib/channels/slack/index.ts | 1 + lib/channels/slack/slack.channel.ts | 13 + lib/channels/telegram/index.ts | 3 + .../telegram/telegram-channel.interface.ts | 14 + lib/channels/telegram/telegram.channel.ts | 20 + lib/channels/telegram/telegram.message.ts | 47 + lib/channels/twilio/index.ts | 1 + lib/channels/twilio/twilio.channel.ts | 13 + lib/channels/twitter/index.ts | 1 + lib/channels/twitter/twitter.channel.ts | 13 + lib/channels/webhook/index.ts | 2 + .../webhook/webhook-channel.interface.ts | 22 + lib/channels/webhook/webhook.channel.ts | 24 + lib/channels/webhook/webhook.message.ts | 64 + lib/constants/index.ts | 1 + .../nestjs-notify-provider.constant.ts | 1 + lib/index.ts | 2 + lib/interfaces/index.ts | 3 + .../nestjs-notify-channel.interface.ts | 14 + .../nestjs-notify-module.interface.ts | 38 + lib/interfaces/nestjs-notify.interface.ts | 19 + lib/nestjs-notify.module.ts | 6 + lib/nestjs-notify.service.ts | 6 + package-lock.json | 10288 ++++++++++++++++ package.json | 94 + test/app.e2e-spec.ts | 24 + test/jest-e2e.json | 9 + tsconfig.json | 18 + 50 files changed, 11276 insertions(+) create mode 100644 .commitlintrc.json create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .github/ISSUE_TEMPLATE/.gitkeep create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100755 .husky/commit-msg create mode 100755 .husky/pre-commit create mode 100644 .prettierrc create mode 100644 .releaserc.js create mode 100644 CONTRIBUTING.md create mode 100644 README.md create mode 100644 index.ts create mode 100644 lib/channels/fcm/firebase-cloud-messaging-channel.interface.ts create mode 100644 lib/channels/fcm/firebase-cloud-messaging.channel.ts create mode 100644 lib/channels/fcm/index.ts create mode 100644 lib/channels/index.ts create mode 100644 lib/channels/nexmo/index.ts create mode 100644 lib/channels/nexmo/nexmo.channel.ts create mode 100644 lib/channels/sendgrid/index.ts create mode 100644 lib/channels/sendgrid/sendgrid.channel.ts create mode 100644 lib/channels/slack/index.ts create mode 100644 lib/channels/slack/slack.channel.ts create mode 100644 lib/channels/telegram/index.ts create mode 100644 lib/channels/telegram/telegram-channel.interface.ts create mode 100644 lib/channels/telegram/telegram.channel.ts create mode 100644 lib/channels/telegram/telegram.message.ts create mode 100644 lib/channels/twilio/index.ts create mode 100644 lib/channels/twilio/twilio.channel.ts create mode 100644 lib/channels/twitter/index.ts create mode 100644 lib/channels/twitter/twitter.channel.ts create mode 100644 lib/channels/webhook/index.ts create mode 100644 lib/channels/webhook/webhook-channel.interface.ts create mode 100644 lib/channels/webhook/webhook.channel.ts create mode 100644 lib/channels/webhook/webhook.message.ts create mode 100644 lib/constants/index.ts create mode 100644 lib/constants/nestjs-notify-provider.constant.ts create mode 100644 lib/index.ts create mode 100644 lib/interfaces/index.ts create mode 100644 lib/interfaces/nestjs-notify-channel.interface.ts create mode 100644 lib/interfaces/nestjs-notify-module.interface.ts create mode 100644 lib/interfaces/nestjs-notify.interface.ts create mode 100644 lib/nestjs-notify.module.ts create mode 100644 lib/nestjs-notify.service.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 test/app.e2e-spec.ts create mode 100644 test/jest-e2e.json create mode 100644 tsconfig.json diff --git a/.commitlintrc.json b/.commitlintrc.json new file mode 100644 index 00000000..5c5e64d4 --- /dev/null +++ b/.commitlintrc.json @@ -0,0 +1,28 @@ +{ + "extends": ["@commitlint/config-angular"], + "rules": { + "subject-case": [ + 2, + "always", + ["sentence-case", "start-case", "pascal-case", "upper-case", "lower-case"] + ], + "type-enum": [ + 2, + "always", + [ + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "perf", + "refactor", + "revert", + "style", + "test", + "sample" + ] + ] + } +} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..7f3d3312 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +src/**/*.test.ts +src/**/files/** +test/** +*.spec.ts \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..f6c62bee --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,24 @@ +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + sourceType: 'module', + }, + plugins: ['@typescript-eslint/eslint-plugin'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], + root: true, + env: { + node: true, + jest: true, + }, + ignorePatterns: ['.eslintrc.js'], + rules: { + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + }, +}; diff --git a/.github/ISSUE_TEMPLATE/.gitkeep b/.github/ISSUE_TEMPLATE/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..dc61eb43 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,41 @@ +## PR Checklist +Please check if your PR fulfills the following requirements: + +- [ ] The commit message follows our guidelines: https://github.com/themartiangeeks/nest-hasher/blob/main/CONTRIBUTING.md +- [ ] Tests for the changes have been added (for bug fixes / features) +- [ ] Docs have been added / updated (for bug fixes / features) + + +## PR Type +What kind of change does this PR introduce? + + +``` +[ ] Bugfix +[ ] Feature +[ ] Code style update (formatting, local variables) +[ ] Refactoring (no functional changes, no api changes) +[ ] Build related changes +[ ] CI related changes +[ ] Other... Please describe: +``` + +## What is the current behavior? + + +Issue Number: N/A + + +## What is the new behavior? + + +## Does this PR introduce a breaking change? +``` +[ ] Yes +[ ] No +``` + + + + +## Other information \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..d6107cd7 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,25 @@ +name: RELEASER + +on: + push: + branches: [main] + +jobs: + Realeaser: + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v2 + + - name: Use NodeJS v16 + uses: actions/setup-node@v1 + with: + node-version: 16 + + - name: Install dependencies + run: npm ci + + - name: Create new release + env: + GH_TOKEN: ${{secrets.GH_TOKEN}} + run: npx semantic-release diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c16ef026 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# compiled output +/dist +/node_modules + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 00000000..fe4c17a2 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit "" diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..06d7d165 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged +npm run lint diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..dcb72794 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "all" +} \ No newline at end of file diff --git a/.releaserc.js b/.releaserc.js new file mode 100644 index 00000000..4e376ec7 --- /dev/null +++ b/.releaserc.js @@ -0,0 +1,22 @@ +module.exports = { + plugins: [ + '@semantic-release/commit-analyzer', + '@semantic-release/github', + [ + '@semantic-release/npm', + { + npmPublish: false, + }, + ], + ['@semantic-release/release-notes-generator'], + [ + '@semantic-release/git', + { + assets: ['package.json'], + message: 'chore(release): release ${nextRelease.version}', + }, + ], + ], + branches: ['main'], + preset: 'angular', +}; diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..82f9edec --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,253 @@ +# Contributing to Nest + +We would love for you to contribute to Nest and help make it even better than it is +today! As a contributor, here are the guidelines we would like you to follow: + +- [Code of Conduct](#coc) +- [Question or Problem?](#question) +- [Issues and Bugs](#issue) +- [Feature Requests](#feature) +- [Submission Guidelines](#submit) +- [Coding Rules](#rules) +- [Commit Message Guidelines](#commit) + + + + +## Got a Question or Problem? + +**Do not open issues for general support questions as we want to keep GitHub issues for bug reports and feature requests.** You've got much better chances of getting your question answered on [Stack Overflow](https://stackoverflow.com/questions/tagged/nestjs) where the questions should be tagged with tag `nestjs`. + +Stack Overflow is a much better place to ask questions since: + + +- questions and answers stay available for public viewing so your question / answer might help someone else +- Stack Overflow's voting system assures that the best answers are prominently visible. + +To save your and our time, we will systematically close all issues that are requests for general support and redirect people to Stack Overflow. + +If you would like to chat about the question in real-time, you can reach out via [our gitter channel][gitter]. + +## Found a Bug? +If you find a bug in the source code, you can help us by +[submitting an issue](#submit-issue) to our [GitHub Repository][github]. Even better, you can +[submit a Pull Request](#submit-pr) with a fix. + +## Missing a Feature? +You can *request* a new feature by [submitting an issue](#submit-issue) to our GitHub +Repository. If you would like to *implement* a new feature, please submit an issue with +a proposal for your work first, to be sure that we can use it. +Please consider what kind of change it is: + +* For a **Major Feature**, first open an issue and outline your proposal so that it can be + discussed. This will also allow us to better coordinate our efforts, prevent duplication of work, + and help you to craft the change so that it is successfully accepted into the project. For your issue name, please prefix your proposal with `[discussion]`, for example "[discussion]: your feature idea". +* **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr). + +## Submission Guidelines + +### Submitting an Issue + +Before you submit an issue, please search the issue tracker, maybe an issue for your problem already exists and the discussion might inform you of workarounds readily available. + +We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs we will systematically ask you to provide a minimal reproduction scenario using a repository or [Gist](https://gist.github.com/). Having a live, reproducible scenario gives us wealth of important information without going back & forth to you with additional questions like: + +- version of NestJS used +- 3rd-party libraries and their versions +- and most importantly - a use-case that fails + + + + + +Unfortunately, we are not able to investigate / fix bugs without a minimal reproduction, so if we don't hear back from you we are going to close an issue that don't have enough info to be reproduced. + +You can file new issues by filling out our [new issue form](https://github.com/nestjs/nest/issues/new). + + +### Submitting a Pull Request (PR) +Before you submit your Pull Request (PR) consider the following guidelines: + +1. Search [GitHub](https://github.com/nestjs/nest/pulls) for an open or closed PR + that relates to your submission. You don't want to duplicate effort. + +1. Fork the nestjs/nest repo. +1. Make your changes in a new git branch: + + ```shell + git checkout -b my-fix-branch master + ``` + +1. Create your patch, **including appropriate test cases**. +1. Follow our [Coding Rules](#rules). +1. Run the full Nest test suite, as described in the [developer documentation][dev-doc], + and ensure that all tests pass. +1. Commit your changes using a descriptive commit message that follows our + [commit message conventions](#commit). Adherence to these conventions + is necessary because release notes are automatically generated from these messages. + + ```shell + git commit -a + ``` + Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files. + +1. Push your branch to GitHub: + + ```shell + git push origin my-fix-branch + ``` + +1. In GitHub, send a pull request to `nestjs:master`. +* If we suggest changes then: + * Make the required updates. + * Re-run the Nest test suites to ensure tests are still passing. + * Rebase your branch and force push to your GitHub repository (this will update your Pull Request): + + ```shell + git rebase master -i + git push -f + ``` + +That's it! Thank you for your contribution! + +#### After your pull request is merged + +After your pull request is merged, you can safely delete your branch and pull the changes +from the main (upstream) repository: + +* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows: + + ```shell + git push origin --delete my-fix-branch + ``` + +* Check out the master branch: + + ```shell + git checkout master -f + ``` + +* Delete the local branch: + + ```shell + git branch -D my-fix-branch + ``` + +* Update your master with the latest upstream version: + + ```shell + git pull --ff upstream master + ``` + +## Coding Rules +To ensure consistency throughout the source code, keep these rules in mind as you are working: + +* All features or bug fixes **must be tested** by one or more specs (unit-tests). + +* We follow [Google's JavaScript Style Guide][js-style-guide], but wrap all code at + **100 characters**. An automated formatter is available, see + [DEVELOPER.md](docs/DEVELOPER.md#clang-format). + +## Commit Message Guidelines + +We have very precise rules over how our git commit messages can be formatted. This leads to **more +readable messages** that are easy to follow when looking through the **project history**. But also, +we use the git commit messages to **generate the Nest change log**. + +### Commit Message Format +Each commit message consists of a **header**, a **body** and a **footer**. The header has a special +format that includes a **type**, a **scope** and a **subject**: + +``` +(): + + + +