@jonloucks/contracts-ts 1.0.4 → 1.2.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.
Files changed (70) hide show
  1. package/README.md +35 -18
  2. package/api/Convenience.d.ts +13 -4
  3. package/api/Convenience.d.ts.map +1 -1
  4. package/api/Convenience.js +23 -0
  5. package/api/Convenience.js.map +1 -1
  6. package/api/Open.d.ts +14 -2
  7. package/api/Open.d.ts.map +1 -1
  8. package/api/Open.js +28 -1
  9. package/api/Open.js.map +1 -1
  10. package/api/Repository.d.ts +14 -0
  11. package/api/Repository.d.ts.map +1 -1
  12. package/api/Repository.js.map +1 -1
  13. package/api/RepositoryFactory.d.ts +2 -2
  14. package/api/RepositoryFactory.d.ts.map +1 -1
  15. package/api/Types.d.ts.map +1 -1
  16. package/api/Types.js +5 -2
  17. package/api/Types.js.map +1 -1
  18. package/auxiliary/Convenience.d.ts +9 -3
  19. package/auxiliary/Convenience.d.ts.map +1 -1
  20. package/auxiliary/Convenience.js +11 -0
  21. package/auxiliary/Convenience.js.map +1 -1
  22. package/auxiliary/IdempotenState.d.ts +11 -0
  23. package/auxiliary/IdempotenState.d.ts.map +1 -0
  24. package/auxiliary/IdempotenState.js +10 -0
  25. package/auxiliary/IdempotenState.js.map +1 -0
  26. package/auxiliary/Idempotent.d.ts +38 -0
  27. package/auxiliary/Idempotent.d.ts.map +1 -0
  28. package/auxiliary/Idempotent.js +14 -0
  29. package/auxiliary/Idempotent.js.map +1 -0
  30. package/auxiliary/IdempotentFactory.d.ts +28 -0
  31. package/auxiliary/IdempotentFactory.d.ts.map +1 -0
  32. package/auxiliary/IdempotentFactory.js +23 -0
  33. package/auxiliary/IdempotentFactory.js.map +1 -0
  34. package/impl/Contracts.impl.d.ts.map +1 -1
  35. package/impl/Contracts.impl.js +16 -18
  36. package/impl/Contracts.impl.js.map +1 -1
  37. package/impl/ContractsFactory.impl.d.ts.map +1 -1
  38. package/impl/ContractsFactory.impl.js +3 -0
  39. package/impl/ContractsFactory.impl.js.map +1 -1
  40. package/impl/ContractsWrapper.impl.d.ts.map +1 -1
  41. package/impl/ContractsWrapper.impl.js +20 -26
  42. package/impl/ContractsWrapper.impl.js.map +1 -1
  43. package/impl/Events.impl.d.ts +1 -1
  44. package/impl/Events.impl.d.ts.map +1 -1
  45. package/impl/Events.impl.js +4 -15
  46. package/impl/Events.impl.js.map +1 -1
  47. package/impl/Idempotent.impl.d.ts +5 -5
  48. package/impl/Idempotent.impl.d.ts.map +1 -1
  49. package/impl/Idempotent.impl.js +62 -17
  50. package/impl/Idempotent.impl.js.map +1 -1
  51. package/impl/IdempotentFactory.impl.d.ts +12 -0
  52. package/impl/IdempotentFactory.impl.d.ts.map +1 -0
  53. package/impl/IdempotentFactory.impl.js +25 -0
  54. package/impl/IdempotentFactory.impl.js.map +1 -0
  55. package/impl/Repository.impl.d.ts +2 -3
  56. package/impl/Repository.impl.d.ts.map +1 -1
  57. package/impl/Repository.impl.js +16 -16
  58. package/impl/Repository.impl.js.map +1 -1
  59. package/impl/RepositoryFactory.impl.js +6 -2
  60. package/impl/RepositoryFactory.impl.js.map +1 -1
  61. package/index.d.ts +2 -1
  62. package/index.d.ts.map +1 -1
  63. package/index.js +4 -5
  64. package/index.js.map +1 -1
  65. package/package.json +4 -4
  66. package/version.js +1 -1
  67. package/impl/Idempotent.d.ts +0 -26
  68. package/impl/Idempotent.d.ts.map +0 -1
  69. package/impl/Idempotent.js +0 -3
  70. package/impl/Idempotent.js.map +0 -1
package/README.md CHANGED
@@ -27,11 +27,39 @@ npm install @jonloucks/contracts-ts
27
27
 
28
28
  ## Usage - code fragments from Example.test.ts
29
29
 
30
- <details markdown="1"><summary>Creating a Contract</summary>
30
+ <details markdown="1"><summary>Importing the Package</summary>
31
31
 
