@getstrata/bootstrap 0.2.17 → 0.2.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/bootstrap/contracts.d.ts +6 -50
- package/dist/core/contracts/applicationContext.d.ts +7 -18
- package/dist/core/contracts/container.d.ts +30 -0
- package/dist/core/contracts/di.d.ts +31 -0
- package/dist/core/contracts/serviceContainer.d.ts +1 -5
- package/dist/core/runtime/applicationRegistry.d.ts +2 -2
- package/dist/entries/applicationRegistry.js +15 -3
- package/dist/entries/context.js +16 -25
- package/dist/entries/contracts.js +2 -1
- package/dist/entries/http/securedRouteModelBinding.js +15 -3
- package/dist/entries/membershipService.js +15 -3
- package/dist/entries/providers.js +15 -3
- package/dist/entries/queue/defaultJobs.js +15 -3
- package/dist/entries/web/routing.js +15 -3
- package/dist/framework/public-api.d.ts +3 -2
- package/dist/index.js +17 -25
- package/package.json +2 -2
|
@@ -1,48 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
type
|
|
5
|
-
type
|
|
6
|
-
declare class ServiceContainer {
|
|
7
|
-
private readonly services;
|
|
8
|
-
private readonly singletonFactories;
|
|
9
|
-
private readonly bindings;
|
|
10
|
-
set<T>(key: string, value: T): T;
|
|
11
|
-
singleton<T>(key: string, factory: ServiceFactory<T>): void;
|
|
12
|
-
bind<T>(key: string, factory: ServiceFactory<T>): void;
|
|
13
|
-
get<T>(key: string): T;
|
|
14
|
-
resolve<T>(key: string): T;
|
|
15
|
-
has(key: string): boolean;
|
|
16
|
-
}
|
|
17
|
-
declare class ConfigStore {
|
|
18
|
-
private readonly values;
|
|
19
|
-
set<T>(key: string, value: T): T;
|
|
20
|
-
get<T>(key: string): T | undefined;
|
|
21
|
-
require<T>(key: string): T;
|
|
22
|
-
has(key: string): boolean;
|
|
23
|
-
}
|
|
24
|
-
interface AppDependencies {
|
|
25
|
-
container: ServiceContainer;
|
|
26
|
-
cache: CacheLike;
|
|
27
|
-
storage: StorageManager;
|
|
28
|
-
}
|
|
29
|
-
type MutableAppDependencies = Partial<Omit<AppDependencies, "container">> & Pick<AppDependencies, "container">;
|
|
30
|
-
interface ProviderContext {
|
|
31
|
-
container: ServiceContainer;
|
|
32
|
-
config: ConfigStore;
|
|
33
|
-
dependencies: MutableAppDependencies;
|
|
34
|
-
}
|
|
35
|
-
import type { HttpKernel } from "./httpKernel";
|
|
1
|
+
export { ConfigStore, type ConfigStoreLike, ServiceContainer, type ServiceContainerLike, } from "../core/contracts/container.ts";
|
|
2
|
+
export type { AppContext, AppDependencies, AppRouteMap, CachedJson, MutableAppDependencies, ProviderContext, ServiceFactory, ServiceProvider, } from "../core/contracts/di.ts";
|
|
3
|
+
export { assertAppDependenciesComplete, getRequiredDependency, resolveService, } from "../core/contracts/di.ts";
|
|
4
|
+
import type { AppDependencies, AppRouteMap, CachedJson, ServiceProvider } from "../core/contracts/di.ts";
|
|
5
|
+
import type { HttpKernel } from "./httpKernel.ts";
|
|
36
6
|
interface ModuleRouteContext {
|
|
37
7
|
dependencies: AppDependencies;
|
|
38
8
|
cachedJson: CachedJson;
|
|
39
9
|
kernel: HttpKernel;
|
|
40
10
|
}
|
|
41
|
-
interface ServiceProvider {
|
|
42
|
-
name: string;
|
|
43
|
-
register?(context: ProviderContext): void;
|
|
44
|
-
boot?(context: ProviderContext): void;
|
|
45
|
-
}
|
|
46
11
|
interface AppModule {
|
|
47
12
|
name: string;
|
|
48
13
|
order?: number;
|
|
@@ -53,13 +18,4 @@ interface AppModule {
|
|
|
53
18
|
routes?(context: ModuleRouteContext): AppRouteMap;
|
|
54
19
|
webRoutes?(context: ModuleRouteContext): AppRouteMap;
|
|
55
20
|
}
|
|
56
|
-
|
|
57
|
-
container: ServiceContainer;
|
|
58
|
-
config: ConfigStore;
|
|
59
|
-
dependencies: AppDependencies;
|
|
60
|
-
}
|
|
61
|
-
declare function getRequiredDependency<K extends keyof AppDependencies>(dependencies: Partial<AppDependencies>, key: K): AppDependencies[K];
|
|
62
|
-
declare function assertAppDependenciesComplete(dependencies: MutableAppDependencies): asserts dependencies is AppDependencies;
|
|
63
|
-
declare function resolveService<T>(dependencies: AppDependencies, token: string): T;
|
|
64
|
-
export type { AppContext, AppDependencies, AppModule, AppRouteMap, CachedJson, ModuleRouteContext, MutableAppDependencies, ProviderContext, ServiceFactory, ServiceProvider, };
|
|
65
|
-
export { assertAppDependenciesComplete, ConfigStore, getRequiredDependency, resolveService, ServiceContainer, };
|
|
21
|
+
export type { AppModule, ModuleRouteContext };
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
cache: CacheLike;
|
|
9
|
-
storage?: unknown;
|
|
10
|
-
}
|
|
11
|
-
interface ApplicationContext {
|
|
12
|
-
container: ServiceContainerLike;
|
|
13
|
-
config: ConfigStoreLike;
|
|
14
|
-
dependencies: ApplicationDependenciesLike;
|
|
15
|
-
}
|
|
16
|
-
declare function getRequiredDependency<K extends keyof ApplicationDependenciesLike>(dependencies: Partial<ApplicationDependenciesLike>, key: K): ApplicationDependenciesLike[K];
|
|
17
|
-
export type { ApplicationContext, ApplicationDependenciesLike, ConfigStoreLike };
|
|
18
|
-
export { getRequiredDependency };
|
|
1
|
+
import type { AppContext, AppDependencies } from "./di";
|
|
2
|
+
/** @deprecated Use AppContext from @getstrata/core/contracts/di */
|
|
3
|
+
type ApplicationContext = AppContext;
|
|
4
|
+
/** @deprecated Use AppDependencies from @getstrata/core/contracts/di */
|
|
5
|
+
type ApplicationDependenciesLike = AppDependencies;
|
|
6
|
+
export { getRequiredDependency } from "./di";
|
|
7
|
+
export type { ApplicationContext, ApplicationDependenciesLike };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
type ServiceFactory<T> = (container: ServiceContainer) => T;
|
|
2
|
+
interface ServiceContainerLike {
|
|
3
|
+
has(key: string): boolean;
|
|
4
|
+
resolve<T>(key: string): T;
|
|
5
|
+
}
|
|
6
|
+
declare class ServiceContainer implements ServiceContainerLike {
|
|
7
|
+
private readonly services;
|
|
8
|
+
private readonly singletonFactories;
|
|
9
|
+
private readonly bindings;
|
|
10
|
+
set<T>(key: string, value: T): T;
|
|
11
|
+
singleton<T>(key: string, factory: ServiceFactory<T>): void;
|
|
12
|
+
bind<T>(key: string, factory: ServiceFactory<T>): void;
|
|
13
|
+
get<T>(key: string): T;
|
|
14
|
+
resolve<T>(key: string): T;
|
|
15
|
+
has(key: string): boolean;
|
|
16
|
+
}
|
|
17
|
+
interface ConfigStoreLike {
|
|
18
|
+
get<T>(key: string): T | undefined;
|
|
19
|
+
require<T>(key: string): T;
|
|
20
|
+
has(key: string): boolean;
|
|
21
|
+
}
|
|
22
|
+
declare class ConfigStore implements ConfigStoreLike {
|
|
23
|
+
private readonly values;
|
|
24
|
+
set<T>(key: string, value: T): T;
|
|
25
|
+
get<T>(key: string): T | undefined;
|
|
26
|
+
require<T>(key: string): T;
|
|
27
|
+
has(key: string): boolean;
|
|
28
|
+
}
|
|
29
|
+
export type { ConfigStoreLike, ServiceContainerLike, ServiceFactory };
|
|
30
|
+
export { ConfigStore, ServiceContainer };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CacheLike } from "../../types/services";
|
|
2
|
+
import type { StorageManager } from "../storage/storage";
|
|
3
|
+
import type { ConfigStore, ConfigStoreLike, ServiceContainer, ServiceFactory } from "./container";
|
|
4
|
+
type AppRouteMap = Record<string, any>;
|
|
5
|
+
type CachedJson = <T>(cacheKey: string, loader: () => Promise<T>, tags?: string[], request?: Request) => Promise<Response>;
|
|
6
|
+
interface AppDependencies {
|
|
7
|
+
container: ServiceContainer;
|
|
8
|
+
cache: CacheLike;
|
|
9
|
+
storage: StorageManager;
|
|
10
|
+
}
|
|
11
|
+
type MutableAppDependencies = Partial<Omit<AppDependencies, "container">> & Pick<AppDependencies, "container">;
|
|
12
|
+
interface ProviderContext {
|
|
13
|
+
container: ServiceContainer;
|
|
14
|
+
config: ConfigStore;
|
|
15
|
+
dependencies: MutableAppDependencies;
|
|
16
|
+
}
|
|
17
|
+
interface ServiceProvider {
|
|
18
|
+
name: string;
|
|
19
|
+
register?(context: ProviderContext): void;
|
|
20
|
+
boot?(context: ProviderContext): void;
|
|
21
|
+
}
|
|
22
|
+
interface AppContext {
|
|
23
|
+
container: ServiceContainer;
|
|
24
|
+
config: ConfigStoreLike;
|
|
25
|
+
dependencies: AppDependencies;
|
|
26
|
+
}
|
|
27
|
+
declare function getRequiredDependency<K extends keyof AppDependencies>(dependencies: Partial<AppDependencies>, key: K): AppDependencies[K];
|
|
28
|
+
declare function assertAppDependenciesComplete(dependencies: MutableAppDependencies): asserts dependencies is AppDependencies;
|
|
29
|
+
declare function resolveService<T>(dependencies: AppDependencies, token: string): T;
|
|
30
|
+
export type { AppContext, AppDependencies, AppRouteMap, CachedJson, MutableAppDependencies, ProviderContext, ServiceFactory, ServiceProvider, };
|
|
31
|
+
export { assertAppDependenciesComplete, getRequiredDependency, resolveService };
|
|
@@ -9,7 +9,7 @@ declare function resolveApplicationCache(): CacheLike;
|
|
|
9
9
|
declare function resolveApplicationQueue(): Queue;
|
|
10
10
|
declare function resolveApplicationAuth(): AuthManager;
|
|
11
11
|
declare function resolveApplicationPolicyGate(): PolicyGate;
|
|
12
|
-
declare function resolveApplicationConfig(): import("../contracts/
|
|
12
|
+
declare function resolveApplicationConfig(): import("../contracts/container").ConfigStoreLike;
|
|
13
13
|
declare function resolveApplicationLogger(): Logger;
|
|
14
|
-
declare function resolveApplicationDependencies(): import("../contracts/
|
|
14
|
+
declare function resolveApplicationDependencies(): import("../contracts/di").AppDependencies;
|
|
15
15
|
export { resolveApplicationAuth, resolveApplicationCache, resolveApplicationConfig, resolveApplicationDependencies, resolveApplicationLogger, resolveApplicationPolicyGate, resolveApplicationQueue, setActiveApplicationContext, };
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// ../../src/core/contracts/
|
|
2
|
+
// ../../src/core/contracts/di.ts
|
|
3
|
+
var requiredDependencyKeys = [
|
|
4
|
+
"container",
|
|
5
|
+
"cache",
|
|
6
|
+
"storage"
|
|
7
|
+
];
|
|
3
8
|
function getRequiredDependency(dependencies, key) {
|
|
4
9
|
const dependency = dependencies[key];
|
|
5
10
|
if (dependency === undefined) {
|
|
6
|
-
throw new Error(`Required dependency "${
|
|
11
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
7
12
|
}
|
|
8
13
|
return dependency;
|
|
9
14
|
}
|
|
10
|
-
|
|
15
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
16
|
+
for (const key of requiredDependencyKeys) {
|
|
17
|
+
getRequiredDependency(dependencies, key);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function resolveService(dependencies, token) {
|
|
21
|
+
return dependencies.container.resolve(token);
|
|
22
|
+
}
|
|
11
23
|
// ../../src/core/contracts/serviceTokens.ts
|
|
12
24
|
var CORE_CONFIG_TOKEN = "core.config";
|
|
13
25
|
var CORE_CACHE_TOKEN = "core.cache";
|
package/dist/entries/context.js
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// ../../src/core/contracts/
|
|
2
|
+
// ../../src/core/contracts/di.ts
|
|
3
|
+
var requiredDependencyKeys = [
|
|
4
|
+
"container",
|
|
5
|
+
"cache",
|
|
6
|
+
"storage"
|
|
7
|
+
];
|
|
3
8
|
function getRequiredDependency(dependencies, key) {
|
|
4
9
|
const dependency = dependencies[key];
|
|
5
10
|
if (dependency === undefined) {
|
|
6
|
-
throw new Error(`Required dependency "${
|
|
11
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
7
12
|
}
|
|
8
13
|
return dependency;
|
|
9
14
|
}
|
|
10
|
-
|
|
15
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
16
|
+
for (const key of requiredDependencyKeys) {
|
|
17
|
+
getRequiredDependency(dependencies, key);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function resolveService(dependencies, token) {
|
|
21
|
+
return dependencies.container.resolve(token);
|
|
22
|
+
}
|
|
11
23
|
// ../../src/core/contracts/serviceTokens.ts
|
|
12
24
|
var CORE_CONFIG_TOKEN = "core.config";
|
|
13
25
|
var CORE_CACHE_TOKEN = "core.cache";
|
|
@@ -97,7 +109,7 @@ function resolveApplicationLogger() {
|
|
|
97
109
|
function resolveApplicationDependencies() {
|
|
98
110
|
return requireActiveApplicationContext().dependencies;
|
|
99
111
|
}
|
|
100
|
-
// ../../src/
|
|
112
|
+
// ../../src/core/contracts/container.ts
|
|
101
113
|
class ServiceContainer {
|
|
102
114
|
services = new Map;
|
|
103
115
|
singletonFactories = new Map;
|
|
@@ -161,27 +173,6 @@ class ConfigStore {
|
|
|
161
173
|
return this.values.has(key);
|
|
162
174
|
}
|
|
163
175
|
}
|
|
164
|
-
var requiredDependencyKeys = [
|
|
165
|
-
"container",
|
|
166
|
-
"cache",
|
|
167
|
-
"storage"
|
|
168
|
-
];
|
|
169
|
-
function getRequiredDependency2(dependencies, key) {
|
|
170
|
-
const dependency = dependencies[key];
|
|
171
|
-
if (dependency === undefined) {
|
|
172
|
-
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
173
|
-
}
|
|
174
|
-
return dependency;
|
|
175
|
-
}
|
|
176
|
-
function assertAppDependenciesComplete(dependencies) {
|
|
177
|
-
for (const key of requiredDependencyKeys) {
|
|
178
|
-
getRequiredDependency2(dependencies, key);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
function resolveService(dependencies, token) {
|
|
182
|
-
return dependencies.container.resolve(token);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
176
|
// ../../src/bootstrap/discoverModules.ts
|
|
186
177
|
var appModules = [];
|
|
187
178
|
function discoverModules() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// ../../src/
|
|
2
|
+
// ../../src/core/contracts/container.ts
|
|
3
3
|
class ServiceContainer {
|
|
4
4
|
services = new Map;
|
|
5
5
|
singletonFactories = new Map;
|
|
@@ -63,6 +63,7 @@ class ConfigStore {
|
|
|
63
63
|
return this.values.has(key);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
+
// ../../src/core/contracts/di.ts
|
|
66
67
|
var requiredDependencyKeys = [
|
|
67
68
|
"container",
|
|
68
69
|
"cache",
|
|
@@ -64,15 +64,27 @@ class PreconditionFailedError extends HttpError {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
// ../../src/core/contracts/
|
|
67
|
+
// ../../src/core/contracts/di.ts
|
|
68
|
+
var requiredDependencyKeys = [
|
|
69
|
+
"container",
|
|
70
|
+
"cache",
|
|
71
|
+
"storage"
|
|
72
|
+
];
|
|
68
73
|
function getRequiredDependency(dependencies, key) {
|
|
69
74
|
const dependency = dependencies[key];
|
|
70
75
|
if (dependency === undefined) {
|
|
71
|
-
throw new Error(`Required dependency "${
|
|
76
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
72
77
|
}
|
|
73
78
|
return dependency;
|
|
74
79
|
}
|
|
75
|
-
|
|
80
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
81
|
+
for (const key of requiredDependencyKeys) {
|
|
82
|
+
getRequiredDependency(dependencies, key);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function resolveService(dependencies, token) {
|
|
86
|
+
return dependencies.container.resolve(token);
|
|
87
|
+
}
|
|
76
88
|
// ../../src/core/contracts/serviceTokens.ts
|
|
77
89
|
var CORE_CONFIG_TOKEN = "core.config";
|
|
78
90
|
var CORE_CACHE_TOKEN = "core.cache";
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// ../../src/core/contracts/
|
|
2
|
+
// ../../src/core/contracts/di.ts
|
|
3
|
+
var requiredDependencyKeys = [
|
|
4
|
+
"container",
|
|
5
|
+
"cache",
|
|
6
|
+
"storage"
|
|
7
|
+
];
|
|
3
8
|
function getRequiredDependency(dependencies, key) {
|
|
4
9
|
const dependency = dependencies[key];
|
|
5
10
|
if (dependency === undefined) {
|
|
6
|
-
throw new Error(`Required dependency "${
|
|
11
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
7
12
|
}
|
|
8
13
|
return dependency;
|
|
9
14
|
}
|
|
10
|
-
|
|
15
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
16
|
+
for (const key of requiredDependencyKeys) {
|
|
17
|
+
getRequiredDependency(dependencies, key);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function resolveService(dependencies, token) {
|
|
21
|
+
return dependencies.container.resolve(token);
|
|
22
|
+
}
|
|
11
23
|
// ../../src/core/contracts/serviceTokens.ts
|
|
12
24
|
var CORE_CONFIG_TOKEN = "core.config";
|
|
13
25
|
var CORE_CACHE_TOKEN = "core.cache";
|
|
@@ -3244,15 +3244,27 @@ function createAppQueue(driver, redisUrl, failedJobs = createFailedJobService(),
|
|
|
3244
3244
|
});
|
|
3245
3245
|
}
|
|
3246
3246
|
|
|
3247
|
-
// ../../src/core/contracts/
|
|
3247
|
+
// ../../src/core/contracts/di.ts
|
|
3248
|
+
var requiredDependencyKeys = [
|
|
3249
|
+
"container",
|
|
3250
|
+
"cache",
|
|
3251
|
+
"storage"
|
|
3252
|
+
];
|
|
3248
3253
|
function getRequiredDependency(dependencies, key) {
|
|
3249
3254
|
const dependency = dependencies[key];
|
|
3250
3255
|
if (dependency === undefined) {
|
|
3251
|
-
throw new Error(`Required dependency "${
|
|
3256
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
3252
3257
|
}
|
|
3253
3258
|
return dependency;
|
|
3254
3259
|
}
|
|
3255
|
-
|
|
3260
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
3261
|
+
for (const key of requiredDependencyKeys) {
|
|
3262
|
+
getRequiredDependency(dependencies, key);
|
|
3263
|
+
}
|
|
3264
|
+
}
|
|
3265
|
+
function resolveService(dependencies, token) {
|
|
3266
|
+
return dependencies.container.resolve(token);
|
|
3267
|
+
}
|
|
3256
3268
|
// ../../src/core/logging/logger.ts
|
|
3257
3269
|
class Logger {
|
|
3258
3270
|
channel;
|
|
@@ -384,15 +384,27 @@ function readSharedJobRegistry() {
|
|
|
384
384
|
}
|
|
385
385
|
var jobRegistry = readSharedJobRegistry();
|
|
386
386
|
|
|
387
|
-
// ../../src/core/contracts/
|
|
387
|
+
// ../../src/core/contracts/di.ts
|
|
388
|
+
var requiredDependencyKeys = [
|
|
389
|
+
"container",
|
|
390
|
+
"cache",
|
|
391
|
+
"storage"
|
|
392
|
+
];
|
|
388
393
|
function getRequiredDependency(dependencies, key) {
|
|
389
394
|
const dependency = dependencies[key];
|
|
390
395
|
if (dependency === undefined) {
|
|
391
|
-
throw new Error(`Required dependency "${
|
|
396
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
392
397
|
}
|
|
393
398
|
return dependency;
|
|
394
399
|
}
|
|
395
|
-
|
|
400
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
401
|
+
for (const key of requiredDependencyKeys) {
|
|
402
|
+
getRequiredDependency(dependencies, key);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
function resolveService(dependencies, token) {
|
|
406
|
+
return dependencies.container.resolve(token);
|
|
407
|
+
}
|
|
396
408
|
// ../../src/core/contracts/serviceTokens.ts
|
|
397
409
|
var CORE_CONFIG_TOKEN = "core.config";
|
|
398
410
|
var CORE_CACHE_TOKEN = "core.cache";
|
|
@@ -67,15 +67,27 @@ class PreconditionFailedError extends HttpError {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
// ../../src/core/contracts/
|
|
70
|
+
// ../../src/core/contracts/di.ts
|
|
71
|
+
var requiredDependencyKeys = [
|
|
72
|
+
"container",
|
|
73
|
+
"cache",
|
|
74
|
+
"storage"
|
|
75
|
+
];
|
|
71
76
|
function getRequiredDependency(dependencies, key) {
|
|
72
77
|
const dependency = dependencies[key];
|
|
73
78
|
if (dependency === undefined) {
|
|
74
|
-
throw new Error(`Required dependency "${
|
|
79
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
75
80
|
}
|
|
76
81
|
return dependency;
|
|
77
82
|
}
|
|
78
|
-
|
|
83
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
84
|
+
for (const key of requiredDependencyKeys) {
|
|
85
|
+
getRequiredDependency(dependencies, key);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function resolveService(dependencies, token) {
|
|
89
|
+
return dependencies.container.resolve(token);
|
|
90
|
+
}
|
|
79
91
|
// ../../src/core/contracts/serviceTokens.ts
|
|
80
92
|
var CORE_CONFIG_TOKEN = "core.config";
|
|
81
93
|
var CORE_CACHE_TOKEN = "core.cache";
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
* Stable framework surface for application modules and future package extraction.
|
|
3
3
|
* Import from `@getstrata/core` (workspace) or `src/framework/public-api`.
|
|
4
4
|
*/
|
|
5
|
-
export type { ServiceProvider } from "../bootstrap/contracts.ts";
|
|
6
|
-
export { ConfigStore, resolveService, ServiceContainer, } from "../bootstrap/contracts.ts";
|
|
7
5
|
export type { AdminColumn, AdminColumnType, AdminResource, AdminResourceDefinition, AdminResourceHandlers, } from "../core/admin/index.ts";
|
|
8
6
|
export { AdminResourceRegistry, formatAdminValue, } from "../core/admin/index.ts";
|
|
9
7
|
export type { AbilityChecker } from "../core/auth/abilityChecker.ts";
|
|
@@ -21,6 +19,9 @@ export { createScimAuthMiddleware } from "../core/auth/scimAuthMiddleware.ts";
|
|
|
21
19
|
export { type CacheDriver, type CreateCacheStoreOptions, createCacheStore, } from "../core/cache/createCacheStore.ts";
|
|
22
20
|
export { default as CacheRepository } from "../core/cache/repository.ts";
|
|
23
21
|
export { CACHE_TAGS } from "../core/cache/tags.ts";
|
|
22
|
+
export { ConfigStore, ServiceContainer } from "../core/contracts/container.ts";
|
|
23
|
+
export type { ServiceProvider } from "../core/contracts/di.ts";
|
|
24
|
+
export { resolveService } from "../core/contracts/di.ts";
|
|
24
25
|
export type { DatabaseConnection } from "../core/database/baseRepository.ts";
|
|
25
26
|
export { default as BaseRepository } from "../core/database/baseRepository.ts";
|
|
26
27
|
export { bindDatabaseConnection } from "../core/database/bindConnection.ts";
|
package/dist/index.js
CHANGED
|
@@ -503,15 +503,27 @@ async function scheduleRunCommand() {
|
|
|
503
503
|
}
|
|
504
504
|
await runDueScheduledTasks(appSchedule);
|
|
505
505
|
}
|
|
506
|
-
// ../../src/core/contracts/
|
|
506
|
+
// ../../src/core/contracts/di.ts
|
|
507
|
+
var requiredDependencyKeys = [
|
|
508
|
+
"container",
|
|
509
|
+
"cache",
|
|
510
|
+
"storage"
|
|
511
|
+
];
|
|
507
512
|
function getRequiredDependency(dependencies, key) {
|
|
508
513
|
const dependency = dependencies[key];
|
|
509
514
|
if (dependency === undefined) {
|
|
510
|
-
throw new Error(`Required dependency "${
|
|
515
|
+
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
511
516
|
}
|
|
512
517
|
return dependency;
|
|
513
518
|
}
|
|
514
|
-
|
|
519
|
+
function assertAppDependenciesComplete(dependencies) {
|
|
520
|
+
for (const key of requiredDependencyKeys) {
|
|
521
|
+
getRequiredDependency(dependencies, key);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
function resolveService(dependencies, token) {
|
|
525
|
+
return dependencies.container.resolve(token);
|
|
526
|
+
}
|
|
515
527
|
// ../../src/core/contracts/serviceTokens.ts
|
|
516
528
|
var CORE_CONFIG_TOKEN = "core.config";
|
|
517
529
|
var CORE_CACHE_TOKEN = "core.cache";
|
|
@@ -595,7 +607,7 @@ var DEFAULT_CACHE_MAX_ENTRIES = 100;
|
|
|
595
607
|
var DEFAULT_CACHE_DRIVER = "array";
|
|
596
608
|
var DEFAULT_API_TOKEN = "";
|
|
597
609
|
var DEFAULT_QUEUE_DRIVER = "sync";
|
|
598
|
-
// ../../src/
|
|
610
|
+
// ../../src/core/contracts/container.ts
|
|
599
611
|
class ServiceContainer {
|
|
600
612
|
services = new Map;
|
|
601
613
|
singletonFactories = new Map;
|
|
@@ -659,26 +671,6 @@ class ConfigStore {
|
|
|
659
671
|
return this.values.has(key);
|
|
660
672
|
}
|
|
661
673
|
}
|
|
662
|
-
var requiredDependencyKeys = [
|
|
663
|
-
"container",
|
|
664
|
-
"cache",
|
|
665
|
-
"storage"
|
|
666
|
-
];
|
|
667
|
-
function getRequiredDependency2(dependencies, key) {
|
|
668
|
-
const dependency = dependencies[key];
|
|
669
|
-
if (dependency === undefined) {
|
|
670
|
-
throw new Error(`Required dependency "${key}" is not registered.`);
|
|
671
|
-
}
|
|
672
|
-
return dependency;
|
|
673
|
-
}
|
|
674
|
-
function assertAppDependenciesComplete(dependencies) {
|
|
675
|
-
for (const key of requiredDependencyKeys) {
|
|
676
|
-
getRequiredDependency2(dependencies, key);
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
function resolveService(dependencies, token) {
|
|
680
|
-
return dependencies.container.resolve(token);
|
|
681
|
-
}
|
|
682
674
|
// ../../src/config/auth.ts
|
|
683
675
|
var authConfig = {
|
|
684
676
|
allowDevHeaders: (process.env.AUTH_DEV_HEADERS ?? "true") !== "false",
|
|
@@ -5291,7 +5283,7 @@ export {
|
|
|
5291
5283
|
prefixRouteMap,
|
|
5292
5284
|
parseFormBody,
|
|
5293
5285
|
mergeWebRoutes,
|
|
5294
|
-
|
|
5286
|
+
getRequiredDependency,
|
|
5295
5287
|
discoverModelTableNames,
|
|
5296
5288
|
createWebServer,
|
|
5297
5289
|
createWebRoutes,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/bootstrap",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.19",
|
|
4
4
|
"description": "Strata application bootstrap — HttpKernel, DI, web session helpers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"access": "public"
|
|
120
120
|
},
|
|
121
121
|
"peerDependencies": {
|
|
122
|
-
"@getstrata/core": "^0.5.
|
|
122
|
+
"@getstrata/core": "^0.5.27",
|
|
123
123
|
"typescript": "^5.9.0"
|
|
124
124
|
}
|
|
125
125
|
}
|