@juit/lib-aws-mock 1.0.6 → 1.0.8

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.cjs CHANGED
@@ -38,6 +38,7 @@ var AWSMock = class {
38
38
  "[Unknown Command]";
39
39
  const lastArgument = _args.pop();
40
40
  const cb = typeof lastArgument === "function" ? lastArgument : void 0;
41
+ const input = structuredClone(_command.input);
41
42
  const promise = new Promise((resolve, reject) => setImmediate(async () => {
42
43
  const handler = this._handlers.get(commandConstuctor);
43
44
  if (!handler) {
@@ -45,13 +46,12 @@ var AWSMock = class {
45
46
  return reject(error);
46
47
  }
47
48
  try {
48
- const input = JSON.parse(JSON.stringify(_command.input));
49
49
  const output = await handler(input, this._state);
50
50
  if (!output) {
51
51
  const error = new Error(`Mock for "${clientName}.${commandName}" returned no result`);
52
52
  return reject(error);
53
53
  }
54
- const result = JSON.parse(JSON.stringify(output));
54
+ const result = structuredClone(output);
55
55
  if (!result.$metadata)
56
56
  result.$metadata = { httpStatusCode: 200 };
57
57
  if (!result.$metadata.requestId)
@@ -61,10 +61,10 @@ var AWSMock = class {
61
61
  reject(error);
62
62
  }
63
63
  })).then((result) => {
64
- this._calls.push({ command: commandName, input: _command.input, success: true });
64
+ this._calls.push({ command: commandName, input, success: true });
65
65
  return result;
66
66
  }, (error) => {
67
- this._calls.push({ command: commandName, input: _command.input, success: false });
67
+ this._calls.push({ command: commandName, input, success: false });
68
68
  throw error;
69
69
  });
70
70
  if (cb)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B;AAmCpB,IAAM,UAAN,MAA2B;AAAA;AAAA,EAahC,YAAoB,SAAiC;AAAjC;AAElB,SAAK,QAAQ,QAAQ,UAAU;AAG/B,UAAM,aAAa,QAAQ;AAAA,IAAmC;AAG9D,YAAQ,UAAU,OAAO,CAAC,aAAyB,UAA+B;AAChF,YAAM,eAAe,OAAO,eAAe,QAAQ;AACnD,YAAM,oBAAoB,aAAa;AACvC,YAAM,cAAc,mBAAmB;AAAA,MAAmC;AAG1E,YAAM,eAAe,MAAM,IAAI;AAC/B,YAAM,KACJ,OAAO,iBAAiB,aAAa,eAAe;AAGtD,YAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,WAAW,aAAa,YAAY;AAExE,cAAM,UAAU,KAAK,UAAU,IAAI,iBAAiB;AACpD,YAAI,CAAE,SAAS;AACb,gBAAM,QAAQ,IAAI,MAAM,gBAAgB,cAAc,cAAc;AACpE,iBAAO,OAAO,KAAK;AAAA,QACrB;AAGA,YAAI;AAEF,gBAAM,QAAQ,KAAK,MAAM,KAAK,UAAU,SAAS,KAAK,CAAC;AAGvD,gBAAM,SAAyB,MAAM,QAAQ,OAAO,KAAK,MAAM;AAG/D,cAAI,CAAE,QAAQ;AACZ,kBAAM,QAAQ,IAAI,MAAM,aAAa,cAAc,iCAAiC;AACpF,mBAAO,OAAO,KAAK;AAAA,UACrB;AAGA,gBAAM,SAAS,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AAGhD,cAAI,CAAE,OAAO;AAAW,mBAAO,YAAY,EAAE,gBAAgB,IAAI;AACjE,cAAI,CAAE,OAAO,UAAU;AAAW,mBAAO,UAAU,gBAAY,+BAAW;AAG1E,kBAAQ,MAAM;AAAA,QAChB,SAAS,OAAP;AACA,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW;AAEnB,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAO,SAAS,OAAO,SAAS,KAAK,CAAC;AAC/E,eAAO;AAAA,MACT,GAAG,CAAC,UAAU;AAEZ,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAO,SAAS,OAAO,SAAS,MAAM,CAAC;AAChF,cAAM;AAAA,MACR,CAAC;AAGD,UAAI;AAAI,gBAAQ,KAAK,CAAC,WAAW,GAAG,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AACvE,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EA9EQ,YAAY,oBAAI,IAAuD;AAAA;AAAA,EAEvE;AAAA;AAAA,EAEA,SAAwB,CAAC;AAAA;AAAA,EAEzB,SAA4B;AAAA;AAAA,EA2EpC,SAAS,OAAgC;AACvC,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGA,WAAmC;AACjC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAuB;AACrB,UAAM,QAAQ,KAAK;AACnB,WAAO,KAAK;AACZ,SAAK,SAAS,CAAC;AACf,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAgB;AACd,SAAK,QAAQ,UAAU,OAAO,KAAK;AAAA,EACrC;AAAA;AAAA,EAGA,GACI,SACA,SACI;AACN,SAAK,UAAU,IAAI,SAAS,OAAO;AACnC,WAAO;AAAA,EACT;AACF;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B;AAmCpB,IAAM,UAAN,MAA2B;AAAA;AAAA,EAahC,YAAoB,SAAiC;AAAjC;AAElB,SAAK,QAAQ,QAAQ,UAAU;AAG/B,UAAM,aAAa,QAAQ;AAAA,IAAmC;AAG9D,YAAQ,UAAU,OAAO,CAAC,aAAyB,UAA+B;AAChF,YAAM,eAAe,OAAO,eAAe,QAAQ;AACnD,YAAM,oBAAoB,aAAa;AACvC,YAAM,cAAc,mBAAmB;AAAA,MAAmC;AAG1E,YAAM,eAAe,MAAM,IAAI;AAC/B,YAAM,KACJ,OAAO,iBAAiB,aAAa,eAAe;AAGtD,YAAM,QAAQ,gBAAgB,SAAS,KAAK;AAG5C,YAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,WAAW,aAAa,YAAY;AAExE,cAAM,UAAU,KAAK,UAAU,IAAI,iBAAiB;AACpD,YAAI,CAAE,SAAS;AACb,gBAAM,QAAQ,IAAI,MAAM,gBAAgB,cAAc,cAAc;AACpE,iBAAO,OAAO,KAAK;AAAA,QACrB;AAGA,YAAI;AAEF,gBAAM,SAAyB,MAAM,QAAQ,OAAO,KAAK,MAAM;AAG/D,cAAI,CAAE,QAAQ;AACZ,kBAAM,QAAQ,IAAI,MAAM,aAAa,cAAc,iCAAiC;AACpF,mBAAO,OAAO,KAAK;AAAA,UACrB;AAGA,gBAAM,SAAS,gBAAgB,MAAM;AAGrC,cAAI,CAAE,OAAO;AAAW,mBAAO,YAAY,EAAE,gBAAgB,IAAI;AACjE,cAAI,CAAE,OAAO,UAAU;AAAW,mBAAO,UAAU,gBAAY,+BAAW;AAG1E,kBAAQ,MAAM;AAAA,QAChB,SAAS,OAAP;AACA,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW;AAEnB,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAc,SAAS,KAAK,CAAC;AACtE,eAAO;AAAA,MACT,GAAG,CAAC,UAAU;AAEZ,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAc,SAAS,MAAM,CAAC;AACvE,cAAM;AAAA,MACR,CAAC;AAGD,UAAI;AAAI,gBAAQ,KAAK,CAAC,WAAW,GAAG,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AACvE,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EA9EQ,YAAY,oBAAI,IAAuD;AAAA;AAAA,EAEvE;AAAA;AAAA,EAEA,SAAwB,CAAC;AAAA;AAAA,EAEzB,SAA4B;AAAA;AAAA,EA2EpC,SAAS,OAAgC;AACvC,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGA,WAAmC;AACjC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAuB;AACrB,UAAM,QAAQ,KAAK;AACnB,WAAO,KAAK;AACZ,SAAK,SAAS,CAAC;AACf,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAgB;AACd,SAAK,QAAQ,UAAU,OAAO,KAAK;AAAA,EACrC;AAAA;AAAA,EAGA,GACI,SACA,SACI;AACN,SAAK,UAAU,IAAI,SAAS,OAAO;AACnC,WAAO;AAAA,EACT;AACF;",
5
5
  "names": []
6
6
  }
package/dist/index.mjs CHANGED
@@ -1,3 +1,9 @@
1
+ ;const __$$_esm_paths_helper = await (async() => {
2
+ const __filename = (await import("node:url")).fileURLToPath(import.meta.url);
3
+ const __dirname = (await import("node:path")).dirname(__filename);
4
+ return { __filename, __dirname };
5
+ })();
6
+
1
7
  // index.ts
2
8
  import { randomUUID } from "node:crypto";
3
9
  var AWSMock = class {
@@ -14,6 +20,7 @@ var AWSMock = class {
14
20
  "[Unknown Command]";
15
21
  const lastArgument = _args.pop();
16
22
  const cb = typeof lastArgument === "function" ? lastArgument : void 0;
23
+ const input = structuredClone(_command.input);
17
24
  const promise = new Promise((resolve, reject) => setImmediate(async () => {
18
25
  const handler = this._handlers.get(commandConstuctor);
19
26
  if (!handler) {
@@ -21,13 +28,12 @@ var AWSMock = class {
21
28
  return reject(error);
22
29
  }
23
30
  try {
24
- const input = JSON.parse(JSON.stringify(_command.input));
25
31
  const output = await handler(input, this._state);
26
32
  if (!output) {
27
33
  const error = new Error(`Mock for "${clientName}.${commandName}" returned no result`);
28
34
  return reject(error);
29
35
  }
30
- const result = JSON.parse(JSON.stringify(output));
36
+ const result = structuredClone(output);
31
37
  if (!result.$metadata)
32
38
  result.$metadata = { httpStatusCode: 200 };
33
39
  if (!result.$metadata.requestId)
@@ -37,10 +43,10 @@ var AWSMock = class {
37
43
  reject(error);
38
44
  }
39
45
  })).then((result) => {
40
- this._calls.push({ command: commandName, input: _command.input, success: true });
46
+ this._calls.push({ command: commandName, input, success: true });
41
47
  return result;
42
48
  }, (error) => {
43
- this._calls.push({ command: commandName, input: _command.input, success: false });
49
+ this._calls.push({ command: commandName, input, success: false });
44
50
  throw error;
45
51
  });
46
52
  if (cb)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": ";AAAA,SAAS,kBAAkB;AAmCpB,IAAM,UAAN,MAA2B;AAAA;AAAA,EAahC,YAAoB,SAAiC;AAAjC;AAElB,SAAK,QAAQ,QAAQ,UAAU;AAG/B,UAAM,aAAa,QAAQ;AAAA,IAAmC;AAG9D,YAAQ,UAAU,OAAO,CAAC,aAAyB,UAA+B;AAChF,YAAM,eAAe,OAAO,eAAe,QAAQ;AACnD,YAAM,oBAAoB,aAAa;AACvC,YAAM,cAAc,mBAAmB;AAAA,MAAmC;AAG1E,YAAM,eAAe,MAAM,IAAI;AAC/B,YAAM,KACJ,OAAO,iBAAiB,aAAa,eAAe;AAGtD,YAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,WAAW,aAAa,YAAY;AAExE,cAAM,UAAU,KAAK,UAAU,IAAI,iBAAiB;AACpD,YAAI,CAAE,SAAS;AACb,gBAAM,QAAQ,IAAI,MAAM,gBAAgB,cAAc,cAAc;AACpE,iBAAO,OAAO,KAAK;AAAA,QACrB;AAGA,YAAI;AAEF,gBAAM,QAAQ,KAAK,MAAM,KAAK,UAAU,SAAS,KAAK,CAAC;AAGvD,gBAAM,SAAyB,MAAM,QAAQ,OAAO,KAAK,MAAM;AAG/D,cAAI,CAAE,QAAQ;AACZ,kBAAM,QAAQ,IAAI,MAAM,aAAa,cAAc,iCAAiC;AACpF,mBAAO,OAAO,KAAK;AAAA,UACrB;AAGA,gBAAM,SAAS,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AAGhD,cAAI,CAAE,OAAO;AAAW,mBAAO,YAAY,EAAE,gBAAgB,IAAI;AACjE,cAAI,CAAE,OAAO,UAAU;AAAW,mBAAO,UAAU,YAAY,WAAW;AAG1E,kBAAQ,MAAM;AAAA,QAChB,SAAS,OAAP;AACA,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW;AAEnB,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAO,SAAS,OAAO,SAAS,KAAK,CAAC;AAC/E,eAAO;AAAA,MACT,GAAG,CAAC,UAAU;AAEZ,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAO,SAAS,OAAO,SAAS,MAAM,CAAC;AAChF,cAAM;AAAA,MACR,CAAC;AAGD,UAAI;AAAI,gBAAQ,KAAK,CAAC,WAAW,GAAG,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AACvE,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EA9EQ,YAAY,oBAAI,IAAuD;AAAA;AAAA,EAEvE;AAAA;AAAA,EAEA,SAAwB,CAAC;AAAA;AAAA,EAEzB,SAA4B;AAAA;AAAA,EA2EpC,SAAS,OAAgC;AACvC,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGA,WAAmC;AACjC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAuB;AACrB,UAAM,QAAQ,KAAK;AACnB,WAAO,KAAK;AACZ,SAAK,SAAS,CAAC;AACf,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAgB;AACd,SAAK,QAAQ,UAAU,OAAO,KAAK;AAAA,EACrC;AAAA;AAAA,EAGA,GACI,SACA,SACI;AACN,SAAK,UAAU,IAAI,SAAS,OAAO;AACnC,WAAO;AAAA,EACT;AACF;",
4
+ "mappings": ";;;;;;;AAAA,SAAS,kBAAkB;AAmCpB,IAAM,UAAN,MAA2B;AAAA;AAAA,EAahC,YAAoB,SAAiC;AAAjC;AAElB,SAAK,QAAQ,QAAQ,UAAU;AAG/B,UAAM,aAAa,QAAQ;AAAA,IAAmC;AAG9D,YAAQ,UAAU,OAAO,CAAC,aAAyB,UAA+B;AAChF,YAAM,eAAe,OAAO,eAAe,QAAQ;AACnD,YAAM,oBAAoB,aAAa;AACvC,YAAM,cAAc,mBAAmB;AAAA,MAAmC;AAG1E,YAAM,eAAe,MAAM,IAAI;AAC/B,YAAM,KACJ,OAAO,iBAAiB,aAAa,eAAe;AAGtD,YAAM,QAAQ,gBAAgB,SAAS,KAAK;AAG5C,YAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,WAAW,aAAa,YAAY;AAExE,cAAM,UAAU,KAAK,UAAU,IAAI,iBAAiB;AACpD,YAAI,CAAE,SAAS;AACb,gBAAM,QAAQ,IAAI,MAAM,gBAAgB,cAAc,cAAc;AACpE,iBAAO,OAAO,KAAK;AAAA,QACrB;AAGA,YAAI;AAEF,gBAAM,SAAyB,MAAM,QAAQ,OAAO,KAAK,MAAM;AAG/D,cAAI,CAAE,QAAQ;AACZ,kBAAM,QAAQ,IAAI,MAAM,aAAa,cAAc,iCAAiC;AACpF,mBAAO,OAAO,KAAK;AAAA,UACrB;AAGA,gBAAM,SAAS,gBAAgB,MAAM;AAGrC,cAAI,CAAE,OAAO;AAAW,mBAAO,YAAY,EAAE,gBAAgB,IAAI;AACjE,cAAI,CAAE,OAAO,UAAU;AAAW,mBAAO,UAAU,YAAY,WAAW;AAG1E,kBAAQ,MAAM;AAAA,QAChB,SAAS,OAAP;AACA,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW;AAEnB,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAc,SAAS,KAAK,CAAC;AACtE,eAAO;AAAA,MACT,GAAG,CAAC,UAAU;AAEZ,aAAK,OAAO,KAAK,EAAE,SAAS,aAAa,OAAc,SAAS,MAAM,CAAC;AACvE,cAAM;AAAA,MACR,CAAC;AAGD,UAAI;AAAI,gBAAQ,KAAK,CAAC,WAAW,GAAG,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AACvE,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EA9EQ,YAAY,oBAAI,IAAuD;AAAA;AAAA,EAEvE;AAAA;AAAA,EAEA,SAAwB,CAAC;AAAA;AAAA,EAEzB,SAA4B;AAAA;AAAA,EA2EpC,SAAS,OAAgC;AACvC,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGA,WAAmC;AACjC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAuB;AACrB,UAAM,QAAQ,KAAK;AACnB,WAAO,KAAK;AACZ,SAAK,SAAS,CAAC;AACf,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAgB;AACd,SAAK,QAAQ,UAAU,OAAO,KAAK;AAAA,EACrC;AAAA;AAAA,EAGA,GACI,SACA,SACI;AACN,SAAK,UAAU,IAAI,SAAS,OAAO;AACnC,WAAO;AAAA,EACT;AACF;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juit/lib-aws-mock",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "type": "module",
5
5
  "description": "Easy Mocking for AWS SDK v3",
6
6
  "main": "./dist/index.cjs",
@@ -30,8 +30,8 @@
30
30
  "@aws-sdk/types": "^3.310.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@aws-sdk/client-sts": "^3.316.0",
34
- "@plugjs/build": "^0.4.0"
33
+ "@aws-sdk/client-sts": "^3.328.0",
34
+ "@plugjs/build": "^0.4.6"
35
35
  },
36
36
  "author": "Juit Developers <developers@juit.com>",
37
37
  "license": "Apache-2.0",
package/src/index.ts CHANGED
@@ -64,6 +64,9 @@ export class AWSMock<State = any> {
64
64
  const cb: ((err: any, data?: any) => void) | undefined =
65
65
  typeof lastArgument === 'function' ? lastArgument : undefined
66
66
 
67
+ // Clone input for every call
68
+ const input = structuredClone(_command.input)
69
+
67
70
  // Always work with promises, decoupling from event loop
68
71
  const promise = new Promise((resolve, reject) => setImmediate(async () => {
69
72
  // Get the handler for the method and verify it
@@ -75,9 +78,6 @@ export class AWSMock<State = any> {
75
78
 
76
79
  // Call the mocked handler
77
80
  try {
78
- // Clone input for every call
79
- const input = JSON.parse(JSON.stringify(_command.input))
80
-
81
81
  // Call the handler and get the result
82
82
  const output: MetadataBearer = await handler(input, this._state)
83
83
 
@@ -88,7 +88,7 @@ export class AWSMock<State = any> {
88
88
  }
89
89
 
90
90
  // Clone the output as we did for the input
91
- const result = JSON.parse(JSON.stringify(output))
91
+ const result = structuredClone(output)
92
92
 
93
93
  // If we don't have some metadata, inject some fake stuff
94
94
  if (! result.$metadata) result.$metadata = { httpStatusCode: 200 }
@@ -101,11 +101,11 @@ export class AWSMock<State = any> {
101
101
  }
102
102
  })).then((result) => {
103
103
  // On success, record the call and return the result
104
- this._calls.push({ command: commandName, input: _command.input, success: true })
104
+ this._calls.push({ command: commandName, input: input, success: true })
105
105
  return result
106
106
  }, (error) => {
107
107
  // On failure, record the call and throw the error
108
- this._calls.push({ command: commandName, input: _command.input, success: false })
108
+ this._calls.push({ command: commandName, input: input, success: false })
109
109
  throw error
110
110
  })
111
111