integreat 1.3.0 → 1.3.2

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
@@ -1533,10 +1533,14 @@ Integreat will run the action as a `GET` and then a `SET`, to mimick and update.
1533
1533
  The `GET` action will have the same `payload` and `meta` as the original action.
1534
1534
  The same goes for the `SET` action, but the `payload.data` will be the data
1535
1535
  returned from `GET` merged with the data on the original `UPDATE` action. This
1536
- will be a deep merge, prioritizing properties from the `UPDATE` action. A
1537
- requirement for this to work as expected, is that the data is casted to the same
1538
- schema, but that should normally be the case when you use `payload.type` and
1539
- don't set `allowRawRequest` or `allowRawResponse` on the endpoint.
1536
+ will be a deep merge, prioritizing properties from the `UPDATE` action, but any
1537
+ `createdAt` date in the data from `GET` will be kept. If there's an `updatedAt`
1538
+ in the merged data, it will be overriden by the current time.
1539
+
1540
+ A requirement for this approach to work as expected, is that the data is casted
1541
+ to the same schema, but that should normally be the case when you use
1542
+ `payload.type` and don't set `allowRawRequest` or `allowRawResponse` on the
1543
+ endpoint.
1540
1544
 
1541
1545
  When a `GET` fail, the `UPDATE` will fail with the same status and error.
1542
1546
 
package/SECURITY.md CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Version | Supported |
6
6
  | ------- | ------------------ |
7
- | 1.0.x | :white_check_mark: |
8
- | < 1.0 | :x: |
7
+ | 1.3.x | :white_check_mark: |
8
+ | < 1.3 | :x: |
9
9
 
10
10
  ## Reporting a Vulnerability
11
11
 
@@ -3,7 +3,7 @@ import mutateAndSend from '../utils/mutateAndSend.js';
3
3
  import { createErrorResponse, createUnknownServiceError, } from '../utils/response.js';
4
4
  import { getTypeAndId, setIdAndTypeOnAction } from './set.js';
5
5
  import { deepMergeItems } from '../utils/deep.js';
6
- import { isErrorResponse } from '../utils/is.js';
6
+ import { isErrorResponse, isTypedData } from '../utils/is.js';
7
7
  const debug = debugLib('great');
8
8
  const createGetAction = (action) => ({ ...action, type: 'GET' });
9
9
  const createSetAction = (action, data) => ({
@@ -11,7 +11,12 @@ const createSetAction = (action, data) => ({
11
11
  type: 'SET',
12
12
  payload: { ...action.payload, data },
13
13
  });
14
- const isUpdateEndpoint = (endpoint) => endpoint?.match?.action === 'UPDATE';
14
+ function isUpdateEndpoint(endpoint) {
15
+ const actionType = endpoint?.match?.action;
16
+ return Array.isArray(actionType)
17
+ ? actionType.includes('UPDATE')
18
+ : actionType === 'UPDATE';
19
+ }
15
20
  async function dispatchAction(service, action) {
16
21
  const endpoint = await service.endpointFromAction(action);
17
22
  if (!endpoint) {
@@ -25,6 +30,21 @@ async function dispatchAction(service, action) {
25
30
  return response;
26
31
  }
27
32
  }
33
+ const updateDatesInItem = (original, merged) => isTypedData(original) && isTypedData(merged)
34
+ ? {
35
+ ...merged,
36
+ createdAt: original.createdAt,
37
+ ...(merged.updatedAt ? { updatedAt: new Date() } : {}),
38
+ }
39
+ : merged;
40
+ function keepCreatedAt(original, merged) {
41
+ if (Array.isArray(original) && Array.isArray(merged)) {
42
+ return original.map((item, index) => updateDatesInItem(item, merged[index]));
43
+ }
44
+ else {
45
+ return updateDatesInItem(original, merged);
46
+ }
47
+ }
28
48
  async function updateWithGetAndSet(service, action) {
29
49
  const getAction = createGetAction(action);
30
50
  const getResponse = await dispatchAction(service, getAction);
@@ -33,7 +53,7 @@ async function updateWithGetAndSet(service, action) {
33
53
  }
34
54
  let data;
35
55
  try {
36
- data = deepMergeItems(getResponse.data, action.payload.data);
56
+ data = keepCreatedAt(getResponse.data, deepMergeItems(getResponse.data, action.payload.data));
37
57
  }
38
58
  catch (error) {
39
59
  return createErrorResponse(error, 'handler:UPDATE');
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/handlers/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/handlers/update.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "integreat",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Node.js integration layer",
5
5
  "author": "Kjell-Morten Bratsberg Thorsen <kjellmorten@integreat.io> (https://integreat.io/)",
6
6
  "license": "ISC",
@@ -40,13 +40,13 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@types/debug": "^4.1.8",
43
- "@types/luxon": "^3.3.1",
43
+ "@types/luxon": "^3.3.2",
44
44
  "ajv": "^8.12.0",
45
45
  "cron-parser": "^4.9.0",
46
46
  "debug": "^4.3.4",
47
47
  "deepmerge-ts": "^5.1.0",
48
48
  "map-any": "^1.0.0",
49
- "map-transform": "^1.0.2",
49
+ "map-transform": "^1.0.4",
50
50
  "ms": "^2.1.3",
51
51
  "nanoid": "^4.0.2",
52
52
  "p-limit": "^4.0.0",
@@ -55,7 +55,7 @@
55
55
  "rfdc": "^1.3.0"
56
56
  },
57
57
  "devDependencies": {
58
- "@integreat/ts-dev-setup": "^4.1.1",
58
+ "@integreat/ts-dev-setup": "^5.0.0",
59
59
  "@types/sinon": "^10.0.16",
60
60
  "integreat-adapter-json": "^1.0.0",
61
61
  "integreat-adapter-uri": "^1.0.0",