@effect-app/infra 2.9.0 → 2.9.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 2.9.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 48aac87: switch to hashing the json
8
+
3
9
  ## 2.9.0
4
10
 
5
11
  ### Minor Changes
@@ -10,16 +10,16 @@ exports.lowerThan = lowerThan;
10
10
  exports.lowerThanExclusive = lowerThanExclusive;
11
11
  exports.lowercaseIfString = lowercaseIfString;
12
12
  exports.makeUpdateETag = exports.makeETag = void 0;
13
+ var _crypto = require("crypto");
13
14
  var _effectApp = require("effect-app");
14
- var _objectHash = _interopRequireDefault(require("object-hash"));
15
15
  var _errors = require("../errors.cjs");
16
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
16
  const makeETag = ({
18
17
  _etag,
19
18
  ...e
20
19
  }) => ({
21
20
  ...e,
22
- _etag: (0, _objectHash.default)(e)
21
+ // we have to hash the JSON, as hashing the object might contain elements that won't be serialized anyway
22
+ _etag: (0, _crypto.createHash)("sha256").update(JSON.stringify(e)).digest("hex")
23
23
  });
24
24
  exports.makeETag = makeETag;
25
25
  const makeUpdateETag = type => (e, current) => _effectApp.Effect.gen(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","names":["_effectApp","require","_objectHash","_interopRequireDefault","_errors","e","__esModule","default","makeETag","_etag","objectHash","exports","makeUpdateETag","type","current","Effect","gen","mapError","OptimisticConcurrencyException","id","found","Option","isSome","value","newE","lowercaseIfString","val","toLowerCase","compare","valA","valB","lowerThan","lowerThanExclusive","greaterThan","greaterThanExclusive"],"sources":["../../src/Store/utils.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAA6D,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGtD,MAAMG,QAAQ,GAAGA,CACtB;EAAEC,KAAK;EAAE,GAAGJ;AAAC,CAAK,MACV;EACR,GAAGA,CAAC;EACJI,KAAK,EAAE,IAAAC,mBAAU,EAACL,CAAC;CACpB,CAAS;AAAAM,OAAA,CAAAH,QAAA,GAAAA,QAAA;AACH,MAAMI,cAAc,GACxBC,IAAY,IAAK,CAAiDR,CAAI,EAAES,OAAkB,KACzFC,iBAAM,CAACC,GAAG,CAAC,aAAS;EAClB,IAAIX,CAAC,CAACI,KAAK,EAAE;IACX,OAAOM,iBAAM,CAACE,QAAQ,CACpBH,OAAO,EACP,MAAM,IAAII,sCAA8B,CAAC;MAAEL,IAAI;MAAEM,EAAE,EAAEd,CAAC,CAACc,EAAE;MAAEL,OAAO,EAAE,EAAE;MAAEM,KAAK,EAAEf,CAAC,CAACI;IAAK,CAAE,CAAC,CAC1F;EACH;EACA,IAAIY,iBAAM,CAACC,MAAM,CAACR,OAAO,CAAC,IAAIA,OAAO,CAACS,KAAK,CAACd,KAAK,KAAKJ,CAAC,CAACI,KAAK,EAAE;IAC7D,OAAO,OAAO,IAAIS,sCAA8B,CAAC;MAC/CL,IAAI;MACJM,EAAE,EAAEL,OAAO,CAACS,KAAK,CAACJ,EAAE;MACpBL,OAAO,EAAEA,OAAO,CAACS,KAAK,CAACd,KAAK;MAC5BW,KAAK,EAAEf,CAAC,CAACI;KACV,CAAC;EACJ;EACA,MAAMe,IAAI,GAAGhB,QAAQ,CAACH,CAAC,CAAC;EACxB,OAAOmB,IAAI;AACb,CAAC,CAAC;AAAAb,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAEA,SAAUa,iBAAiBA,CAAIC,GAAM;EACzC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAOA,GAAG,CAACC,WAAW,EAAE;EAC1B;EACA,OAAOD,GAAG;AACZ;AAEM,SAAUE,OAAOA,CAACC,IAAa,EAAEC,IAAa;EAClD,OAAOD,IAAI,KAAKC,IAAI;AACtB;AAEM,SAAUC,SAASA,CAACF,IAAsB,EAAEC,IAAsB;EACtE,OAAOD,IAAI,GAAGC,IAAI;AACpB;AAEM,SAAUE,kBAAkBA,CAACH,IAAsB,EAAEC,IAAsB;EAC/E,OAAOD,IAAI,IAAIC,IAAI;AACrB;AAEM,SAAUG,WAAWA,CAACJ,IAAsB,EAAEC,IAAsB;EACxE,OAAOD,IAAI,GAAGC,IAAI;AACpB;AAEM,SAAUI,oBAAoBA,CAACL,IAAsB,EAAEC,IAAsB;EACjF,OAAOD,IAAI,IAAIC,IAAI;AACrB","ignoreList":[]}
1
+ {"version":3,"file":"utils.cjs","names":["_crypto","require","_effectApp","_errors","makeETag","_etag","e","createHash","update","JSON","stringify","digest","exports","makeUpdateETag","type","current","Effect","gen","mapError","OptimisticConcurrencyException","id","found","Option","isSome","value","newE","lowercaseIfString","val","toLowerCase","compare","valA","valB","lowerThan","lowerThanExclusive","greaterThan","greaterThanExclusive"],"sources":["../../src/Store/utils.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAGO,MAAMG,QAAQ,GAAGA,CACtB;EAAEC,KAAK;EAAE,GAAGC;AAAC,CAAK,MAEjB;EACC,GAAGA,CAAC;EACJ;EACAD,KAAK,EAAE,IAAAE,kBAAU,EAAC,QAAQ,CAAC,CAACC,MAAM,CAACC,IAAI,CAACC,SAAS,CAACJ,CAAC,CAAC,CAAC,CAACK,MAAM,CAAC,KAAK;CACnE,CAAQ;AAAAC,OAAA,CAAAR,QAAA,GAAAA,QAAA;AAEJ,MAAMS,cAAc,GACxBC,IAAY,IAAK,CAAiDR,CAAI,EAAES,OAAkB,KACzFC,iBAAM,CAACC,GAAG,CAAC,aAAS;EAClB,IAAIX,CAAC,CAACD,KAAK,EAAE;IACX,OAAOW,iBAAM,CAACE,QAAQ,CACpBH,OAAO,EACP,MAAM,IAAII,sCAA8B,CAAC;MAAEL,IAAI;MAAEM,EAAE,EAAEd,CAAC,CAACc,EAAE;MAAEL,OAAO,EAAE,EAAE;MAAEM,KAAK,EAAEf,CAAC,CAACD;IAAK,CAAE,CAAC,CAC1F;EACH;EACA,IAAIiB,iBAAM,CAACC,MAAM,CAACR,OAAO,CAAC,IAAIA,OAAO,CAACS,KAAK,CAACnB,KAAK,KAAKC,CAAC,CAACD,KAAK,EAAE;IAC7D,OAAO,OAAO,IAAIc,sCAA8B,CAAC;MAC/CL,IAAI;MACJM,EAAE,EAAEL,OAAO,CAACS,KAAK,CAACJ,EAAE;MACpBL,OAAO,EAAEA,OAAO,CAACS,KAAK,CAACnB,KAAK;MAC5BgB,KAAK,EAAEf,CAAC,CAACD;KACV,CAAC;EACJ;EACA,MAAMoB,IAAI,GAAGrB,QAAQ,CAACE,CAAC,CAAC;EACxB,OAAOmB,IAAI;AACb,CAAC,CAAC;AAAAb,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAEA,SAAUa,iBAAiBA,CAAIC,GAAM;EACzC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAOA,GAAG,CAACC,WAAW,EAAE;EAC1B;EACA,OAAOD,GAAG;AACZ;AAEM,SAAUE,OAAOA,CAACC,IAAa,EAAEC,IAAa;EAClD,OAAOD,IAAI,KAAKC,IAAI;AACtB;AAEM,SAAUC,SAASA,CAACF,IAAsB,EAAEC,IAAsB;EACtE,OAAOD,IAAI,GAAGC,IAAI;AACpB;AAEM,SAAUE,kBAAkBA,CAACH,IAAsB,EAAEC,IAAsB;EAC/E,OAAOD,IAAI,IAAIC,IAAI;AACrB;AAEM,SAAUG,WAAWA,CAACJ,IAAsB,EAAEC,IAAsB;EACxE,OAAOD,IAAI,GAAGC,IAAI;AACpB;AAEM,SAAUI,oBAAoBA,CAACL,IAAsB,EAAEC,IAAsB;EACjF,OAAOD,IAAI,IAAIC,IAAI;AACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Store/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE1E,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,mBACxC,CAAC,KACjB,CAGO,CAAA;AACV,eAAO,MAAM,cAAc,SAClB,MAAM,MAAM,CAAC,SAAS,oBAAoB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,4DAkBvF,CAAA;AAEN,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,cAK1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,WAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEvE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAElF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Store/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE1E,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,mBACxC,CAAC,KACjB,CAKQ,CAAA;AAEX,eAAO,MAAM,cAAc,SAClB,MAAM,MAAM,CAAC,SAAS,oBAAoB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,4DAkBvF,CAAA;AAEN,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,cAK1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,WAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEvE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAElF"}
@@ -1,9 +1,10 @@
1
+ import { createHash } from "crypto";
1
2
  import { Effect, Option } from "effect-app";
2
- import objectHash from "object-hash";
3
3
  import { OptimisticConcurrencyException } from "../errors.js";
4
4
  export const makeETag = ({ _etag, ...e }) => ({
5
5
  ...e,
6
- _etag: objectHash(e)
6
+ // we have to hash the JSON, as hashing the object might contain elements that won't be serialized anyway
7
+ _etag: createHash("sha256").update(JSON.stringify(e)).digest("hex")
7
8
  });
8
9
  export const makeUpdateETag = (type) => (e, current) => Effect.gen(function* () {
9
10
  if (e._etag) {
@@ -41,4 +42,4 @@ export function greaterThan(valA, valB) {
41
42
  export function greaterThanExclusive(valA, valB) {
42
43
  return valA >= valB;
43
44
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0MsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUc3RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQUUsQ0FBQztJQUNSLEdBQUcsQ0FBQztJQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLENBQVMsQ0FBQTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQWlELENBQUksRUFBRSxPQUFrQixFQUFFLEVBQUUsQ0FDN0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNwQixPQUFPLEVBQ1AsR0FBRyxFQUFFLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDMUYsQ0FBQTtJQUNILENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSw4QkFBOEIsQ0FBQztZQUMvQyxJQUFJO1lBQ0osRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQzVCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztTQUNmLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEIsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUMsQ0FBQTtBQUVOLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxHQUFNO0lBQ3pDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBYSxFQUFFLElBQWE7SUFDbEQsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFBO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDdEUsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFBO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUMvRSxPQUFPLElBQUksSUFBSSxJQUFJLENBQUE7QUFDckIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUN4RSxPQUFPLElBQUksR0FBRyxJQUFJLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ2pGLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQTtBQUNyQixDQUFDIn0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMzQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHN0QsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFLLEVBQ2YsRUFBRSxDQUNMLENBQUM7SUFDQyxHQUFHLENBQUM7SUFDSix5R0FBeUc7SUFDekcsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Q0FDcEUsQ0FBUSxDQUFBO0FBRVgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUN6QixDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBaUQsQ0FBSSxFQUFFLE9BQWtCLEVBQUUsRUFBRSxDQUM3RixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNsQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ3BCLE9BQU8sRUFDUCxHQUFHLEVBQUUsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUMxRixDQUFBO0lBQ0gsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFDO1lBQy9DLElBQUk7WUFDSixFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDNUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1NBQ2YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4QixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQyxDQUFBO0FBRU4sTUFBTSxVQUFVLGlCQUFpQixDQUFJLEdBQU07SUFDekMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxJQUFhLEVBQUUsSUFBYTtJQUNsRCxPQUFPLElBQUksS0FBSyxJQUFJLENBQUE7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUN0RSxPQUFPLElBQUksR0FBRyxJQUFJLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQy9FLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQTtBQUNyQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3hFLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQTtBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDakYsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFBO0FBQ3JCLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "2.9.0",
3
+ "version": "2.9.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -9,7 +9,6 @@
9
9
  "cross-fetch": "^4.0.0",
10
10
  "express-oauth2-jwt-bearer": "^1.6.0",
11
11
  "fast-check": "~3.22.0",
12
- "object-hash": "^3.0.0",
13
12
  "path-parser": "^6.1.0",
14
13
  "proper-lockfile": "^4.1.2",
15
14
  "pure-rand": "6.1.0",
@@ -1,14 +1,17 @@
1
+ import { createHash } from "crypto"
1
2
  import { Effect, Option } from "effect-app"
2
- import objectHash from "object-hash"
3
3
  import { OptimisticConcurrencyException } from "../errors.js"
4
4
  import type { PersistenceModelType, SupportedValues2 } from "./service.js"
5
5
 
6
6
  export const makeETag = <E extends PersistenceModelType<{}>>(
7
7
  { _etag, ...e }: E
8
- ): E => (({
9
- ...e,
10
- _etag: objectHash(e)
11
- }) as any)
8
+ ): E =>
9
+ ({
10
+ ...e,
11
+ // we have to hash the JSON, as hashing the object might contain elements that won't be serialized anyway
12
+ _etag: createHash("sha256").update(JSON.stringify(e)).digest("hex")
13
+ }) as any
14
+
12
15
  export const makeUpdateETag =
13
16
  (type: string) => <E extends PersistenceModelType<{ id: string }>>(e: E, current: Option<E>) =>
14
17
  Effect.gen(function*() {
@@ -1 +0,0 @@
1
- declare module 'object-hash';