@foxford/den 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/adapter.cjs CHANGED
@@ -1,8 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkNRE6DV6Ocjs = require('./chunk-NRE6DV6O.cjs');
4
+ var _chunkC7BM4DGXcjs = require('./chunk-C7BM4DGX.cjs');
5
+ require('./chunk-XHYR3SGG.cjs');
5
6
 
6
7
 
7
8
 
8
- exports.installResolver = _chunkNRE6DV6Ocjs.installResolver; exports.resolveDefinition = _chunkNRE6DV6Ocjs.resolveDefinition;
9
+ exports.installResolver = _chunkC7BM4DGXcjs.installResolver; exports.resolveDefinition = _chunkC7BM4DGXcjs.resolveDefinition;
package/adapter.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { R as RequestContext } from './types-B4Arep3V.cjs';
1
+ export { R as RequestContext } from './types-Deyolj1-.cjs';
2
2
  import { Token } from '@foxford/ioc';
3
3
 
4
4
  /**
package/adapter.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { R as RequestContext } from './types-B4Arep3V.js';
1
+ export { R as RequestContext } from './types-Deyolj1-.js';
2
2
  import { Token } from '@foxford/ioc';
3
3
 
4
4
  /**
package/adapter.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  installResolver,
3
3
  resolveDefinition
4
- } from "./chunk-E7HG2NXO.js";
4
+ } from "./chunk-WBHHHICS.js";
5
+ import "./chunk-HJO26HIQ.js";
5
6
  export {
6
7
  installResolver,
7
8
  resolveDefinition
@@ -1,6 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkNRE6DV6Ocjs = require('./chunk-NRE6DV6O.cjs');
3
+ var _chunkC7BM4DGXcjs = require('./chunk-C7BM4DGX.cjs');
4
+
5
+
6
+ var _chunkA6ZPAM6Zcjs = require('./chunk-A6ZPAM6Z.cjs');
4
7
 
5
8
  // src/core/types.ts
6
9
  var _ioc = require('@foxford/ioc');
@@ -41,26 +44,6 @@ var SlotRegistry = class {
41
44
  }
42
45
  };
43
46
 
44
- // src/logger.ts
45
-
46
- var _logger = require('@foxford/logger');
47
- var logger = _logger.log.getLogger("@foxford/den");
48
- var LoggerToken = _ioc.createToken.call(void 0, "den:Logger");
49
- function scopeLogger(container) {
50
- if (container.has(LoggerToken)) {
51
- const resolved = container.resolve(LoggerToken);
52
- if (!(resolved instanceof Promise)) {
53
- return resolved;
54
- }
55
- }
56
- return logger;
57
- }
58
- function unitLogger(container, name) {
59
- var _a;
60
- const base = scopeLogger(container);
61
- return (_a = base.getLogger(name)) != null ? _a : base;
62
- }
63
-
64
47
  // src/define-service.ts
65
48
 
66
49
  function defineService(token, options) {
@@ -79,7 +62,7 @@ function defineService(token, options) {
79
62
  * @param container - Контейнер для регистрации
80
63
  */
