@kk-garden/shared 1.0.0 → 1.0.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 ADDED
@@ -0,0 +1,15 @@
1
+ ## Kiryl Kartsialeu, EN69783 Shared Diploma Project Package
2
+ - This repository contains shared code package for my Diploma Garden project.
3
+ - It contains classes, types and assets the project will need for both server app and front-end app.
4
+ ### Package name
5
+ Package name on npm is **@kk-garden/shared**. I would not recommend trying to use it as it is project-specific and is needed not to duplicate the code content needed
6
+ in two repos at a time.
7
+ ### How to build
8
+ First make sure you have all the dev dependencies installed:
9
+ ```
10
+ npm install
11
+ ```
12
+ Then all you have to do is to run:
13
+ ```
14
+ npm run build
15
+ ```
@@ -0,0 +1,16 @@
1
+ import type { DataObject } from "./success-data";
2
+ export type AppErrorConfig = {
3
+ message: string;
4
+ status?: number;
5
+ context?: DataObject;
6
+ error?: Error;
7
+ };
8
+ export declare class AppError extends Error {
9
+ status?: number;
10
+ context?: DataObject;
11
+ error?: Error;
12
+ get isServer(): boolean;
13
+ get isClient(): boolean;
14
+ constructor({ status, message, context, error }: AppErrorConfig);
15
+ }
16
+ //# sourceMappingURL=app-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-error.d.ts","sourceRoot":"","sources":["../../src/errors/app-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;gBAEW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,cAAc;CAMhE"}
@@ -0,0 +1,18 @@
1
+ export class AppError extends Error {
2
+ status;
3
+ context;
4
+ error;
5
+ get isServer() {
6
+ return !!(this.status && this.status > 500 && this.status < 600);
7
+ }
8
+ get isClient() {
9
+ return !!(this.status && this.status >= 400 && this.status < 500);
10
+ }
11
+ constructor({ status, message, context, error }) {
12
+ super(message);
13
+ this.status = status;
14
+ this.context = context;
15
+ this.error = error;
16
+ }
17
+ }
18
+ //# sourceMappingURL=app-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../src/errors/app-error.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,MAAM,CAAU;IAChB,OAAO,CAAc;IACrB,KAAK,CAAS;IAEd,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAkB;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { DataObject, SuccessData } from "./success-data";
2
+ export declare const handleError: <Data extends DataObject = DataObject>(e: unknown) => SuccessData<false, Data>;
3
+ //# sourceMappingURL=handle-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-error.d.ts","sourceRoot":"","sources":["../../src/errors/handle-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG5D,eAAO,MAAM,WAAW,GAAI,IAAI,SAAS,UAAU,GAAG,UAAU,EAAE,GAAG,OAAO,KAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CA0BrG,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { AppError } from "./app-error";
2
+ export const handleError = (e) => {
3
+ let statusCode = 0;
4
+ let message = 'Unknown error';
5
+ if (e instanceof Error) {
6
+ message = `${e.message}`;
7
+ return { success: false, errors: [new AppError({ message, status: 0, context: JSON.stringify(e) })] };
8
+ }
9
+ if (e && typeof e === 'object') {
10
+ if ('code' in e) {
11
+ statusCode = parseInt(e.code);
12
+ }
13
+ else if ('status' in e) {
14
+ statusCode = parseInt(e.status);
15
+ }
16
+ else if ('statusCode' in e) {
17
+ statusCode = parseInt(e.statusCode);
18
+ }
19
+ if ('data' in e) {
20
+ message = JSON.stringify(e.data);
21
+ }
22
+ else if ('description' in e) {
23
+ message = JSON.stringify(e.description);
24
+ }
25
+ else {
26
+ message = JSON.stringify(e);
27
+ }
28
+ }
29
+ else if (e && typeof e === 'string') {
30
+ message = e;
31
+ }
32
+ return { success: false, errors: [new AppError({ message, status: statusCode, context: JSON.stringify(e) })] };
33
+ };
34
+ //# sourceMappingURL=handle-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-error.js","sourceRoot":"","sources":["../../src/errors/handle-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAuC,CAAU,EAA4B,EAAE;IACxG,IAAI,UAAU,GAAW,CAAC,CAAC;IAC3B,IAAI,OAAO,GAAW,eAAe,CAAC;IACtC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YACzB,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YAC7B,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAoB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACjH,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { AppError, type AppErrorConfig } from './app-error';
2
+ export { handleError } from './handle-error';
3
+ export type { SuccessData, DataObject, SuccessDataAny } from './success-data';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AppError } from './app-error';
2
+ export { handleError } from './handle-error';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { AppError } from "./app-error";
2
+ export type DataObject = string | object;
3
+ export type SuccessData<T extends boolean, Data extends DataObject = DataObject> = {
4
+ success: T;
5
+ data?: Data;
6
+ } & (T extends false ? {
7
+ errors: AppError[];
8
+ } : object);
9
+ export type SuccessDataAny<Data extends DataObject = DataObject> = SuccessData<true, Data> | SuccessData<false, Data>;
10
+ //# sourceMappingURL=success-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"success-data.d.ts","sourceRoot":"","sources":["../../src/errors/success-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,SAAS,UAAU,GAAG,UAAU,IAAI;IACjF,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,CAAC,CAAC,SAAS,KAAK,GAAG;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,GAAG,MAAM,CAAC,CAAC;AAExD,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,UAAU,GAAG,UAAU,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=success-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"success-data.js","sourceRoot":"","sources":["../../src/errors/success-data.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@kk-garden/shared",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "Kiryl Kartsialeu EN69783 diploma project shared package",
5
5
  "author": "Kiryl Kartsialeu",
6
6
  "type": "module",
7
+ "repository": "https://github.com/KaKKaDu/kk-garden",
7
8
  "scripts": {
8
9
  "check": "tsc --noEmit",
9
10
  "build": "tsc -p tsconfig.json && npm run copy-assets",
@@ -26,6 +27,10 @@
26
27
  "./types": {
27
28
  "types": "./dist/types/index.d.ts",
28
29
  "default": "./dist/types/index.js"
30
+ },
31
+ "./errors": {
32
+ "types": "./dist/errors/index.d.ts",
33
+ "default": "./dist/errors/index.js"
29
34
  }
30
35
  },
31
36
  "files": [