ditox 2.3.1 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/browser/index.d.ts +22 -1
- package/dist/browser/index.js +1 -1
- package/dist/cjs/{ditox.d.ts → container.d.ts} +1 -36
- package/dist/cjs/{ditox.js → container.js} +7 -22
- package/dist/cjs/container.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -2
- package/dist/cjs/index.js +6 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules.d.ts +2 -1
- package/dist/cjs/modules.js +2 -2
- package/dist/cjs/modules.js.map +1 -1
- package/dist/cjs/tokens.d.ts +56 -0
- package/dist/cjs/tokens.js +20 -0
- package/dist/cjs/tokens.js.map +1 -0
- package/dist/cjs/utils.d.ts +2 -1
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/{ditox.d.ts → container.d.ts} +1 -36
- package/dist/esm/{ditox.js → container.js} +2 -15
- package/dist/esm/container.js.map +1 -0
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules.d.ts +2 -1
- package/dist/esm/modules.js +1 -1
- package/dist/esm/modules.js.map +1 -1
- package/dist/esm/tokens.d.ts +56 -0
- package/dist/esm/tokens.js +15 -0
- package/dist/esm/tokens.js.map +1 -0
- package/dist/esm/utils.d.ts +2 -1
- package/dist/esm/utils.js.map +1 -1
- package/dist/umd/index.d.ts +22 -1
- package/dist/umd/index.js +1 -1
- package/package.json +2 -2
- package/src/{ditox.test.ts → container.test.ts} +25 -3
- package/src/{ditox.ts → container.ts} +1 -55
- package/src/index.ts +5 -9
- package/src/modules.test.ts +2 -1
- package/src/modules.ts +2 -1
- package/src/tokens.test.ts +54 -0
- package/src/tokens.ts +88 -0
- package/src/utils.test.ts +2 -1
- package/src/utils.ts +2 -1
- package/dist/cjs/ditox.js.map +0 -1
- package/dist/esm/ditox.js.map +0 -1
package/README.md
CHANGED
|
@@ -79,7 +79,7 @@ class UserService {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
// Define tokens for injections.
|
|
82
|
-
const STORAGE_TOKEN = token
|
|
82
|
+
const STORAGE_TOKEN = token<UserService>('Token description for debugging');
|
|
83
83
|
const LOGGER_TOKEN = token();
|
|
84
84
|
const USER_SERVICE_TOKEN = token();
|
|
85
85
|
|
|
@@ -127,7 +127,7 @@ container.bindFactory(
|
|
|
127
127
|
const logger = container.get(LOGGER_TOKEN);
|
|
128
128
|
|
|
129
129
|
// Resolve a value, it throws `ResolverError` in case a value is not found.
|
|
130
|
-
const userService = container.resolve(
|
|
130
|
+
const userService = container.resolve(USER_SERVICE_TOKEN);
|
|
131
131
|
|
|
132
132
|
// Remove a value from the container.
|
|
133
133
|
container.remove(LOGGER_TOKEN);
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -18,14 +18,34 @@ type OptionalToken<T> = {
|
|
|
18
18
|
optionalValue: T;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
|
-
* Binding token
|
|
21
|
+
* Binding token
|
|
22
22
|
*/
|
|
23
23
|
type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Token options
|
|
26
|
+
*/
|
|
27
|
+
type TokenOptions = {
|
|
28
|
+
/**
|
|
29
|
+
* Key for token's symbol. It allows to create shareable tokens.
|
|
30
|
+
*/
|
|
31
|
+
key: string;
|
|
32
|
+
/** @ignore */
|
|
33
|
+
description?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
/** Description for better error messages */
|
|
36
|
+
description?: string;
|
|
37
|
+
/** @ignore */
|
|
38
|
+
key?: undefined;
|
|
39
|
+
};
|
|
24
40
|
/**
|
|
25
41
|
* Creates a new binding token.
|
|
26
42
|
* @param description - Token description for better error messages.
|
|
27
43
|
*/
|
|
28
44
|
declare function token<T>(description?: string): Token<T>;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new binding token.
|
|
47
|
+
* @param options - Token description for better error messages.
|
|
48
|
+
*/ declare function token<T>(options?: TokenOptions): Token<T>;
|
|
29
49
|
/**
|
|
30
50
|
* Decorate a token with an optional value.
|
|
31
51
|
* This value is be used as default value in case a container does not have registered token.
|
|
@@ -34,6 +54,7 @@ declare function token<T>(description?: string): Token<T>;
|
|
|
34
54
|
*/
|
|
35
55
|
declare function optional<T>(token: Token<T>, optionalValue: T): OptionalToken<T>;
|
|
36
56
|
declare function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
57
|
+
|
|
37
58
|
/**
|
|
38
59
|
* ResolverError is thrown by the resolver when a token is not found in a container.
|
|
39
60
|
*/
|
package/dist/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var o
|
|
1
|
+
function o(o){var n="string"==typeof o?{description:o}:o;return{symbol:(null==n?void 0:n.key)?Symbol.for(n.key):Symbol(null==n?void 0:n.description)}}function n(o,n){return{symbol:o.symbol,isOptional:!0,optionalValue:n}}var t=function(o,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,n){o.__proto__=n}||function(o,n){for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(o[t]=n[t])},t(o,n)};var r=function(){return r=Object.assign||function(o){for(var n,t=1,r=arguments.length;t<r;t++)for(var e in n=arguments[t])Object.prototype.hasOwnProperty.call(n,e)&&(o[e]=n[e]);return o},r.apply(this,arguments)};function e(o,n,t){if(t||2===arguments.length)for(var r,e=0,i=n.length;e<i;e++)!r&&e in n||(r||(r=Array.prototype.slice.call(n,0,e)),r[e]=n[e]);return o.concat(r||Array.prototype.slice.call(n))}var i=function(o){function n(n){var t=this.constructor,r=o.call(this,n)||this;return Object.setPrototypeOf(r,t.prototype),r.name="ResolverError",r}return function(o,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=o}t(o,n),o.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}(n,o),n}(Error),u=o("ditox.Container"),l=o("ditox.ParentContainer"),c=o("ditox.Resolver"),a=Symbol(),s=function(){throw new Error("FAKE_FACTORY")},f="singleton",y=o("ditox.FactoriesMap");function p(o){return o.symbol===u.symbol||o.symbol===l.symbol||o.symbol===c.symbol}function v(o){var n=new Map,t=new Map,r={bindValue:function(o,t){p(o)||n.set(o.symbol,t)},bindFactory:function(o,n,r){p(o)||t.set(o.symbol,{factory:n,options:r})},remove:function(o){var r;if(!p(o)){var e=null===(r=t.get(o.symbol))||void 0===r?void 0:r.options;e&&v(o.symbol,e),n.delete(o.symbol),t.delete(o.symbol)}},removeAll:function(){t.forEach((function(o,n){o.options&&v(n,o.options)})),n.clear(),t.clear(),d()},hasToken:function(r){var e;return n.has(r.symbol)||t.has(r.symbol)||null!==(e=null==o?void 0:o.hasToken(r))&&void 0!==e&&e},get:function(o){var n=e(o,r);return n!==a?n:o.isOptional?o.optionalValue:void 0},resolve:function(o){var n,t=e(o,r);if(t!==a)return t;if(o.isOptional)return o.optionalValue;throw new i('Token "'.concat(null!==(n=o.symbol.description)&&void 0!==n?n:"",'" is not provided'))}};function e(e,i){var u=n.get(e.symbol),l=void 0!==u||n.has(e.symbol);if(l&&i===r)return u;var y,p,v=t.get(e.symbol);if(v&&v.factory!==s)switch(y=v.options,null!==(p=null==y?void 0:y.scope)&&void 0!==p?p:f){case"singleton":if(l)return u;if(null==o?void 0:o.hasToken(e))break;var d=v.factory(r);return r.bindValue(e,d),d;case"scoped":var b=v.factory(i);return i.bindValue(e,b),i!==r&&i.bindFactory(e,s,v.options),b;case"transient":return v.factory(i)}if(l)return u;var m=null==o?void 0:o.get(c);return m?m(e,i):a}function v(o,t){var r=function(o){return void 0===o.scope||"scoped"===o.scope||"singleton"===o.scope?o.onRemoved:void 0}(t);if(r){var e=n.get(o);(void 0!==e||n.has(o))&&r(e)}}function d(){n.set(u.symbol,r),n.set(c.symbol,e),n.set(y.symbol,t),o&&n.set(l.symbol,o)}return d(),r}function d(o){return null!=o&&"object"==typeof o&&"symbol"in o&&"symbol"==typeof o.symbol}function b(o,n,t){var r,i=e(e([],null!==(r=o.get(n))&&void 0!==r?r:[],!0),[t],!1);o.bindValue(n,i)}function m(o,n){if(d(n))return o.get(n);var t={};return Object.keys(n).forEach((function(r){return t[r]=o.get(n[r])})),t}function h(o){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];return n.map((function(n){return m(o,n)}))}function g(o,n){if(d(n))return o.resolve(n);var t={};return Object.keys(n).forEach((function(r){return t[r]=o.resolve(n[r])})),t}function O(o){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];return n.map((function(n){return g(o,n)}))}function w(o){for(var n=this,t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return function(r){var i=O.apply(void 0,e([r],t,!1));return o.apply(n,i)}}function k(o){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];return w.apply(void 0,e([function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return new(o.bind.apply(o,e([void 0],n,!1)))}],n,!1))}function E(o,n,t){var r=n.token,e=n.imports,i=n.factory,u=n.beforeBinding,l=n.afterBinding,c=n.exports,a=null==t?void 0:t.scope;u&&u(o),e&&j(o,e);var s=new Set;c&&Object.keys(c).forEach((function(n){var t=c[n];t&&(s.add(t),o.bindFactory(t,w((function(o){return o[n]}),r),{scope:a}))}));o.bindFactory(r,i,{scope:a,onRemoved:function(n){n.destroy&&n.destroy(),s.forEach((function(n){return o.remove(n)})),s.clear()}}),l&&l(o)}function j(o,n){n.forEach((function(n){"module"in n?E(o,n.module,n.options):E(o,n)}))}function _(n){var t;return r(r({},n),{token:null!==(t=n.token)&&void 0!==t?t:o()})}function x(o){return _({factory:function(){return{}},imports:o})}export{i as ResolverError,E as bindModule,j as bindModules,b as bindMultiValue,v as createContainer,_ as declareModule,x as declareModuleBindings,w as injectable,k as injectableClass,d as isToken,n as optional,g as resolveValue,O as resolveValues,o as token,m as tryResolveValue,h as tryResolveValues};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,39 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* @ignore
|
|
3
|
-
* Binding token for mandatory value
|
|
4
|
-
*/
|
|
5
|
-
export type RequiredToken<T> = {
|
|
6
|
-
symbol: symbol;
|
|
7
|
-
type?: T;
|
|
8
|
-
isOptional?: false;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* @ignore
|
|
12
|
-
* Binding token for optional value
|
|
13
|
-
*/
|
|
14
|
-
export type OptionalToken<T> = {
|
|
15
|
-
symbol: symbol;
|
|
16
|
-
type?: T;
|
|
17
|
-
isOptional: true;
|
|
18
|
-
optionalValue: T;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Binding token.
|
|
22
|
-
*/
|
|
23
|
-
export type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
24
|
-
/**
|
|
25
|
-
* Creates a new binding token.
|
|
26
|
-
* @param description - Token description for better error messages.
|
|
27
|
-
*/
|
|
28
|
-
export declare function token<T>(description?: string): Token<T>;
|
|
29
|
-
/**
|
|
30
|
-
* Decorate a token with an optional value.
|
|
31
|
-
* This value is be used as default value in case a container does not have registered token.
|
|
32
|
-
* @param token - Existed token.
|
|
33
|
-
* @param optionalValue - Default value for the resolver.
|
|
34
|
-
*/
|
|
35
|
-
export declare function optional<T>(token: Token<T>, optionalValue: T): OptionalToken<T>;
|
|
36
|
-
export declare function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
1
|
+
import { Token } from './tokens';
|
|
37
2
|
/**
|
|
38
3
|
* ResolverError is thrown by the resolver when a token is not found in a container.
|
|
39
4
|
*/
|
|
@@ -1,22 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createContainer = exports.FACTORIES_MAP = exports.FAKE_FACTORY = exports.RESOLVER = exports.PARENT_CONTAINER = exports.CONTAINER = exports.ResolverError =
|
|
4
|
-
|
|
5
|
-
* Creates a new binding token.
|
|
6
|
-
* @param description - Token description for better error messages.
|
|
7
|
-
*/
|
|
8
|
-
function token(description) {
|
|
9
|
-
return { symbol: Symbol(description) };
|
|
10
|
-
}
|
|
11
|
-
exports.token = token;
|
|
12
|
-
function optional(token, optionalValue) {
|
|
13
|
-
return {
|
|
14
|
-
symbol: token.symbol,
|
|
15
|
-
isOptional: true,
|
|
16
|
-
optionalValue,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
exports.optional = optional;
|
|
3
|
+
exports.createContainer = exports.FACTORIES_MAP = exports.FAKE_FACTORY = exports.RESOLVER = exports.PARENT_CONTAINER = exports.CONTAINER = exports.ResolverError = void 0;
|
|
4
|
+
const tokens_1 = require("./tokens");
|
|
20
5
|
/**
|
|
21
6
|
* ResolverError is thrown by the resolver when a token is not found in a container.
|
|
22
7
|
*/
|
|
@@ -29,11 +14,11 @@ class ResolverError extends Error {
|
|
|
29
14
|
}
|
|
30
15
|
exports.ResolverError = ResolverError;
|
|
31
16
|
/** @internal */
|
|
32
|
-
exports.CONTAINER = token('ditox.Container');
|
|
17
|
+
exports.CONTAINER = (0, tokens_1.token)('ditox.Container');
|
|
33
18
|
/** @internal */
|
|
34
|
-
exports.PARENT_CONTAINER = token('ditox.ParentContainer');
|
|
19
|
+
exports.PARENT_CONTAINER = (0, tokens_1.token)('ditox.ParentContainer');
|
|
35
20
|
/** @internal */
|
|
36
|
-
exports.RESOLVER = token('ditox.Resolver');
|
|
21
|
+
exports.RESOLVER = (0, tokens_1.token)('ditox.Resolver');
|
|
37
22
|
/** @internal */
|
|
38
23
|
const NOT_FOUND = Symbol();
|
|
39
24
|
/** @internal */
|
|
@@ -44,7 +29,7 @@ exports.FAKE_FACTORY = FAKE_FACTORY;
|
|
|
44
29
|
/** @internal */
|
|
45
30
|
const DEFAULT_SCOPE = 'singleton';
|
|
46
31
|
/** @internal */
|
|
47
|
-
exports.FACTORIES_MAP = token('ditox.FactoriesMap');
|
|
32
|
+
exports.FACTORIES_MAP = (0, tokens_1.token)('ditox.FactoriesMap');
|
|
48
33
|
/** @internal */
|
|
49
34
|
function getScope(options) {
|
|
50
35
|
var _a;
|
|
@@ -207,4 +192,4 @@ function createContainer(parentContainer) {
|
|
|
207
192
|
return container;
|
|
208
193
|
}
|
|
209
194
|
exports.createContainer = createContainer;
|
|
210
|
-
//# sourceMappingURL=
|
|
195
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export { token, optional
|
|
2
|
-
export type { RequiredToken, OptionalToken, Token
|
|
1
|
+
export { token, optional } from './tokens';
|
|
2
|
+
export type { RequiredToken, OptionalToken, Token } from './tokens';
|
|
3
|
+
export { ResolverError, createContainer } from './container';
|
|
4
|
+
export type { FactoryScope, FactoryOptions, Container } from './container';
|
|
3
5
|
export { isToken, bindMultiValue, tryResolveValue, tryResolveValues, resolveValue, resolveValues, injectable, injectableClass, } from './utils';
|
|
4
6
|
export { bindModule, bindModules, declareModule, declareModuleBindings, } from './modules';
|
|
5
7
|
export type { Module, ModuleDeclaration, BindModuleOptions, ModuleBindingEntry, } from './modules';
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.declareModuleBindings = exports.declareModule = exports.bindModules = exports.bindModule = exports.injectableClass = exports.injectable = exports.resolveValues = exports.resolveValue = exports.tryResolveValues = exports.tryResolveValue = exports.bindMultiValue = exports.isToken = exports.createContainer = exports.ResolverError = exports.optional = exports.token = void 0;
|
|
4
|
-
var
|
|
5
|
-
Object.defineProperty(exports, "token", { enumerable: true, get: function () { return
|
|
6
|
-
Object.defineProperty(exports, "optional", { enumerable: true, get: function () { return
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "
|
|
4
|
+
var tokens_1 = require("./tokens");
|
|
5
|
+
Object.defineProperty(exports, "token", { enumerable: true, get: function () { return tokens_1.token; } });
|
|
6
|
+
Object.defineProperty(exports, "optional", { enumerable: true, get: function () { return tokens_1.optional; } });
|
|
7
|
+
var container_1 = require("./container");
|
|
8
|
+
Object.defineProperty(exports, "ResolverError", { enumerable: true, get: function () { return container_1.ResolverError; } });
|
|
9
|
+
Object.defineProperty(exports, "createContainer", { enumerable: true, get: function () { return container_1.createContainer; } });
|
|
9
10
|
var utils_1 = require("./utils");
|
|
10
11
|
Object.defineProperty(exports, "isToken", { enumerable: true, get: function () { return utils_1.isToken; } });
|
|
11
12
|
Object.defineProperty(exports, "bindMultiValue", { enumerable: true, get: function () { return utils_1.bindMultiValue; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAAjC,+FAAA,KAAK,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAGvB,yCAA2D;AAAnD,0GAAA,aAAa,OAAA;AAAE,4GAAA,eAAe,OAAA;AAGtC,iCASiB;AARf,gGAAA,OAAO,OAAA;AACP,uGAAA,cAAc,OAAA;AACd,wGAAA,eAAe,OAAA;AACf,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,mGAAA,UAAU,OAAA;AACV,wGAAA,eAAe,OAAA;AAGjB,qCAKmB;AAJjB,qGAAA,UAAU,OAAA;AACV,sGAAA,WAAW,OAAA;AACX,wGAAA,aAAa,OAAA;AACb,gHAAA,qBAAqB,OAAA"}
|
package/dist/cjs/modules.d.ts
CHANGED
package/dist/cjs/modules.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.declareModuleBindings = exports.declareModule = exports.bindModules = exports.bindModule = void 0;
|
|
4
|
-
const ditox_1 = require("./ditox");
|
|
5
4
|
const utils_1 = require("./utils");
|
|
5
|
+
const tokens_1 = require("./tokens");
|
|
6
6
|
/**
|
|
7
7
|
* Binds the dependency module to the container
|
|
8
8
|
* @param container - Dependency container.
|
|
@@ -91,7 +91,7 @@ exports.bindModules = bindModules;
|
|
|
91
91
|
*/
|
|
92
92
|
function declareModule(declaration) {
|
|
93
93
|
var _a;
|
|
94
|
-
return { ...declaration, token: (_a = declaration.token) !== null && _a !== void 0 ? _a : (0,
|
|
94
|
+
return { ...declaration, token: (_a = declaration.token) !== null && _a !== void 0 ? _a : (0, tokens_1.token)() };
|
|
95
95
|
}
|
|
96
96
|
exports.declareModule = declareModule;
|
|
97
97
|
/**
|
package/dist/cjs/modules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/modules.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/modules.ts"],"names":[],"mappings":";;;AACA,mCAAmC;AACnC,qCAAsC;AAuFtC;;;;;;;;;;GAUG;AACH,SAAgB,UAAU,CACxB,SAAoB,EACpB,iBAAuC,EACvC,OAA2B;IAE3B,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAC,GAC1D,iBAAiB,CAAC;IACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC;IAE1C,MAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;IAE7B,IAAI,aAAa,EAAE;QACjB,aAAa,CAAC,SAAS,CAAC,CAAC;KAC1B;IAED,IAAI,OAAO,EAAE;QACX,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACjC;IAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtD,IAAI,OAAO,EAAE;QACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,UAAU,EAAE;gBACd,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAEpC,SAAS,CAAC,WAAW,CACnB,UAAU,EACV,IAAA,kBAAU,EAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAC/C,EAAC,KAAK,EAAC,CACR,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;IAED,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;QACpC,KAAK;QACL,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,MAAM,CAAC,OAAO,EAAE,CAAC;aAClB;YAED,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1E,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,YAAY,EAAE;QAChB,YAAY,CAAC,SAAS,CAAC,CAAC;KACzB;AACH,CAAC;AArDD,gCAqDC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,SAAoB,EACpB,OAA0C;IAE1C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,IAAI,QAAQ,IAAI,KAAK,EAAE;YACrB,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACpD;aAAM;YACL,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAXD,kCAWC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,aAAa,CAC3B,WAC8C;;IAE9C,OAAO,EAAC,GAAG,WAAW,EAAE,KAAK,EAAE,MAAA,WAAW,CAAC,KAAK,mCAAI,IAAA,cAAK,GAAE,EAAC,CAAC;AAC/D,CAAC;AALD,sCAKC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,OAA0C;IAE1C,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;AACL,CAAC;AAPD,sDAOC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ignore
|
|
3
|
+
* Binding token for mandatory value
|
|
4
|
+
*/
|
|
5
|
+
export type RequiredToken<T> = {
|
|
6
|
+
symbol: symbol;
|
|
7
|
+
type?: T;
|
|
8
|
+
isOptional?: false;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @ignore
|
|
12
|
+
* Binding token for optional value
|
|
13
|
+
*/
|
|
14
|
+
export type OptionalToken<T> = {
|
|
15
|
+
symbol: symbol;
|
|
16
|
+
type?: T;
|
|
17
|
+
isOptional: true;
|
|
18
|
+
optionalValue: T;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Binding token
|
|
22
|
+
*/
|
|
23
|
+
export type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Token options
|
|
26
|
+
*/
|
|
27
|
+
export type TokenOptions = {
|
|
28
|
+
/**
|
|
29
|
+
* Key for token's symbol. It allows to create shareable tokens.
|
|
30
|
+
*/
|
|
31
|
+
key: string;
|
|
32
|
+
/** @ignore */
|
|
33
|
+
description?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
/** Description for better error messages */
|
|
36
|
+
description?: string;
|
|
37
|
+
/** @ignore */
|
|
38
|
+
key?: undefined;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new binding token.
|
|
42
|
+
* @param description - Token description for better error messages.
|
|
43
|
+
*/
|
|
44
|
+
export declare function token<T>(description?: string): Token<T>;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new binding token.
|
|
47
|
+
* @param options - Token description for better error messages.
|
|
48
|
+
*/ export declare function token<T>(options?: TokenOptions): Token<T>;
|
|
49
|
+
/**
|
|
50
|
+
* Decorate a token with an optional value.
|
|
51
|
+
* This value is be used as default value in case a container does not have registered token.
|
|
52
|
+
* @param token - Existed token.
|
|
53
|
+
* @param optionalValue - Default value for the resolver.
|
|
54
|
+
*/
|
|
55
|
+
export declare function optional<T>(token: Token<T>, optionalValue: T): OptionalToken<T>;
|
|
56
|
+
export declare function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.optional = exports.token = void 0;
|
|
4
|
+
function token(options) {
|
|
5
|
+
const normalized = typeof options === 'string' ? { description: options } : options;
|
|
6
|
+
const symbol = (normalized === null || normalized === void 0 ? void 0 : normalized.key)
|
|
7
|
+
? Symbol.for(normalized.key)
|
|
8
|
+
: Symbol(normalized === null || normalized === void 0 ? void 0 : normalized.description);
|
|
9
|
+
return { symbol };
|
|
10
|
+
}
|
|
11
|
+
exports.token = token;
|
|
12
|
+
function optional(token, optionalValue) {
|
|
13
|
+
return {
|
|
14
|
+
symbol: token.symbol,
|
|
15
|
+
isOptional: true,
|
|
16
|
+
optionalValue,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
exports.optional = optional;
|
|
20
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/tokens.ts"],"names":[],"mappings":";;;AAwDA,SAAgB,KAAK,CAAI,OAA+B;IACtD,MAAM,UAAU,GACd,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEjE,MAAM,MAAM,GAAW,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG;QACpC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,CAAC;IAEpC,OAAO,EAAC,MAAM,EAAC,CAAC;AAClB,CAAC;AATD,sBASC;AAaD,SAAgB,QAAQ,CACtB,KAAe,EACf,aAAiB;IAEjB,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,IAAI;QAChB,aAAa;KACd,CAAC;AACJ,CAAC;AATD,4BASC"}
|
package/dist/cjs/utils.d.ts
CHANGED
package/dist/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* @ignore
|
|
3
|
-
* Binding token for mandatory value
|
|
4
|
-
*/
|
|
5
|
-
export type RequiredToken<T> = {
|
|
6
|
-
symbol: symbol;
|
|
7
|
-
type?: T;
|
|
8
|
-
isOptional?: false;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* @ignore
|
|
12
|
-
* Binding token for optional value
|
|
13
|
-
*/
|
|
14
|
-
export type OptionalToken<T> = {
|
|
15
|
-
symbol: symbol;
|
|
16
|
-
type?: T;
|
|
17
|
-
isOptional: true;
|
|
18
|
-
optionalValue: T;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Binding token.
|
|
22
|
-
*/
|
|
23
|
-
export type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
24
|
-
/**
|
|
25
|
-
* Creates a new binding token.
|
|
26
|
-
* @param description - Token description for better error messages.
|
|
27
|
-
*/
|
|
28
|
-
export declare function token<T>(description?: string): Token<T>;
|
|
29
|
-
/**
|
|
30
|
-
* Decorate a token with an optional value.
|
|
31
|
-
* This value is be used as default value in case a container does not have registered token.
|
|
32
|
-
* @param token - Existed token.
|
|
33
|
-
* @param optionalValue - Default value for the resolver.
|
|
34
|
-
*/
|
|
35
|
-
export declare function optional<T>(token: Token<T>, optionalValue: T): OptionalToken<T>;
|
|
36
|
-
export declare function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
1
|
+
import { Token } from './tokens';
|
|
37
2
|
/**
|
|
38
3
|
* ResolverError is thrown by the resolver when a token is not found in a container.
|
|
39
4
|
*/
|
|
@@ -1,17 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Creates a new binding token.
|
|
3
|
-
* @param description - Token description for better error messages.
|
|
4
|
-
*/
|
|
5
|
-
export function token(description) {
|
|
6
|
-
return { symbol: Symbol(description) };
|
|
7
|
-
}
|
|
8
|
-
export function optional(token, optionalValue) {
|
|
9
|
-
return {
|
|
10
|
-
symbol: token.symbol,
|
|
11
|
-
isOptional: true,
|
|
12
|
-
optionalValue,
|
|
13
|
-
};
|
|
14
|
-
}
|
|
1
|
+
import { token } from './tokens';
|
|
15
2
|
/**
|
|
16
3
|
* ResolverError is thrown by the resolver when a token is not found in a container.
|
|
17
4
|
*/
|
|
@@ -199,4 +186,4 @@ export function createContainer(parentContainer) {
|
|
|
199
186
|
bindInternalTokens();
|
|
200
187
|
return container;
|
|
201
188
|
}
|
|
202
|
-
//# sourceMappingURL=
|
|
189
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export { token, optional
|
|
2
|
-
export type { RequiredToken, OptionalToken, Token
|
|
1
|
+
export { token, optional } from './tokens';
|
|
2
|
+
export type { RequiredToken, OptionalToken, Token } from './tokens';
|
|
3
|
+
export { ResolverError, createContainer } from './container';
|
|
4
|
+
export type { FactoryScope, FactoryOptions, Container } from './container';
|
|
3
5
|
export { isToken, bindMultiValue, tryResolveValue, tryResolveValues, resolveValue, resolveValues, injectable, injectableClass, } from './utils';
|
|
4
6
|
export { bindModule, bindModules, declareModule, declareModuleBindings, } from './modules';
|
|
5
7
|
export type { Module, ModuleDeclaration, BindModuleOptions, ModuleBindingEntry, } from './modules';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { token, optional
|
|
1
|
+
export { token, optional } from './tokens';
|
|
2
|
+
export { ResolverError, createContainer } from './container';
|
|
2
3
|
export { isToken, bindMultiValue, tryResolveValue, tryResolveValues, resolveValue, resolveValues, injectable, injectableClass, } from './utils';
|
|
3
4
|
export { bindModule, bindModules, declareModule, declareModuleBindings, } from './modules';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAG3D,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,qBAAqB,GACtB,MAAM,WAAW,CAAC"}
|
package/dist/esm/modules.d.ts
CHANGED
package/dist/esm/modules.js
CHANGED
package/dist/esm/modules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/modules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/modules.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EAAQ,KAAK,EAAC,MAAM,UAAU,CAAC;AAuFtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,SAAoB,EACpB,iBAAuC,EACvC,OAA2B;IAE3B,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAC,GAC1D,iBAAiB,CAAC;IACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC;IAE1C,MAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;IAE7B,IAAI,aAAa,EAAE;QACjB,aAAa,CAAC,SAAS,CAAC,CAAC;KAC1B;IAED,IAAI,OAAO,EAAE;QACX,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACjC;IAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtD,IAAI,OAAO,EAAE;QACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,UAAU,EAAE;gBACd,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAEpC,SAAS,CAAC,WAAW,CACnB,UAAU,EACV,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAC/C,EAAC,KAAK,EAAC,CACR,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;IAED,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;QACpC,KAAK;QACL,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,MAAM,CAAC,OAAO,EAAE,CAAC;aAClB;YAED,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1E,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,YAAY,EAAE;QAChB,YAAY,CAAC,SAAS,CAAC,CAAC;KACzB;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,SAAoB,EACpB,OAA0C;IAE1C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,IAAI,QAAQ,IAAI,KAAK,EAAE;YACrB,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACpD;aAAM;YACL,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAC3B,WAC8C;;IAE9C,OAAO,EAAC,GAAG,WAAW,EAAE,KAAK,EAAE,MAAA,WAAW,CAAC,KAAK,mCAAI,KAAK,EAAE,EAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA0C;IAE1C,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ignore
|
|
3
|
+
* Binding token for mandatory value
|
|
4
|
+
*/
|
|
5
|
+
export type RequiredToken<T> = {
|
|
6
|
+
symbol: symbol;
|
|
7
|
+
type?: T;
|
|
8
|
+
isOptional?: false;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @ignore
|
|
12
|
+
* Binding token for optional value
|
|
13
|
+
*/
|
|
14
|
+
export type OptionalToken<T> = {
|
|
15
|
+
symbol: symbol;
|
|
16
|
+
type?: T;
|
|
17
|
+
isOptional: true;
|
|
18
|
+
optionalValue: T;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Binding token
|
|
22
|
+
*/
|
|
23
|
+
export type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Token options
|
|
26
|
+
*/
|
|
27
|
+
export type TokenOptions = {
|
|
28
|
+
/**
|
|
29
|
+
* Key for token's symbol. It allows to create shareable tokens.
|
|
30
|
+
*/
|
|
31
|
+
key: string;
|
|
32
|
+
/** @ignore */
|
|
33
|
+
description?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
/** Description for better error messages */
|
|
36
|
+
description?: string;
|
|
37
|
+
/** @ignore */
|
|
38
|
+
key?: undefined;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new binding token.
|
|
42
|
+
* @param description - Token description for better error messages.
|
|
43
|
+
*/
|
|
44
|
+
export declare function token<T>(description?: string): Token<T>;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new binding token.
|
|
47
|
+
* @param options - Token description for better error messages.
|
|
48
|
+
*/ export declare function token<T>(options?: TokenOptions): Token<T>;
|
|
49
|
+
/**
|
|
50
|
+
* Decorate a token with an optional value.
|
|
51
|
+
* This value is be used as default value in case a container does not have registered token.
|
|
52
|
+
* @param token - Existed token.
|
|
53
|
+
* @param optionalValue - Default value for the resolver.
|
|
54
|
+
*/
|
|
55
|
+
export declare function optional<T>(token: Token<T>, optionalValue: T): OptionalToken<T>;
|
|
56
|
+
export declare function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function token(options) {
|
|
2
|
+
const normalized = typeof options === 'string' ? { description: options } : options;
|
|
3
|
+
const symbol = (normalized === null || normalized === void 0 ? void 0 : normalized.key)
|
|
4
|
+
? Symbol.for(normalized.key)
|
|
5
|
+
: Symbol(normalized === null || normalized === void 0 ? void 0 : normalized.description);
|
|
6
|
+
return { symbol };
|
|
7
|
+
}
|
|
8
|
+
export function optional(token, optionalValue) {
|
|
9
|
+
return {
|
|
10
|
+
symbol: token.symbol,
|
|
11
|
+
isOptional: true,
|
|
12
|
+
optionalValue,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/tokens.ts"],"names":[],"mappings":"AAwDA,MAAM,UAAU,KAAK,CAAI,OAA+B;IACtD,MAAM,UAAU,GACd,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEjE,MAAM,MAAM,GAAW,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG;QACpC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,CAAC;IAEpC,OAAO,EAAC,MAAM,EAAC,CAAC;AAClB,CAAC;AAaD,MAAM,UAAU,QAAQ,CACtB,KAAe,EACf,aAAiB;IAEjB,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,IAAI;QAChB,aAAa;KACd,CAAC;AACJ,CAAC"}
|
package/dist/esm/utils.d.ts
CHANGED
package/dist/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/umd/index.d.ts
CHANGED
|
@@ -18,14 +18,34 @@ type OptionalToken<T> = {
|
|
|
18
18
|
optionalValue: T;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
|
-
* Binding token
|
|
21
|
+
* Binding token
|
|
22
22
|
*/
|
|
23
23
|
type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Token options
|
|
26
|
+
*/
|
|
27
|
+
type TokenOptions = {
|
|
28
|
+
/**
|
|
29
|
+
* Key for token's symbol. It allows to create shareable tokens.
|
|
30
|
+
*/
|
|
31
|
+
key: string;
|
|
32
|
+
/** @ignore */
|
|
33
|
+
description?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
/** Description for better error messages */
|
|
36
|
+
description?: string;
|
|
37
|
+
/** @ignore */
|
|
38
|
+
key?: undefined;
|
|
39
|
+
};
|
|
24
40
|
/**
|
|
25
41
|
* Creates a new binding token.
|
|
26
42
|
* @param description - Token description for better error messages.
|
|
27
43
|
*/
|
|
28
44
|
declare function token<T>(description?: string): Token<T>;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new binding token.
|
|
47
|
+
* @param options - Token description for better error messages.
|
|
48
|
+
*/ declare function token<T>(options?: TokenOptions): Token<T>;
|
|
29
49
|
/**
|
|
30
50
|
* Decorate a token with an optional value.
|
|
31
51
|
* This value is be used as default value in case a container does not have registered token.
|
|
@@ -34,6 +54,7 @@ declare function token<T>(description?: string): Token<T>;
|
|
|
34
54
|
*/
|
|
35
55
|
declare function optional<T>(token: Token<T>, optionalValue: T): OptionalToken<T>;
|
|
36
56
|
declare function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
57
|
+
|
|
37
58
|
/**
|
|
38
59
|
* ResolverError is thrown by the resolver when a token is not found in a container.
|
|
39
60
|
*/
|
package/dist/umd/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(o,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((o="undefined"!=typeof globalThis?globalThis:o||self).Ditox={})}(this,(function(o){"use strict";var n=function(o,
|
|
1
|
+
!function(o,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((o="undefined"!=typeof globalThis?globalThis:o||self).Ditox={})}(this,(function(o){"use strict";function n(o){var n="string"==typeof o?{description:o}:o;return{symbol:(null==n?void 0:n.key)?Symbol.for(n.key):Symbol(null==n?void 0:n.description)}}var t=function(o,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,n){o.__proto__=n}||function(o,n){for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(o[t]=n[t])},t(o,n)};var e=function(){return e=Object.assign||function(o){for(var n,t=1,e=arguments.length;t<e;t++)for(var r in n=arguments[t])Object.prototype.hasOwnProperty.call(n,r)&&(o[r]=n[r]);return o},e.apply(this,arguments)};function r(o,n,t){if(t||2===arguments.length)for(var e,r=0,i=n.length;r<i;r++)!e&&r in n||(e||(e=Array.prototype.slice.call(n,0,r)),e[r]=n[r]);return o.concat(e||Array.prototype.slice.call(n))}var i=function(o){function n(n){var t=this.constructor,e=o.call(this,n)||this;return Object.setPrototypeOf(e,t.prototype),e.name="ResolverError",e}return function(o,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function e(){this.constructor=o}t(o,n),o.prototype=null===n?Object.create(n):(e.prototype=n.prototype,new e)}(n,o),n}(Error),l=n("ditox.Container"),u=n("ditox.ParentContainer"),a=n("ditox.Resolver"),s=Symbol(),c=function(){throw new Error("FAKE_FACTORY")},f="singleton",y=n("ditox.FactoriesMap");function p(o){return o.symbol===l.symbol||o.symbol===u.symbol||o.symbol===a.symbol}function d(o){return null!=o&&"object"==typeof o&&"symbol"in o&&"symbol"==typeof o.symbol}function v(o,n){if(d(n))return o.get(n);var t={};return Object.keys(n).forEach((function(e){return t[e]=o.get(n[e])})),t}function b(o,n){if(d(n))return o.resolve(n);var t={};return Object.keys(n).forEach((function(e){return t[e]=o.resolve(n[e])})),t}function m(o){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];return n.map((function(n){return b(o,n)}))}function h(o){for(var n=this,t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return function(e){var i=m.apply(void 0,r([e],t,!1));return o.apply(n,i)}}function g(o,n,t){var e=n.token,r=n.imports,i=n.factory,l=n.beforeBinding,u=n.afterBinding,a=n.exports,s=null==t?void 0:t.scope;l&&l(o),r&&O(o,r);var c=new Set;a&&Object.keys(a).forEach((function(n){var t=a[n];t&&(c.add(t),o.bindFactory(t,h((function(o){return o[n]}),e),{scope:s}))}));o.bindFactory(e,i,{scope:s,onRemoved:function(n){n.destroy&&n.destroy(),c.forEach((function(n){return o.remove(n)})),c.clear()}}),u&&u(o)}function O(o,n){n.forEach((function(n){"module"in n?g(o,n.module,n.options):g(o,n)}))}function k(o){var t;return e(e({},o),{token:null!==(t=o.token)&&void 0!==t?t:n()})}o.ResolverError=i,o.bindModule=g,o.bindModules=O,o.bindMultiValue=function(o,n,t){var e,i=r(r([],null!==(e=o.get(n))&&void 0!==e?e:[],!0),[t],!1);o.bindValue(n,i)},o.createContainer=function(o){var n=new Map,t=new Map,e={bindValue:function(o,t){p(o)||n.set(o.symbol,t)},bindFactory:function(o,n,e){p(o)||t.set(o.symbol,{factory:n,options:e})},remove:function(o){var e;if(!p(o)){var r=null===(e=t.get(o.symbol))||void 0===e?void 0:e.options;r&&d(o.symbol,r),n.delete(o.symbol),t.delete(o.symbol)}},removeAll:function(){t.forEach((function(o,n){o.options&&d(n,o.options)})),n.clear(),t.clear(),v()},hasToken:function(e){var r;return n.has(e.symbol)||t.has(e.symbol)||null!==(r=null==o?void 0:o.hasToken(e))&&void 0!==r&&r},get:function(o){var n=r(o,e);return n!==s?n:o.isOptional?o.optionalValue:void 0},resolve:function(o){var n,t=r(o,e);if(t!==s)return t;if(o.isOptional)return o.optionalValue;throw new i('Token "'.concat(null!==(n=o.symbol.description)&&void 0!==n?n:"",'" is not provided'))}};function r(r,i){var l=n.get(r.symbol),u=void 0!==l||n.has(r.symbol);if(u&&i===e)return l;var y,p,d=t.get(r.symbol);if(d&&d.factory!==c)switch(y=d.options,null!==(p=null==y?void 0:y.scope)&&void 0!==p?p:f){case"singleton":if(u)return l;if(null==o?void 0:o.hasToken(r))break;var v=d.factory(e);return e.bindValue(r,v),v;case"scoped":var b=d.factory(i);return i.bindValue(r,b),i!==e&&i.bindFactory(r,c,d.options),b;case"transient":return d.factory(i)}if(u)return l;var m=null==o?void 0:o.get(a);return m?m(r,i):s}function d(o,t){var e=function(o){return void 0===o.scope||"scoped"===o.scope||"singleton"===o.scope?o.onRemoved:void 0}(t);if(e){var r=n.get(o);(void 0!==r||n.has(o))&&e(r)}}function v(){n.set(l.symbol,e),n.set(a.symbol,r),n.set(y.symbol,t),o&&n.set(u.symbol,o)}return v(),e},o.declareModule=k,o.declareModuleBindings=function(o){return k({factory:function(){return{}},imports:o})},o.injectable=h,o.injectableClass=function(o){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];return h.apply(void 0,r([function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return new(o.bind.apply(o,r([void 0],n,!1)))}],n,!1))},o.isToken=d,o.optional=function(o,n){return{symbol:o.symbol,isOptional:!0,optionalValue:n}},o.resolveValue=b,o.resolveValues=m,o.token=n,o.tryResolveValue=v,o.tryResolveValues=function(o){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];return n.map((function(n){return v(o,n)}))}}));
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ditox",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.1",
|
|
4
4
|
"description": "Dependency injection for modular web applications",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Mikhail Nasyrov <mikhail@mnasyrov.com> (https://github.com/mnasyrov)",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"build:rollup": "rollup -c",
|
|
53
53
|
"typedoc": "typedoc"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "e9c66f51c861a7598ab73415d7b2041700bc6d69"
|
|
56
56
|
}
|
|
@@ -3,12 +3,11 @@ import {
|
|
|
3
3
|
createContainer,
|
|
4
4
|
FACTORIES_MAP,
|
|
5
5
|
FAKE_FACTORY,
|
|
6
|
-
optional,
|
|
7
6
|
PARENT_CONTAINER,
|
|
8
7
|
ResolverError,
|
|
9
|
-
|
|
10
|
-
} from './ditox';
|
|
8
|
+
} from './container';
|
|
11
9
|
import {injectable} from './utils';
|
|
10
|
+
import {optional, token} from './tokens';
|
|
12
11
|
|
|
13
12
|
const NUMBER = token<number>('number');
|
|
14
13
|
const STRING = token<string>('string');
|
|
@@ -527,6 +526,16 @@ describe('Container', () => {
|
|
|
527
526
|
expect(container.resolve(NUMBER)).toBe(1);
|
|
528
527
|
});
|
|
529
528
|
|
|
529
|
+
it('should resolve a value from the parent container by OptionalToken', () => {
|
|
530
|
+
const OPTIONAL_TOKEN = optional(token(), 0);
|
|
531
|
+
|
|
532
|
+
const parent = createContainer();
|
|
533
|
+
parent.bindValue(OPTIONAL_TOKEN, 1);
|
|
534
|
+
|
|
535
|
+
const container = createContainer(parent);
|
|
536
|
+
expect(container.resolve(OPTIONAL_TOKEN)).toBe(1);
|
|
537
|
+
});
|
|
538
|
+
|
|
530
539
|
it('should throw ResolverError in case the parent container does not provide a value', () => {
|
|
531
540
|
const parent = createContainer();
|
|
532
541
|
const container = createContainer(parent);
|
|
@@ -585,5 +594,18 @@ describe('Container', () => {
|
|
|
585
594
|
expect(parent.resolve(optionalNumber)).toBe(1);
|
|
586
595
|
expect(container.resolve(optionalNumber)).toBe(1);
|
|
587
596
|
});
|
|
597
|
+
|
|
598
|
+
it('should resolve a value by shared tokens', () => {
|
|
599
|
+
const key = 'token-' + Date.now();
|
|
600
|
+
const t1 = token({key});
|
|
601
|
+
const t2 = token({key});
|
|
602
|
+
expect(t1).not.toBe(t2);
|
|
603
|
+
|
|
604
|
+
const container = createContainer();
|
|
605
|
+
container.bindValue(t1, 1);
|
|
606
|
+
|
|
607
|
+
expect(container.resolve(t1)).toBe(1);
|
|
608
|
+
expect(container.resolve(t2)).toBe(1);
|
|
609
|
+
});
|
|
588
610
|
});
|
|
589
611
|
});
|
|
@@ -1,58 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* @ignore
|
|
3
|
-
* Binding token for mandatory value
|
|
4
|
-
*/
|
|
5
|
-
export type RequiredToken<T> = {
|
|
6
|
-
symbol: symbol;
|
|
7
|
-
type?: T; // Anchor for Typescript type inference.
|
|
8
|
-
isOptional?: false;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @ignore
|
|
13
|
-
* Binding token for optional value
|
|
14
|
-
*/
|
|
15
|
-
export type OptionalToken<T> = {
|
|
16
|
-
symbol: symbol;
|
|
17
|
-
type?: T; // Anchor for Typescript type inference.
|
|
18
|
-
isOptional: true;
|
|
19
|
-
optionalValue: T;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Binding token.
|
|
24
|
-
*/
|
|
25
|
-
export type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Creates a new binding token.
|
|
29
|
-
* @param description - Token description for better error messages.
|
|
30
|
-
*/
|
|
31
|
-
export function token<T>(description?: string): Token<T> {
|
|
32
|
-
return {symbol: Symbol(description)};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Decorate a token with an optional value.
|
|
37
|
-
* This value is be used as default value in case a container does not have registered token.
|
|
38
|
-
* @param token - Existed token.
|
|
39
|
-
* @param optionalValue - Default value for the resolver.
|
|
40
|
-
*/
|
|
41
|
-
export function optional<T>(
|
|
42
|
-
token: Token<T>,
|
|
43
|
-
optionalValue: T,
|
|
44
|
-
): OptionalToken<T>;
|
|
45
|
-
export function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
46
|
-
export function optional<T>(
|
|
47
|
-
token: Token<T>,
|
|
48
|
-
optionalValue?: T,
|
|
49
|
-
): OptionalToken<T | undefined> {
|
|
50
|
-
return {
|
|
51
|
-
symbol: token.symbol,
|
|
52
|
-
isOptional: true,
|
|
53
|
-
optionalValue,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
1
|
+
import {Token, token} from './tokens';
|
|
56
2
|
|
|
57
3
|
/**
|
|
58
4
|
* ResolverError is thrown by the resolver when a token is not found in a container.
|
package/src/index.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
export {token, optional
|
|
2
|
-
export type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
FactoryScope,
|
|
7
|
-
FactoryOptions,
|
|
8
|
-
Container,
|
|
9
|
-
} from './ditox';
|
|
1
|
+
export {token, optional} from './tokens';
|
|
2
|
+
export type {RequiredToken, OptionalToken, Token} from './tokens';
|
|
3
|
+
|
|
4
|
+
export {ResolverError, createContainer} from './container';
|
|
5
|
+
export type {FactoryScope, FactoryOptions, Container} from './container';
|
|
10
6
|
|
|
11
7
|
export {
|
|
12
8
|
isToken,
|
package/src/modules.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {createContainer
|
|
1
|
+
import {createContainer} from './container';
|
|
2
2
|
import {
|
|
3
3
|
bindModule,
|
|
4
4
|
bindModules,
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
ModuleDeclaration,
|
|
9
9
|
} from './modules';
|
|
10
10
|
import {injectable} from './utils';
|
|
11
|
+
import {token} from './tokens';
|
|
11
12
|
|
|
12
13
|
describe('bindModule()', () => {
|
|
13
14
|
type TestQueries = {getValue: () => number};
|
package/src/modules.ts
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {optional, token} from './tokens';
|
|
2
|
+
|
|
3
|
+
describe('token()', () => {
|
|
4
|
+
it('should return a token with description it is specified', () => {
|
|
5
|
+
expect(token().symbol.description).toBeUndefined();
|
|
6
|
+
expect(token('text1').symbol.description).toBe('text1');
|
|
7
|
+
expect(token({description: 'text2'}).symbol.description).toBe('text2');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('should return independent tokens if key is not specified', () => {
|
|
11
|
+
const t1 = token();
|
|
12
|
+
const t2 = token();
|
|
13
|
+
|
|
14
|
+
expect(t1).not.toBe(t2);
|
|
15
|
+
expect(t1.symbol).not.toBe(t2.symbol);
|
|
16
|
+
expect(t1.isOptional).not.toBeTruthy();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should return tokens with the same symbol if key is specified', () => {
|
|
20
|
+
const source = token({key: 'test-token'});
|
|
21
|
+
const clone = token({key: 'test-token'});
|
|
22
|
+
const something = token({key: 'something-else'});
|
|
23
|
+
|
|
24
|
+
expect(source).not.toBe(clone);
|
|
25
|
+
expect(source.symbol).toBe(clone.symbol);
|
|
26
|
+
|
|
27
|
+
expect(something).not.toBe(source);
|
|
28
|
+
expect(something.symbol).not.toBe(source);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('optional()', () => {
|
|
33
|
+
it('should decorate a source token to attach an optional value', () => {
|
|
34
|
+
const t1 = token<number>();
|
|
35
|
+
expect(t1.isOptional).not.toBeTruthy();
|
|
36
|
+
|
|
37
|
+
const o1 = optional(t1);
|
|
38
|
+
expect(o1.symbol).toBe(t1.symbol);
|
|
39
|
+
expect(o1.isOptional).toBe(true);
|
|
40
|
+
|
|
41
|
+
const o2 = optional(t1, -1);
|
|
42
|
+
expect(o2.symbol).toBe(t1.symbol);
|
|
43
|
+
expect(o2.isOptional).toBe(true);
|
|
44
|
+
expect(o2.optionalValue).toBe(-1);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('should reuse symbol from a source token ifits key is specified', () => {
|
|
48
|
+
const source = token({key: 'token-key'});
|
|
49
|
+
const clone = token({key: 'token-key'});
|
|
50
|
+
const optClone = optional(clone);
|
|
51
|
+
|
|
52
|
+
expect(optClone.symbol).toBe(source.symbol);
|
|
53
|
+
});
|
|
54
|
+
});
|
package/src/tokens.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ignore
|
|
3
|
+
* Binding token for mandatory value
|
|
4
|
+
*/
|
|
5
|
+
export type RequiredToken<T> = {
|
|
6
|
+
symbol: symbol;
|
|
7
|
+
type?: T; // Anchor for Typescript type inference.
|
|
8
|
+
isOptional?: false;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @ignore
|
|
13
|
+
* Binding token for optional value
|
|
14
|
+
*/
|
|
15
|
+
export type OptionalToken<T> = {
|
|
16
|
+
symbol: symbol;
|
|
17
|
+
type?: T; // Anchor for Typescript type inference.
|
|
18
|
+
isOptional: true;
|
|
19
|
+
optionalValue: T;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Binding token
|
|
24
|
+
*/
|
|
25
|
+
export type Token<T> = RequiredToken<T> | OptionalToken<T>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Token options
|
|
29
|
+
*/
|
|
30
|
+
export type TokenOptions =
|
|
31
|
+
| {
|
|
32
|
+
/**
|
|
33
|
+
* Key for token's symbol. It allows to create shareable tokens.
|
|
34
|
+
*/
|
|
35
|
+
key: string;
|
|
36
|
+
|
|
37
|
+
/** @ignore */
|
|
38
|
+
description?: undefined;
|
|
39
|
+
}
|
|
40
|
+
| {
|
|
41
|
+
/** Description for better error messages */
|
|
42
|
+
description?: string;
|
|
43
|
+
|
|
44
|
+
/** @ignore */
|
|
45
|
+
key?: undefined;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new binding token.
|
|
50
|
+
* @param description - Token description for better error messages.
|
|
51
|
+
*/
|
|
52
|
+
export function token<T>(description?: string): Token<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Creates a new binding token.
|
|
55
|
+
* @param options - Token description for better error messages.
|
|
56
|
+
*/ export function token<T>(options?: TokenOptions): Token<T>;
|
|
57
|
+
export function token<T>(options?: TokenOptions | string): Token<T> {
|
|
58
|
+
const normalized: TokenOptions | undefined =
|
|
59
|
+
typeof options === 'string' ? {description: options} : options;
|
|
60
|
+
|
|
61
|
+
const symbol: symbol = normalized?.key
|
|
62
|
+
? Symbol.for(normalized.key)
|
|
63
|
+
: Symbol(normalized?.description);
|
|
64
|
+
|
|
65
|
+
return {symbol};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Decorate a token with an optional value.
|
|
70
|
+
* This value is be used as default value in case a container does not have registered token.
|
|
71
|
+
* @param token - Existed token.
|
|
72
|
+
* @param optionalValue - Default value for the resolver.
|
|
73
|
+
*/
|
|
74
|
+
export function optional<T>(
|
|
75
|
+
token: Token<T>,
|
|
76
|
+
optionalValue: T,
|
|
77
|
+
): OptionalToken<T>;
|
|
78
|
+
export function optional<T>(token: Token<T>): OptionalToken<T | undefined>;
|
|
79
|
+
export function optional<T>(
|
|
80
|
+
token: Token<T>,
|
|
81
|
+
optionalValue?: T,
|
|
82
|
+
): OptionalToken<T | undefined> {
|
|
83
|
+
return {
|
|
84
|
+
symbol: token.symbol,
|
|
85
|
+
isOptional: true,
|
|
86
|
+
optionalValue,
|
|
87
|
+
};
|
|
88
|
+
}
|
package/src/utils.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {createContainer,
|
|
1
|
+
import {createContainer, ResolverError} from './container';
|
|
2
2
|
import {
|
|
3
3
|
bindMultiValue,
|
|
4
4
|
injectable,
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
tryResolveValue,
|
|
9
9
|
tryResolveValues,
|
|
10
10
|
} from './utils';
|
|
11
|
+
import {optional, token} from './tokens';
|
|
11
12
|
|
|
12
13
|
const NUMBER = token<number>('number');
|
|
13
14
|
const STRING = token<string>('string');
|
package/src/utils.ts
CHANGED
package/dist/cjs/ditox.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ditox.js","sourceRoot":"","sources":["../../src/ditox.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/ditox.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ditox.js","sourceRoot":"","sources":["../../src/ditox.ts"],"names":[],"mappings":"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"}
|