@guardian-network/policy-variables 0.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.
Files changed (77) hide show
  1. package/README.md +73 -0
  2. package/dist/VariablesPopulator.d.ts +18 -0
  3. package/dist/VariablesPopulator.d.ts.map +1 -0
  4. package/dist/VariablesPopulator.js +64 -0
  5. package/dist/VariablesPopulator.js.map +1 -0
  6. package/dist/errors/ErrorFactory.d.ts +11 -0
  7. package/dist/errors/ErrorFactory.d.ts.map +1 -0
  8. package/dist/errors/ErrorFactory.js +29 -0
  9. package/dist/errors/ErrorFactory.js.map +1 -0
  10. package/dist/errors/index.d.ts +2 -0
  11. package/dist/errors/index.d.ts.map +1 -0
  12. package/dist/errors/index.js +18 -0
  13. package/dist/errors/index.js.map +1 -0
  14. package/dist/errors/validation-errors.d.ts +26 -0
  15. package/dist/errors/validation-errors.d.ts.map +1 -0
  16. package/dist/errors/validation-errors.js +61 -0
  17. package/dist/errors/validation-errors.js.map +1 -0
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +8 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/injection/StaticInjector.d.ts +5 -0
  23. package/dist/injection/StaticInjector.d.ts.map +1 -0
  24. package/dist/injection/StaticInjector.js +29 -0
  25. package/dist/injection/StaticInjector.js.map +1 -0
  26. package/dist/injection/index.d.ts +2 -0
  27. package/dist/injection/index.d.ts.map +1 -0
  28. package/dist/injection/index.js +6 -0
  29. package/dist/injection/index.js.map +1 -0
  30. package/dist/insertion/Inserter.d.ts +14 -0
  31. package/dist/insertion/Inserter.d.ts.map +1 -0
  32. package/dist/insertion/Inserter.js +72 -0
  33. package/dist/insertion/Inserter.js.map +1 -0
  34. package/dist/insertion/index.d.ts +2 -0
  35. package/dist/insertion/index.d.ts.map +1 -0
  36. package/dist/insertion/index.js +6 -0
  37. package/dist/insertion/index.js.map +1 -0
  38. package/dist/types/index.d.ts +3 -0
  39. package/dist/types/index.d.ts.map +1 -0
  40. package/dist/types/index.js +19 -0
  41. package/dist/types/index.js.map +1 -0
  42. package/dist/types/interfaces.d.ts +5 -0
  43. package/dist/types/interfaces.d.ts.map +1 -0
  44. package/dist/types/interfaces.js +3 -0
  45. package/dist/types/interfaces.js.map +1 -0
  46. package/dist/types/types.d.ts +42 -0
  47. package/dist/types/types.d.ts.map +1 -0
  48. package/dist/types/types.js +3 -0
  49. package/dist/types/types.js.map +1 -0
  50. package/dist/utils/format-variables.helper.d.ts +4 -0
  51. package/dist/utils/format-variables.helper.d.ts.map +1 -0
  52. package/dist/utils/format-variables.helper.js +54 -0
  53. package/dist/utils/format-variables.helper.js.map +1 -0
  54. package/dist/utils/index.d.ts +3 -0
  55. package/dist/utils/index.d.ts.map +1 -0
  56. package/dist/utils/index.js +19 -0
  57. package/dist/utils/index.js.map +1 -0
  58. package/dist/utils/validations.helper.d.ts +4 -0
  59. package/dist/utils/validations.helper.d.ts.map +1 -0
  60. package/dist/utils/validations.helper.js +70 -0
  61. package/dist/utils/validations.helper.js.map +1 -0
  62. package/package.json +70 -0
  63. package/src/VariablesPopulator.ts +120 -0
  64. package/src/errors/ErrorFactory.ts +53 -0
  65. package/src/errors/index.ts +1 -0
  66. package/src/errors/validation-errors.ts +57 -0
  67. package/src/index.ts +7 -0
  68. package/src/injection/StaticInjector.ts +57 -0
  69. package/src/injection/index.ts +1 -0
  70. package/src/insertion/Inserter.ts +127 -0
  71. package/src/insertion/index.ts +1 -0
  72. package/src/types/index.ts +2 -0
  73. package/src/types/interfaces.ts +6 -0
  74. package/src/types/types.ts +66 -0
  75. package/src/utils/format-variables.helper.ts +83 -0
  76. package/src/utils/index.ts +2 -0
  77. package/src/utils/validations.helper.ts +116 -0
