@futdevpro/nts-dynamo 1.15.57 → 1.15.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/.dynamo/logs/cicd-pipeline/output.log +1757 -3604
  2. package/.dynamo/logs/cicd-pipeline/status.json +43 -345
  3. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.d.ts +110 -0
  4. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.d.ts.map +1 -0
  5. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.js +419 -0
  6. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.js.map +1 -0
  7. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.d.ts +50 -0
  8. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.d.ts.map +1 -0
  9. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.js +3 -0
  10. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.js.map +1 -0
  11. package/build/_modules/ai/_modules/document-ai/index.d.ts +2 -0
  12. package/build/_modules/ai/_modules/document-ai/index.d.ts.map +1 -1
  13. package/build/_modules/ai/_modules/document-ai/index.js +2 -0
  14. package/build/_modules/ai/_modules/document-ai/index.js.map +1 -1
  15. package/build/_modules/ai/_services/ai-embedding-mock.service.d.ts +81 -0
  16. package/build/_modules/ai/_services/ai-embedding-mock.service.d.ts.map +1 -0
  17. package/build/_modules/ai/_services/ai-embedding-mock.service.js +167 -0
  18. package/build/_modules/ai/_services/ai-embedding-mock.service.js.map +1 -0
  19. package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts +52 -0
  20. package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts.map +1 -0
  21. package/build/_modules/ai/_services/ai-embedding-provider.registry.js +79 -0
  22. package/build/_modules/ai/_services/ai-embedding-provider.registry.js.map +1 -0
  23. package/build/_modules/ai/_services/lmstudio-embedding.control-service.d.ts +111 -0
  24. package/build/_modules/ai/_services/lmstudio-embedding.control-service.d.ts.map +1 -0
  25. package/build/_modules/ai/_services/lmstudio-embedding.control-service.js +298 -0
  26. package/build/_modules/ai/_services/lmstudio-embedding.control-service.js.map +1 -0
  27. package/build/_modules/ai/index.d.ts +3 -0
  28. package/build/_modules/ai/index.d.ts.map +1 -1
  29. package/build/_modules/ai/index.js +4 -0
  30. package/build/_modules/ai/index.js.map +1 -1
  31. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.d.ts +59 -0
  32. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.d.ts.map +1 -0
  33. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.js +169 -0
  34. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.js.map +1 -0
  35. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.d.ts +32 -0
  36. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.d.ts.map +1 -0
  37. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.js +8 -0
  38. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.js.map +1 -0
  39. package/build/_modules/data-readers/index.d.ts +3 -0
  40. package/build/_modules/data-readers/index.d.ts.map +1 -0
  41. package/build/_modules/data-readers/index.js +11 -0
  42. package/build/_modules/data-readers/index.js.map +1 -0
  43. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.d.ts +36 -0
  44. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.d.ts.map +1 -0
  45. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.js +54 -0
  46. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.js.map +1 -0
  47. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.d.ts +70 -0
  48. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.d.ts.map +1 -0
  49. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.js +123 -0
  50. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.js.map +1 -0
  51. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.d.ts +43 -0
  52. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.d.ts.map +1 -0
  53. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.js +72 -0
  54. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.js.map +1 -0
  55. package/build/_modules/local-vector-search/index.d.ts +3 -0
  56. package/build/_modules/local-vector-search/index.d.ts.map +1 -1
  57. package/build/_modules/local-vector-search/index.js +4 -0
  58. package/build/_modules/local-vector-search/index.js.map +1 -1
  59. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.d.ts +109 -0
  60. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.d.ts.map +1 -0
  61. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.js +14 -0
  62. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.js.map +1 -0
  63. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.d.ts +71 -0
  64. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.d.ts.map +1 -0
  65. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.js +99 -0
  66. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.js.map +1 -0
  67. package/build/_modules/mcp/_services/dynts-mcp.adapter.d.ts +57 -0
  68. package/build/_modules/mcp/_services/dynts-mcp.adapter.d.ts.map +1 -0
  69. package/build/_modules/mcp/_services/dynts-mcp.adapter.js +134 -0
  70. package/build/_modules/mcp/_services/dynts-mcp.adapter.js.map +1 -0
  71. package/build/_modules/mcp/index.d.ts +4 -0
  72. package/build/_modules/mcp/index.d.ts.map +1 -0
  73. package/build/_modules/mcp/index.js +13 -0
  74. package/build/_modules/mcp/index.js.map +1 -0
  75. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.d.ts +19 -0
  76. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.d.ts.map +1 -0
  77. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.js +23 -0
  78. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.js.map +1 -0
  79. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.d.ts +44 -0
  80. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.d.ts.map +1 -0
  81. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.js +68 -0
  82. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.js.map +1 -0
  83. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.d.ts +89 -0
  84. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.d.ts.map +1 -0
  85. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.js +3 -0
  86. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.js.map +1 -0
  87. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.d.ts +84 -0
  88. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.d.ts.map +1 -0
  89. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.js +220 -0
  90. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.js.map +1 -0
  91. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.d.ts +54 -0
  92. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.d.ts.map +1 -0
  93. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.js +76 -0
  94. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.js.map +1 -0
  95. package/build/_modules/scoped-config/index.d.ts +6 -0
  96. package/build/_modules/scoped-config/index.d.ts.map +1 -0
  97. package/build/_modules/scoped-config/index.js +15 -0
  98. package/build/_modules/scoped-config/index.js.map +1 -0
  99. package/package.json +58 -2
  100. package/pnpm-workspace.yaml +1 -0
  101. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.ts +295 -0
  102. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +520 -0
  103. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.ts +68 -0
  104. package/src/_modules/ai/_modules/document-ai/index.ts +2 -0
  105. package/src/_modules/ai/_services/ai-embedding-mock.service.spec.ts +115 -0
  106. package/src/_modules/ai/_services/ai-embedding-mock.service.ts +219 -0
  107. package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -0
  108. package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +110 -0
  109. package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -0
  110. package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +378 -0
  111. package/src/_modules/ai/index.ts +5 -0
  112. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +161 -0
  113. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +192 -0
  114. package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -0
  115. package/src/_modules/data-readers/index.ts +11 -0
  116. package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +59 -0
  117. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +198 -0
  118. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +146 -0
  119. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -0
  120. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +106 -0
  121. package/src/_modules/local-vector-search/index.ts +6 -1
  122. package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -0
  123. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +142 -0
  124. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +120 -0
  125. package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +157 -0
  126. package/src/_modules/mcp/index.ts +13 -0
  127. package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -0
  128. package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +81 -0
  129. package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +109 -0
  130. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +306 -0
  131. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +295 -0
  132. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +118 -0
  133. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +105 -0
  134. package/src/_modules/scoped-config/index.ts +17 -0