32
32
  ```typescript
33
- import { createContract, Contract, CONTRACTS } from '@jonloucks/contracts-ts';
33
+ import { CONTRACTS, createContract } from '@jonloucks/contracts-ts';
34
+ ```
35
+
36
+ </details>
37
+
38
+ <details markdown="1"><summary>Importing the Convenience Package</summary>
39
+
40
+ ```typescript
41
+ import {
42
+ AutoClose,
43
+ bind,
44
+ claim,
45
+ Contract,
46
+ createExtractor,
47
+ createLifeCycle,
48
+ createRepository,
49
+ createSingleton,
50
+ createValue,
51
+ createContract,
52
+ enforce,
53
+ guardFunctions,
54
+ isBound
55
+ } from "@jonloucks/contracts-ts/api/Convenience";
56
+ ```
57
+
58
+ </details>
34
59
 
60
+ <details markdown="1"><summary>Creating a Contract</summary>
61
+
62
+ ```typescript
35
63
  // Define a service interface
36
64
  interface Logger {
37
65
  log(message: string): void;
@@ -40,30 +68,19 @@ interface Logger {
40
68
  // Create a contract for the service
41
69
  const LOGGER_CONTRACT: Contract<Logger> = createContract<Logger>({
42
70
  name: "Logger",
43
- test: (obj: any): obj is Logger => { // example of duck-typing check
44
- return typeof obj.log === "function";
71
+ test: (obj: unknown): obj is Logger => { // example of duck-typing check
72
+ return guardFunctions(obj, 'log'); // example of using guardFunctions helper
45
73
  }
46
74
  });
47
75
  ```
48
76
  </details>
49
77
 
50
- <details markdown="1"><summary>Importing the Package</summary>
51
-
52
- ```typescript
53
- import { CONTRACTS, createContract, PromisorFactory, PROMISOR_FACTORY } from '@jonloucks/contracts-ts';
54
- ```
55
-
56
- </details>
57
-
58
78
  <details markdown="1"><summary>Binding a Contract</summary>
59
79
 
60
80
  ```typescript
61
81
 
62
- // Optional - PromisorFactory is not required, but provides trivial and advanced ways to create Promisors
63
- let promisorFactory : PromisorFactory = CONTRACTS.enforce<PromisorFactory>(PROMISOR_FACTORY);
64
-
65
- CONTRACTS.bind<Logger>(LOGGER_CONTRACT,
66
- promisorFactory.createSingleton<Logger>(
82
+ bind<Logger>(LOGGER_CONTRACT,
83
+ createSingleton<Logger>(
67
84
  () => ({
68
85
  log: (message: string) => {
69
86
  console.log("LOG:", message);
@@ -75,7 +92,7 @@ CONTRACTS.bind<Logger>(LOGGER_CONTRACT,
75
92
  <details markdown="1"><summary>Using the Contract</summary>
76
93
 
77
94
  ```typescript
78
- const logger : Logger = CONTRACTS.enforce<Logger>(LOGGER_CONTRACT);
95
+ const logger : Logger = enforce<Logger>(LOGGER_CONTRACT);
79
96
  logger.log("Using the service in the test.");