81
64
  register(container) {
82
- const unitLog = unitLogger(container, token.description);
65
+ const unitLog = _chunkA6ZPAM6Zcjs.unitLogger.call(void 0, container, token.description);
83
66
  const factory = _ioc.inject.call(void 0, requireTokens, (...args) => {
84
67
  unitLog.debug(`\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (${create ? "\u0444\u0430\u0431\u0440\u0438\u043A\u0430" : "lifecycle-\u043E\u0431\u0451\u0440\u0442\u043A\u0430"})`);
85
68
  let instance;
@@ -141,7 +124,7 @@ function defineViewModel(token, options) {
141
124
  * @param container - Контейнер для регистрации
142
125
  */
143
126
  register(container) {
144
- const unitLog = unitLogger(container, token.description);
127
+ const unitLog = _chunkA6ZPAM6Zcjs.unitLogger.call(void 0, container, token.description);
145
128
  const factory = _ioc.inject.call(void 0, requireTokens, (...args) => {
146
129
  unitLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 view-model");
147
130
  return create(args);
@@ -161,7 +144,7 @@ function defineViewModel(token, options) {
161
144
  * @returns Экземпляр VM или Promise с экземпляром
162
145
  */
163
146
  resolve() {
164
- return _chunkNRE6DV6Ocjs.resolveDefinition.call(void 0, token);
147
+ return _chunkC7BM4DGXcjs.resolveDefinition.call(void 0, token);
165
148
  },
166
149
  token,
167
150
  /**
@@ -188,7 +171,7 @@ function defineRepository(token, options) {
188
171
  * @param container - Контейнер для регистрации
189
172
  */
190
173
  register(container) {
191
- const unitLog = unitLogger(container, token.description);
174
+ const unitLog = _chunkA6ZPAM6Zcjs.unitLogger.call(void 0, container, token.description);
192
175
  const factory = _ioc.inject.call(void 0, requireTokens, (...args) => {
193
176
  unitLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u044F");
194
177
  return create(args);
@@ -201,12 +184,11 @@ function defineRepository(token, options) {
201
184
  }
202
185
 
203
186
  // src/define-slot.ts
204
- function defineSlot({ name, view, units = [] }) {
187
+ function defineSlot({ view, units = [], viewLayer } = {}) {
205
188
  return {
206
189
  __type: "slot",
207
- name,
208
- register(container) {
209
- const slotLog = unitLogger(container, `slot:${name}`);
190
+ register(container, name) {
191
+ const slotLog = _chunkA6ZPAM6Zcjs.unitLogger.call(void 0, container, `slot:${name}`);
210
192
  for (const unit of units) {
211
193
  unit.register(container);
212
194
  }
@@ -216,11 +198,12 @@ function defineSlot({ name, view, units = [] }) {
216
198
  slotLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D SlotRegistry \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430");
217
199
  return created;
218
200
  })();
219
- registry.add({ name, view });
201
+ registry.add({ name, view, viewLayer });
220
202
  slotLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0441\u043B\u043E\u0442\u0430 (units=${units.length})`);
221
203
  },
222
204
  units,
223
- view
205
+ view,
206
+ viewLayer
224
207
  };
225
208
  }
226
209
 
@@ -238,7 +221,4 @@ function defineSlot({ name, view, units = [] }) {
238
221
 
239
222
 
240
223
 
241
-
242
-
243
-
244
- exports.ContainerManagerToken = ContainerManagerToken; exports.GuardRunnerToken = GuardRunnerToken; exports.NavigationManagerToken = NavigationManagerToken; exports.StateSerializerToken = StateSerializerToken; exports.StateRegistryToken = StateRegistryToken; exports.SlotRegistryToken = SlotRegistryToken; exports.ActivatableToken = ActivatableToken; exports.RequestContextToken = RequestContextToken; exports.SlotRegistry = SlotRegistry; exports.logger = logger; exports.LoggerToken = LoggerToken; exports.scopeLogger = scopeLogger; exports.defineService = defineService; exports.defineViewModel = defineViewModel; exports.defineRepository = defineRepository; exports.defineSlot = defineSlot;
224
+ exports.ContainerManagerToken = ContainerManagerToken; exports.GuardRunnerToken = GuardRunnerToken; exports.NavigationManagerToken = NavigationManagerToken; exports.StateSerializerToken = StateSerializerToken; exports.StateRegistryToken = StateRegistryToken; exports.SlotRegistryToken = SlotRegistryToken; exports.ActivatableToken = ActivatableToken; exports.RequestContextToken = RequestContextToken; exports.SlotRegistry = SlotRegistry; exports.defineService = defineService; exports.defineViewModel = defineViewModel; exports.defineRepository = defineRepository; exports.defineSlot = defineSlot;
@@ -0,0 +1,26 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/logger.ts
2
+ var _ioc = require('@foxford/ioc');
3
+ var _logger = require('@foxford/logger');
4
+ var logger = _logger.log.getLogger("@foxford/den");
5
+ var LoggerToken = _ioc.createToken.call(void 0, "den:Logger");
6
+ function scopeLogger(container) {
7
+ if (container.has(LoggerToken)) {
8
+ const resolved = container.resolve(LoggerToken);
9
+ if (!(resolved instanceof Promise)) {
10
+ return resolved;
11
+ }
12
+ }
13
+ return logger;
14
+ }
15
+ function unitLogger(container, name) {
16
+ var _a;
17
+ const base = scopeLogger(container);
18
+ return (_a = base.getLogger(name)) != null ? _a : base;
19
+ }
20
+
21
+
22
+
23
+
24
+
25
+
26
+ exports.logger = logger; exports.LoggerToken = LoggerToken; exports.scopeLogger = scopeLogger; exports.unitLogger = unitLogger;
@@ -0,0 +1,18 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/adapter.ts
2
+ var activeResolver = null;
3
+ function installResolver(resolver) {
4
+ activeResolver = resolver;
5
+ }
6
+ function resolveDefinition(token) {
7
+ if (activeResolver === null) {
8
+ throw new Error(
9
+ `den/adapter: \u0440\u0435\u0437\u043E\u043B\u0432\u0435\u0440 \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0434\u043B\u044F \xAB${token.description}\xBB \u2014 \u043D\u0438 \u043E\u0434\u0438\u043D host-\u0430\u0434\u0430\u043F\u0442\u0435\u0440 \u043D\u0435 \u0432\u044B\u0437\u0432\u0430\u043B installResolver()`
10
+ );
11
+ }
12
+ return activeResolver(token);
13
+ }
14
+
15
+
16
+
17
+
18
+ exports.installResolver = installResolver; exports.resolveDefinition = resolveDefinition;
@@ -0,0 +1,41 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+
38
+ export {
39
+ __spreadValues,
40
+ __async
41
+ };
@@ -0,0 +1,35 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/island/view-adapter.ts
2
+ var _ioc = require('@foxford/ioc');
3
+ var ViewLayerToken = _ioc.createToken.call(void 0, "den:ViewLayer");
4
+ function isViewAdapter(value) {
5
+ if (typeof value !== "object" || value === null) {
6
+ return false;
7
+ }
8
+ const candidate = value;
9
+ return typeof candidate.type === "string" && typeof candidate.createIsland === "function" && typeof candidate.installResolver === "function";
10
+ }
11
+ function viewAdapterOf(layer) {
12
+ return adapterOfConfig(layer.config);
13
+ }
14
+ function adapterOfConfig(config) {
15
+ if (!isViewAdapter(config.adapter)) {
16
+ throw new Error(
17
+ `den/island: view-\u0441\u043B\u043E\u0439 \xAB${config.name}\xBB \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D \u0431\u0435\u0437 \u0430\u0434\u0430\u043F\u0442\u0435\u0440\u0430 \u2014 \u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F ViewAdapter (type + createIsland + installResolver), \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 reactAdapter()`
18
+ );
19
+ }
20
+ return config.adapter;
21
+ }
22
+ function resolveViewAdapter(container) {
23
+ if (container.has(ViewLayerToken)) {
24
+ return adapterOfConfig(container.resolve(ViewLayerToken));
25
+ }
26
+ throw new Error(
27
+ 'den/island: view-\u0441\u043B\u043E\u0439 \u043D\u0435 \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D \u2014 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043E\u0431\u044F\u0437\u0430\u043D\u043E \u043E\u0431\u044A\u044F\u0432\u0438\u0442\u044C \u0435\u0433\u043E \u0441\u0430\u043C\u043E: defineLayer(ViewLayerToken, { name: "view", adapter: reactAdapter() })'
28
+ );
29
+ }
30
+
31
+
32
+
33
+
34
+
35
+ exports.ViewLayerToken = ViewLayerToken; exports.viewAdapterOf = viewAdapterOf; exports.resolveViewAdapter = resolveViewAdapter;
@@ -0,0 +1,35 @@
1
+ // src/island/view-adapter.ts
2
+ import { createToken } from "@foxford/ioc";
3
+ var ViewLayerToken = createToken("den:ViewLayer");
4
+ function isViewAdapter(value) {
5
+ if (typeof value !== "object" || value === null) {
6
+ return false;
7
+ }
8
+ const candidate = value;
9
+ return typeof candidate.type === "string" && typeof candidate.createIsland === "function" && typeof candidate.installResolver === "function";
10
+ }
11
+ function viewAdapterOf(layer) {
12
+ return adapterOfConfig(layer.config);
13
+ }
14
+ function adapterOfConfig(config) {
15
+ if (!isViewAdapter(config.adapter)) {
16
+ throw new Error(
17
+ `den/island: view-\u0441\u043B\u043E\u0439 \xAB${config.name}\xBB \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D \u0431\u0435\u0437 \u0430\u0434\u0430\u043F\u0442\u0435\u0440\u0430 \u2014 \u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F ViewAdapter (type + createIsland + installResolver), \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 reactAdapter()`
18
+ );
19
+ }
20
+ return config.adapter;
21
+ }
22
+ function resolveViewAdapter(container) {
23
+ if (container.has(ViewLayerToken)) {
24
+ return adapterOfConfig(container.resolve(ViewLayerToken));
25
+ }
26
+ throw new Error(
27
+ 'den/island: view-\u0441\u043B\u043E\u0439 \u043D\u0435 \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D \u2014 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043E\u0431\u044F\u0437\u0430\u043D\u043E \u043E\u0431\u044A\u044F\u0432\u0438\u0442\u044C \u0435\u0433\u043E \u0441\u0430\u043C\u043E: defineLayer(ViewLayerToken, { name: "view", adapter: reactAdapter() })'
28
+ );
29
+ }
30
+
31
+ export {
32
+ ViewLayerToken,
33
+ viewAdapterOf,
34
+ resolveViewAdapter
35
+ };
@@ -0,0 +1,26 @@
1
+ // src/logger.ts
2
+ import { createToken } from "@foxford/ioc";
3
+ import { log } from "@foxford/logger";
4
+ var logger = log.getLogger("@foxford/den");
5
+ var LoggerToken = createToken("den:Logger");
6
+ function scopeLogger(container) {
7
+ if (container.has(LoggerToken)) {
8
+ const resolved = container.resolve(LoggerToken);
9
+ if (!(resolved instanceof Promise)) {
10
+ return resolved;
11
+ }
12
+ }
13
+ return logger;
14
+ }
15
+ function unitLogger(container, name) {
16
+ var _a;
17
+ const base = scopeLogger(container);
18
+ return (_a = base.getLogger(name)) != null ? _a : base;
19
+ }
20
+
21
+ export {
22
+ logger,
23
+ LoggerToken,
24
+ scopeLogger,
25
+ unitLogger
26
+ };
@@ -1,24 +1,3 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
-
22
1
  // src/adapter.ts
23
2
  var activeResolver = null;
24
3
  function installResolver(resolver) {
@@ -34,7 +13,6 @@ function resolveDefinition(token) {
34
13
  }
35
14
 
36
15
  export {
37
- __async,
38
16
  installResolver,
39
17
  resolveDefinition
40
18
  };
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  resolveDefinition
3
- } from "./chunk-E7HG2NXO.js";
3
+ } from "./chunk-WBHHHICS.js";
4
+ import {
5
+ unitLogger
6
+ } from "./chunk-TPBI6TOU.js";
4
7
 
5
8
  // src/core/types.ts
6
9
  import { createToken } from "@foxford/ioc";
@@ -41,26 +44,6 @@ var SlotRegistry = class {
41
44
  }
42
45
  };
43
46
 
44
- // src/logger.ts
45
- import { createToken as createToken2 } from "@foxford/ioc";
46
- import { log } from "@foxford/logger";
47
- var logger = log.getLogger("@foxford/den");
48
- var LoggerToken = createToken2("den:Logger");
49
- function scopeLogger(container) {
50
- if (container.has(LoggerToken)) {
51
- const resolved = container.resolve(LoggerToken);
52
- if (!(resolved instanceof Promise)) {
53
- return resolved;
54
- }
55
- }
56
- return logger;
57
- }
58
- function unitLogger(container, name) {
59
- var _a;
60
- const base = scopeLogger(container);
61
- return (_a = base.getLogger(name)) != null ? _a : base;
62
- }
63
-
64
47
  // src/define-service.ts
65
48
  import { inject, Lifecycle } from "@foxford/ioc";
66
49
  function defineService(token, options) {
@@ -201,11 +184,10 @@ function defineRepository(token, options) {
201
184
  }
202
185
 
203
186
  // src/define-slot.ts
204
- function defineSlot({ name, view, units = [] }) {
187
+ function defineSlot({ view, units = [], viewLayer } = {}) {
205
188
  return {
206
189
  __type: "slot",
207
- name,
208
- register(container) {
190
+ register(container, name) {
209
191
  const slotLog = unitLogger(container, `slot:${name}`);
210
192
  for (const unit of units) {
211
193
  unit.register(container);
@@ -216,11 +198,12 @@ function defineSlot({ name, view, units = [] }) {
216
198
  slotLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D SlotRegistry \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430");
217
199
  return created;
218
200
  })();
219
- registry.add({ name, view });
201
+ registry.add({ name, view, viewLayer });
220
202
  slotLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0441\u043B\u043E\u0442\u0430 (units=${units.length})`);
221
203
  },
222
204
  units,
223
- view
205
+ view,
206
+ viewLayer
224
207
  };
225
208
  }
226
209
 
@@ -234,9 +217,6 @@ export {
234
217
  ActivatableToken,
235
218
  RequestContextToken,
236
219
  SlotRegistry,
237
- logger,
238
- LoggerToken,
239
- scopeLogger,
240
220
  defineService,
241
221
  defineViewModel,
242
222
  defineRepository,
@@ -0,0 +1,41 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+
38
+
39
+
40
+
41
+ exports.__spreadValues = __spreadValues; exports.__async = __async;
@@ -0,0 +1,83 @@
1
+ import { x as DefineServiceOptions, K as ServiceDefinition, y as DefineViewModelOptions, X as ViewModelDefinition, w as DefineRepositoryOptions, I as RepositoryDefinition } from './types-Deyolj1-.js';
2
+ import { Token } from '@foxford/ioc';
3
+
4
+ /**
5
+ * Определяет сервис с IoC-биндингом и опциональными lifecycle-хуками activate/deactivate.
6
+ * Если передана опция create — регистрирует экземпляр класса напрямую (как Singleton).
7
+ * Если create не передана — создаёт Activatable-обёртку с хуками activate/deactivate.
8
+ *
9
+ * @template T - Тип регистрируемого сервиса
10
+ * @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
11
+ * @param token - Токен для регистрации сервиса в IoC
12
+ * @param options - Опции: requires, create, activate, deactivate
13
+ * @returns ServiceDefinition с методом register(container)
14
+ *
15
+ * @example
16
+ * // С фабрикой create (сервис-класс регистрируется напрямую)
17
+ * const authService = defineService(AuthServiceToken, {
18
+ * create: () => new AuthService(),
19
+ * })
20
+ * authService.register(appContainer)
21
+ *
22
+ * @example
23
+ * // С lifecycle-хуками (без create)
24
+ * const dataService = defineService(DataServiceToken, {
25
+ * requires: [RepoToken] as const,
26
+ * activate: ([repo], params) => repo.loadData(params.id),
27
+ * deactivate: ([repo]) => repo.cleanup(),
28
+ * })
29
+ * dataService.register(appContainer)
30
+ */
31
+ declare function defineService<T, Deps extends readonly Token<unknown>[] = readonly []>(token: Token<T>, options: DefineServiceOptions<Deps, T>): ServiceDefinition<T, Deps>;
32
+
33
+ /**
34
+ * Определяет ViewModel с IoC-биндингом и proxy для прямого импорта из view.
35
+ * Поддерживает deferred resolution — контейнер не нужен на момент импорта модуля.
36
+ * Метод resolve() делегирует резолв стратегии активного host-адаптера
37
+ * (см. `@foxford/den/adapter` → `installResolver`).
38
+ *
39
+ * @template T - Тип ViewModel
40
+ * @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
41
+ * @param token - Токен для регистрации VM в IoC
42
+ * @param options - Опции: requires, create
43
+ * @returns ViewModelDefinition с методами register(container) и resolve()
44
+ *
45
+ * @example
46
+ * // home.vm.ts — создаётся при импорте модуля
47
+ * export const homeVm = defineViewModel(HomeVmToken, {
48
+ * requires: [UserServiceToken] as const,
49
+ * create: ([userService]) => ({
50
+ * title: userService.getTitle(),
51
+ * }),
52
+ * })
53
+ *
54
+ * // home.view.tsx — контейнер уже инициализирован
55
+ * const vm = await homeVm.use()
56
+ */
57
+ declare function defineViewModel<T, Deps extends readonly Token<unknown>[] = readonly []>(token: Token<T>, options: DefineViewModelOptions<Deps, T>): ViewModelDefinition<T, Deps>;
58
+
59
+ /**
60
+ * Определяет репозиторий уровня данных с IoC-биндингом.
61
+ * Регистрирует Singleton-фабрику в IoC-контейнере.
62
+ * В отличие от defineService, репозиторий не имеет activate/deactivate lifecycle —
63
+ * он предоставляет методы доступа к данным без управления состоянием страницы.
64
+ *
65
+ * @template T - Тип регистрируемого репозитория
66
+ * @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
67
+ * @param token - Токен для регистрации репозитория в IoC
68
+ * @param options - Опции: requires, create
69
+ * @returns RepositoryDefinition с методом register(container)
70
+ *
71
+ * @example
72
+ * const userRepo = defineRepository(UserRepoToken, {
73
+ * requires: [HttpServiceToken] as const,
74
+ * create: ([http]) => ({
75
+ * getUser: (id: string) => http.get(`/users/${id}`),
76
+ * saveUser: (data: UserData) => http.post('/users', data),
77
+ * }),
78
+ * })
79
+ * userRepo.register(appContainer)
80
+ */
81
+ declare function defineRepository<T, Deps extends readonly Token<unknown>[] = readonly []>(token: Token<T>, options: DefineRepositoryOptions<Deps, T>): RepositoryDefinition<T, Deps>;
82
+
83
+ export { defineService as a, defineViewModel as b, defineRepository as d };
@@ -0,0 +1,83 @@
1
+ import { x as DefineServiceOptions, K as ServiceDefinition, y as DefineViewModelOptions, X as ViewModelDefinition, w as DefineRepositoryOptions, I as RepositoryDefinition } from './types-Deyolj1-.cjs';
2
+ import { Token } from '@foxford/ioc';
3
+
4
+ /**
5
+ * Определяет сервис с IoC-биндингом и опциональными lifecycle-хуками activate/deactivate.
6
+ * Если передана опция create — регистрирует экземпляр класса напрямую (как Singleton).
7
+ * Если create не передана — создаёт Activatable-обёртку с хуками activate/deactivate.
8
+ *
9
+ * @template T - Тип регистрируемого сервиса
10
+ * @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
11
+ * @param token - Токен для регистрации сервиса в IoC
12
+ * @param options - Опции: requires, create, activate, deactivate
13
+ * @returns ServiceDefinition с методом register(container)
14
+ *
15
+ * @example
16
+ * // С фабрикой create (сервис-класс регистрируется напрямую)
17
+ * const authService = defineService(AuthServiceToken, {
18
+ * create: () => new AuthService(),
19
+ * })
20
+ * authService.register(appContainer)
21
+ *
22
+ * @example
23
+ * // С lifecycle-хуками (без create)
24
+ * const dataService = defineService(DataServiceToken, {
25
+ * requires: [RepoToken] as const,
26
+ * activate: ([repo], params) => repo.loadData(params.id),
27
+ * deactivate: ([repo]) => repo.cleanup(),
28
+ * })
29
+ * dataService.register(appContainer)
30
+ */
31
+ declare function defineService<T, Deps extends readonly Token<unknown>[] = readonly []>(token: Token<T>, options: DefineServiceOptions<Deps, T>): ServiceDefinition<T, Deps>;
32
+
33
+ /**
34
+ * Определяет ViewModel с IoC-биндингом и proxy для прямого импорта из view.
35
+ * Поддерживает deferred resolution — контейнер не нужен на момент импорта модуля.
36
+ * Метод resolve() делегирует резолв стратегии активного host-адаптера
37
+ * (см. `@foxford/den/adapter` → `installResolver`).
38
+ *
39
+ * @template T - Тип ViewModel
40
+ * @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
41
+ * @param token - Токен для регистрации VM в IoC
42
+ * @param options - Опции: requires, create
43
+ * @returns ViewModelDefinition с методами register(container) и resolve()
44
+ *
45
+ * @example
46
+ * // home.vm.ts — создаётся при импорте модуля
47
+ * export const homeVm = defineViewModel(HomeVmToken, {
48
+ * requires: [UserServiceToken] as const,
49
+ * create: ([userService]) => ({
50
+ * title: userService.getTitle(),
51
+ * }),
52
+ * })
53
+ *
54
+ * // home.view.tsx — контейнер уже инициализирован
55
+ * const vm = await homeVm.use()
56
+ */
57
+ declare function defineViewModel<T, Deps extends readonly Token<unknown>[] = readonly []>(token: Token<T>, options: DefineViewModelOptions<Deps, T>): ViewModelDefinition<T, Deps>;
58
+
59
+ /**
60
+ * Определяет репозиторий уровня данных с IoC-биндингом.
61
+ * Регистрирует Singleton-фабрику в IoC-контейнере.
62
+ * В отличие от defineService, репозиторий не имеет activate/deactivate lifecycle —
63
+ * он предоставляет методы доступа к данным без управления состоянием страницы.
64
+ *
65
+ * @template T - Тип регистрируемого репозитория
66
+ * @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
67
+ * @param token - Токен для регистрации репозитория в IoC
68
+ * @param options - Опции: requires, create
69
+ * @returns RepositoryDefinition с методом register(container)
70
+ *
71
+ * @example
72
+ * const userRepo = defineRepository(UserRepoToken, {
73
+ * requires: [HttpServiceToken] as const,
74
+ * create: ([http]) => ({
75
+ * getUser: (id: string) => http.get(`/users/${id}`),
76
+ * saveUser: (data: UserData) => http.post('/users', data),
77
+ * }),
78
+ * })
79
+ * userRepo.register(appContainer)
80
+ */
81
+ declare function defineRepository<T, Deps extends readonly Token<unknown>[] = readonly []>(token: Token<T>, options: DefineRepositoryOptions<Deps, T>): RepositoryDefinition<T, Deps>;
82
+
83
+ export { defineService as a, defineViewModel as b, defineRepository as d };