temba 0.46.1 → 0.49.0
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 +1 -1
- package/config/index.d.ts.map +1 -1
- package/config/index.js +6 -3
- package/config/index.js.map +1 -1
- package/etags/etags.js +1 -1
- package/etags/etags.js.map +1 -1
- package/index.d.ts +1 -3
- package/index.d.ts.map +1 -1
- package/index.js +4 -5
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/requestHandlers/delete.d.ts +3 -0
- package/requestHandlers/delete.d.ts.map +1 -1
- package/requestHandlers/delete.js +49 -48
- package/requestHandlers/delete.js.map +1 -1
- package/requestHandlers/get.d.ts +3 -4
- package/requestHandlers/get.d.ts.map +1 -1
- package/requestHandlers/get.js +38 -37
- package/requestHandlers/get.js.map +1 -1
- package/requestHandlers/index.d.ts +13 -11
- package/requestHandlers/index.d.ts.map +1 -1
- package/requestHandlers/index.js +16 -5
- package/requestHandlers/index.js.map +1 -1
- package/requestHandlers/patch.d.ts +1 -3
- package/requestHandlers/patch.d.ts.map +1 -1
- package/requestHandlers/patch.js +39 -38
- package/requestHandlers/patch.js.map +1 -1
- package/requestHandlers/post.d.ts +4 -0
- package/requestHandlers/post.d.ts.map +1 -1
- package/requestHandlers/post.js +39 -38
- package/requestHandlers/post.js.map +1 -1
- package/requestHandlers/put.d.ts +1 -3
- package/requestHandlers/put.d.ts.map +1 -1
- package/requestHandlers/put.js +39 -38
- package/requestHandlers/put.js.map +1 -1
- package/requestInterceptor/interceptRequest.d.ts +13 -5
- package/requestInterceptor/interceptRequest.d.ts.map +1 -1
- package/requestInterceptor/interceptRequest.js +33 -15
- package/requestInterceptor/interceptRequest.js.map +1 -1
- package/requestInterceptor/interceptorActions.d.ts +28 -0
- package/requestInterceptor/interceptorActions.d.ts.map +1 -0
- package/requestInterceptor/interceptorActions.js +42 -0
- package/requestInterceptor/interceptorActions.js.map +1 -0
- package/requestInterceptor/types.d.ts +8 -7
- package/requestInterceptor/types.d.ts.map +1 -1
- package/responseBodyInterceptor/interceptResponseBody.d.ts +1 -1
- package/responseBodyInterceptor/interceptResponseBody.d.ts.map +1 -1
- package/responseBodyInterceptor/interceptResponseBody.js +2 -2
- package/responseBodyInterceptor/interceptResponseBody.js.map +1 -1
- package/responseBodyInterceptor/types.d.ts +2 -1
- package/responseBodyInterceptor/types.d.ts.map +1 -1
- package/types.d.ts +2 -0
- package/types.d.ts.map +1 -0
- package/types.js +3 -0
- package/types.js.map +1 -0
- package/urls/urlParser.d.ts.map +1 -1
- package/urls/urlParser.js +2 -1
- package/urls/urlParser.js.map +1 -1
- package/version.js +1 -1
- package/requestInterceptor/TembaError.d.ts +0 -5
- package/requestInterceptor/TembaError.d.ts.map +0 -1
- package/requestInterceptor/TembaError.js +0 -9
- package/requestInterceptor/TembaError.js.map +0 -1
package/requestHandlers/patch.js
CHANGED
|
@@ -1,57 +1,58 @@
|
|
|
1
1
|
import { interceptPatchRequest } from '../requestInterceptor/interceptRequest.js';
|
|
2
2
|
import { validate } from '../schema/validate.js';
|
|
3
3
|
import { removeNullFields } from './utils.js';
|
|
4
|
-
import { TembaError } from '../requestInterceptor/TembaError.js';
|
|
5
4
|
import { etag } from '../etags/etags.js';
|
|
6
5
|
export const createPatchRoutes = (queries, requestInterceptor, returnNullFields, schemas, etagsEnabled) => {
|
|
7
6
|
const handlePatch = async (req) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
7
|
+
const { headers, resource, id } = req;
|
|
8
|
+
let { body } = req;
|
|
9
|
+
const validationResult = validate(body, schemas?.[resource]);
|
|
10
|
+
if (validationResult.isValid === false) {
|
|
11
|
+
return { statusCode: 400, body: { message: validationResult.errorMessage } };
|
|
12
|
+
}
|
|
13
|
+
if (requestInterceptor?.patch) {
|
|
14
|
+
try {
|
|
15
|
+
const interceptResult = await interceptPatchRequest(requestInterceptor.patch, headers, resource, id, body);
|
|
16
|
+
if (interceptResult.type === 'response') {
|
|
20
17
|
return {
|
|
21
|
-
statusCode:
|
|
22
|
-
body:
|
|
18
|
+
statusCode: interceptResult.status,
|
|
19
|
+
body: interceptResult.body,
|
|
23
20
|
};
|
|
24
21
|
}
|
|
22
|
+
body = interceptResult.body ?? body;
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
if (!item)
|
|
24
|
+
catch (error) {
|
|
28
25
|
return {
|
|
29
|
-
statusCode:
|
|
30
|
-
body: {
|
|
31
|
-
message: `ID '${id}' not found`,
|
|
32
|
-
},
|
|
26
|
+
statusCode: 500,
|
|
27
|
+
body: { message: error.message },
|
|
33
28
|
};
|
|
34
|
-
if (etagsEnabled) {
|
|
35
|
-
const itemEtag = etag(JSON.stringify(item));
|
|
36
|
-
if (req.etag !== itemEtag) {
|
|
37
|
-
return {
|
|
38
|
-
statusCode: 412,
|
|
39
|
-
body: {
|
|
40
|
-
message: 'Precondition failed',
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
29
|
}
|
|
45
|
-
|
|
46
|
-
|
|
30
|
+
}
|
|
31
|
+
let item = await queries.getById(resource, id);
|
|
32
|
+
if (!item)
|
|
47
33
|
return {
|
|
48
|
-
statusCode:
|
|
49
|
-
body:
|
|
34
|
+
statusCode: 404,
|
|
35
|
+
body: {
|
|
36
|
+
message: `ID '${id}' not found`,
|
|
37
|
+
},
|
|
50
38
|
};
|
|
39
|
+
if (etagsEnabled) {
|
|
40
|
+
const itemEtag = etag(JSON.stringify(item));
|
|
41
|
+
if (req.etag !== itemEtag) {
|
|
42
|
+
return {
|
|
43
|
+
statusCode: 412,
|
|
44
|
+
body: {
|
|
45
|
+
message: 'Precondition failed',
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
51
49
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
item = { ...item, ...body, id };
|
|
51
|
+
const updatedItem = await queries.update(resource, item);
|
|
52
|
+
return {
|
|
53
|
+
statusCode: 200,
|
|
54
|
+
body: returnNullFields ? updatedItem : removeNullFields(updatedItem),
|
|
55
|
+
};
|
|
55
56
|
};
|
|
56
57
|
return handlePatch;
|
|
57
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/requestHandlers/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/requestHandlers/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAgB,EAChB,kBAA6C,EAC7C,gBAAyB,EACzB,OAA2C,EAC3C,YAAqB,EACrB,EAAE;IACF,MAAM,WAAW,GAAG,KAAK,EAAE,GAAiB,EAAE,EAAE;QAC9C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;QACrC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAElB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC5D,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAA;QAC9E,CAAC;QAED,IAAI,kBAAkB,EAAE,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,qBAAqB,CACjD,kBAAkB,CAAC,KAAK,EACxB,OAAO,EACP,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CAAA;gBAED,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO;wBACL,UAAU,EAAE,eAAe,CAAC,MAAM;wBAClC,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAA;gBACH,CAAC;gBAED,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA;YACrC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE;iBAC5C,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI;YACP,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE;oBACJ,OAAO,EAAE,OAAO,EAAE,aAAa;iBAChC;aACF,CAAA;QAEH,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE;wBACJ,OAAO,EAAE,qBAAqB;qBAC/B;iBACF,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAI,IAAe,EAAE,EAAE,EAAE,CAAA;QAE3C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAExD,OAAO;YACL,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC;SACrE,CAAA;IACH,CAAC,CAAA;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA"}
|
|
@@ -8,6 +8,10 @@ export declare const createPostRoutes: (queries: Queries, requestInterceptor: Re
|
|
|
8
8
|
message: string;
|
|
9
9
|
};
|
|
10
10
|
headers?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
statusCode: number;
|
|
13
|
+
body: import("./types.js").Body | undefined;
|
|
14
|
+
headers?: undefined;
|
|
11
15
|
} | {
|
|
12
16
|
headers: {
|
|
13
17
|
Location: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../src/requestHandlers/post.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../src/requestHandlers/post.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE,eAAO,MAAM,gBAAgB,GAC3B,SAAS,OAAO,EAChB,oBAAoB,kBAAkB,GAAG,IAAI,EAC7C,kBAAkB,OAAO,EACzB,SAAS,2BAA2B,WAEL,WAAW;;;;;;;;;;;;;;;;;;EA+D3C,CAAA"}
|
package/requestHandlers/post.js
CHANGED
|
@@ -2,53 +2,54 @@ import { format } from 'url';
|
|
|
2
2
|
import { interceptPostRequest } from '../requestInterceptor/interceptRequest.js';
|
|
3
3
|
import { removeNullFields } from './utils.js';
|
|
4
4
|
import { validate } from '../schema/validate.js';
|
|
5
|
-
import { TembaError } from '../requestInterceptor/TembaError.js';
|
|
6
5
|
export const createPostRoutes = (queries, requestInterceptor, returnNullFields, schemas) => {
|
|
7
6
|
const handlePost = async (req) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
7
|
+
const { headers, protocol, host, resource, id } = req;
|
|
8
|
+
let { body } = req;
|
|
9
|
+
const validationResult = validate(body, schemas[resource]);
|
|
10
|
+
if (validationResult.isValid === false) {
|
|
11
|
+
return { statusCode: 400, body: { message: validationResult.errorMessage } };
|
|
12
|
+
}
|
|
13
|
+
if (requestInterceptor?.post) {
|
|
14
|
+
try {
|
|
15
|
+
const interceptResult = await interceptPostRequest(requestInterceptor.post, headers, resource, id, body);
|
|
16
|
+
if (interceptResult.type === 'response') {
|
|
20
17
|
return {
|
|
21
|
-
statusCode:
|
|
22
|
-
body:
|
|
18
|
+
statusCode: interceptResult.status,
|
|
19
|
+
body: interceptResult.body,
|
|
23
20
|
};
|
|
24
21
|
}
|
|
22
|
+
body = interceptResult.body ?? body;
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
body: {
|
|
32
|
-
message: `ID '${id}' already exists`,
|
|
33
|
-
},
|
|
34
|
-
};
|
|
24
|
+
catch (error) {
|
|
25
|
+
return {
|
|
26
|
+
statusCode: 500,
|
|
27
|
+
body: { message: error.message },
|
|
28
|
+
};
|
|
35
29
|
}
|
|
36
|
-
const newItem = await queries.create(resource, id, body2);
|
|
37
|
-
return {
|
|
38
|
-
headers: {
|
|
39
|
-
Location: format({
|
|
40
|
-
protocol: protocol,
|
|
41
|
-
host: host,
|
|
42
|
-
pathname: `${resource}/${newItem.id}`,
|
|
43
|
-
}),
|
|
44
|
-
},
|
|
45
|
-
statusCode: 201,
|
|
46
|
-
body: returnNullFields ? newItem : removeNullFields(newItem),
|
|
47
|
-
};
|
|
48
30
|
}
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
if (id) {
|
|
32
|
+
const item = await queries.getById(resource, id);
|
|
33
|
+
if (item)
|
|
34
|
+
return {
|
|
35
|
+
statusCode: 409,
|
|
36
|
+
body: {
|
|
37
|
+
message: `ID '${id}' already exists`,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
51
40
|
}
|
|
41
|
+
const newItem = await queries.create(resource, id, body);
|
|
42
|
+
return {
|
|
43
|
+
headers: {
|
|
44
|
+
Location: format({
|
|
45
|
+
protocol: protocol,
|
|
46
|
+
host: host,
|
|
47
|
+
pathname: `${resource}/${newItem.id}`,
|
|
48
|
+
}),
|
|
49
|
+
},
|
|
50
|
+
statusCode: 201,
|
|
51
|
+
body: returnNullFields ? newItem : removeNullFields(newItem),
|
|
52
|
+
};
|
|
52
53
|
};
|
|
53
54
|
return handlePost;
|
|
54
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../../src/requestHandlers/post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../../src/requestHandlers/post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAM7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAgB,EAChB,kBAA6C,EAC7C,gBAAyB,EACzB,OAAoC,EACpC,EAAE;IACF,MAAM,UAAU,GAAG,KAAK,EAAE,GAAgB,EAAE,EAAE;QAC5C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;QACrD,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAElB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1D,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAA;QAC9E,CAAC;QAED,IAAI,kBAAkB,EAAE,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAChD,kBAAkB,CAAC,IAAI,EACvB,OAAO,EACP,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CAAA;gBAED,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO;wBACL,UAAU,EAAE,eAAe,CAAC,MAAM;wBAClC,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAA;gBACH,CAAC;gBAED,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA;YACrC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE;iBAC5C,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAEhD,IAAI,IAAI;gBACN,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE;wBACJ,OAAO,EAAE,OAAO,EAAE,kBAAkB;qBACrC;iBACF,CAAA;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAqB,CAAC,CAAA;QAEzE,OAAO;YACL,OAAO,EAAE;gBACP,QAAQ,EAAE,MAAM,CAAC;oBACf,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,GAAG,QAAQ,IAAI,OAAO,CAAC,EAAE,EAAE;iBACtC,CAAC;aACH;YACD,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;SAC7D,CAAA;IACH,CAAC,CAAA;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
package/requestHandlers/put.d.ts
CHANGED
|
@@ -9,8 +9,6 @@ export declare const createPutRoutes: (queries: Queries, requestInterceptor: Req
|
|
|
9
9
|
};
|
|
10
10
|
} | {
|
|
11
11
|
statusCode: number;
|
|
12
|
-
body:
|
|
13
|
-
[k: string]: any;
|
|
14
|
-
} | null;
|
|
12
|
+
body: import("./types.js").Body | undefined;
|
|
15
13
|
}>;
|
|
16
14
|
//# sourceMappingURL=put.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/requestHandlers/put.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/requestHandlers/put.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAGrE,eAAO,MAAM,eAAe,GAC1B,SAAS,OAAO,EAChB,oBAAoB,kBAAkB,GAAG,IAAI,EAC7C,kBAAkB,OAAO,EACzB,SAAS,2BAA2B,GAAG,IAAI,EAC3C,cAAc,OAAO,WAES,UAAU;;;;;;;;EAoEzC,CAAA"}
|
package/requestHandlers/put.js
CHANGED
|
@@ -1,57 +1,58 @@
|
|
|
1
1
|
import { interceptPutRequest } from '../requestInterceptor/interceptRequest.js';
|
|
2
2
|
import { validate } from '../schema/validate.js';
|
|
3
3
|
import { removeNullFields } from './utils.js';
|
|
4
|
-
import { TembaError } from '../requestInterceptor/TembaError.js';
|
|
5
4
|
import { etag } from '../etags/etags.js';
|
|
6
5
|
export const createPutRoutes = (queries, requestInterceptor, returnNullFields, schemas, etagsEnabled) => {
|
|
7
6
|
const handlePut = async (req) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
7
|
+
const { headers, resource, id } = req;
|
|
8
|
+
let { body } = req;
|
|
9
|
+
const validationResult = validate(body, schemas?.[resource]);
|
|
10
|
+
if (validationResult.isValid === false) {
|
|
11
|
+
return { statusCode: 400, body: { message: validationResult.errorMessage } };
|
|
12
|
+
}
|
|
13
|
+
if (requestInterceptor?.put) {
|
|
14
|
+
try {
|
|
15
|
+
const interceptResult = await interceptPutRequest(requestInterceptor.put, headers, resource, id, body);
|
|
16
|
+
if (interceptResult.type === 'response') {
|
|
20
17
|
return {
|
|
21
|
-
statusCode:
|
|
22
|
-
body:
|
|
18
|
+
statusCode: interceptResult.status,
|
|
19
|
+
body: interceptResult.body,
|
|
23
20
|
};
|
|
24
21
|
}
|
|
22
|
+
body = interceptResult.body ?? body;
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
if (!item)
|
|
24
|
+
catch (error) {
|
|
28
25
|
return {
|
|
29
|
-
statusCode:
|
|
30
|
-
body: {
|
|
31
|
-
message: `ID '${id}' not found`,
|
|
32
|
-
},
|
|
26
|
+
statusCode: 500,
|
|
27
|
+
body: { message: error.message },
|
|
33
28
|
};
|
|
34
|
-
if (etagsEnabled) {
|
|
35
|
-
const itemEtag = etag(JSON.stringify(item));
|
|
36
|
-
if (req.etag !== itemEtag) {
|
|
37
|
-
return {
|
|
38
|
-
statusCode: 412,
|
|
39
|
-
body: {
|
|
40
|
-
message: 'Precondition failed',
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
29
|
}
|
|
45
|
-
|
|
46
|
-
|
|
30
|
+
}
|
|
31
|
+
let item = await queries.getById(resource, id);
|
|
32
|
+
if (!item)
|
|
47
33
|
return {
|
|
48
|
-
statusCode:
|
|
49
|
-
body:
|
|
34
|
+
statusCode: 404,
|
|
35
|
+
body: {
|
|
36
|
+
message: `ID '${id}' not found`,
|
|
37
|
+
},
|
|
50
38
|
};
|
|
39
|
+
if (etagsEnabled) {
|
|
40
|
+
const itemEtag = etag(JSON.stringify(item));
|
|
41
|
+
if (req.etag !== itemEtag) {
|
|
42
|
+
return {
|
|
43
|
+
statusCode: 412,
|
|
44
|
+
body: {
|
|
45
|
+
message: 'Precondition failed',
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
51
49
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
item = { ...body, id };
|
|
51
|
+
const replacedItem = await queries.replace(resource, item);
|
|
52
|
+
return {
|
|
53
|
+
statusCode: 200,
|
|
54
|
+
body: returnNullFields ? replacedItem : removeNullFields(replacedItem),
|
|
55
|
+
};
|
|
55
56
|
};
|
|
56
57
|
return handlePut;
|
|
57
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../../src/requestHandlers/put.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../../src/requestHandlers/put.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAgB,EAChB,kBAA6C,EAC7C,gBAAyB,EACzB,OAA2C,EAC3C,YAAqB,EACrB,EAAE;IACF,MAAM,SAAS,GAAG,KAAK,EAAE,GAAe,EAAE,EAAE;QAC1C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;QACrC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAElB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC5D,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAA;QAC9E,CAAC;QAED,IAAI,kBAAkB,EAAE,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAC/C,kBAAkB,CAAC,GAAG,EACtB,OAAO,EACP,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CAAA;gBAED,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO;wBACL,UAAU,EAAE,eAAe,CAAC,MAAM;wBAClC,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAA;gBACH,CAAC;gBAED,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA;YACrC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE;iBAC5C,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI;YACP,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE;oBACJ,OAAO,EAAE,OAAO,EAAE,aAAa;iBAChC;aACF,CAAA;QAEH,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE;wBACJ,OAAO,EAAE,qBAAqB;qBAC/B;iBACF,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,EAAE,GAAI,IAAe,EAAE,EAAE,EAAE,CAAA;QAElC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAE1D,OAAO;YACL,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC;SACvE,CAAA;IACH,CAAC,CAAA;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { IncomingHttpHeaders } from 'http';
|
|
2
2
|
import type { InterceptedDeleteRequest, InterceptedGetRequest, InterceptedPostRequest, InterceptedPutRequest } from './types.js';
|
|
3
3
|
import type { Body } from '../requestHandlers/types.js';
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export type InterceptResult = {
|
|
5
|
+
type: 'continue';
|
|
6
|
+
body?: Body;
|
|
7
|
+
} | {
|
|
8
|
+
type: 'response';
|
|
9
|
+
status: number;
|
|
10
|
+
body?: Body;
|
|
11
|
+
};
|
|
12
|
+
export declare const interceptGetRequest: (intercept: InterceptedGetRequest, headers: IncomingHttpHeaders, resource: string, id: string | null) => Promise<InterceptResult>;
|
|
13
|
+
export declare const interceptPostRequest: (intercept: InterceptedPostRequest, headers: IncomingHttpHeaders, resource: string, id: string | null, body: Body) => Promise<InterceptResult>;
|
|
14
|
+
export declare const interceptPutRequest: (intercept: InterceptedPutRequest, headers: IncomingHttpHeaders, resource: string, id: string, body: Body) => Promise<InterceptResult>;
|
|
15
|
+
export declare const interceptPatchRequest: (intercept: InterceptedPutRequest, headers: IncomingHttpHeaders, resource: string, id: string, body: Body) => Promise<InterceptResult>;
|
|
16
|
+
export declare const interceptDeleteRequest: (intercept: InterceptedDeleteRequest, headers: IncomingHttpHeaders, resource: string, id: string | null) => Promise<InterceptResult>;
|
|
9
17
|
//# sourceMappingURL=interceptRequest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptRequest.d.ts","sourceRoot":"","sources":["../../../src/requestInterceptor/interceptRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAE/C,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"interceptRequest.d.ts","sourceRoot":"","sources":["../../../src/requestInterceptor/interceptRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAE/C,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AASpD,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAErD,eAAO,MAAM,mBAAmB,GAC9B,WAAW,qBAAqB,EAChC,SAAS,mBAAmB,EAC5B,UAAU,MAAM,EAChB,IAAI,MAAM,GAAG,IAAI,KAChB,OAAO,CAAC,eAAe,CAIzB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,WAAW,sBAAsB,EACjC,SAAS,mBAAmB,EAC5B,UAAU,MAAM,EAChB,IAAI,MAAM,GAAG,IAAI,EACjB,MAAM,IAAI,KACT,OAAO,CAAC,eAAe,CAIzB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,WAAW,qBAAqB,EAChC,SAAS,mBAAmB,EAC5B,UAAU,MAAM,EAChB,IAAI,MAAM,EACV,MAAM,IAAI,KACT,OAAO,CAAC,eAAe,CAIzB,CAAA;AAED,eAAO,MAAM,qBAAqB,cAXrB,qBAAqB,WACvB,mBAAmB,YAClB,MAAM,MACZ,MAAM,QACJ,IAAI,KACT,OAAO,CAAC,eAAe,CAM8B,CAAA;AAExD,eAAO,MAAM,sBAAsB,GACjC,WAAW,wBAAwB,EACnC,SAAS,mBAAmB,EAC5B,UAAU,MAAM,EAChB,IAAI,MAAM,GAAG,IAAI,KAChB,OAAO,CAAC,eAAe,CAIzB,CAAA"}
|
|
@@ -1,26 +1,44 @@
|
|
|
1
|
+
import { createActions, isInterceptorAction, isSetRequestBodyAction, isResponseAction, } from './interceptorActions.js';
|
|
1
2
|
export const interceptGetRequest = async (intercept, headers, resource, id) => {
|
|
2
|
-
|
|
3
|
+
const actions = createActions();
|
|
4
|
+
const result = await intercept({ headers, resource, id }, actions);
|
|
5
|
+
return processInterceptResult(result);
|
|
3
6
|
};
|
|
4
7
|
export const interceptPostRequest = async (intercept, headers, resource, id, body) => {
|
|
5
|
-
const
|
|
6
|
-
|
|
8
|
+
const actions = createActions();
|
|
9
|
+
const result = await intercept({ headers, resource, body, id }, actions);
|
|
10
|
+
return processInterceptResult(result, body);
|
|
7
11
|
};
|
|
8
12
|
export const interceptPutRequest = async (intercept, headers, resource, id, body) => {
|
|
9
|
-
const
|
|
10
|
-
|
|
13
|
+
const actions = createActions();
|
|
14
|
+
const result = await intercept({ headers, resource, id, body }, actions);
|
|
15
|
+
return processInterceptResult(result, body);
|
|
11
16
|
};
|
|
12
17
|
export const interceptPatchRequest = interceptPutRequest;
|
|
13
18
|
export const interceptDeleteRequest = async (intercept, headers, resource, id) => {
|
|
14
|
-
|
|
19
|
+
const actions = createActions();
|
|
20
|
+
const result = await intercept({ headers, resource, id }, actions);
|
|
21
|
+
return processInterceptResult(result);
|
|
15
22
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
// Process the interceptor return value and convert to InterceptResult
|
|
24
|
+
const processInterceptResult = (intercepted, originalBody) => {
|
|
25
|
+
// If void/undefined, continue with original body
|
|
26
|
+
if (intercepted === undefined) {
|
|
27
|
+
return { type: 'continue', body: originalBody };
|
|
28
|
+
}
|
|
29
|
+
// If it's an interceptor action, process it
|
|
30
|
+
if (isInterceptorAction(intercepted)) {
|
|
31
|
+
if (isSetRequestBodyAction(intercepted)) {
|
|
32
|
+
return { type: 'continue', body: intercepted.body };
|
|
33
|
+
}
|
|
34
|
+
if (isResponseAction(intercepted)) {
|
|
35
|
+
return { type: 'response', status: intercepted.status, body: intercepted.body };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Legacy behavior removed - plain objects are no longer supported
|
|
39
|
+
// If we get here, the return value is invalid (e.g., plain object, number, string, boolean, etc.)
|
|
40
|
+
// We treat it as void and continue with the original body
|
|
41
|
+
// Developers should use actions.setRequestBody() or actions.response() instead
|
|
42
|
+
return { type: 'continue', body: originalBody };
|
|
25
43
|
};
|
|
26
44
|
//# sourceMappingURL=interceptRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptRequest.js","sourceRoot":"","sources":["../../../src/requestInterceptor/interceptRequest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interceptRequest.js","sourceRoot":"","sources":["../../../src/requestInterceptor/interceptRequest.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAO7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,SAAgC,EAChC,OAA4B,EAC5B,QAAgB,EAChB,EAAiB,EACS,EAAE;IAC5B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAClE,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,SAAiC,EACjC,OAA4B,EAC5B,QAAgB,EAChB,EAAiB,EACjB,IAAU,EACgB,EAAE;IAC5B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IACxE,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,SAAgC,EAChC,OAA4B,EAC5B,QAAgB,EAChB,EAAU,EACV,IAAU,EACgB,EAAE;IAC5B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IACxE,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAExD,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,SAAmC,EACnC,OAA4B,EAC5B,QAAgB,EAChB,EAAiB,EACS,EAAE;IAC5B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAClE,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,sEAAsE;AACtE,MAAM,sBAAsB,GAAG,CAC7B,WAAmC,EACnC,YAAmB,EACF,EAAE;IACnB,iDAAiD;IACjD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;IACjD,CAAC;IAED,4CAA4C;IAC5C,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,IAAI,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,IAAY,EAAE,CAAA;QAC7D,CAAC;QAED,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,IAAY,EAAE,CAAA;QACzF,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,kGAAkG;IAClG,0DAA0D;IAC1D,+EAA+E;IAC/E,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;AACjD,CAAC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
declare const INTERCEPTOR_ACTION_MARKER: unique symbol;
|
|
2
|
+
type InterceptorActionBase = {
|
|
3
|
+
readonly [INTERCEPTOR_ACTION_MARKER]: true;
|
|
4
|
+
readonly type: 'setRequestBody' | 'response';
|
|
5
|
+
};
|
|
6
|
+
export type SetRequestBodyAction = {
|
|
7
|
+
readonly type: 'setRequestBody';
|
|
8
|
+
readonly body: unknown;
|
|
9
|
+
} & InterceptorActionBase;
|
|
10
|
+
export type ResponseAction = {
|
|
11
|
+
readonly type: 'response';
|
|
12
|
+
readonly body?: unknown;
|
|
13
|
+
readonly status: number;
|
|
14
|
+
} & InterceptorActionBase;
|
|
15
|
+
export type InterceptorAction = SetRequestBodyAction | ResponseAction;
|
|
16
|
+
export declare const isInterceptorAction: (value: unknown) => value is InterceptorAction;
|
|
17
|
+
export declare const isSetRequestBodyAction: (action: InterceptorAction) => action is SetRequestBodyAction;
|
|
18
|
+
export declare const isResponseAction: (action: InterceptorAction) => action is ResponseAction;
|
|
19
|
+
export type Actions = {
|
|
20
|
+
setRequestBody: (body: unknown) => SetRequestBodyAction;
|
|
21
|
+
response: (options?: {
|
|
22
|
+
body?: unknown;
|
|
23
|
+
status?: number;
|
|
24
|
+
}) => ResponseAction;
|
|
25
|
+
};
|
|
26
|
+
export declare const createActions: () => Actions;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=interceptorActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptorActions.d.ts","sourceRoot":"","sources":["../../../src/requestInterceptor/interceptorActions.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,yBAAyB,eAA8B,CAAA;AAG7D,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,UAAU,CAAA;CAC7C,CAAA;AAGD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACvB,GAAG,qBAAqB,CAAA;AAGzB,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,GAAG,qBAAqB,CAAA;AAGzB,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,cAAc,CAAA;AAGrE,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,iBAO7D,CAAA;AAGD,eAAO,MAAM,sBAAsB,GAAI,QAAQ,iBAAiB,KAAG,MAAM,IAAI,oBAE5E,CAAA;AAGD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,iBAAiB,KAAG,MAAM,IAAI,cAEtE,CAAA;AAsBD,MAAM,MAAM,OAAO,GAAG;IACpB,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,oBAAoB,CAAA;IACvD,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,cAAc,CAAA;CAC5E,CAAA;AAGD,eAAO,MAAM,aAAa,QAAO,OAKhC,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Internal marker to identify interceptor actions
|
|
2
|
+
const INTERCEPTOR_ACTION_MARKER = Symbol('InterceptorAction');
|
|
3
|
+
// Type guard to check if a value is an interceptor action
|
|
4
|
+
export const isInterceptorAction = (value) => {
|
|
5
|
+
return (!!value &&
|
|
6
|
+
typeof value === 'object' &&
|
|
7
|
+
INTERCEPTOR_ACTION_MARKER in value &&
|
|
8
|
+
value[INTERCEPTOR_ACTION_MARKER] === true);
|
|
9
|
+
};
|
|
10
|
+
// Type guard for SetRequestBodyAction
|
|
11
|
+
export const isSetRequestBodyAction = (action) => {
|
|
12
|
+
return action.type === 'setRequestBody';
|
|
13
|
+
};
|
|
14
|
+
// Type guard for ResponseAction
|
|
15
|
+
export const isResponseAction = (action) => {
|
|
16
|
+
return action.type === 'response';
|
|
17
|
+
};
|
|
18
|
+
// Factory function to create a SetRequestBodyAction
|
|
19
|
+
const createSetRequestBodyAction = (body) => {
|
|
20
|
+
return {
|
|
21
|
+
[INTERCEPTOR_ACTION_MARKER]: true,
|
|
22
|
+
type: 'setRequestBody',
|
|
23
|
+
body,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
// Factory function to create a ResponseAction
|
|
27
|
+
const createResponseAction = (options) => {
|
|
28
|
+
return {
|
|
29
|
+
[INTERCEPTOR_ACTION_MARKER]: true,
|
|
30
|
+
type: 'response',
|
|
31
|
+
body: options?.body,
|
|
32
|
+
status: options?.status ?? 200,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
// Factory to create the actions object
|
|
36
|
+
export const createActions = () => {
|
|
37
|
+
return {
|
|
38
|
+
setRequestBody: createSetRequestBodyAction,
|
|
39
|
+
response: createResponseAction,
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=interceptorActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptorActions.js","sourceRoot":"","sources":["../../../src/requestInterceptor/interceptorActions.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,yBAAyB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAwB7D,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAA8B,EAAE;IAChF,OAAO,CACL,CAAC,CAAC,KAAK;QACP,OAAO,KAAK,KAAK,QAAQ;QACzB,yBAAyB,IAAI,KAAK;QACjC,KAA2B,CAAC,yBAAyB,CAAC,KAAK,IAAI,CACjE,CAAA;AACH,CAAC,CAAA;AAED,sCAAsC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAyB,EAAkC,EAAE;IAClG,OAAO,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAA;AACzC,CAAC,CAAA;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAyB,EAA4B,EAAE;IACtF,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAA;AACnC,CAAC,CAAA;AAED,oDAAoD;AACpD,MAAM,0BAA0B,GAAG,CAAC,IAAa,EAAwB,EAAE;IACzE,OAAO;QACL,CAAC,yBAAyB,CAAC,EAAE,IAAI;QACjC,IAAI,EAAE,gBAAgB;QACtB,IAAI;KACL,CAAA;AACH,CAAC,CAAA;AAED,8CAA8C;AAC9C,MAAM,oBAAoB,GAAG,CAAC,OAA6C,EAAkB,EAAE;IAC7F,OAAO;QACL,CAAC,yBAAyB,CAAC,EAAE,IAAI;QACjC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG;KAC/B,CAAA;AACH,CAAC,CAAA;AAQD,uCAAuC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAY,EAAE;IACzC,OAAO;QACL,cAAc,EAAE,0BAA0B;QAC1C,QAAQ,EAAE,oBAAoB;KAC/B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IncomingHttpHeaders } from 'http';
|
|
2
2
|
import type { Body } from '../requestHandlers/types.js';
|
|
3
|
-
type MaybePromise
|
|
3
|
+
import type { MaybePromise } from '../types.js';
|
|
4
|
+
import type { Actions, InterceptorAction } from './interceptorActions.js';
|
|
4
5
|
type InterceptedResource = {
|
|
5
6
|
headers: IncomingHttpHeaders;
|
|
6
7
|
resource: string;
|
|
@@ -18,12 +19,12 @@ type WithIdAndBody = InterceptedResource & {
|
|
|
18
19
|
type WithBodyAndMaybeId = WithBody & {
|
|
19
20
|
id: string | null;
|
|
20
21
|
};
|
|
21
|
-
export type InterceptedReturnValue = void |
|
|
22
|
-
export type InterceptedGetRequest = (request: WithMaybeId) => MaybePromise<InterceptedReturnValue>;
|
|
23
|
-
export type InterceptedPostRequest = (request: WithBodyAndMaybeId) => MaybePromise<InterceptedReturnValue>;
|
|
24
|
-
export type InterceptedPatchRequest = (request: WithIdAndBody) => MaybePromise<InterceptedReturnValue>;
|
|
25
|
-
export type InterceptedPutRequest = (request: WithIdAndBody) => MaybePromise<InterceptedReturnValue>;
|
|
26
|
-
export type InterceptedDeleteRequest = (request: WithMaybeId) => MaybePromise<InterceptedReturnValue>;
|
|
22
|
+
export type InterceptedReturnValue = void | InterceptorAction;
|
|
23
|
+
export type InterceptedGetRequest = (request: WithMaybeId, actions: Actions) => MaybePromise<InterceptedReturnValue>;
|
|
24
|
+
export type InterceptedPostRequest = (request: WithBodyAndMaybeId, actions: Actions) => MaybePromise<InterceptedReturnValue>;
|
|
25
|
+
export type InterceptedPatchRequest = (request: WithIdAndBody, actions: Actions) => MaybePromise<InterceptedReturnValue>;
|
|
26
|
+
export type InterceptedPutRequest = (request: WithIdAndBody, actions: Actions) => MaybePromise<InterceptedReturnValue>;
|
|
27
|
+
export type InterceptedDeleteRequest = (request: WithMaybeId, actions: Actions) => MaybePromise<InterceptedReturnValue>;
|
|
27
28
|
export type RequestInterceptor = {
|
|
28
29
|
get?: InterceptedGetRequest;
|
|
29
30
|
post?: InterceptedPostRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/requestInterceptor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/requestInterceptor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEtE,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,WAAW,GAAG,mBAAmB,GAAG;IACvC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAClB,CAAA;AAED,KAAK,QAAQ,GAAG,mBAAmB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,KAAK,aAAa,GAAG,mBAAmB,GAAG;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,KAAK,kBAAkB,GAAG,QAAQ,GAAG;IACnC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,iBAAiB,CAAA;AAE7D,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,KACb,YAAY,CAAC,sBAAsB,CAAC,CAAA;AACzC,MAAM,MAAM,sBAAsB,GAAG,CACnC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,OAAO,KACb,YAAY,CAAC,sBAAsB,CAAC,CAAA;AACzC,MAAM,MAAM,uBAAuB,GAAG,CACpC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,KACb,YAAY,CAAC,sBAAsB,CAAC,CAAA;AACzC,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,KACb,YAAY,CAAC,sBAAsB,CAAC,CAAA;AACzC,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,KACb,YAAY,CAAC,sBAAsB,CAAC,CAAA;AAEzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,qBAAqB,CAAA;IAC3B,IAAI,CAAC,EAAE,sBAAsB,CAAA;IAC7B,KAAK,CAAC,EAAE,uBAAuB,CAAA;IAC/B,GAAG,CAAC,EAAE,qBAAqB,CAAA;IAC3B,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAClC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { InterceptedResponse, ResponseBodyInterceptor } from './types.js';
|
|
2
|
-
export declare const interceptResponseBody: (interceptor: ResponseBodyInterceptor, info: InterceptedResponse) => {}
|
|
2
|
+
export declare const interceptResponseBody: (interceptor: ResponseBodyInterceptor, info: InterceptedResponse) => Promise<{}>;
|
|
3
3
|
//# sourceMappingURL=interceptResponseBody.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptResponseBody.d.ts","sourceRoot":"","sources":["../../../src/responseBodyInterceptor/interceptResponseBody.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAE3E,eAAO,MAAM,qBAAqB,GAChC,aAAa,uBAAuB,EACpC,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"interceptResponseBody.d.ts","sourceRoot":"","sources":["../../../src/responseBodyInterceptor/interceptResponseBody.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAE3E,eAAO,MAAM,qBAAqB,GAChC,aAAa,uBAAuB,EACpC,MAAM,mBAAmB,gBAO1B,CAAA"}
|