@dev-crew-berlin/enter-js-utils 0.1.6 → 0.2.1
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/dist/index.d.ts +1 -1
- package/dist/index.js +1 -7
- package/dist/index.js.map +1 -1
- package/dist/result/result.d.ts +33 -0
- package/dist/result/result.js +46 -0
- package/dist/result/result.js.map +1 -0
- package/package.json +9 -9
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * as result from './result/result.js';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.helloWord = void 0;
|
|
4
|
-
function helloWord() {
|
|
5
|
-
return 'hello world';
|
|
6
|
-
}
|
|
7
|
-
exports.helloWord = helloWord;
|
|
1
|
+
export * as result from './result/result.js';
|
|
8
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare type Failure<Reason> = {
|
|
2
|
+
success: false;
|
|
3
|
+
error: Reason;
|
|
4
|
+
};
|
|
5
|
+
export declare type Success<Payload> = {
|
|
6
|
+
success: true;
|
|
7
|
+
data: Payload;
|
|
8
|
+
};
|
|
9
|
+
export declare type Result<Reason, Payload> = Failure<Reason> | Success<Payload>;
|
|
10
|
+
export declare function success<Payload>(data: Payload): Success<Payload>;
|
|
11
|
+
export declare function failure<Reason>(reason: Reason): Failure<Reason>;
|
|
12
|
+
export declare function asSuccess<Payload>(result: Result<unknown, Payload>): Success<Payload> | undefined;
|
|
13
|
+
export declare function asFailure<Reason>(result: Result<Reason, unknown>): Failure<Reason> | undefined;
|
|
14
|
+
declare type UnwrapSuccess<T> = T extends Success<infer Payload> ? Payload : never;
|
|
15
|
+
declare type UnwrapFailure<T> = T extends Failure<infer Reason> ? Reason : never;
|
|
16
|
+
declare type UnwrapArray<T> = T extends (infer R)[] ? R : never;
|
|
17
|
+
declare type MergedSuccesses<T> = {
|
|
18
|
+
[K in keyof T]: UnwrapSuccess<T[K]>;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Takes a list of Results and creates one single result out of it
|
|
22
|
+
*
|
|
23
|
+
* If all results are successfull a Success is retured.
|
|
24
|
+
* Then the data value is an array of all the data values of the original
|
|
25
|
+
* results in correct order.
|
|
26
|
+
*
|
|
27
|
+
* If a single result has a failure a Failure is retured.
|
|
28
|
+
* The error then is an array of all the original errors.
|
|
29
|
+
* @param results
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
export declare function combineResults<T extends Array<Result<any, any>> | [Result<any, any>]>(results: T): Result<UnwrapFailure<UnwrapArray<T>>[], MergedSuccesses<T>>;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export function success(data) {
|
|
2
|
+
return { success: true, data: data };
|
|
3
|
+
}
|
|
4
|
+
export function failure(reason) {
|
|
5
|
+
return { success: false, error: reason };
|
|
6
|
+
}
|
|
7
|
+
export function asSuccess(result) {
|
|
8
|
+
if (!result.success)
|
|
9
|
+
return undefined;
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
export function asFailure(result) {
|
|
13
|
+
if (result.success)
|
|
14
|
+
return undefined;
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Takes a list of Results and creates one single result out of it
|
|
19
|
+
*
|
|
20
|
+
* If all results are successfull a Success is retured.
|
|
21
|
+
* Then the data value is an array of all the data values of the original
|
|
22
|
+
* results in correct order.
|
|
23
|
+
*
|
|
24
|
+
* If a single result has a failure a Failure is retured.
|
|
25
|
+
* The error then is an array of all the original errors.
|
|
26
|
+
* @param results
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
export function combineResults(results) {
|
|
30
|
+
if (results.every(function (result) { return result.success; })) {
|
|
31
|
+
return {
|
|
32
|
+
success: true,
|
|
33
|
+
data: results.map(
|
|
34
|
+
// the if statement checks that every result is a success so we can force this here
|
|
35
|
+
function (success) { return asSuccess(success).data; } // eslint-disable-line @typescript-eslint/no-non-null-assertion
|
|
36
|
+
), // also the typechecker does not resolve this so we just tell him its fine and hope there are no errors
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
success: false,
|
|
41
|
+
error: results
|
|
42
|
+
.map(function (result) { var _a; return (_a = asFailure(result)) === null || _a === void 0 ? void 0 : _a.error; })
|
|
43
|
+
.filter(function (failure) { return failure !== undefined; }), // the typechecker does not resolve this so we just tell him its fine and hope there are no errors
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/result/result.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,OAAO,CAAU,IAAa;IAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,OAAO,CAAS,MAAc;IAC5C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,MAAgC;IAEhC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IACrC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,MAA+B;IAE/B,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IACpC,OAAO,MAAM,CAAA;AACf,CAAC;AASD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAI5B,OAAU;IACV,IAAI,OAAO,CAAC,KAAK,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,OAAO,EAAd,CAAc,CAAC,EAAE;QAC7C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,OAAO,CAAC,GAAG;YACf,mFAAmF;YACnF,UAAC,OAAO,IAAK,OAAA,SAAS,CAAC,OAAO,CAAE,CAAC,IAAI,EAAxB,CAAwB,CAAC,+DAA+D;aACrE,EAAE,uGAAuG;SAC5I,CAAA;KACF;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;aACX,GAAG,CAAC,UAAC,MAAM,YAAK,OAAA,MAAA,SAAS,CAAC,MAAM,CAAC,0CAAE,KAAK,CAAA,EAAA,CAAC;aACzC,MAAM,CACL,UAAC,OAAO,IAAK,OAAA,OAAO,KAAK,SAAS,EAArB,CAAqB,CACH,EAAE,kGAAkG;KACxI,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dev-crew-berlin/enter-js-utils",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "utils such as vaildation and other helpers to work with data from the enter app",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
},
|
|
30
30
|
"homepage": "https://gitlab.com/dcb-enter/js-utils#readme",
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@types/node": "^
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"eslint": "^7.31.0",
|
|
36
|
-
"eslint-config-prettier": "^8.3.0",
|
|
32
|
+
"@types/node": "^17.0.38",
|
|
33
|
+
"eslint": "^8.16.0",
|
|
34
|
+
"eslint-config-prettier": "^8.5.0",
|
|
37
35
|
"husky": "^7.0.1",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
36
|
+
"prettier": "^2.6.2",
|
|
37
|
+
"typescript": "^4.7.2"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^5.27.0"
|
|
41
41
|
}
|
|
42
42
|
}
|