@volcanicminds/backend 0.2.18 → 0.2.20
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/.dockerignore +1 -0
- package/README.md +4 -2
- package/TODO.md +3 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/api/auth/controller/password.js +23 -0
- package/dist/lib/api/auth/controller/password.js.map +1 -0
- package/dist/lib/util/regexp.js +15 -0
- package/dist/lib/util/regexp.js.map +1 -0
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/index.d.ts +0 -2
- package/index.ts +3 -5
- package/lib/api/auth/controller/password.ts +21 -0
- package/lib/util/regexp.ts +32 -0
- package/package.json +17 -11
- package/server.ts +2 -1
- package/tsconfig.json +1 -1
- package/types/global.d.ts +1 -0
package/.dockerignore
CHANGED
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ GRAPHQL=false
|
|
|
47
47
|
SWAGGER=true
|
|
48
48
|
SWAGGER_HOST=myawesome.backend.com
|
|
49
49
|
SWAGGER_TITLE=API Documentation
|
|
50
|
-
SWAGGER_DESCRIPTION=List of available APIs and
|
|
50
|
+
SWAGGER_DESCRIPTION=List of available APIs and schemas to use
|
|
51
51
|
SWAGGER_VERSION=0.1.0
|
|
52
52
|
|
|
53
53
|
SRV_CORS=false
|
|
@@ -151,7 +151,7 @@ In the .env file you can change swagger settings in this way:
|
|
|
151
151
|
|
|
152
152
|
```ruby
|
|
153
153
|
SWAGGER=true
|
|
154
|
-
SWAGGER_HOST=localhost
|
|
154
|
+
SWAGGER_HOST=http://localhost:2230
|
|
155
155
|
SWAGGER_TITLE=Volcanic API Documentation
|
|
156
156
|
SWAGGER_DESCRIPTION=List of available APIs and schemes to use
|
|
157
157
|
SWAGGER_VERSION=0.1.0
|
|
@@ -242,6 +242,7 @@ module.exports = {
|
|
|
242
242
|
## Controllers
|
|
243
243
|
|
|
244
244
|
```ts
|
|
245
|
+
// src/api/example/controller/demo.ts
|
|
245
246
|
import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
|
|
246
247
|
|
|
247
248
|
export async function user(req: FastifyRequest, reply: FastifyReply) {
|
|
@@ -268,6 +269,7 @@ By default, there are some basic roles:
|
|
|
268
269
|
In this way you can add custom roles:
|
|
269
270
|
|
|
270
271
|
```ts
|
|
272
|
+
// src/config/roles.ts
|
|
271
273
|
import { Role } from '@volcanicminds/backend'
|
|
272
274
|
|
|
273
275
|
export const roles: Role[] = [
|
package/TODO.md
CHANGED
|
@@ -7,5 +7,7 @@ https://www.fastify.io/docs/latest/Reference/Validation-and-Serialization/
|
|
|
7
7
|
https://json-schema.org/draft/2020-12/json-schema-validation.html#name-pattern
|
|
8
8
|
|
|
9
9
|
- authentication
|
|
10
|
-
-
|
|
10
|
+
- userManager methods
|
|
11
|
+
- validations (see typeorm)
|
|
12
|
+
- subscribers / hooks (Active Records: in separated files)
|
|
11
13
|
- api versioning
|
package/dist/index.js
CHANGED
|
@@ -35,7 +35,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.getData = void 0;
|
|
39
38
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
40
39
|
dotenv_1.default.config();
|
|
41
40
|
const yn_1 = __importDefault(require("./lib/util/yn"));
|
|
@@ -185,9 +184,7 @@ const start = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
185
184
|
});
|
|
186
185
|
return fastify;
|
|
187
186
|
});
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
module.exports = start;
|
|
191
|
-
module.exports.server = start;
|
|
192
|
-
module.exports.default = start;
|
|
187
|
+
module.exports = { yn: yn_1.default, start };
|
|
188
|
+
module.exports.server = { yn: yn_1.default, start };
|
|
189
|
+
module.exports.default = { yn: yn_1.default, start };
|
|
193
190
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEZ,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AAEf,uDAA8B;AAC9B,+DAAsC;AACtC,sDAAuC;AACvC,gEAAiD;AACjD,kEAAmD;AACnD,gEAAiD;AACjD,oEAAqD;AAErD,sDAAkD;AAClD,uDAAuC;AACvC,+DAAsC;AACtC,qEAA2C;AAE3C,yDAAgC;AAChC,6DAAoC;AACpC,iEAAwC;AACxC,qEAA2C;AAE3C,2CAA6C;AAC7C,oEAAkF;AAClF,kDAAmE;AACnE,uEAA8C;AAC9C,uEAA6C;AAE7C,MAAM,CAAC,GAAG,GAAG,gBAAM,CAAA;AAEnB,SAAe,YAAY,CAAC,OAAwB;;QAClD,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAY;YACzC,QAAQ,EAAR,mBAAQ;YACR,SAAS,EAAT,mBAAS;YACT,OAAO,EAAE,CAAC,IAAA,kCAAwB,EAAC,OAAO,CAAC,CAAC;SAC7C,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,OAAwB,EAAE,MAAsC;;QAC9F,IAAI,MAAM,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAC/B,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAA,iBAAa,EAAC,MAAM,CAAC,EAAE;gBAC5C,OAAO,EAAE,2BAAiB;aAC3B,CAAC,CAAA;SASH;IACH,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,OAAwB;;QACvD,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE/B,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1B,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE5B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,OAAwB;;QACvD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;QAEtH,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,WAAW,EAAE;YACf,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAE/B,MAAM,OAAO,CAAC,QAAQ,CAAC,iBAAO,EAAE;gBAC9B,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;wBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;wBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;qBACpC;oBACD,IAAI,EAAE,YAAY,IAAI,gBAAgB;oBACtC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC1B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;oBAC9B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;iBAC/B;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,KAAK,EAAE,aAAa,IAAI,4BAA4B;wBACpD,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;wBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;qBACpC;oBACD,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,YAAY,IAAI,uBAAuB;yBAC7C;qBACF;oBACD,UAAU,EAAE;wBACV,eAAe,EAAE;4BACf,MAAM,EAAE;gCACN,IAAI,EAAE,MAAM;gCACZ,MAAM,EAAE,QAAQ;6BACjB;yBACF;qBACF;iBACF;aACF,CAAC,CAAA;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,oBAAS,EAAE;gBAChC,WAAW,EAAE,kBAAkB,IAAI,gBAAgB;gBACnD,QAAQ,EAAE;oBACR,YAAY,EAAE,MAAM;oBACpB,WAAW,EAAE,IAAI;oBACjB,wBAAwB,EAAE,CAAC;iBAC5B;aAWF,CAAC,CAAA;SAmDH;IACH,CAAC;CAAA;AAED,MAAM,KAAK,GAAG,GAAS,EAAE;IACvB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,gBAAM,CAAC,CAAA;IAClB,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAEjC,MAAM,IAAI,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAA;IAEnC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAE7G,MAAM,UAAU,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,aAAa,GAAG,IAAA,YAAE,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACzC,MAAM,eAAe,GAAG,IAAA,YAAE,EAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC7C,MAAM,kBAAkB,GAAG,IAAA,YAAE,EAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IACnD,MAAM,iBAAiB,GAAG,IAAA,YAAE,EAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAEjD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAA;IACxD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAA;IACvD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAA;IACpG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,wBAAwB,iBAAiB,EAAE,CAAC,CAAA;IAC/D,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,yBAAyB,kBAAkB,EAAE,CAAC,CAAA;IAGjE,CAAC,UAAU,IAAI,eAAe,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,gBAAM,CAAC,CAAC,CAAA;IAClE,kBAAkB,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,oBAAS,CAAC,CAAC,CAAA;IACzD,aAAa,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,cAAI,CAAC,CAAC,CAAA;IAC/C,iBAAiB,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,kBAAQ,CAAC,CAAC,CAAA;IAGvD,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAY,EAAE;QACnC,MAAM,EAAE,UAAU,IAAI,aAAa;QACnC,IAAI,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;KACpC,CAAC,CAAA;IAEF,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAA;IAE5D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAE9D,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACvC,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAEhC,MAAM,OAAO;SACV,MAAM,CAAC;QACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,IAAI;KACX,CAAC;SACD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,uBAAuB,OAAO,MAAM,CAAC,CAAA;QAC9C,GAAG,CAAC,IAAI,CAAC,mBAAmB,OAAO,KAAK,CAAC,CAAA;QAEzC,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAClD,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gBAAgB,KAAK,CAAC,CAAA;IAChH,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AA0BD,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,CAAA;AAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,CAAA;AACrC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,EAAE,EAAF,YAAE,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.newAuthCode = exports.valid = exports.compare = exports.hash = void 0;
|
|
4
|
+
const { customAlphabet } = require('nanoid');
|
|
5
|
+
const nanoid = customAlphabet('AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789');
|
|
6
|
+
const bcrypt = require('bcrypt');
|
|
7
|
+
function hash(password) {
|
|
8
|
+
return bcrypt.hashSync(password, bcrypt.genSaltSync());
|
|
9
|
+
}
|
|
10
|
+
exports.hash = hash;
|
|
11
|
+
function compare(password, encryptedPassword) {
|
|
12
|
+
return bcrypt.compareSync(password, encryptedPassword);
|
|
13
|
+
}
|
|
14
|
+
exports.compare = compare;
|
|
15
|
+
function valid(password) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
exports.valid = valid;
|
|
19
|
+
function newAuthCode() {
|
|
20
|
+
return nanoid(Number(process.env.AUTH_CODE_SIZE) || 10);
|
|
21
|
+
}
|
|
22
|
+
exports.newAuthCode = newAuthCode;
|
|
23
|
+
//# sourceMappingURL=password.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/password.ts"],"names":[],"mappings":";;;AAAA,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,gEAAgE,CAAC,CAAA;AAE/F,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAGhC,SAAgB,IAAI,CAAC,QAAgB;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;AACxD,CAAC;AAFD,oBAEC;AAED,SAAgB,OAAO,CAAC,QAAgB,EAAE,iBAAyB;IACjE,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;AACxD,CAAC;AAFD,0BAEC;AAED,SAAgB,KAAK,CAAC,QAAgB;IACpC,OAAO,IAAI,CAAA;AACb,CAAC;AAFD,sBAEC;AAED,SAAgB,WAAW;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAA;AACzD,CAAC;AAFD,kCAEC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
module.exports = {
|
|
3
|
+
username: /(?=^.{3,33}$)^[a-z][a-z0-9]*[._-]?[a-z0-9]+$/gi,
|
|
4
|
+
emailAlt: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
5
|
+
email: /^\w+([\.+-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/,
|
|
6
|
+
password: /^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[^\w\d\s:])([^\s]){8,64}$/gi,
|
|
7
|
+
zipCode: /(^\d{5}$)|(^\d{5}-\d{4}$)/,
|
|
8
|
+
taxCodePersona: /^[a-zA-Z]{6}[0-9]{2}[abcdehlmprstABCDEHLMPRST]{1}[0-9]{2}([a-zA-Z]{1}[0-9]{3})[a-zA-Z]{1}$/,
|
|
9
|
+
taxCodeCompany: /^([A-Z]{2}|)[0-9]{11}$/,
|
|
10
|
+
iban: /^[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}$/,
|
|
11
|
+
mobilePhone: /^((00|\+)39)?3[0-9]{8,9}$/,
|
|
12
|
+
landLinePhone: /^(((00|\+)39))?[\s]?(0{1}[1-9]{1,3})[\s]?(\d{4,6})$/,
|
|
13
|
+
tollFreePhone: /^((00|\+)39)?(800|803|167)\d{3,6}$/
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=regexp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regexp.js","sourceRoot":"","sources":["../../../lib/util/regexp.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IAKf,QAAQ,EAAE,gDAAgD;IAC1D,QAAQ,EACN,yJAAyJ;IAK3J,KAAK,EAAE,gDAAgD;IAQvD,QAAQ,EAAE,iEAAiE;IAC3E,OAAO,EAAE,2BAA2B;IACpC,cAAc,EAAE,4FAA4F;IAI5G,cAAc,EAAE,wBAAwB;IACxC,IAAI,EAAE,iEAAiE;IACvE,WAAW,EAAE,2BAA2B;IACxC,aAAa,EAAE,qDAAqD;IACpE,aAAa,EAAE,oCAAoC;CACpD,CAAA"}
|
package/dist/server.js
CHANGED
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAA;AACnC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAA;AACnC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AACpC,KAAK,EAAE,CAAA"}
|
package/index.d.ts
CHANGED
package/index.ts
CHANGED
|
@@ -254,8 +254,6 @@ export {
|
|
|
254
254
|
ConfiguredRoute
|
|
255
255
|
} from './types/global'
|
|
256
256
|
|
|
257
|
-
export { getData } from './lib/util/common'
|
|
258
|
-
|
|
259
257
|
/**
|
|
260
258
|
* These export configurations enable JS and TS developers
|
|
261
259
|
* to consumer BE in whatever way best suits their needs.
|
|
@@ -267,6 +265,6 @@ export { getData } from './lib/util/common'
|
|
|
267
265
|
* - `import server from '@volcanicminds/backend'`
|
|
268
266
|
* - `import server, { TSC_definition } from '@volcanicminds/backend'`
|
|
269
267
|
*/
|
|
270
|
-
module.exports = start
|
|
271
|
-
module.exports.server = start
|
|
272
|
-
module.exports.default = start
|
|
268
|
+
module.exports = { yn, start }
|
|
269
|
+
module.exports.server = { yn, start }
|
|
270
|
+
module.exports.default = { yn, start }
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const { customAlphabet } = require('nanoid')
|
|
2
|
+
const nanoid = customAlphabet('AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789')
|
|
3
|
+
|
|
4
|
+
const bcrypt = require('bcrypt')
|
|
5
|
+
// const validator = require('../../../loader/validator')
|
|
6
|
+
|
|
7
|
+
export function hash(password: string): string {
|
|
8
|
+
return bcrypt.hashSync(password, bcrypt.genSaltSync())
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function compare(password: string, encryptedPassword: string): boolean {
|
|
12
|
+
return bcrypt.compareSync(password, encryptedPassword)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function valid(password: string): boolean {
|
|
16
|
+
return true //password?.length > 7 && validator.password(password)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function newAuthCode() {
|
|
20
|
+
return nanoid(Number(process.env.AUTH_CODE_SIZE) || 10)
|
|
21
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/*
|
|
3
|
+
* min 3 max 33, one special character (. _ -) only in the middle
|
|
4
|
+
* username can have uppercase or lowercase chars
|
|
5
|
+
*/
|
|
6
|
+
username: /(?=^.{3,33}$)^[a-z][a-z0-9]*[._-]?[a-z0-9]+$/gi,
|
|
7
|
+
emailAlt:
|
|
8
|
+
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
9
|
+
/*
|
|
10
|
+
* email can have multiple words
|
|
11
|
+
* email can use . - or + for smart labeling
|
|
12
|
+
*/
|
|
13
|
+
email: /^\w+([\.+-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/,
|
|
14
|
+
/*
|
|
15
|
+
* password must contain 1 number (0-9)
|
|
16
|
+
* password must contain 1 uppercase chars
|
|
17
|
+
* password must contain 1 lowercase chars
|
|
18
|
+
* password must contain 1 non-alpha number
|
|
19
|
+
* password is 8-64 characters with no space
|
|
20
|
+
*/
|
|
21
|
+
password: /^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[^\w\d\s:])([^\s]){8,64}$/gi,
|
|
22
|
+
zipCode: /(^\d{5}$)|(^\d{5}-\d{4}$)/,
|
|
23
|
+
taxCodePersona: /^[a-zA-Z]{6}[0-9]{2}[abcdehlmprstABCDEHLMPRST]{1}[0-9]{2}([a-zA-Z]{1}[0-9]{3})[a-zA-Z]{1}$/,
|
|
24
|
+
/*
|
|
25
|
+
* taxCode can have 2 letter (IT,DE,..) and 11 digits
|
|
26
|
+
*/
|
|
27
|
+
taxCodeCompany: /^([A-Z]{2}|)[0-9]{11}$/,
|
|
28
|
+
iban: /^[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}$/,
|
|
29
|
+
mobilePhone: /^((00|\+)39)?3[0-9]{8,9}$/,
|
|
30
|
+
landLinePhone: /^(((00|\+)39))?[\s]?(0{1}[1-9]{1,3})[\s]?(\d{4,6})$/,
|
|
31
|
+
tollFreePhone: /^((00|\+)39)?(800|803|167)\d{3,6}$/
|
|
32
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volcanicminds/backend",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.20",
|
|
4
4
|
"codename": "turin",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "The volcanic (minds) backend",
|
|
@@ -33,8 +33,13 @@
|
|
|
33
33
|
"node": ">=16"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
|
-
"
|
|
37
|
-
"
|
|
36
|
+
"clean": "rm -rf dist esm",
|
|
37
|
+
"prebuild": "npm run clean",
|
|
38
|
+
"build:esm": "tsc --target es2018 --outDir esm",
|
|
39
|
+
"build:cjs": "tsc --target es2015 --module commonjs --outDir dist",
|
|
40
|
+
"build": "npm run build:esm && npm run build:cjs",
|
|
41
|
+
"compile": "npm run build",
|
|
42
|
+
"preprod": "npm run build",
|
|
38
43
|
"prod": "cd dist && node server.js",
|
|
39
44
|
"server": "cd dist && node server.js",
|
|
40
45
|
"start": "ts-node server.ts",
|
|
@@ -43,20 +48,21 @@
|
|
|
43
48
|
"upgrade-deps": "npm-upgrade"
|
|
44
49
|
},
|
|
45
50
|
"dependencies": {
|
|
46
|
-
"@apollo/server": "^4.
|
|
47
|
-
"@as-integrations/fastify": "^1.
|
|
48
|
-
"@fastify/compress": "^6.
|
|
51
|
+
"@apollo/server": "^4.2.2",
|
|
52
|
+
"@as-integrations/fastify": "^1.2.0",
|
|
53
|
+
"@fastify/compress": "^6.2.0",
|
|
49
54
|
"@fastify/cors": "^8.2.0",
|
|
50
|
-
"@fastify/helmet": "^10.0
|
|
51
|
-
"@fastify/jwt": "^6.
|
|
55
|
+
"@fastify/helmet": "^10.1.0",
|
|
56
|
+
"@fastify/jwt": "^6.4.0",
|
|
52
57
|
"@fastify/rate-limit": "^7.5.0",
|
|
53
|
-
"@fastify/swagger": "^8.
|
|
54
|
-
"@fastify/swagger-ui": "^1.
|
|
58
|
+
"@fastify/swagger": "^8.2.0",
|
|
59
|
+
"@fastify/swagger-ui": "^1.3.0",
|
|
55
60
|
"@types/node": "^18.11.9",
|
|
56
61
|
"dotenv": "^16.0.3",
|
|
57
|
-
"fastify": "^4.10.
|
|
62
|
+
"fastify": "^4.10.2",
|
|
58
63
|
"glob": "^8.0.3",
|
|
59
64
|
"graphql": "^16.6.0",
|
|
65
|
+
"nanoid": "^4.0.0",
|
|
60
66
|
"object-sizeof": "^1.6.3",
|
|
61
67
|
"pino": "^8.7.0",
|
|
62
68
|
"pino-pretty": "^9.1.1",
|
package/server.ts
CHANGED
package/tsconfig.json
CHANGED
|
@@ -34,6 +34,6 @@
|
|
|
34
34
|
// "*": ["*", "components/*"]
|
|
35
35
|
// }
|
|
36
36
|
},
|
|
37
|
-
"include": ["*.ts", "*.d.ts", "lib/**/*", "config
|
|
37
|
+
"include": ["*.ts", "*.d.ts", "lib/**/*", "config/*", "hooks/*", "types/*"],
|
|
38
38
|
"exclude": ["node_modules", "test/**/*"]
|
|
39
39
|
}
|