@nestia/core 1.2.2 → 1.2.3

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/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  Nestia is a set of helper libraries for NestJS, supporting below features:
11
11
 
12
12
  - `@nestia/core`: super-fast decorators
13
- - `@nestia/sdk`
13
+ - `@nestia/sdk`:
14
14
  - SDK generator for clients
15
15
  - Swagger generator evolved than ever
16
16
  - Automatic E2E test functions generator
@@ -48,12 +48,13 @@ Check out the document in the [website](https://nestia.io/docs/):
48
48
  - [Setup](https://nestia.io/docs/setup/)
49
49
 
50
50
  ### 📖 Features
51
+ - [Pure TypeScript](https://nestia.io/docs/pure)
51
52
  - Core Library
52
53
  - [TypedRoute](https://nestia.io/docs/core/TypedRoute/)
53
54
  - [TypedBody](https://nestia.io/docs/core/TypedBody/)
54
55
  - [TypedParam](https://nestia.io/docs/core/TypedParam/)
55
56
  - [TypedQuery](https://nestia.io/docs/core/TypedRoute/)
56
57
  - Generators
57
- - [SDK Library](https://nestia.io/docs/sdk/sdk/)
58
58
  - [Swagger Documents](https://nestia.io/docs/sdk/swagger/)
59
+ - [SDK Library](https://nestia.io/docs/sdk/sdk/)
59
60
  - [E2E Functions](https://nestia.io/docs/sdk/e2e/)
@@ -28,4 +28,4 @@
28
28
  *
29
29
  * @author Jeongho Nam - https://github.com/samchon
30
30
  */
31
- export declare function TypedParam(name: string, type?: "boolean" | "number" | "string" | "uuid", nullable?: false | true): ParameterDecorator;
31
+ export declare function TypedParam(name: string, type?: "boolean" | "number" | "string" | "uuid" | "date", nullable?: false | true): ParameterDecorator;
@@ -58,6 +58,11 @@ function TypedParam(name, type, nullable) {
58
58
  return (0, send_bad_request_1.send_bad_request)(context)(new common_1.BadRequestException("Value of the URL parameter \"".concat(name, "\" is not a valid UUID.")));
59
59
  return str;
60
60
  }
61
+ else if (type === "date") {
62
+ if (DATE_PATTERN.test(str) === false)
63
+ return (0, send_bad_request_1.send_bad_request)(context)(new common_1.BadRequestException("Value of the URL parameter \"".concat(name, "\" is not a valid date.")));
64
+ return str;
65
+ }
61
66
  else
62
67
  return str;
63
68
  }
@@ -67,4 +72,5 @@ function TypedParam(name, type, nullable) {
67
72
  }
68
73
  exports.TypedParam = TypedParam;
69
74
  var UUID_PATTERN = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
75
+ var DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
70
76
  //# sourceMappingURL=TypedParam.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypedParam.js","sourceRoot":"","sources":["../../src/decorators/TypedParam.ts"],"names":[],"mappings":";;;AAAA,yCAIwB;AAGxB,gEAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,UAAU,CACtB,IAAY,EACZ,IAA+C,EAC/C,QAAuB;IAEvB,SAAS,UAAU,CAAC,EAAO,EAAE,OAAyB;QAClD,IAAM,OAAO,GAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACrE,IAAM,GAAG,GAAW,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,QAAQ,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;aAChD,IAAI,IAAI,KAAK,SAAS,EAAE;YACzB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;iBAC1C,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;;gBAElD,OAAO,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAC5B,IAAI,4BAAmB,CACnB,sCAA+B,IAAI,wBAAqB,CAC3D,CACJ,CAAC;SACT;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC1B,IAAM,KAAK,GAAW,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,KAAK,CAAC;gBACZ,OAAO,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAC5B,IAAI,4BAAmB,CACnB,uCAA+B,IAAI,wBAAoB,CAC1D,CACJ,CAAC;YACN,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YACxB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK;gBAChC,OAAO,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAC5B,IAAI,4BAAmB,CACnB,uCAA+B,IAAI,4BAAwB,CAC9D,CACJ,CAAC;YACN,OAAO,GAAG,CAAC;SACd;;YAAM,OAAO,GAAG,CAAC;IACtB,CAAC;IACA,UAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IACzC,UAAkB,CAAC,IAAI,GAAG,IAAI,CAAC;IAChC,OAAO,IAAA,6BAAoB,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAzCD,gCAyCC;AAED,IAAM,YAAY,GACd,qHAAqH,CAAC"}
1
+ {"version":3,"file":"TypedParam.js","sourceRoot":"","sources":["../../src/decorators/TypedParam.ts"],"names":[],"mappings":";;;AAAA,yCAIwB;AAGxB,gEAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,UAAU,CACtB,IAAY,EACZ,IAAwD,EACxD,QAAuB;IAEvB,SAAS,UAAU,CAAC,EAAO,EAAE,OAAyB;QAClD,IAAM,OAAO,GAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACrE,IAAM,GAAG,GAAW,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,QAAQ,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;aAChD,IAAI,IAAI,KAAK,SAAS,EAAE;YACzB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;iBAC1C,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;;gBAElD,OAAO,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAC5B,IAAI,4BAAmB,CACnB,sCAA+B,IAAI,wBAAqB,CAC3D,CACJ,CAAC;SACT;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC1B,IAAM,KAAK,GAAW,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,KAAK,CAAC;gBACZ,OAAO,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAC5B,IAAI,4BAAmB,CACnB,uCAA+B,IAAI,wBAAoB,CAC1D,CACJ,CAAC;YACN,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YACxB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK;gBAChC,OAAO,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAC5B,IAAI,4BAAmB,CACnB,uCAA+B,IAAI,4BAAwB,CAC9D,CACJ,CAAC;YACN,OAAO,GAAG,CAAC;SACd;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YACxB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK;gBAChC,OAAO,IAAA,mCAAgB,EAAC,OAAO,CAAC,CAC5B,IAAI,4BAAmB,CACnB,uCAA+B,IAAI,4BAAwB,CAC9D,CACJ,CAAC;YACN,OAAO,GAAG,CAAC;SACd;;YACI,OAAO,GAAG,CAAC;IACpB,CAAC;IACA,UAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IACzC,UAAkB,CAAC,IAAI,GAAG,IAAI,CAAC;IAChC,OAAO,IAAA,6BAAoB,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAlDD,gCAkDC;AAED,IAAM,YAAY,GACd,qHAAqH,CAAC;AAC1H,IAAM,YAAY,GAAG,qBAAqB,CAAC"}
@@ -102,7 +102,7 @@ var error = function (message) {
102
102
  var equals = function (atomic, p) {
103
103
  var name = p.getName();
104
104
  if (atomic === "string")
105
- return name === "\"string\"" || name === "\"uuid\"";
105
+ return name === "\"string\"" || name === "\"uuid\"" || name === "\"date\"";
106
106
  return "\"".concat(atomic, "\"") === name;
107
107
  };
108
108
  //# sourceMappingURL=TypedParamProgrammer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypedParamProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedParamProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypedParamProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedParamProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,6EAA4E;AAC5E,uEAAsE;AAKtE,IAAiB,oBAAoB,CA2DpC;AA3DD,WAAiB,oBAAoB;IACpB,6BAAQ,GACjB,UAAC,EAAoC;YAAlC,OAAO,aAAA;QACV,OAAA,UAAC,UAAoC;YACrC,OAAA,UAAC,IAAa;gBACV,IAAM,QAAQ,GAAa,iCAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACxD,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI;oBACd,QAAQ,UAAA;iBACX,CAAC,CAAC,IAAI,uCAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAA,KAAA,OAAW,gBAAgB,CAAC,QAAQ,CAAC,IAAA,EAApC,MAAM,QAA8B,CAAC;gBAE5C,0BAA0B;gBAC1B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;oBACvB,OAAO;wBACH,UAAU,CAAC,CAAC,CAAC;wBACb,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC;wBACtC,QAAQ,CAAC,QAAQ;4BACb,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;4BACzB,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE;qBACjC,CAAC;gBAEN,uCAAuC;gBACvC,IAAM,SAAS,GAAa,iCAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACzD,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC,IAAI,uCAAkB,EAAE,CAAC,CACxB,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC3C,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,KAAK;oBACnC,MAAM,IAAI,KAAK,CACX,KAAK,CAAC,+CAA+C,CAAC,CACzD,CAAC;gBACN,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;oBACvB,OAAO;wBACH,UAAU,CAAC,CAAC,CAAC;wBACb,UAAU,CAAC,CAAC,CAAC;wBACb,QAAQ,CAAC,QAAQ;4BACb,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;4BACzB,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE;qBACjC,CAAC;gBAEN,8BAA8B;gBAC9B,IAAM,QAAQ,GAAa,iCAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACxD,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC,IAAI,uCAAkB,EAAE,CAAC,CACxB,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC3C,CAAC;gBACF,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,OAAO;oBAC/D,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;qBAC7D,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;oBAC1D,MAAM,IAAI,KAAK,CACX,KAAK,CACD,0DAA0D,CAC7D,CACJ,CAAC;gBACN,OAAO,UAAU,CAAC;YACtB,CAAC;QAtDD,CAsDC;IAvDD,CAuDC,CAAC;AACV,CAAC,EA3DgB,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QA2DpC;AAED,IAAM,QAAQ,GAAG,UAAC,IAAc;IAC5B,IAAI,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;SACzD,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;QAC5B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAE7D,IAAM,OAAO,GAAa,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAM,QAAQ,GACV,IAAI,CAAC,OAAO,CAAC,MAAM;QACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,MAAM,EAAf,CAAe,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAAE,CAAC,CAAC,CAAC;IAC1E,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;SAClE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,IAAc,IAAe,gCAChD,IAAI,GAAG,wCAAK,IAAI,CAAC,OAAO,kBAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,UAAE,WADhB,CAEtD,CAAC;AAEF,IAAM,KAAK,GAAG,UAAC,OAAe;IAC1B,OAAA,6CAAsC,OAAO,MAAG;AAAhD,CAAgD,CAAC;AAErD,IAAM,MAAM,GAAG,UAAC,MAAc,EAAE,CAAW;IACvC,IAAM,IAAI,GAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,MAAM,KAAK,QAAQ;QACnB,OAAO,IAAI,KAAK,YAAU,IAAI,IAAI,KAAK,UAAQ,IAAI,IAAI,KAAK,UAAQ,CAAC;IACzE,OAAO,YAAI,MAAM,OAAG,KAAK,IAAI,CAAC;AAClC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,79 +1,79 @@
1
- {
2
- "name": "@nestia/core",
3
- "version": "1.2.2",
4
- "description": "Super-fast validation decorators of NestJS",
5
- "main": "lib/index.js",
6
- "typings": "lib/index.d.ts",
7
- "scripts": {
8
- "build": "rimraf lib && tsc",
9
- "dev": "npm run build -- --watch",
10
- "eslint": "eslint ./**/*.ts",
11
- "eslint:fix": "eslint ./**/*.ts --fix",
12
- "package:latest": "npm run build && npm publish --access public",
13
- "package:next": "npm run package:latest -- --tag next",
14
- "prettier": "prettier ./**/*.ts --write",
15
- "prepare": "ts-patch install"
16
- },
17
- "repository": {
18
- "type": "git",
19
- "url": "https://github.com/samchon/nestia"
20
- },
21
- "keywords": [
22
- "nestjs",
23
- "nestia",
24
- "typia",
25
- "validator",
26
- "decorator",
27
- "class-validator",
28
- "class-transformer"
29
- ],
30
- "author": "Jeongho Nam",
31
- "license": "MIT",
32
- "bugs": {
33
- "url": "https://github.com/samchon/nestia/issues"
34
- },
35
- "homepage": "https://github.com/samchon/nestia",
36
- "dependencies": {
37
- "@nestia/fetcher": "^1.2.1",
38
- "@nestjs/common": ">= 7.0.1",
39
- "@nestjs/core": ">= 7.0.1",
40
- "@nestjs/platform-express": ">= 7.0.1",
41
- "@nestjs/platform-fastify": ">= 7.0.1",
42
- "detect-ts-node": "^1.0.5",
43
- "glob": "^7.2.0",
44
- "raw-body": ">= 2.0.0",
45
- "reflect-metadata": ">= 0.1.12",
46
- "rxjs": ">= 6.0.0",
47
- "typia": "^3.8.4"
48
- },
49
- "peerDependencies": {
50
- "typescript": ">= 4.5.2"
51
- },
52
- "devDependencies": {
53
- "@trivago/prettier-plugin-sort-imports": "^4.0.0",
54
- "@types/express": "^4.17.15",
55
- "@types/glob": "^7.2.0",
56
- "@types/inquirer": "^9.0.3",
57
- "@typescript-eslint/eslint-plugin": "^5.46.1",
58
- "@typescript-eslint/parser": "^5.46.1",
59
- "commander": "^10.0.0",
60
- "comment-json": "^4.2.3",
61
- "eslint-plugin-deprecation": "^1.4.1",
62
- "git-last-commit": "^1.0.1",
63
- "inquirer": "^8.2.5",
64
- "prettier": "^2.8.7",
65
- "rimraf": "^3.0.2",
66
- "ts-node": "^10.9.1",
67
- "ts-patch": "^2.1.0",
68
- "tstl": "^2.5.13",
69
- "typescript": "^4.9.5",
70
- "typescript-transform-paths": "^3.4.6"
71
- },
72
- "files": [
73
- "README.md",
74
- "LICENSE",
75
- "package.json",
76
- "lib",
77
- "src"
78
- ]
1
+ {
2
+ "name": "@nestia/core",
3
+ "version": "1.2.3",
4
+ "description": "Super-fast validation decorators of NestJS",
5
+ "main": "lib/index.js",
6
+ "typings": "lib/index.d.ts",
7
+ "scripts": {
8
+ "build": "rimraf lib && tsc",
9
+ "dev": "npm run build -- --watch",
10
+ "eslint": "eslint ./**/*.ts",
11
+ "eslint:fix": "eslint ./**/*.ts --fix",
12
+ "package:latest": "npm run build && npm publish --access public",
13
+ "package:next": "npm run package:latest -- --tag next",
14
+ "prettier": "prettier ./**/*.ts --write",
15
+ "prepare": "ts-patch install"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/samchon/nestia"
20
+ },
21
+ "keywords": [
22
+ "nestjs",
23
+ "nestia",
24
+ "typia",
25
+ "validator",
26
+ "decorator",
27
+ "class-validator",
28
+ "class-transformer"
29
+ ],
30
+ "author": "Jeongho Nam",
31
+ "license": "MIT",
32
+ "bugs": {
33
+ "url": "https://github.com/samchon/nestia/issues"
34
+ },
35
+ "homepage": "https://nestia.io",
36
+ "dependencies": {
37
+ "@nestia/fetcher": "^1.2.1",
38
+ "@nestjs/common": ">= 7.0.1",
39
+ "@nestjs/core": ">= 7.0.1",
40
+ "@nestjs/platform-express": ">= 7.0.1",
41
+ "@nestjs/platform-fastify": ">= 7.0.1",
42
+ "detect-ts-node": "^1.0.5",
43
+ "glob": "^7.2.0",
44
+ "raw-body": ">= 2.0.0",
45
+ "reflect-metadata": ">= 0.1.12",
46
+ "rxjs": ">= 6.0.0",
47
+ "typia": "^3.8.4"
48
+ },
49
+ "peerDependencies": {
50
+ "typescript": ">= 4.5.2"
51
+ },
52
+ "devDependencies": {
53
+ "@trivago/prettier-plugin-sort-imports": "^4.0.0",
54
+ "@types/express": "^4.17.15",
55
+ "@types/glob": "^7.2.0",
56
+ "@types/inquirer": "^9.0.3",
57
+ "@typescript-eslint/eslint-plugin": "^5.46.1",
58
+ "@typescript-eslint/parser": "^5.46.1",
59
+ "commander": "^10.0.0",
60
+ "comment-json": "^4.2.3",
61
+ "eslint-plugin-deprecation": "^1.4.1",
62
+ "git-last-commit": "^1.0.1",
63
+ "inquirer": "^8.2.5",
64
+ "prettier": "^2.8.7",
65
+ "rimraf": "^3.0.2",
66
+ "ts-node": "^10.9.1",
67
+ "ts-patch": "^2.1.0",
68
+ "tstl": "^2.5.13",
69
+ "typescript": "^4.9.5",
70
+ "typescript-transform-paths": "^3.4.6"
71
+ },
72
+ "files": [
73
+ "README.md",
74
+ "LICENSE",
75
+ "package.json",
76
+ "lib",
77
+ "src"
78
+ ]
79
79
  }
@@ -39,7 +39,7 @@ import { send_bad_request } from "./internal/send_bad_request";
39
39
  */
40
40
  export function TypedParam(
41
41
  name: string,
42
- type?: "boolean" | "number" | "string" | "uuid",
42
+ type?: "boolean" | "number" | "string" | "uuid" | "date",
43
43
  nullable?: false | true,
44
44
  ): ParameterDecorator {
45
45
  function TypedParam({}: any, context: ExecutionContext) {
@@ -73,7 +73,16 @@ export function TypedParam(
73
73
  ),
74
74
  );
75
75
  return str;
76
- } else return str;
76
+ } else if (type === "date") {
77
+ if (DATE_PATTERN.test(str) === false)
78
+ return send_bad_request(context)(
79
+ new BadRequestException(
80
+ `Value of the URL parameter "${name}" is not a valid date.`,
81
+ ),
82
+ );
83
+ return str;
84
+ }
85
+ else return str;
77
86
  }
78
87
  (TypedParam as any).nullable = !!nullable;
79
88
  (TypedParam as any).type = type;
@@ -82,3 +91,4 @@ export function TypedParam(
82
91
 
83
92
  const UUID_PATTERN =
84
93
  /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
94
+ const DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
@@ -91,6 +91,7 @@ const error = (message: string) =>
91
91
 
92
92
  const equals = (atomic: string, p: Metadata) => {
93
93
  const name: string = p.getName();
94
- if (atomic === "string") return name === `"string"` || name === `"uuid"`;
94
+ if (atomic === "string")
95
+ return name === `"string"` || name === `"uuid"` || name === `"date"`;
95
96
  return `"${atomic}"` === name;
96
97
  };