@venizia/ignis-inversion 0.2.0-18 → 0.2.0-19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/common/utilities.d.ts +15 -1
- package/dist/cjs/common/utilities.d.ts.map +1 -1
- package/dist/cjs/common/utilities.js +32 -2
- package/dist/cjs/common/utilities.js.map +1 -1
- package/dist/cjs/modules/error/app-error.js +1 -1
- package/dist/cjs/modules/error/app-error.js.map +1 -1
- package/dist/esm/common/utilities.d.ts +15 -1
- package/dist/esm/common/utilities.d.ts.map +1 -1
- package/dist/esm/common/utilities.js +30 -1
- package/dist/esm/common/utilities.js.map +1 -1
- package/dist/esm/modules/error/app-error.js +1 -1
- package/dist/esm/modules/error/app-error.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { AnyType, TClass, TInjectTarget, TValueOrAsyncResolver, TValueOrResolver } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
|
|
4
|
+
* object with no own enumerable keys. A number, boolean or function is empty too - it holds no
|
|
5
|
+
* entries.
|
|
6
|
+
*
|
|
7
|
+
* Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
|
|
8
|
+
* empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
|
|
9
|
+
*/
|
|
10
|
+
export declare const isEmpty: (opts: {
|
|
11
|
+
value: unknown;
|
|
12
|
+
}) => boolean;
|
|
2
13
|
/**
|
|
3
14
|
* A shallow copy without `keys`.
|
|
4
15
|
*
|
|
@@ -6,7 +17,10 @@ import type { AnyType, TClass, TInjectTarget, TValueOrAsyncResolver, TValueOrRes
|
|
|
6
17
|
* lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
|
|
7
18
|
* never a nested path.
|
|
8
19
|
*/
|
|
9
|
-
export declare const omit: <T extends
|
|
20
|
+
export declare const omit: <T extends object, K extends PropertyKey>(opts: {
|
|
21
|
+
source: T;
|
|
22
|
+
keys: readonly K[];
|
|
23
|
+
}) => Omit<T, Extract<K, keyof T>>;
|
|
10
24
|
/** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
|
|
11
25
|
export declare const isClass: <T>(target: any) => target is TClass<T>;
|
|
12
26
|
/** Reads a value-or-resolver. A class constructor is returned as-is; only a plain function is called. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACN,aAAa,EAEb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACN,aAAa,EAEb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAG,OAwBlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,EAAE,MAAM;IAClE,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;CACpB,KAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAc9B,CAAC;AAEF,2MAA2M;AAC3M,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,QAAQ,GAAG,KAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAM1D,CAAC;AAMF,yGAAyG;AACzG,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,iBAAiB,gBAAgB,CAAC,CAAC,CAAC,KAAG,CACJ,CAAC;AAOpE,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,GAAU,CAAC,EACvC,iBAAiB,qBAAqB,CAAC,CAAC,CAAC,KACxC,OAAO,CAAC,CAAC,CAA6E,CAAC;AAE1F,iUAAiU;AACjU,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,KAAG,MAAM,CAAC,OAAO,CAAC,GAAG,SAG7E,CAAC"}
|
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveInjectTarget = exports.resolveValueAsync = exports.resolveValue = exports.isClass = exports.omit = void 0;
|
|
3
|
+
exports.resolveInjectTarget = exports.resolveValueAsync = exports.resolveValue = exports.isClass = exports.omit = exports.isEmpty = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
|
|
6
|
+
* object with no own enumerable keys. A number, boolean or function is empty too - it holds no
|
|
7
|
+
* entries.
|
|
8
|
+
*
|
|
9
|
+
* Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
|
|
10
|
+
* empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
|
|
11
|
+
*/
|
|
12
|
+
const isEmpty = (opts) => {
|
|
13
|
+
const { value } = opts;
|
|
14
|
+
if (value === null || value === undefined) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
// The types that carry a MEANINGFUL length. Duck-typing on `.length` instead would call
|
|
18
|
+
// `{ length: 0 }` empty, which it is not - it has an own key.
|
|
19
|
+
if (typeof value === 'string' || Array.isArray(value) || ArrayBuffer.isView(value)) {
|
|
20
|
+
return value.length === 0;
|
|
21
|
+
}
|
|
22
|
+
if (value instanceof Map || value instanceof Set) {
|
|
23
|
+
return value.size === 0;
|
|
24
|
+
}
|
|
25
|
+
if (typeof value !== 'object') {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
// Own keys only: `for...in` would walk the prototype chain and call an object with an inherited
|
|
29
|
+
// property non-empty.
|
|
30
|
+
return Object.keys(value).length === 0;
|
|
31
|
+
};
|
|
32
|
+
exports.isEmpty = isEmpty;
|
|
4
33
|
/**
|
|
5
34
|
* A shallow copy without `keys`.
|
|
6
35
|
*
|
|
@@ -8,7 +37,8 @@ exports.resolveInjectTarget = exports.resolveValueAsync = exports.resolveValue =
|
|
|
8
37
|
* lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
|
|
9
38
|
* never a nested path.
|
|
10
39
|
*/
|
|
11
|
-
const omit = (
|
|
40
|
+
const omit = (opts) => {
|
|
41
|
+
const { source, keys } = opts;
|
|
12
42
|
const dropped = new Set(keys);
|
|
13
43
|
const kept = {};
|
|
14
44
|
for (const [key, value] of Object.entries(source)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":";;;AAUA;;;;;;GAMG;AACI,MAAM,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ class ApplicationError extends Error {
|
|
|
32
32
|
this.logLevel = logLevel;
|
|
33
33
|
// Explicit `extra` wins over swept keys.
|
|
34
34
|
const merged = {
|
|
35
|
-
...(0, utilities_1.omit)(opts, KNOWN_KEYS),
|
|
35
|
+
...(0, utilities_1.omit)({ source: opts, keys: KNOWN_KEYS }),
|
|
36
36
|
...extra,
|
|
37
37
|
};
|
|
38
38
|
this.extra = Object.keys(merged).length > 0 ? merged : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":";;;AACA,kDAA0C;AAC1C,iDAA6C;AAG7C,yDAAyD;AACzD,MAAM,UAAU,GAAG;IACjB,OAAO;IACP,SAAS;IACT,aAAa;IACb,YAAY;IACZ,aAAa;IACb,OAAO;IACP,OAAO;IACP,WAAW;IACX,UAAU;IACV,MAAM;
|
|
1
|
+
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { AnyType, TClass, TInjectTarget, TValueOrAsyncResolver, TValueOrResolver } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
|
|
4
|
+
* object with no own enumerable keys. A number, boolean or function is empty too - it holds no
|
|
5
|
+
* entries.
|
|
6
|
+
*
|
|
7
|
+
* Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
|
|
8
|
+
* empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
|
|
9
|
+
*/
|
|
10
|
+
export declare const isEmpty: (opts: {
|
|
11
|
+
value: unknown;
|
|
12
|
+
}) => boolean;
|
|
2
13
|
/**
|
|
3
14
|
* A shallow copy without `keys`.
|
|
4
15
|
*
|
|
@@ -6,7 +17,10 @@ import type { AnyType, TClass, TInjectTarget, TValueOrAsyncResolver, TValueOrRes
|
|
|
6
17
|
* lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
|
|
7
18
|
* never a nested path.
|
|
8
19
|
*/
|
|
9
|
-
export declare const omit: <T extends
|
|
20
|
+
export declare const omit: <T extends object, K extends PropertyKey>(opts: {
|
|
21
|
+
source: T;
|
|
22
|
+
keys: readonly K[];
|
|
23
|
+
}) => Omit<T, Extract<K, keyof T>>;
|
|
10
24
|
/** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
|
|
11
25
|
export declare const isClass: <T>(target: any) => target is TClass<T>;
|
|
12
26
|
/** Reads a value-or-resolver. A class constructor is returned as-is; only a plain function is called. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACN,aAAa,EAEb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACN,aAAa,EAEb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAG,OAwBlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,EAAE,MAAM;IAClE,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;CACpB,KAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAc9B,CAAC;AAEF,2MAA2M;AAC3M,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,QAAQ,GAAG,KAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAM1D,CAAC;AAMF,yGAAyG;AACzG,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,iBAAiB,gBAAgB,CAAC,CAAC,CAAC,KAAG,CACJ,CAAC;AAOpE,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,GAAU,CAAC,EACvC,iBAAiB,qBAAqB,CAAC,CAAC,CAAC,KACxC,OAAO,CAAC,CAAC,CAA6E,CAAC;AAE1F,iUAAiU;AACjU,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,KAAG,MAAM,CAAC,OAAO,CAAC,GAAG,SAG7E,CAAC"}
|
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
|
|
3
|
+
* object with no own enumerable keys. A number, boolean or function is empty too - it holds no
|
|
4
|
+
* entries.
|
|
5
|
+
*
|
|
6
|
+
* Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
|
|
7
|
+
* empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
|
|
8
|
+
*/
|
|
9
|
+
export const isEmpty = (opts) => {
|
|
10
|
+
const { value } = opts;
|
|
11
|
+
if (value === null || value === undefined) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
// The types that carry a MEANINGFUL length. Duck-typing on `.length` instead would call
|
|
15
|
+
// `{ length: 0 }` empty, which it is not - it has an own key.
|
|
16
|
+
if (typeof value === 'string' || Array.isArray(value) || ArrayBuffer.isView(value)) {
|
|
17
|
+
return value.length === 0;
|
|
18
|
+
}
|
|
19
|
+
if (value instanceof Map || value instanceof Set) {
|
|
20
|
+
return value.size === 0;
|
|
21
|
+
}
|
|
22
|
+
if (typeof value !== 'object') {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
// Own keys only: `for...in` would walk the prototype chain and call an object with an inherited
|
|
26
|
+
// property non-empty.
|
|
27
|
+
return Object.keys(value).length === 0;
|
|
28
|
+
};
|
|
1
29
|
/**
|
|
2
30
|
* A shallow copy without `keys`.
|
|
3
31
|
*
|
|
@@ -5,7 +33,8 @@
|
|
|
5
33
|
* lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
|
|
6
34
|
* never a nested path.
|
|
7
35
|
*/
|
|
8
|
-
export const omit = (
|
|
36
|
+
export const omit = (opts) => {
|
|
37
|
+
const { source, keys } = opts;
|
|
9
38
|
const dropped = new Set(keys);
|
|
10
39
|
const kept = {};
|
|
11
40
|
for (const [key, value] of Object.entries(source)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ export class ApplicationError extends Error {
|
|
|
29
29
|
this.logLevel = logLevel;
|
|
30
30
|
// Explicit `extra` wins over swept keys.
|
|
31
31
|
const merged = {
|
|
32
|
-
...omit(opts, KNOWN_KEYS),
|
|
32
|
+
...omit({ source: opts, keys: KNOWN_KEYS }),
|
|
33
33
|
...extra,
|
|
34
34
|
};
|
|
35
35
|
this.extra = Object.keys(merged).length > 0 ? merged : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,yDAAyD;AACzD,MAAM,UAAU,GAAG;IACjB,OAAO;IACP,SAAS;IACT,aAAa;IACb,YAAY;IACZ,aAAa;IACb,OAAO;IACP,OAAO;IACP,WAAW;IACX,UAAU;IACV,MAAM;
|
|
1
|
+
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ignis-inversion",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-19",
|
|
4
4
|
"description": "Lightweight, high-performance Dependency Injection and Inversion of Control container for TypeScript (~350 lines). Features decorator-based constructor and property injection, fluent Binding API, singleton/transient scoping, namespace auto-tagging, Provider pattern, tag-based discovery, and reflect-metadata integration. Inspired by LoopBack 4 and InversifyJS but simpler. Zero framework lock-in — works standalone or with Ignis.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"architecture",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
},
|
|
111
111
|
"devDependencies": {
|
|
112
112
|
"@types/bun": "^1.4.1",
|
|
113
|
-
"@venizia/dev-configs": "^0.2.0-
|
|
113
|
+
"@venizia/dev-configs": "^0.2.0-12",
|
|
114
114
|
"eslint": "^10.10.0",
|
|
115
115
|
"prettier": "^3.9.6",
|
|
116
116
|
"tsc-alias": "^1.9.4",
|