@@ -0,0 +1,118 @@
1
+
2
+ import { DyFM_EnvironmentFlag } from '@futdevpro/fsm-dynamo';
3
+
4
+ import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
5
+ import { DyNTS_GlobalService } from '../../../_services/core/global.service';
6
+ import { DyNTS_ScopedConfig_Level } from '../_enums/dynts-scoped-config-level.enum';
7
+ import { DyNTS_ScopedConfig_DataModel } from '../_models/data-models/dynts-scoped-config.data-model';
8
+ import { DyNTS_ScopedConfig_DataService } from './dynts-scoped-config.data-service';
9
+
10
+ /**
11
+ * BFR-AM-004 — a `DyNTS_ScopedConfig_DataService` spec-jei. A base-ctor eager `getDBService`-jét
12
+ * stub-oljuk (memory: dynts_dataservice_eager_resolve), így NEM kell élő Mongo. A `setValue`
13
+ * spec bizonyítja a Mixed-érték ATOMIKUS `$set` írását (memory: mongoose_mixed_atomic_write).
14
+ */
15
+ describe('| DyNTS_ScopedConfig_DataService', () => {
16
+
17
+ let mockDBService: jasmine.SpyObj<{ find: () => Promise<unknown[]>; findOne: () => Promise<unknown> }>;
18
+
19
+ beforeAll(() => {
20
+ if (!DyNTS_global_settings.systemShortCodeName) {
21
+ (DyNTS_global_settings as { systemShortCodeName?: string }).systemShortCodeName = 'TEST';
22
+ }
23
+ if (!DyNTS_global_settings.env_settings) {
24
+ (DyNTS_global_settings as { env_settings?: unknown }).env_settings = {
25
+ environment: DyFM_EnvironmentFlag.local,
26
+ };
27
+ }
28
+ });
29
+
30
+ beforeEach(() => {
31
+ mockDBService = jasmine.createSpyObj('DyNTS_DBService', ['find', 'findOne']);
32
+ mockDBService.find.and.returnValue(Promise.resolve([]));
33
+ mockDBService.findOne.and.returnValue(Promise.resolve(null));
34
+ spyOn(DyNTS_GlobalService, 'getDBService').and.returnValue(mockDBService as never);
35
+ });
36
+
37
+ describe('| constructor', () => {
38
+
39
+ it('| should create the service with a data model', () => {
40
+ const data: DyNTS_ScopedConfig_DataModel = new DyNTS_ScopedConfig_DataModel({
41
+ level: DyNTS_ScopedConfig_Level.global,
42
+ key: 'read.topK',
43
+ value: 5,
44
+ });
45
+
46
+ const service: DyNTS_ScopedConfig_DataService =
47
+ new DyNTS_ScopedConfig_DataService({ data: data, issuer: 'issuer-123' });
48
+
49
+ expect(service).toBeInstanceOf(DyNTS_ScopedConfig_DataService);
50
+ expect(service.data).toBeDefined();
51
+ expect(service.data.key).toBe('read.topK');
52
+ expect(service.haveArchiveDataService).toBeTrue();
53
+ });
54
+
55
+ it('| should create the service without data', () => {
56
+ const service: DyNTS_ScopedConfig_DataService =
57
+ new DyNTS_ScopedConfig_DataService({ issuer: 'issuer-123' });
58
+
59
+ expect(service).toBeInstanceOf(DyNTS_ScopedConfig_DataService);
60
+ expect(service.data).toBeInstanceOf(DyNTS_ScopedConfig_DataModel);
61
+ });
62
+ });
63
+
64
+ describe('| setValue — atomic $set (Mongoose Mixed)', () => {
65
+
66
+ it('| should issue an updateOne $set for the Mixed value + audit fields', async () => {
67
+ const service: DyNTS_ScopedConfig_DataService =
68
+ new DyNTS_ScopedConfig_DataService({ issuer: 'issuer-123' });
69
+
70
+ const updateSpy = spyOn(service, 'updateData').and.returnValue(Promise.resolve());
71
+
72
+ await service.setValue('rec-id', ['a', 'b'], { setBy: 'cli', setByDetail: 'user-x' });
73
+
74
+ expect(updateSpy).toHaveBeenCalledTimes(1);
75
+ const arg = updateSpy.calls.mostRecent().args[0] as {
76
+ filterBy: { _id: string };
77
+ update: { $set: { value: unknown; setBy?: string; setByDetail?: string } };
78
+ };
79
+ expect(arg.filterBy._id).toBe('rec-id');
80
+ expect(arg.update.$set.value).toEqual(['a', 'b']);
81
+ expect(arg.update.$set.setBy).toBe('cli');
82
+ expect(arg.update.$set.setByDetail).toBe('user-x');
83
+ });
84
+ });
85
+
86
+ describe('| levelKeyFilter (static)', () => {
87
+
88
+ it('| should build a global filter with only level + key', () => {
89
+ const filter = DyNTS_ScopedConfig_DataService.levelKeyFilter(
90
+ DyNTS_ScopedConfig_Level.global, 'read.topK', {},
91
+ );
92
+ expect(filter).toEqual({ level: DyNTS_ScopedConfig_Level.global, key: 'read.topK' });
93
+ });
94
+
95
+ it('| should include tableScope for a table filter', () => {
96
+ const filter = DyNTS_ScopedConfig_DataService.levelKeyFilter(
97
+ DyNTS_ScopedConfig_Level.table, 'read.topK', { tableScope: 'documents' },
98
+ );
99
+ expect(filter).toEqual({
100
+ level: DyNTS_ScopedConfig_Level.table,
101
+ key: 'read.topK',
102
+ tableScope: 'documents',
103
+ });
104
+ });
105
+
106
+ it('| should include tableScope + scopeId for a scope filter', () => {
107
+ const filter = DyNTS_ScopedConfig_DataService.levelKeyFilter(
108
+ DyNTS_ScopedConfig_Level.scope, 'read.topK', { tableScope: 'documents', scopeId: 'leaf' },
109
+ );
110
+ expect(filter).toEqual({
111
+ level: DyNTS_ScopedConfig_Level.scope,
112
+ key: 'read.topK',
113
+ tableScope: 'documents',
114
+ scopeId: 'leaf',
115
+ });
116
+ });
117
+ });
118
+ });
@@ -0,0 +1,105 @@
1
+
2
+ import { DyFM_DBFilter, DyFM_DBFilterSimple } from '@futdevpro/fsm-dynamo';
3
+
4
+ import { DyNTS_ArchiveDataService } from '../../../_services/base/archive-data.service';
5
+ import { DyNTS_DataService } from '../../../_services/base/data.service';
6
+ import { DyNTS_ScopedConfig_Level } from '../_enums/dynts-scoped-config-level.enum';
7
+ import {
8
+ DyNTS_ScopedConfig_DataModel,
9
+ dyNTS_scopedConfig_dataParams,
10
+ } from '../_models/data-models/dynts-scoped-config.data-model';
11
+
12
+ /**
13
+ * `DyNTS_ScopedConfig_DataService` — a `dynts_scoped_config` collection CRUD + soft-delete history-rétege
14
+ * (BFR-AM-004). `extends DyNTS_DataService`; `addArchive: true` → a felülírt (régi) értékek
15
+ * soft-delete-elve megőrződnek (audit-trail). A nts-konvenció szerinti `{ data?, issuer }` constructor.
16
+ *
17
+ * **FIGYELEM (memory: dynts_dataservice_eager_resolve):** a `DyNTS_DataService` base-ctor EAGER
18
+ * `getDBService`-t hív → a control-service NEM tarthat élő data-service-példányt mezőként; minden
19
+ * művelet előtt lazy `new DyNTS_ScopedConfig_DataService(...)` kell.
20
+ *
21
+ * **A `value` írása `$set`-tel atomikus** (Mongoose Mixed silent-drop ellen — memory:
22
+ * mongoose_mixed_atomic_write): a `findOne→mutate→save` SILENT-DROP-ot ad a Mixed mezőkre, ezért az
23
+ * érték-frissítést a `setValue` `updateOne({ ... }, { $set: { value } })`-vel végzi.
24
+ */
25
+ export class DyNTS_ScopedConfig_DataService extends DyNTS_DataService<DyNTS_ScopedConfig_DataModel> {
26
+
27
+ constructor(
28
+ set: {
29
+ data?: DyNTS_ScopedConfig_DataModel,
30
+ issuer: string,
31
+ },
32
+ ) {
33
+ super(
34
+ set.data instanceof DyNTS_ScopedConfig_DataModel ? set.data : new DyNTS_ScopedConfig_DataModel(set.data),
35
+ dyNTS_scopedConfig_dataParams,
36
+ set.issuer,
37
+ );
38
+ }
39
+
40
+ /**
41
+ * Az archív (soft-delete-elt) rekordokhoz tartozó data-service (a base override-ja). A
42
+ * `DyNTS_DataService.deleteData` ezen át archiválja a felülírt aktív rekordokat (history).
43
+ */
44
+ override getArchiveDataService(): DyNTS_ArchiveDataService<DyNTS_ScopedConfig_DataModel> {
45
+ return new DyNTS_ArchiveDataService<DyNTS_ScopedConfig_DataModel>(
46
+ this.data,
47
+ dyNTS_scopedConfig_dataParams,
48
+ this.issuer,
49
+ );
50
+ }
51
+
52
+ /**
53
+ * Egy adott feloldási-kulcson (`level`+`tableScope`+`scopeId`+`key`) az AKTÍV (nem soft-delete-elt)
54
+ * rekord. Az aktív rekordon a `_deleted` Date soft-delete marker nincs beállítva.
55
+ */
56
+ async findActive(filter: DyFM_DBFilter<DyNTS_ScopedConfig_DataModel>): Promise<DyNTS_ScopedConfig_DataModel> {
57
+ return this.findData(filter, true);
58
+ }
59
+
60
+ /**
61
+ * Az adott kontextusra konfigurált ÖSSZES aktív rekord (a `resolveAll` egy Mongo-köre).
62
+ */
63
+ async findActiveList(filter: DyFM_DBFilter<DyNTS_ScopedConfig_DataModel>): Promise<DyNTS_ScopedConfig_DataModel[]> {
64
+ return this.findDataList(filter, true);
65
+ }
66
+
67
+ /**
68
+ * Egy létező aktív rekord `value`-jának ATOMIKUS frissítése (`$set`). A Mixed mező `findOne→mutate→
69
+ * save` útján SILENT-DROP-ot adna; a `$set` ezt elkerüli (memory: mongoose_mixed_atomic_write). A
70
+ * `setBy`/`setByDetail`/`note` audit-mezők is frissülnek.
71
+ */
72
+ async setValue(
73
+ id: string,
74
+ value: unknown,
75
+ audit: { setBy?: string, setByDetail?: string, note?: string } = {},
76
+ ): Promise<void> {
77
+ await this.updateData({
78
+ filterBy: { _id: id } as DyFM_DBFilterSimple<DyNTS_ScopedConfig_DataModel>,
79
+ update: {
80
+ $set: {
81
+ value: value,
82
+ setBy: audit.setBy,
83
+ setByDetail: audit.setByDetail,
84
+ note: audit.note,
85
+ },
86
+ },
87
+ });
88
+ }
89
+
90
+ /** A `(level, tableScope, scopeId, key)` feloldási-kulcs filtere (a logikai unique-constraint). */
91
+ static levelKeyFilter(
92
+ level: DyNTS_ScopedConfig_Level,
93
+ key: string,
94
+ set: { tableScope?: string, scopeId?: string },
95
+ ): DyFM_DBFilterSimple<DyNTS_ScopedConfig_DataModel> {
96
+ const filter: DyFM_DBFilterSimple<DyNTS_ScopedConfig_DataModel> = { level: level, key: key };
97
+ if (level === DyNTS_ScopedConfig_Level.table || level === DyNTS_ScopedConfig_Level.scope) {
98
+ filter.tableScope = set.tableScope;
99
+ }
100
+ if (level === DyNTS_ScopedConfig_Level.scope) {
101
+ filter.scopeId = set.scopeId;
102
+ }
103
+ return filter;
104
+ }
105
+ }
@@ -0,0 +1,17 @@
1
+
2
+
3
+ // SCOPED-CONFIG MODULE (BFR-AM-004) — DB-backed, domain-agnostic scoped config precedence engine.
4
+ // Precedencia: scope (leaf→root) > table > global > builtinDefault.
5
+
6
+ // ENUMS
7
+ export * from './_enums/dynts-scoped-config-level.enum';
8
+
9
+ // INTERFACES
10
+ export * from './_models/interfaces/dynts-scoped-config.interface';
11
+
12
+ // DATA-MODELS
13
+ export * from './_models/data-models/dynts-scoped-config.data-model';
14
+
15
+ // SERVICES
16
+ export * from './_services/dynts-scoped-config.data-service';
17
+ export * from './_services/dynts-scoped-config.control-service';