80
97
  ```
81
98
  </details>
@@ -1,8 +1,10 @@
1
- import { AutoClose, Contract, OptionalType, RequiredType } from "@jonloucks/contracts-ts";
2
- import { PromisorType } from "@jonloucks/contracts-ts/api/Promisor";
1
+ import { Contract, ContractConfig, CONTRACTS, createContract } from "@jonloucks/contracts-ts";
2
+ import { Promisor, PromisorType } from "@jonloucks/contracts-ts/api/Promisor";
3
+ import { AutoClose, inlineAutoClose } from "@jonloucks/contracts-ts/api/AutoClose";
3
4
  import { BindStrategyType } from "@jonloucks/contracts-ts/api/BindStrategy";
4
- import { Promisor } from "@jonloucks/contracts-ts/api/Promisor";
5
- import { TransformType } from "@jonloucks/contracts-ts/api/Types";
5
+ import { Repository, Config as RepositoryConfig } from "@jonloucks/contracts-ts/api/Repository";
6
+ import { OptionalType, RequiredType, Transform, TransformType, isNumber, isFunction, isString, isBoolean, isObject, guardFunctions } from "@jonloucks/contracts-ts/api/Types";
7
+ export { AutoClose, BindStrategyType, Contract, ContractConfig, CONTRACTS, createContract, guardFunctions, inlineAutoClose, isBoolean, isFunction, isNumber, isObject, isString, OptionalType, Promisor, PromisorType, Repository, RepositoryConfig, RequiredType, Transform, TransformType, };
6
8
  /**
7
9
  * @module Convenience
8
10
  * @description
@@ -84,4 +86,11 @@ export declare function createLifeCycle<T>(promisor: PromisorType<T>): RequiredT
84
86
  * @param <R> the new Promisor deliverable type
85
87
  */
86
88
  export declare function createExtractor<T, R>(promisor: PromisorType<T>, extractor: TransformType<T, R>): RequiredType<Promisor<R>>;
89
+ /**
90
+ * Factory method to create a Repository via the shared global REPOSITORY_FACTORY instance.
91
+ *
92
+ * @param config optional configuration for the Repository
93
+ * @returns the Repository implementation
94
+ */
95
+ export declare function createRepository(config?: RepositoryConfig): RequiredType<Repository>;
87
96
  //# sourceMappingURL=Convenience.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Convenience.d.ts","sourceRoot":"","sources":["../../src/api/Convenience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAa,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE/E;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,CAEhJ;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAEtF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAEvF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAEvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAE1H"}
1
+ {"version":3,"file":"Convenience.d.ts","sourceRoot":"","sources":["../../src/api/Convenience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAG5E,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE9K,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,GACd,CAAC;AAEF;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE/E;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,CAEhJ;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAEtF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAEvF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAEvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAE1H;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,CAEpF"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isString = exports.isObject = exports.isNumber = exports.isFunction = exports.isBoolean = exports.inlineAutoClose = exports.guardFunctions = exports.createContract = exports.CONTRACTS = void 0;
3
4
  exports.claim = claim;
4
5
  exports.enforce = enforce;
5
6
  exports.bind = bind;
@@ -8,8 +9,21 @@ exports.createValue = createValue;
8
9
  exports.createSingleton = createSingleton;
9
10
  exports.createLifeCycle = createLifeCycle;
10
11
  exports.createExtractor = createExtractor;
12
+ exports.createRepository = createRepository;
11
13
  const contracts_ts_1 = require("@jonloucks/contracts-ts");
14
+ Object.defineProperty(exports, "CONTRACTS", { enumerable: true, get: function () { return contracts_ts_1.CONTRACTS; } });
15
+ Object.defineProperty(exports, "createContract", { enumerable: true, get: function () { return contracts_ts_1.createContract; } });
16
+ const AutoClose_1 = require("@jonloucks/contracts-ts/api/AutoClose");
17
+ Object.defineProperty(exports, "inlineAutoClose", { enumerable: true, get: function () { return AutoClose_1.inlineAutoClose; } });
12
18
  const PromisorFactory_1 = require("@jonloucks/contracts-ts/api/PromisorFactory");
19
+ const RepositoryFactory_1 = require("@jonloucks/contracts-ts/api/RepositoryFactory");
20
+ const Types_1 = require("@jonloucks/contracts-ts/api/Types");
21
+ Object.defineProperty(exports, "isNumber", { enumerable: true, get: function () { return Types_1.isNumber; } });
22
+ Object.defineProperty(exports, "isFunction", { enumerable: true, get: function () { return Types_1.isFunction; } });
23
+ Object.defineProperty(exports, "isString", { enumerable: true, get: function () { return Types_1.isString; } });
24
+ Object.defineProperty(exports, "isBoolean", { enumerable: true, get: function () { return Types_1.isBoolean; } });
25
+ Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return Types_1.isObject; } });
26
+ Object.defineProperty(exports, "guardFunctions", { enumerable: true, get: function () { return Types_1.guardFunctions; } });
13
27
  /**
14
28
  * @module Convenience
15
29
  * @description
@@ -107,4 +121,13 @@ function createLifeCycle(promisor) {
107
121
  function createExtractor(promisor, extractor) {
108
122
  return enforce(PromisorFactory_1.CONTRACT).createExtractor(promisor, extractor);
109
123
  }
124
+ /**
125
+ * Factory method to create a Repository via the shared global REPOSITORY_FACTORY instance.
126
+ *
127
+ * @param config optional configuration for the Repository
128
+ * @returns the Repository implementation
129
+ */
130
+ function createRepository(config) {
131
+ return enforce(RepositoryFactory_1.CONTRACT).createRepository(config);
132
+ }
110
133
  //# sourceMappingURL=Convenience.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Convenience.js","sourceRoot":"","sources":["../../src/api/Convenience.ts"],"names":[],"mappings":";;AA2BA,sBAEC;AAQD,0BAEC;AAUD,oBAEC;AAQD,0BAEC;AASD,kCAEC;AAWD,0CAEC;AAUD,0CAEC;AAYD,0CAEC;AA/GD,0DAAqG;AAGrG,iFAA2F;AAI3F;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,SAAgB,KAAK,CAAI,QAAmC;IAC1D,OAAO,wBAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAI,QAAmC;IAC5D,OAAO,wBAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,IAAI,CAAI,QAAmC,EAAE,QAAyB,EAAE,YAA+B;IACrH,OAAO,wBAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAI,QAAmC;IAC5D,OAAO,wBAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAI,WAA4B;IACzD,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAI,QAAyB;IAC1D,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAI,QAAyB;IAC1D,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAO,QAAyB,EAAE,SAA8B;IAC7F,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"Convenience.js","sourceRoot":"","sources":["../../src/api/Convenience.ts"],"names":[],"mappings":";;;AAqDA,sBAEC;AAQD,0BAEC;AAUD,oBAEC;AAQD,0BAEC;AASD,kCAEC;AAWD,0CAEC;AAUD,0CAEC;AAYD,0CAEC;AAQD,4CAEC;AAnJD,0DAA8F;AAc5F,0FAdiC,wBAAS,OAcjC;AACT,+FAf4C,6BAAc,OAe5C;AAbhB,qEAAmF;AAejF,gGAfkB,2BAAe,OAelB;AAbjB,iFAA2F;AAC3F,qFAA+F;AAE/F,6DAA8K;AAa5K,yFAb6D,gBAAQ,OAa7D;AADR,2FAZuE,kBAAU,OAYvE;AAGV,yFAfmF,gBAAQ,OAenF;AAJR,0FAX6F,iBAAS,OAW7F;AAGT,yFAdwG,gBAAQ,OAcxG;AALR,+FATkH,sBAAc,OASlH;AAiBhB;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,SAAgB,KAAK,CAAI,QAAmC;IAC1D,OAAO,wBAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAI,QAAmC;IAC5D,OAAO,wBAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,IAAI,CAAI,QAAmC,EAAE,QAAyB,EAAE,YAA+B;IACrH,OAAO,wBAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAI,QAAmC;IAC5D,OAAO,wBAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAI,WAA4B;IACzD,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAI,QAAyB;IAC1D,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAI,QAAyB;IAC1D,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAO,QAAyB,EAAE,SAA8B;IAC7F,OAAO,OAAO,CAAC,0BAAgB,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,MAAyB;IACxD,OAAO,OAAO,CAAC,4BAAkB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC"}
package/api/Open.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { AutoClose } from "./AutoClose";
2
- import { RequiredType } from "./AutoCloseFactory";
1
+ import { AutoClose, AutoCloseType } from "@jonloucks/contracts-ts/api/AutoClose";
2
+ import { AutoOpen } from "@jonloucks/contracts-ts/api/AutoOpen";
3
+ import { RequiredType } from "@jonloucks/contracts-ts/api/AutoCloseFactory";
3
4
  /**
4
5
  * Interface representing an entity that can be opened, returning an AutoClose mechanism.
5
6
  */
@@ -10,6 +11,10 @@ export interface Open {
10
11
  */
11
12
  open(): AutoClose;
12
13
  }
14
+ /**
15
+ * The type used to open an Idempotent
16
+ */
17
+ export type OpenType = AutoOpen | Open | (() => AutoCloseType);
13
18
  /**
14
19
  * Duck-typing check for Open interface.
15
20
  *
@@ -17,4 +22,11 @@ export interface Open {
17
22
  * @returns true if the value implements Open, false otherwise
18
23
  */
19
24
  export declare function guard(value: unknown): value is RequiredType<Open>;
25
+ /**
26
+ * Convert an OpenType to an Open instance.
27
+ *
28
+ * @param type the OpenType to convert
29
+ * @return the Open instance
30
+ */
31
+ export declare function typeToOpen(type: OpenType): Open;
20
32
  //# sourceMappingURL=Open.d.ts.map
package/api/Open.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Open.d.ts","sourceRoot":"","sources":["../../src/api/Open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,IAAI;IAEnB;;;OAGG;IACH,IAAI,IAAI,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAEjE"}
1
+ {"version":3,"file":"Open.d.ts","sourceRoot":"","sources":["../../src/api/Open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAmB,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,QAAQ,EAA0B,MAAM,sCAAsC,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,IAAI;IAEnB;;;OAGG;IACH,IAAI,IAAI,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,aAAa,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAc/C"}
package/api/Open.js CHANGED
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.guard = guard;
4
- const Types_1 = require("./Types");
4
+ exports.typeToOpen = typeToOpen;
5
+ const AutoClose_1 = require("@jonloucks/contracts-ts/api/AutoClose");
6
+ const AutoOpen_1 = require("@jonloucks/contracts-ts/api/AutoOpen");
7
+ const Types_1 = require("@jonloucks/contracts-ts/api/Types");
5
8
  /**
6
9
  * Duck-typing check for Open interface.
7
10
  *
@@ -11,4 +14,28 @@ const Types_1 = require("./Types");
11
14
  function guard(value) {
12
15
  return (0, Types_1.guardFunctions)(value, 'open');
13
16
  }
17
+ /**
18
+ * Convert an OpenType to an Open instance.
19
+ *
20
+ * @param type the OpenType to convert
21
+ * @return the Open instance
22
+ */
23
+ function typeToOpen(type) {
24
+ if ((0, AutoOpen_1.guard)(type)) {
25
+ return {
26
+ open: () => type.autoOpen()
27
+ };
28
+ }
29
+ else if (guard(type)) {
30
+ return type;
31
+ }
32
+ else if ((0, Types_1.isFunction)(type)) {
33
+ return {
34
+ open: () => (0, AutoClose_1.typeToAutoClose)(type())
35
+ };
36
+ }
37
+ else {
38
+ throw new Error("Invalid Open type.");
39
+ }
40
+ }
14
41
  //# sourceMappingURL=Open.js.map
package/api/Open.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Open.js","sourceRoot":"","sources":["../../src/api/Open.ts"],"names":[],"mappings":";;AAsBA,sBAEC;AAvBD,mCAAyC;AAezC;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,IAAA,sBAAc,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"Open.js","sourceRoot":"","sources":["../../src/api/Open.ts"],"names":[],"mappings":";;AA4BA,sBAEC;AAQD,gCAcC;AApDD,qEAAkG;AAClG,mEAAwF;AACxF,6DAA+E;AAoB/E;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,IAAA,sBAAc,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,IAAc;IACvC,IAAI,IAAA,gBAAa,EAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;SAC5B,CAAA;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,IAAA,kBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,GAAG,EAAE,CAAC,IAAA,2BAAe,EAAC,IAAI,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -4,6 +4,20 @@ import { BindStrategy } from "@jonloucks/contracts-ts/api/BindStrategy";
4
4
  import { Contract } from "@jonloucks/contracts-ts/api/Contract";
5
5
  import { PromisorType } from "@jonloucks/contracts-ts/api/Promisor";
6
6
  import { RequiredType } from "@jonloucks/contracts-ts/api/Types";
7
+ import { Contracts } from "./Contracts";
8
+ /**
9
+ * Configuration for Repository
10
+ */
11
+ export interface Config {
12
+ /**
13
+ * Optional Contracts container for the Repository
14
+ */
15
+ contracts?: Contracts;
16
+ /**
17
+ * Optional required contracts for the Repository
18
+ */
19
+ requiredContracts?: Contract<unknown>[];
20
+ }
7
21
  /**
8
22
  * A repository for multiple contract promisors
9
23
  * This is an opt-in feature to simplify the managing of many contract bindings.
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/api/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAsB,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAkB,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI;IAEtC;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;IAElG;;;;;;;;;;OAUG;IACH,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE7F;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,UAAU,CAAC,CAEvE"}
1
+ {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/api/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAsB,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAkB,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,MAAM;IAErB;;OAEG;IACH,SAAS,CAAC,EAAG,SAAS,CAAC;IAEvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI;IAEtC;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;IAElG;;;;;;;;;;OAUG;IACH,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE7F;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,UAAU,CAAC,CAEvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../../src/api/Repository.ts"],"names":[],"mappings":";;AA8DA,sBAEC;AA/DD,2DAA4E;AAI5E,6DAAiF;AAmDjF;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,IAAA,sBAAc,EAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,IAAA,YAAS,EAAC,KAAK,CAAC,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../../src/api/Repository.ts"],"names":[],"mappings":";;AA+EA,sBAEC;AAhFD,2DAA4E;AAI5E,6DAAiF;AAoEjF;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,IAAA,sBAAc,EAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,IAAA,YAAS,EAAC,KAAK,CAAC,CAAC;AACxF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Contract } from "@jonloucks/contracts-ts/api/Contract";
2
- import { Repository } from "@jonloucks/contracts-ts/api/Repository";
2
+ import { Repository, Config } from "@jonloucks/contracts-ts/api/Repository";
3
3
  import { RequiredType } from "@jonloucks/contracts-ts/api/Types";
4
4
  /**
5
5
  * Factory interface for creating Repository instances.
@@ -8,7 +8,7 @@ export interface RepositoryFactory {
8
8
  /**
9
9
  * Create a new Repository instance.
10
10
  */
11
- createRepository(): RequiredType<Repository>;
11
+ createRepository(config?: Config): RequiredType<Repository>;
12
12
  }
13
13
  /**
14
14
  * Type guard for RepositoryFactory
@@ -1 +1 @@
1
- {"version":3,"file":"RepositoryFactory.d.ts","sourceRoot":"","sources":["../../src/api/RepositoryFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAkB,MAAM,mCAAmC,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC;;OAEG;IACH,gBAAgB,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAE9E;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAG7D,CAAC"}
1
+ {"version":3,"file":"RepositoryFactory.d.ts","sourceRoot":"","sources":["../../src/api/RepositoryFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAkB,MAAM,mCAAmC,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC;;OAEG;IACH,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;CAC7D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAE9E;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAG7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/api/Types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,SAAS,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAE9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAEtH;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,CAExE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,YAAY,CAAC,eAAe,CAAC,CAW5H;AAUD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CASnG"}
1
+ {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/api/Types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,SAAS,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAE9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAEtH;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,CAExE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,YAAY,CAAC,eAAe,CAAC,CAgB5H;AAUD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CASnG"}
package/api/Types.js CHANGED
@@ -120,12 +120,15 @@ function isConstructor(value) {
120
120
  * @returns true if property is defined
121
121
  */
122
122
  function guardFunctions(value, ...propertyNames) {
123
- if (isNotPresent(value)) {
123
+ if (isObject(value) === false) {
124
124
  return false;
125
125
  }
126
126
  const record = value;
127
127
  for (const propertyName of propertyNames) {
128
- if (!isFunction(record[propertyName])) {
128
+ if (propertyName in value === false) {
129
+ return false;
130
+ }
131
+ if (isFunction(record[propertyName]) === false) {
129
132
  return false;
130
133
  }
131
134
  }
package/api/Types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../src/api/Types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../src/api/Types.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,8 @@ import { RequiredType } from "@jonloucks/contracts-ts/api/Types";
2
2
  import { AtomicBoolean } from "@jonloucks/contracts-ts/auxiliary/AtomicBoolean";
3
3
  import { AtomicReference } from "@jonloucks/contracts-ts/auxiliary/AtomicReference";
4
4
  import { AtomicInteger } from "@jonloucks/contracts-ts/auxiliary/AtomicInteger";
5
- export { AtomicBoolean } from "@jonloucks/contracts-ts/auxiliary/AtomicBoolean";
6
- export { AtomicReference } from "@jonloucks/contracts-ts/auxiliary/AtomicReference";
7
- export { AtomicInteger } from "@jonloucks/contracts-ts/auxiliary/AtomicInteger";
5
+ import { Idempotent, Config as IdempotentConfig } from "@jonloucks/contracts-ts/auxiliary/Idempotent";
6
+ export { AtomicBoolean, AtomicReference, AtomicInteger, RequiredType, Idempotent, IdempotentConfig };
8
7
  /**
9
8
  * @module Convenience
10
9
  * @description
@@ -39,4 +38,11 @@ export declare function createAtomicReference<T>(initialValue?: T): RequiredType
39
38
  * @returns the AtomicInteger instance
40
39
  */
41
40
  export declare function createAtomicInteger(initialValue?: number): RequiredType<AtomicInteger>;
41
+ /**
42
+ * Create an Idempotent via the shared global CONTRACTS instance.
43
+ *
44
+ * @param config the idempotent configuration
45
+ * @returns the Idempotent instance
46
+ */
47
+ export declare function createIdempotent(config: IdempotentConfig): RequiredType<Idempotent>;
42
48
  //# sourceMappingURL=Convenience.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Convenience.d.ts","sourceRoot":"","sources":["../../src/auxiliary/Convenience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKjE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAEvF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAE3F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAEtF"}
1
+ {"version":3,"file":"Convenience.d.ts","sourceRoot":"","sources":["../../src/auxiliary/Convenience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMjE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAEtG,OAAO,EAAE,aAAa,EAAG,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAEtG;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAEvF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAE3F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAEtF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,CAEnF"}
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createAtomicBoolean = createAtomicBoolean;
4
4
  exports.createAtomicReference = createAtomicReference;
5
5
  exports.createAtomicInteger = createAtomicInteger;
6
+ exports.createIdempotent = createIdempotent;
6
7
  const contracts_ts_1 = require("@jonloucks/contracts-ts");
7
8
  const AtomicBooleanFactory_1 = require("@jonloucks/contracts-ts/auxiliary/AtomicBooleanFactory");
8
9
  const AtomicReferenceFactory_1 = require("@jonloucks/contracts-ts/auxiliary/AtomicReferenceFactory");
9
10
  const AtomicIntegerFactory_1 = require("@jonloucks/contracts-ts/auxiliary/AtomicIntegerFactory");
11
+ const IdempotentFactory_1 = require("@jonloucks/contracts-ts/auxiliary/IdempotentFactory");
10
12
  /**
11
13
  * @module Convenience
12
14
  * @description
@@ -47,4 +49,13 @@ function createAtomicReference(initialValue) {
47
49
  function createAtomicInteger(initialValue) {
48
50
  return contracts_ts_1.CONTRACTS.enforce(AtomicIntegerFactory_1.CONTRACT).createAtomicInteger(initialValue);
49
51
  }
52
+ /**
53
+ * Create an Idempotent via the shared global CONTRACTS instance.
54
+ *
55
+ * @param config the idempotent configuration
56
+ * @returns the Idempotent instance
57
+ */
58
+ function createIdempotent(config) {
59
+ return contracts_ts_1.CONTRACTS.enforce(IdempotentFactory_1.CONTRACT).createIdempotent(config);
60
+ }
50
61
  //# sourceMappingURL=Convenience.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Convenience.js","sourceRoot":"","sources":["../../src/auxiliary/Convenience.ts"],"names":[],"mappings":";;AAiCA,kDAEC;AAQD,sDAEC;AAQD,kDAEC;AAtDD,0DAAoD;AACpD,iGAAqG;AACrG,qGAAyG;AACzG,iGAAqG;AASrG;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,YAAsB;IACxD,OAAO,wBAAS,CAAC,OAAO,CAAC,+BAAe,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAI,YAAgB;IACvD,OAAO,wBAAS,CAAC,OAAO,CAAC,iCAAiB,CAAC,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,YAAqB;IACvD,OAAO,wBAAS,CAAC,OAAO,CAAC,+BAAe,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"Convenience.js","sourceRoot":"","sources":["../../src/auxiliary/Convenience.ts"],"names":[],"mappings":";;AAiCA,kDAEC;AAQD,sDAEC;AAQD,kDAEC;AAQD,4CAEC;AAhED,0DAAoD;AACpD,iGAAqG;AACrG,qGAAyG;AACzG,iGAAqG;AACrG,2FAAqG;AAQrG;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,YAAsB;IACxD,OAAO,wBAAS,CAAC,OAAO,CAAC,+BAAe,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAI,YAAgB;IACvD,OAAO,wBAAS,CAAC,OAAO,CAAC,iCAAiB,CAAC,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,YAAqB;IACvD,OAAO,wBAAS,CAAC,OAAO,CAAC,+BAAe,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,MAAwB;IACvD,OAAO,wBAAS,CAAC,OAAO,CAAC,4BAAkB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The possible states of an Idempotent
3
+ */
4
+ export declare const STATES: readonly ["OPENABLE", "OPENING", "OPENED", "CLOSING", "CLOSED", "DESTROYED"];
5
+ /** The possible states of an Idempotent */
6
+ export type State = typeof STATES[number];
7
+ /** The IdempotentState type */
8
+ export { State as IdempotentState };
9
+ /** The starting state for an Idempotent */
10
+ export declare const START_STATE: State;
11
+ //# sourceMappingURL=IdempotenState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdempotenState.d.ts","sourceRoot":"","sources":["../../src/auxiliary/IdempotenState.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM,8EAA+E,CAAC;AAEnG,2CAA2C;AAC3C,MAAM,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AAE1C,+BAA+B;AAC/B,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,CAAC;AAEpC,2CAA2C;AAC3C,eAAO,MAAM,WAAW,EAAE,KAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.START_STATE = exports.STATES = void 0;
4
+ /**
5
+ * The possible states of an Idempotent
6
+ */
7
+ exports.STATES = ['OPENABLE', 'OPENING', 'OPENED', 'CLOSING', 'CLOSED', 'DESTROYED'];
8
+ /** The starting state for an Idempotent */
9
+ exports.START_STATE = 'OPENABLE';
10
+ //# sourceMappingURL=IdempotenState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdempotenState.js","sourceRoot":"","sources":["../../src/auxiliary/IdempotenState.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,MAAM,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AAQnG,2CAA2C;AAC9B,QAAA,WAAW,GAAU,UAAU,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { Open, OpenType } from "@jonloucks/contracts-ts/api/Open";
2
+ import { State } from "@jonloucks/contracts-ts/auxiliary/IdempotenState";
3
+ import { Contracts } from "@jonloucks/contracts-ts/api/Contracts";
4
+ import { RequiredType } from "@jonloucks/contracts-ts/api/Types";
5
+ /**
6
+ * The configuration used to create a new Idempotent instance
7
+ */
8
+ export interface Config {
9
+ /** The Contracts instance to use */
10
+ contracts?: Contracts;
11
+ /** The Open type to use when opening the Idempotent */
12
+ open: OpenType;
13
+ }
14
+ /**
15
+ * The Idempotent API
16
+ */
17
+ export interface Idempotent extends Open {
18
+ /**
19
+ * Get the current state of the Idempotent
20
+ *
21
+ * @return the current state
22
+ */
23
+ getState(): State;
24
+ /**
25
+ * Determine if the Idempotent is open
26
+ *
27
+ * @return true if the Idempotent is open
28
+ */
29
+ isOpen(): boolean;
30
+ }
31
+ /**
32
+ * Determine if an instance implements Idempotent
33
+ *
34
+ * @param instance the instance to check
35
+ * @returns true if the instance implements Idempotent
36
+ */
37
+ export declare function guard(instance: unknown): instance is RequiredType<Idempotent>;
38
+ //# sourceMappingURL=Idempotent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Idempotent.d.ts","sourceRoot":"","sources":["../../src/auxiliary/Idempotent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,kDAAkD,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAkB,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,MAAM;IAErB,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,uDAAuD;IACvD,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI;IAEtC;;;;OAIG;IACH,QAAQ,IAAI,KAAK,CAAC;IAElB;;;;OAIG;IACH,MAAM,IAAI,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAAC,UAAU,CAAC,CAM7E"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guard = guard;
4
+ const Types_1 = require("@jonloucks/contracts-ts/api/Types");
5
+ /**
6
+ * Determine if an instance implements Idempotent
7
+ *
8
+ * @param instance the instance to check
9
+ * @returns true if the instance implements Idempotent
10
+ */
11
+ function guard(instance) {
12
+ return (0, Types_1.guardFunctions)(instance, 'getState', 'open', 'isOpen');
13
+ }
14
+ //# sourceMappingURL=Idempotent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Idempotent.js","sourceRoot":"","sources":["../../src/auxiliary/Idempotent.ts"],"names":[],"mappings":";;AA2CA,sBAMC;AA9CD,6DAAiF;AAkCjF;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,QAAiB;IACrC,OAAO,IAAA,sBAAc,EAAC,QAAQ,EAC5B,UAAU,EACV,MAAM,EACN,QAAQ,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { Contract } from "@jonloucks/contracts-ts/api/Contract";
2
+ import { RequiredType } from "@jonloucks/contracts-ts/api/Types";
3
+ import { Idempotent, Config } from "@jonloucks/contracts-ts/auxiliary/Idempotent";
4
+ /**
5
+ * Idempotent Factory
6
+ */
7
+ export interface IdempotentFactory {
8
+ /**
9
+ * Create a new {@link Idempotent} using the provided configuration.
10
+ *
11
+ * @param config configuration for the idempotent; invalid or null/undefined values are not allowed
12
+ * @returns an {@link Idempotent} instance created from the given configuration
13
+ * @throws Error if the configuration is invalid or the idempotent cannot be created
14
+ */
15
+ createIdempotent(config: Config): RequiredType<Idempotent>;
16
+ }
17
+ /**
18
+ * Determine if the given instance is a IdempotentFactory
19
+ *
20
+ * @param instance the instance to check
21
+ * @return true if the instance is a IdempotentFactory
22
+ */
23
+ export declare function guard(instance: unknown): instance is RequiredType<IdempotentFactory>;
24
+ /**
25
+ * Contract for IdempotentFactory
26
+ */
27
+ export declare const CONTRACT: Contract<IdempotentFactory>;
28
+ //# sourceMappingURL=IdempotentFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdempotentFactory.d.ts","sourceRoot":"","sources":["../../src/auxiliary/IdempotentFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAkB,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC;;;;;;OAMG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;CAC5D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAEpF;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAG/C,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONTRACT = void 0;
4
+ exports.guard = guard;
5
+ const RatifiedContract_1 = require("@jonloucks/contracts-ts/api/RatifiedContract");
6
+ const Types_1 = require("@jonloucks/contracts-ts/api/Types");
7
+ /**
8
+ * Determine if the given instance is a IdempotentFactory
9
+ *
10
+ * @param instance the instance to check
11
+ * @return true if the instance is a IdempotentFactory
12
+ */
13
+ function guard(instance) {
14
+ return (0, Types_1.guardFunctions)(instance, 'createIdempotent');
15
+ }
16
+ /**
17
+ * Contract for IdempotentFactory
18
+ */
19
+ exports.CONTRACT = (0, RatifiedContract_1.create)({
20
+ name: "IdempotentFactory",
21
+ test: guard
22
+ });
23
+ //# sourceMappingURL=IdempotentFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdempotentFactory.js","sourceRoot":"","sources":["../../src/auxiliary/IdempotentFactory.ts"],"names":[],"mappings":";;;AA0BA,sBAEC;AA5BD,mFAAwF;AAExF,6DAAiF;AAkBjF;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,QAAiB;IACrC,OAAO,IAAA,sBAAc,EAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACU,QAAA,QAAQ,GAAgC,IAAA,yBAAc,EAAC;IAClE,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,KAAK;CACZ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Contracts.impl.d.ts","sourceRoot":"","sources":["../../src/impl/Contracts.impl.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAE1E,OAAO,EAAgB,YAAY,EAAa,MAAM,mCAAmC,CAAC;AAS1F;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAE9D"}
1
+ {"version":3,"file":"Contracts.impl.d.ts","sourceRoot":"","sources":["../../src/impl/Contracts.impl.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAE1E,OAAO,EAAgB,YAAY,EAAa,MAAM,mCAAmC,CAAC;AAY1F;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAE9D"}