14 Commits

Author SHA1 Message Date
2117c2f5d9 1.0.12 2020-01-21 10:05:36 +00:00
ca0daf2454 fix(core): update 2020-01-21 10:05:35 +00:00
ad6d18d306 1.0.11 2020-01-13 15:52:28 +00:00
7ddcd88862 fix(core): update 2020-01-13 15:52:27 +00:00
9d6b7f3b29 1.0.10 2020-01-13 15:52:03 +00:00
8be9fc38b6 fix(core): update 2020-01-13 15:52:02 +00:00
6bb3bb7d9a 1.0.9 2020-01-13 15:19:48 +00:00
7fcbd39166 fix(core): update 2020-01-13 15:19:47 +00:00
1e38d6564d 1.0.8 2020-01-12 18:57:15 +00:00
9b3c0e88da fix(core): update 2020-01-12 18:57:15 +00:00
9ba1d442b4 1.0.7 2020-01-12 18:32:44 +00:00
b130f09a80 fix(core): update 2020-01-12 18:32:43 +00:00
31ea0863e8 1.0.6 2019-10-28 15:38:44 +01:00
0210bdf4df fix(core): update 2019-10-28 15:38:44 +01:00
6 changed files with 108 additions and 96 deletions

View File

@ -4,13 +4,13 @@ image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache:
paths:
- .npmci_cache/
key: "$CI_BUILD_STAGE"
key: '$CI_BUILD_STAGE'
stages:
- security
- test
- release
- metadata
- security
- test
- release
- metadata
# ====================
# security stage
@ -20,17 +20,19 @@ mirror:
script:
- npmci git mirror
tags:
- lossless
- docker
- notpriv
snyk:
image: registry.gitlab.com/hosttoday/ht-docker-node:snyk
stage: security
script:
- npmci npm prepare
- npmci command npm install -g snyk
- npmci command npm install --ignore-scripts
- npmci command snyk test
tags:
- lossless
- docker
- notpriv
@ -47,6 +49,7 @@ testStable:
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- priv
@ -59,6 +62,7 @@ testBuild:
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- notpriv
@ -70,6 +74,7 @@ release:
only:
- tags
tags:
- lossless
- docker
- notpriv
@ -85,6 +90,7 @@ codequality:
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- lossless
- docker
- priv
@ -95,6 +101,7 @@ trigger:
only:
- tags
tags:
- lossless
- docker
- notpriv
@ -107,6 +114,7 @@ pages:
- npmci npm install
- npmci command tsdoc
tags:
- lossless
- docker
- notpriv
only:

83
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartmail",
"version": "1.0.5",
"version": "1.0.12",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -11,18 +11,18 @@
"dev": true
},
"@babel/code-frame": {
"version": "7.5.5",
"resolved": "https://verdaccio.lossless.one/@babel%2fcode-frame/-/code-frame-7.5.5.tgz",
"integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
"version": "7.8.0",
"resolved": "https://verdaccio.lossless.one/@babel%2fcode-frame/-/code-frame-7.8.0.tgz",
"integrity": "sha512-AN2IR/wCUYsM+PdErq6Bp3RFTXl8W0p9Nmymm7zkpsCmh+r/YYcckaCGpU8Q/mEKmST19kkGRaG42A/jxOWwBA==",
"dev": true,
"requires": {
"@babel/highlight": "^7.0.0"
"@babel/highlight": "^7.8.0"
}
},
"@babel/highlight": {
"version": "7.5.0",
"resolved": "https://verdaccio.lossless.one/@babel%2fhighlight/-/highlight-7.5.0.tgz",
"integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
"version": "7.8.0",
"resolved": "https://verdaccio.lossless.one/@babel%2fhighlight/-/highlight-7.8.0.tgz",
"integrity": "sha512-OsdTJbHlPtIk2mmtwXItYrdmalJ8T0zpVzNAbKSkHshuywj7zb29Y09McV/jQsQunc/nEyHiPV2oy9llYMLqxw==",
"dev": true,
"requires": {
"chalk": "^2.0.0",
@ -202,12 +202,12 @@
}
},
"@pushrocks/smartdelay": {
"version": "2.0.3",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.3.tgz",
"integrity": "sha512-TXKDDqsc7sBTLl+oiYNaF6IdNk1n70i8ur8QfwcUU6tegTnrEkvMWy9h5Zdty/fq1ioCNpKLvuXoA+fgYVwKGQ==",
"version": "2.0.6",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.6.tgz",
"integrity": "sha512-4wUnzWNhRPODpaaL5GuRaje/C5dg+TMhBxmr57PKc2fqYpy6azWJwonf/s5xpcbJLCPJRbj1x8M5MqgCFq2uvg==",
"dev": true,
"requires": {
"@pushrocks/smartpromise": "^3.0.2"
"@pushrocks/smartpromise": "^3.0.6"
},
"dependencies": {
"@pushrocks/smartpromise": {
@ -334,11 +334,11 @@
}
},
"@pushrocks/smartmustache": {
"version": "2.0.8",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartmustache/-/smartmustache-2.0.8.tgz",
"integrity": "sha512-bnOST5zKPKSpCUiYqSHRdJ4NpO3/xz3LLtNE+xfWLS9Eyor/dIapqOpqwmZXNYr8QZuZWC//dlTIiQcv02D8Rg==",
"version": "2.0.9",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartmustache/-/smartmustache-2.0.9.tgz",
"integrity": "sha512-Wumikw03se8/hpPDyBUt0o/JynkNLhuv667jUYyXmTbs4DLnlRAwTpLTYDUoaJpNWsCN3Jg9AgVSrteRozbFig==",
"requires": {
"handlebars": "^4.4.5"
"handlebars": "^4.7.1"
}
},
"@pushrocks/smartparam": {
@ -453,13 +453,14 @@
}
},
"@pushrocks/tapbundle": {
"version": "3.0.13",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.0.13.tgz",
"integrity": "sha512-23O4UMBafCuD+RnUlXNvtT9DGbL1HMD+xZE1Zcr7Ll7WvgxUgRQQfk9kq6qbLLbjaRe1J2Ijsgh1HuZbBaucLQ==",
"version": "3.2.0",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.2.0.tgz",
"integrity": "sha512-xnKIGe7NJqxWBaFeKIEXShDjV2wap1XJqmlp3m1MKqmIF62vRpZnkzpyE1ZAoNwiYQmIsXIpvP/PDv+iPevPfw==",
"dev": true,
"requires": {
"@pushrocks/early": "^3.0.3",
"@pushrocks/smartdelay": "^2.0.3",
"@pushrocks/smartfile": "^7.0.6",
"@pushrocks/smartpromise": "^3.0.2",
"smartchai": "^2.0.1"
},
@ -473,9 +474,9 @@
}
},
"@types/chai": {
"version": "4.2.4",
"resolved": "https://verdaccio.lossless.one/@types%2fchai/-/chai-4.2.4.tgz",
"integrity": "sha512-7qvf9F9tMTzo0akeswHPGqgUx/gIaJqrOEET/FCD8CFRkSUHlygQiM5yB6OvjrtdxBVLSyw7COJubsFYs0683g==",
"version": "4.2.7",
"resolved": "https://verdaccio.lossless.one/@types%2fchai/-/chai-4.2.7.tgz",
"integrity": "sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g==",
"dev": true
},
"@types/chai-as-promised": {
@ -549,9 +550,9 @@
"dev": true
},
"@types/node": {
"version": "12.11.7",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-12.11.7.tgz",
"integrity": "sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA=="
"version": "13.1.6",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-13.1.6.tgz",
"integrity": "sha512-Jg1F+bmxcpENHP23sVKkNuU3uaxPnsBMW0cLjleiikFKomJQbsn0Cqk2yDvQArqzZN6ABfBkZ0To7pQ8sLdWDg=="
},
"@types/through2": {
"version": "2.0.34",
@ -979,9 +980,9 @@
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"handlebars": {
"version": "4.4.5",
"resolved": "https://verdaccio.lossless.one/handlebars/-/handlebars-4.4.5.tgz",
"integrity": "sha512-0Ce31oWVB7YidkaTq33ZxEbN+UDxMMgThvCe8ptgQViymL5DPis9uLdTA13MiRPhgvqyxIegugrP97iK3JeBHg==",
"version": "4.7.1",
"resolved": "https://verdaccio.lossless.one/handlebars/-/handlebars-4.7.1.tgz",
"integrity": "sha512-2dd6soo60cwKNJ90VewNLIzdZPR/E2YhszOTgHpN9V0YuwZk7x33/iZoIBnASwDFVHMY7iJ6NPL8d9f/DWYCTA==",
"requires": {
"neo-async": "^2.6.0",
"optimist": "^0.6.1",
@ -1410,9 +1411,9 @@
"dev": true
},
"resolve": {
"version": "1.12.0",
"resolved": "https://verdaccio.lossless.one/resolve/-/resolve-1.12.0.tgz",
"integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
"version": "1.14.2",
"resolved": "https://verdaccio.lossless.one/resolve/-/resolve-1.14.2.tgz",
"integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@ -1585,9 +1586,9 @@
"dev": true
},
"tslint": {
"version": "5.20.0",
"resolved": "https://verdaccio.lossless.one/tslint/-/tslint-5.20.0.tgz",
"integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==",
"version": "5.20.1",
"resolved": "https://verdaccio.lossless.one/tslint/-/tslint-5.20.1.tgz",
"integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@ -1603,14 +1604,6 @@
"semver": "^5.3.0",
"tslib": "^1.8.0",
"tsutils": "^2.29.0"
},
"dependencies": {
"diff": {
"version": "4.0.1",
"resolved": "https://verdaccio.lossless.one/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
}
}
},
"tslint-config-prettier": {
@ -1641,9 +1634,9 @@
"dev": true
},
"uglify-js": {
"version": "3.6.4",
"resolved": "https://verdaccio.lossless.one/uglify-js/-/uglify-js-3.6.4.tgz",
"integrity": "sha512-9Yc2i881pF4BPGhjteCXQNaXx1DCwm3dtOyBaG2hitHjLWOczw/ki8vD1bqyT3u6K0Ms/FpCShkmfg+FtlOfYA==",
"version": "3.7.5",
"resolved": "https://verdaccio.lossless.one/uglify-js/-/uglify-js-3.7.5.tgz",
"integrity": "sha512-GFZ3EXRptKGvb/C1Sq6nO1iI7AGcjyqmIyOw0DrD0675e+NNbGO72xmMM2iEBdFbxaTLo70NbjM/Wy54uZIlsg==",
"optional": true,
"requires": {
"commander": "~2.20.3",

View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartmail",
"version": "1.0.5",
"version": "1.0.12",
"private": false,
"description": "a unified format for representing and dealing with mails",
"main": "dist/index.js",
@ -16,14 +16,14 @@
"@gitzone/tsbuild": "^2.1.17",
"@gitzone/tsrun": "^1.2.8",
"@gitzone/tstest": "^1.0.28",
"@pushrocks/tapbundle": "^3.0.13",
"@types/node": "^12.11.7",
"tslint": "^5.20.0",
"@pushrocks/tapbundle": "^3.2.0",
"@types/node": "^13.1.6",
"tslint": "^5.20.1",
"tslint-config-prettier": "^1.18.0"
},
"dependencies": {
"@pushrocks/smartfile": "^7.0.6",
"@pushrocks/smartmustache": "^2.0.8"
"@pushrocks/smartmustache": "^2.0.9"
},
"files": [
"ts/**/*",

View File

@ -8,7 +8,7 @@ a unified format for representing and dealing with mails
* [docs (typedoc)](https://pushrocks.gitlab.io/smartmail/)
## Status for master
[![build status](https://gitlab.com/pushrocks/smartmail/badges/master/build.svg)](https://gitlab.com/pushrocks/smartmail/commits/master)
[![pipeline status](https://gitlab.com/pushrocks/smartmail/badges/master/pipeline.svg)](https://gitlab.com/pushrocks/smartmail/commits/master)
[![coverage report](https://gitlab.com/pushrocks/smartmail/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartmail/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartmail.svg)](https://www.npmjs.com/package/@pushrocks/smartmail)
[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartmail/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartmail)
@ -18,6 +18,15 @@ a unified format for representing and dealing with mails
## Usage
## Contribution
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
## Contribution
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
For further information read the linked docs at the top of this readme.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)

View File

@ -1,19 +1,20 @@
import * as plugins from './smartmail.plugins';
export interface ISmartmailOptions {
export interface ISmartmailOptions<T> {
from: string;
subject: string;
body: string;
creationObjectRef?: T;
}
/**
* a standard representation for mails
*/
export class Smartmail {
public options: ISmartmailOptions;
public attachments: plugins.smartfile.Smartfile[];
export class Smartmail<T> {
public options: ISmartmailOptions<T>;
public attachments: plugins.smartfile.Smartfile[] = [];
constructor(optionsArg: ISmartmailOptions) {
constructor(optionsArg: ISmartmailOptions<T>) {
this.options = optionsArg;
}
@ -21,6 +22,10 @@ export class Smartmail {
this.attachments.push(smartfileArg);
}
public getCreationObject(): T {
return this.options.creationObjectRef;
}
public getSubject(dataArg: any = {}) {
const smartmustache = new plugins.smartmustache.SmartMustache(this.options.subject);
return smartmustache.applyData(dataArg);

View File

@ -1,7 +1,4 @@
import * as smartfile from '@pushrocks/smartfile';
import * as smartmustache from '@pushrocks/smartmustache';
export {
smartfile,
smartmustache
};
export { smartfile, smartmustache };