package/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # Policy Variables population helper
2
+ Policy may have variables values of which need to be provided during the evaluation step. \
3
+ These values must be formatted and encoded into specific form that onchain Policy handler understands. This package is dedicated to help with it.
4
+
5
+ ------------
6
+
7
+ Variables can be injected or inserted. \
8
+ **Inserted** variables are those that are just set by the user in a regular manner. They are only associated with their onchain name (in an artifact scope). \
9
+ **Injected** variables, along with all the properties *inserted* have, also contain an attribute tag. *Attribute tag* is a simple string that contains the name of a property/field/variable existing internally in a middleware. We can consider any program having some internal attributes (`time`, `tx_count`, `balance`) and willing to automatically fill in these attributes being middleware.
10
+ > Backend with a property `server_time` can be considered being middleware with an attribute `server_time`. Any policy containing injected variable with injection tag `server_time` can be automatically filled with the value of this property on the backend.
11
+
12
+ ------------
13
+ ### Usage
14
+ The main class needed is `VariablesPopulator`, exported from `./src`. \
15
+ It needs description of variables of a policy, returned by the onchain method of `PolicyHandler.getVariablesList`. \
16
+ The populator can then be built:
17
+ ```javascript
18
+ const populator = new VariablesPopulator(rawOnchainVariables);
19
+ ```
20
+ The populator instance now can be receive inserted variables via method `insert`:
21
+ ```javascript
22
+ populator.insert('argA_bool_0x084e6d675B4F24854f351f5A4E39E65E017d2954_2', true); // isAdmin
23
+ ```
24
+ Or can automatically map injected variables, given the values source:
25
+ ```javascript
26
+ const internalAttributes = new Map();
27
+ internalAttributes.set('allowance', new Promise((resolve) => resolve(13_000)));
28
+ await populator.inject(internalAttributes);
29
+ ```
30
+ The final encoded values can be obtained with the help of `getVariablesEncoded` method:
31
+ ```javascript
32
+ const vars = populator.getVariablesEncoded();
33
+ ```
34
+ And then provided directely into `evaluate` onchain PolicyHandler method.
35
+ > To list variables, use `getVarsDescriptions` method.
36
+
37
+ ### Validation
38
+ Except setters and getters, validation methods are provided. \
39
+ `validateAllFilled` ensures all variable values (both inserted and injected) are filled. \
40
+ `validateAllFilledExceptInjections` ensures inserted variable values are filled - ignoring *injected* consistency.
41
+ ### Interrupted flow
42
+ To fill the variables partially and then continue with other `VariablesPopulator` instance (but having same state), dump and import methods exist. \
43
+ To dump already filled values, use `dumpState` method. \
44
+ To import values filled previously into fresh `VariablesPopulator` instance use `importState` methods.
45
+ ```javascript
46
+ const oldPopulator = new VariablesPopulator(rawOnchainVariables);
47
+ // insert/inject
48
+ intermediateFillingResult = oldPopulator.dumpState();
49
+
50
+ // switching scope
51
+
52
+ const newPopulator = new VariablesPopulator(rawOnchainVariables);
53
+ newPopulator.importState(intermediateFillingResult);
54
+
55
+ // now oldPopulator is equivalent to newPopulator
56
+ ```
57
+ ### Format details
58
+
59
+ ------------
60
+
61
+
62
+ Insertion operation uses unique variables names that is constructed in this way: \
63
+ `<name of the parameter on the artifact>_<its type>_<artifact address>_<index of the node in the policy graph>` \
64
+ This value is guaranteed to be unique for every variable in one policy and can be used to index them/grasp/select/etc.
65
+
66
+ ------------
67
+ Injection needs values source of the interface:
68
+ ```javascript
69
+ interface IAsyncMapGetter<ValueType> {
70
+ get(key: string): Promise<ValueType> | ValueType | undefined;
71
+ }
72
+ ```
73
+ So it can be a regular `Map` with string key and value/promise mappings, or more complex classes and objects.
@@ -0,0 +1,18 @@
1
+ import { VariablesStruct } from '@guardian-network/shared';
2
+ import { AllowedVariablesType, IAsyncMapGetter, NodeVariablesConfig, NodeVariablesDescription, SuppliedVariables, VarDescription } from './types';
3
+ export declare class VariablesPopulator {
4
+ protected varsConfig: NodeVariablesConfig[];
5
+ private inserter;
6
+ private suppliedVars;
7
+ constructor(varsDescriptions: Array<NodeVariablesDescription>);
8
+ insert: (varName: string, varValue: AllowedVariablesType) => void;
9
+ inject: (attributes: IAsyncMapGetter<AllowedVariablesType>) => Promise<void>;
10
+ importState: (filledValues: SuppliedVariables[]) => this;
11
+ dumpState: () => Array<SuppliedVariables>;
12
+ toSerializedVariables: () => Array<VariablesStruct>;
13
+ getVarDescription(varName: string): VarDescription;
14
+ getVarsDescription: () => VarDescription[];
15
+ validateAllFilledExceptInjections: () => void;
16
+ validateAllFilled: () => void;
17
+ }
18
+ //# sourceMappingURL=VariablesPopulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariablesPopulator.d.ts","sourceRoot":"","sources":["../src/VariablesPopulator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACf,MAAM,SAAS,CAAC;AAQjB,qBAAa,kBAAkB;IAC7B,SAAS,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAsB;gBAE9B,gBAAgB,EAAE,KAAK,CAAC,wBAAwB,CAAC;IAU7D,MAAM,YAAa,MAAM,YAAY,oBAAoB,UAOvD;IAEF,MAAM,eAAsB,eAAe,CAAC,oBAAoB,CAAC,mBAO/D;IAEF,WAAW,iBAAkB,iBAAiB,EAAE,UAM9C;IAEF,SAAS,QAAO,KAAK,CAAC,iBAAiB,CAAC,CAEtC;IAIF,qBAAqB,QAAO,KAAK,CAAC,eAAe,CAAC,CAYhD;IAEF,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAWlD,kBAAkB,QAAO,cAAc,EAAE,CAOvC;IAEF,iCAAiC,QAAO,IAAI,CAW1C;IAEF,iBAAiB,QAAO,IAAI,CAE1B;CACH"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VariablesPopulator = void 0;
4
+ const shared_1 = require("@guardian-network/shared");
5
+ const errors_1 = require("./errors");
6
+ const injection_1 = require("./injection");
7
+ const insertion_1 = require("./insertion");
8
+ const utils_1 = require("./utils");
9
+ class VariablesPopulator {
10
+ varsConfig;
11
+ inserter;
12
+ suppliedVars;
13
+ constructor(varsDescriptions) {
14
+ this.varsConfig = (0, utils_1.translateVarsDescriptionToConfig)(varsDescriptions);
15
+ this.inserter = new insertion_1.Inserter(this.varsConfig);
16
+ this.suppliedVars = this.inserter.filledVars;
17
+ }
18
+ insert = (varName, varValue) => {
19
+ const varDescription = this.getVarDescription(varName);
20
+ (0, utils_1.validateVarValueTypeWithErr)(varValue, varDescription.type);
21
+ this.inserter.insert(varName, varValue);
22
+ this.suppliedVars = this.inserter.filledVars;
23
+ };
24
+ inject = async (attributes) => {
25
+ this.suppliedVars = await injection_1.StaticInjector.inject(this.varsConfig, this.suppliedVars, attributes);
26
+ };
27
+ importState = (filledValues) => {
28
+ this.inserter.import(filledValues);
29
+ this.suppliedVars = this.inserter.filledVars;
30
+ return this;
31
+ };
32
+ dumpState = () => {
33
+ return this.suppliedVars;
34
+ };
35
+ toSerializedVariables = () => {
36
+ this.validateAllFilled();
37
+ const solidityPackedVariablesList = this.suppliedVars.map(({ nodeId, values }) => ({
38
+ nodeId,
39
+ values: values.map((val) => (0, shared_1.solidityEncodeSingleParam)(val)),
40
+ }));
41
+ return solidityPackedVariablesList;
42
+ };
43
+ getVarDescription(varName) {
44
+ const variableDescription = this.getVarsDescription().find(({ uniqueName }) => uniqueName == varName);
45
+ if (!variableDescription)
46
+ throw errors_1.ErrorFactory.variableNotFound(varName);
47
+ return variableDescription;
48
+ }
49
+ getVarsDescription = () => {
50
+ const variablesDescriptionList = this.varsConfig.flatMap(({ variables }) => variables);
51
+ return variablesDescriptionList;
52
+ };
53
+ validateAllFilledExceptInjections = () => {
54
+ const isVariableInjectable = (varDescription) => {
55
+ return !!varDescription.injection;
56
+ };
57
+ (0, utils_1.validateAllVariablesSupplied)(this.varsConfig, this.suppliedVars, isVariableInjectable);
58
+ };
59
+ validateAllFilled = () => {
60
+ (0, utils_1.validateAllVariablesSupplied)(this.varsConfig, this.suppliedVars);
61
+ };
62
+ }
63
+ exports.VariablesPopulator = VariablesPopulator;
64
+ //# sourceMappingURL=VariablesPopulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariablesPopulator.js","sourceRoot":"","sources":["../src/VariablesPopulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { InjectionFormattingError, NodeVariablesAreUndefinedErr, VariableNodeNotFoundError, VariableNotFilledError, VariableNotFoundError, VariableTypeNotKnownError, VariableTypeNotMetError } from './validation-errors';
2
+ export declare class ErrorFactory {
3
+ static variableTypeNotMet: (varValue: string, expectedType: string) => VariableTypeNotMetError;
4
+ static variableNotFound: (varName: string) => VariableNotFoundError;
5
+ static injectionFormatting: (injectionValue: string, injectionIndex: number) => InjectionFormattingError;
6
+ static nodeVariablesAreUndefined: (targetNode: string) => NodeVariablesAreUndefinedErr;
7
+ static variableNodeNotFound: (varName: string) => VariableNodeNotFoundError;
8
+ static providedVariableWithNotKnownType: (varValue: string, expectedType: string) => VariableTypeNotKnownError;
9
+ static variableNotFilled: (varName: string, injection?: string | undefined) => VariableNotFilledError;
10
+ }
11
+ //# sourceMappingURL=ErrorFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorFactory.d.ts","sourceRoot":"","sources":["../../src/errors/ErrorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,YAAY;IACvB,MAAM,CAAC,kBAAkB,sEAIvB;IAEF,MAAM,CAAC,gBAAgB,6CAIrB;IAEF,MAAM,CAAC,mBAAmB,+EAIxB;IAEF,MAAM,CAAC,yBAAyB,uDAI9B;IAEF,MAAM,CAAC,oBAAoB,iDAIzB;IAEF,MAAM,CAAC,gCAAgC,wEAIrC;IAEF,MAAM,CAAC,iBAAiB,8EAItB;CACH"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorFactory = void 0;
4
+ const validation_errors_1 = require("./validation-errors");
5
+ class ErrorFactory {
6
+ static variableTypeNotMet = (...params) => {
7
+ return validation_errors_1.VariableTypeNotMetError.create(...params);
8
+ };
9
+ static variableNotFound = (...params) => {
10
+ return validation_errors_1.VariableNotFoundError.create(...params);
11
+ };
12
+ static injectionFormatting = (...params) => {
13
+ return validation_errors_1.InjectionFormattingError.create(...params);
14
+ };
15
+ static nodeVariablesAreUndefined = (...params) => {
16
+ return validation_errors_1.NodeVariablesAreUndefinedErr.create(...params);
17
+ };
18
+ static variableNodeNotFound = (...params) => {
19
+ return validation_errors_1.VariableNodeNotFoundError.create(...params);
20
+ };
21
+ static providedVariableWithNotKnownType = (...params) => {
22
+ return validation_errors_1.VariableTypeNotKnownError.create(...params);
23
+ };
24
+ static variableNotFilled = (...params) => {
25
+ return validation_errors_1.VariableNotFilledError.create(...params);
26
+ };
27
+ }
28
+ exports.ErrorFactory = ErrorFactory;
29
+ //# sourceMappingURL=ErrorFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorFactory.js","sourceRoot":"","sources":["../../src/errors/ErrorFactory.ts"],"names":[],"mappings":";;;AAAA,2DAQ6B;AAE7B,MAAa,YAAY;IACvB,MAAM,CAAC,kBAAkB,GAAG,CAC1B,GAAG,MAAyD,EAC5D,EAAE;QACF,OAAO,2CAAuB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,GAAG,CACxB,GAAG,MAAuD,EAC1D,EAAE;QACF,OAAO,yCAAqB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,CAAC,mBAAmB,GAAG,CAC3B,GAAG,MAA0D,EAC7D,EAAE;QACF,OAAO,4CAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,MAAM,CAAC,yBAAyB,GAAG,CACjC,GAAG,MAA8D,EACjE,EAAE;QACF,OAAO,gDAA4B,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,CAAC,oBAAoB,GAAG,CAC5B,GAAG,MAA2D,EAC9D,EAAE;QACF,OAAO,6CAAyB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,MAAM,CAAC,gCAAgC,GAAG,CACxC,GAAG,MAA2D,EAC9D,EAAE;QACF,OAAO,6CAAyB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,MAAM,CAAC,iBAAiB,GAAG,CACzB,GAAG,MAAwD,EAC3D,EAAE;QACF,OAAO,0CAAsB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC;;AAzCJ,oCA0CC"}
@@ -0,0 +1,2 @@
1
+ export * from './ErrorFactory';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ErrorFactory"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
@@ -0,0 +1,26 @@
1
+ import { BaseError } from '@guardian-network/shared';
2
+ export declare class CannotLookupVariableValueError extends BaseError {
3
+ static create: (varName: string, injectionName: string) => CannotLookupVariableValueError;
4
+ }
5
+ export declare class VariableNotFoundError extends BaseError {
6
+ static create: (varName: string) => VariableNotFoundError;
7
+ }
8
+ export declare class VariableTypeNotMetError extends BaseError {
9
+ static create: (varValue: string, expectedType: string) => VariableTypeNotMetError;
10
+ }
11
+ export declare class VariableNodeNotFoundError extends BaseError {
12
+ static create: (varName: string) => VariableNodeNotFoundError;
13
+ }
14
+ export declare class NodeVariablesAreUndefinedErr extends BaseError {
15
+ static create: (targetNode: string) => NodeVariablesAreUndefinedErr;
16
+ }
17
+ export declare class InjectionFormattingError extends BaseError {
18
+ static create: (injectionValue: string, injectionIndex: number) => InjectionFormattingError;
19
+ }
20
+ export declare class VariableNotFilledError extends BaseError {
21
+ static create: (varName: string, injection?: string) => VariableNotFilledError;
22
+ }
23
+ export declare class VariableTypeNotKnownError extends BaseError {
24
+ static create: (varValue: string, expectedType: string) => VariableTypeNotKnownError;
25
+ }
26
+ //# sourceMappingURL=validation-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-errors.d.ts","sourceRoot":"","sources":["../../src/errors/validation-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,qBAAa,8BAA+B,SAAQ,SAAS;IAC3D,MAAM,CAAC,MAAM,YAAa,MAAM,iBAAiB,MAAM,oCAGrD;CACH;AAED,qBAAa,qBAAsB,SAAQ,SAAS;IAClD,MAAM,CAAC,MAAM,YAAa,MAAM,2BAG9B;CACH;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IACpD,MAAM,CAAC,MAAM,aAAc,MAAM,gBAAgB,MAAM,6BAGrD;CACH;AAED,qBAAa,yBAA0B,SAAQ,SAAS;IACtD,MAAM,CAAC,MAAM,YAAa,MAAM,+BAG9B;CACH;AAED,qBAAa,4BAA6B,SAAQ,SAAS;IACzD,MAAM,CAAC,MAAM,eAAgB,MAAM,kCAGjC;CACH;AAED,qBAAa,wBAAyB,SAAQ,SAAS;IACrD,MAAM,CAAC,MAAM,mBAAoB,MAAM,kBAAkB,MAAM,8BAG7D;CACH;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,MAAM,CAAC,MAAM,YAAa,MAAM,cAAc,MAAM,4BAGlD;CACH;AAED,qBAAa,yBAA0B,SAAQ,SAAS;IACtD,MAAM,CAAC,MAAM,aAAc,MAAM,gBAAgB,MAAM,+BAGrD;CACH"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VariableTypeNotKnownError = exports.VariableNotFilledError = exports.InjectionFormattingError = exports.NodeVariablesAreUndefinedErr = exports.VariableNodeNotFoundError = exports.VariableTypeNotMetError = exports.VariableNotFoundError = exports.CannotLookupVariableValueError = void 0;
4
+ const shared_1 = require("@guardian-network/shared");
5
+ class CannotLookupVariableValueError extends shared_1.BaseError {
6
+ static create = (varName, injectionName) => {
7
+ const errorMessage = `No injection or default value for ${varName} (attribute ${injectionName}) is provided`;
8
+ return this.build(errorMessage);
9
+ };
10
+ }
11
+ exports.CannotLookupVariableValueError = CannotLookupVariableValueError;
12
+ class VariableNotFoundError extends shared_1.BaseError {
13
+ static create = (varName) => {
14
+ const errorMessage = `Cannot find variable ${varName} among known policy variables`;
15
+ return this.build(errorMessage);
16
+ };
17
+ }
18
+ exports.VariableNotFoundError = VariableNotFoundError;
19
+ class VariableTypeNotMetError extends shared_1.BaseError {
20
+ static create = (varValue, expectedType) => {
21
+ const errorMessage = `Variable of value ${varValue} is not one of allowed Solidity types ${expectedType}`;
22
+ return this.build(errorMessage);
23
+ };
24
+ }
25
+ exports.VariableTypeNotMetError = VariableTypeNotMetError;
26
+ class VariableNodeNotFoundError extends shared_1.BaseError {
27
+ static create = (varName) => {
28
+ const errorMessage = `Not found node id for variable ${varName}`;
29
+ return this.build(errorMessage);
30
+ };
31
+ }
32
+ exports.VariableNodeNotFoundError = VariableNodeNotFoundError;
33
+ class NodeVariablesAreUndefinedErr extends shared_1.BaseError {
34
+ static create = (targetNode) => {
35
+ const errorMessage = `Variables record is missing for node id: ${targetNode}`;
36
+ return this.build(errorMessage);
37
+ };
38
+ }
39
+ exports.NodeVariablesAreUndefinedErr = NodeVariablesAreUndefinedErr;
40
+ class InjectionFormattingError extends shared_1.BaseError {
41
+ static create = (injectionValue, injectionIndex) => {
42
+ const errorMessage = `Failed formatting variables description onchain output. Problems with injection ${injectionValue}:${injectionIndex}`;
43
+ return this.build(errorMessage);
44
+ };
45
+ }
46
+ exports.InjectionFormattingError = InjectionFormattingError;
47
+ class VariableNotFilledError extends shared_1.BaseError {
48
+ static create = (varName, injection) => {
49
+ const errorMessage = `Variable ${varName} ${injection ? `(injection: ${injection})` : ''} was not filled`;
50
+ return this.build(errorMessage);
51
+ };
52
+ }
53
+ exports.VariableNotFilledError = VariableNotFilledError;
54
+ class VariableTypeNotKnownError extends shared_1.BaseError {
55
+ static create = (varValue, expectedType) => {
56
+ const errorMessage = `Variable of value ${varValue} type is not allowed Solidity type ${expectedType}`;
57
+ return this.build(errorMessage);
58
+ };
59
+ }
60
+ exports.VariableTypeNotKnownError = VariableTypeNotKnownError;
61
+ //# sourceMappingURL=validation-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-errors.js","sourceRoot":"","sources":["../../src/errors/validation-errors.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AAErD,MAAa,8BAA+B,SAAQ,kBAAS;IAC3D,MAAM,CAAC,MAAM,GAAG,CAAC,OAAe,EAAE,aAAqB,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,qCAAqC,OAAO,eAAe,aAAa,eAAe,CAAC;QAC7G,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,wEAKC;AAED,MAAa,qBAAsB,SAAQ,kBAAS;IAClD,MAAM,CAAC,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE;QAClC,MAAM,YAAY,GAAG,wBAAwB,OAAO,+BAA+B,CAAC;QACpF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,sDAKC;AAED,MAAa,uBAAwB,SAAQ,kBAAS;IACpD,MAAM,CAAC,MAAM,GAAG,CAAC,QAAgB,EAAE,YAAoB,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,qBAAqB,QAAQ,yCAAyC,YAAY,EAAE,CAAC;QAC1G,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,0DAKC;AAED,MAAa,yBAA0B,SAAQ,kBAAS;IACtD,MAAM,CAAC,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE;QAClC,MAAM,YAAY,GAAG,kCAAkC,OAAO,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,8DAKC;AAED,MAAa,4BAA6B,SAAQ,kBAAS;IACzD,MAAM,CAAC,MAAM,GAAG,CAAC,UAAkB,EAAE,EAAE;QACrC,MAAM,YAAY,GAAG,4CAA4C,UAAU,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,oEAKC;AAED,MAAa,wBAAyB,SAAQ,kBAAS;IACrD,MAAM,CAAC,MAAM,GAAG,CAAC,cAAsB,EAAE,cAAsB,EAAE,EAAE;QACjE,MAAM,YAAY,GAAG,mFAAmF,cAAc,IAAI,cAAc,EAAE,CAAC;QAC3I,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,4DAKC;AAED,MAAa,sBAAuB,SAAQ,kBAAS;IACnD,MAAM,CAAC,MAAM,GAAG,CAAC,OAAe,EAAE,SAAkB,EAAE,EAAE;QACtD,MAAM,YAAY,GAAG,YAAY,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;QAC1G,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,wDAKC;AAED,MAAa,yBAA0B,SAAQ,kBAAS;IACtD,MAAM,CAAC,MAAM,GAAG,CAAC,QAAgB,EAAE,YAAoB,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,qBAAqB,QAAQ,sCAAsC,YAAY,EAAE,CAAC;QACvG,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;;AAJJ,8DAKC"}
@@ -0,0 +1,4 @@
1
+ export { AllowedVariablesType, SuppliedVariables, TypedRawOnchainVariablesDescription, } from './types';
2
+ export { rawOnchainVariablesDescriptionToOffchainView } from './utils';
3
+ export { VariablesPopulator } from './VariablesPopulator';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mCAAmC,GACpC,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,4CAA4C,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VariablesPopulator = exports.rawOnchainVariablesDescriptionToOffchainView = void 0;
4
+ var utils_1 = require("./utils");
5
+ Object.defineProperty(exports, "rawOnchainVariablesDescriptionToOffchainView", { enumerable: true, get: function () { return utils_1.rawOnchainVariablesDescriptionToOffchainView; } });
6
+ var VariablesPopulator_1 = require("./VariablesPopulator");
7
+ Object.defineProperty(exports, "VariablesPopulator", { enumerable: true, get: function () { return VariablesPopulator_1.VariablesPopulator; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAKA,iCAAuE;AAA9D,qIAAA,4CAA4C,OAAA;AACrD,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,5 @@
1
+ import { AllowedVariablesType, IAsyncMapGetter, NodeVariablesConfig, SuppliedVariables } from '../types';
2
+ export declare class StaticInjector {
3
+ static inject: <T extends AllowedVariablesType>(varsConfig: NodeVariablesConfig[], knownVariables: SuppliedVariables[], attributesSource: IAsyncMapGetter<T>) => Promise<Array<SuppliedVariables>>;
4
+ }
5
+ //# sourceMappingURL=StaticInjector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaticInjector.d.ts","sourceRoot":"","sources":["../../src/injection/StaticInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAIlB,qBAAa,cAAc;IACzB,MAAM,CAAC,MAAM,GAAU,CAAC,SAAS,oBAAoB,cACvC,mBAAmB,EAAE,kBACjB,iBAAiB,EAAE,oBACjB,eAAe,CAAC,CAAC,CAAC,KACnC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAyClC;CACH"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StaticInjector = void 0;
4
+ const utils_1 = require("../utils");
5
+ class StaticInjector {
6
+ static inject = async (varsConfig, knownVariables, attributesSource) => {
7
+ const knownVariablesClone = structuredClone(knownVariables);
8
+ for (let mayBeSuppliedVariable of knownVariablesClone) {
9
+ const variableConfig = varsConfig.find((v) => v.nodeId == mayBeSuppliedVariable.nodeId);
10
+ if (!variableConfig || variableConfig.variables.length === 0) {
11
+ continue;
12
+ }
13
+ for (let [index, varDescription] of variableConfig.variables.entries()) {
14
+ if (!varDescription.injection) {
15
+ continue;
16
+ }
17
+ const attribute = await attributesSource.get(varDescription.injection);
18
+ const expectedType = varDescription.type;
19
+ if (attribute !== undefined) {
20
+ (0, utils_1.validateVarValueTypeWithErr)(attribute, expectedType);
21
+ mayBeSuppliedVariable.values[index] = attribute;
22
+ }
23
+ }
24
+ }
25
+ return knownVariablesClone;
26
+ };
27
+ }
28
+ exports.StaticInjector = StaticInjector;
29
+ //# sourceMappingURL=StaticInjector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaticInjector.js","sourceRoot":"","sources":["../../src/injection/StaticInjector.ts"],"names":[],"mappings":";;;AAMA,oCAAuD;AAGvD,MAAa,cAAc;IACzB,MAAM,CAAC,MAAM,GAAG,KAAK,EACnB,UAAiC,EACjC,cAAmC,EACnC,gBAAoC,EACD,EAAE;QACrC,MAAM,mBAAmB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QAE5D,KAAK,IAAI,qBAAqB,IAAI,mBAAmB,EAAE,CAAC;YAEtD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAChD,CAAC;YAGF,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7D,SAAS;YACX,CAAC;YAED,KAAK,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBAEvE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;oBAC9B,SAAS;gBACX,CAAC;gBAGD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAEvE,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;gBAEzC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAA,mCAA2B,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;oBACrD,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBAGlD,CAAC;YAOH,CAAC;QACH,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAC;;AA9CJ,wCA+CC"}
@@ -0,0 +1,2 @@
1
+ export { StaticInjector } from './StaticInjector';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/injection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StaticInjector = void 0;
4
+ var StaticInjector_1 = require("./StaticInjector");
5
+ Object.defineProperty(exports, "StaticInjector", { enumerable: true, get: function () { return StaticInjector_1.StaticInjector; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/injection/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
@@ -0,0 +1,14 @@
1
+ import { AllowedVariablesType, IAsyncMapGetter, NodeVariablesConfig, SuppliedVariables } from '../types';
2
+ export declare class Inserter implements IAsyncMapGetter<AllowedVariablesType> {
3
+ private spareNodesConfig;
4
+ private varNameToNodeId;
5
+ private varNameToVarIndex;
6
+ private nodeToVars;
7
+ constructor(varsConfig: NodeVariablesConfig[]);
8
+ private initialize;
9
+ insert: (varName: string, varValue: AllowedVariablesType) => void;
10
+ get: (varName: string) => AllowedVariablesType | undefined;
11
+ import: (dump: Array<SuppliedVariables>) => void;
12
+ get filledVars(): SuppliedVariables[];
13
+ }
14
+ //# sourceMappingURL=Inserter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inserter.d.ts","sourceRoot":"","sources":["../../src/insertion/Inserter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,eAAe,EAEf,mBAAmB,EACnB,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAGlB,qBAAa,QAAS,YAAW,eAAe,CAAC,oBAAoB,CAAC;IAWpE,OAAO,CAAC,gBAAgB,CAA6B;IAGrD,OAAO,CAAC,eAAe,CAAmC;IAG1D,OAAO,CAAC,iBAAiB,CAAqC;IAG9D,OAAO,CAAC,UAAU,CAA2C;gBAG3D,UAAU,EAA4B,mBAAmB,EAAE;IAK7D,OAAO,CAAC,UAAU,CAehB;IAEF,MAAM,YAAa,MAAM,YAAY,oBAAoB,UAevD;IAEF,GAAG,YAAa,MAAM,KAAG,oBAAoB,GAAG,SAAS,CASvD;IAEF,MAAM,SAAU,KAAK,CAAC,iBAAiB,CAAC,UAOtC;IAEF,IAAI,UAAU,IAAI,iBAAiB,EAAE,CA8BpC;CACF"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Inserter = void 0;
4
+ const errors_1 = require("../errors");
5
+ class Inserter {
6
+ spareNodesConfig = [];
7
+ varNameToNodeId = new Map();
8
+ varNameToVarIndex = new Map();
9
+ nodeToVars = new Map();
10
+ constructor(varsConfig) {
11
+ this.initialize(varsConfig);
12
+ }
13
+ initialize = (varsConfig) => {
14
+ for (const nodeVars of varsConfig) {
15
+ this.nodeToVars.set(nodeVars.nodeId, []);
16
+ if (nodeVars.variables.length === 0) {
17
+ this.spareNodesConfig.push(nodeVars);
18
+ }
19
+ else {
20
+ for (const { index, uniqueName } of nodeVars.variables) {
21
+ this.varNameToNodeId.set(uniqueName, nodeVars.nodeId);
22
+ this.varNameToVarIndex.set(uniqueName, index);
23
+ }
24
+ }
25
+ }
26
+ };
27
+ insert = (varName, varValue) => {
28
+ const targetNodeId = this.varNameToNodeId.get(varName);
29
+ if (!targetNodeId)
30
+ throw errors_1.ErrorFactory.variableNodeNotFound(varName);
31
+ const nodeVariables = this.nodeToVars.get(targetNodeId);
32
+ if (!nodeVariables)
33
+ throw errors_1.ErrorFactory.nodeVariablesAreUndefined(targetNodeId);
34
+ nodeVariables.push({
35
+ index: this.varNameToVarIndex.get(varName),
36
+ value: varValue,
37
+ });
38
+ };
39
+ get = (varName) => {
40
+ const nodeId = this.varNameToNodeId.get(varName);
41
+ const result = this.nodeToVars
42
+ .get(nodeId)
43
+ .find((el) => el.index == this.varNameToVarIndex.get(varName))?.value;
44
+ return result;
45
+ };
46
+ import = (dump) => {
47
+ for (const { nodeId, values } of dump) {
48
+ this.nodeToVars.set(nodeId, values.map((value, index) => ({ index, value })));
49
+ }
50
+ };
51
+ get filledVars() {
52
+ const suppliedVars = [];
53
+ for (let [targetNodeId, nodeVars] of this.nodeToVars) {
54
+ let filledVariable = {};
55
+ const variableValuesTmp = new Array(nodeVars.length);
56
+ for (let { index, value } of nodeVars) {
57
+ variableValuesTmp[index] = value;
58
+ }
59
+ filledVariable.values = variableValuesTmp;
60
+ filledVariable.nodeId = targetNodeId;
61
+ suppliedVars.push(filledVariable);
62
+ }
63
+ const emptyVars = this.spareNodesConfig.map(({ nodeId }) => ({
64
+ nodeId,
65
+ values: [],
66
+ }));
67
+ const result = [...suppliedVars, ...emptyVars];
68
+ return result;
69
+ }
70
+ }
71
+ exports.Inserter = Inserter;
72
+ //# sourceMappingURL=Inserter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inserter.js","sourceRoot":"","sources":["../../src/insertion/Inserter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { Inserter } from './Inserter';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/insertion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Inserter = void 0;
4
+ var Inserter_1 = require("./Inserter");
5
+ Object.defineProperty(exports, "Inserter", { enumerable: true, get: function () { return Inserter_1.Inserter; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/insertion/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './interfaces';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./interfaces"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,0CAAwB"}
@@ -0,0 +1,5 @@
1
+ export type SupportedTypes<T> = Promise<T> | T | undefined;
2
+ export interface IAsyncMapGetter<T> {
3
+ get(key: string): SupportedTypes<T>;
4
+ }
5
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/types/interfaces.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;CACrC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/types/interfaces.ts"],"names":[],"mappings":""}