@getstrata/bootstrap 2.0.8 → 2.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @getstrata/bootstrap changelog
2
2
 
3
+ ## 2.1.0
4
+
5
+ - refactor(starter): reuse shared config and base repositories - fix(database): await password casts before model writes - fix(database): preserve concrete model types in query results
6
+
7
+ ## 2.0.9
8
+
9
+ - fix(starter): remove demo credentials from public login defaults
10
+
3
11
  ## 2.0.8
4
12
 
5
13
  - fix(schema): preserve constraints and generate builder migrations
@@ -1,4 +1,4 @@
1
- export { ConfigStore, type ConfigStoreLike, ServiceContainer, type ServiceContainerLike, } from "@getstrata/core/contracts/container";
1
+ export { ConfigStore, type ConfigStoreLike, createServiceToken, ServiceContainer, type ServiceContainerLike, type ServiceToken, } from "@getstrata/core/contracts/container";
2
2
  export type { AppContext, AppDependencies, AppRouteMap, CachedJson, MutableAppDependencies, ProviderContext, ServiceFactory, ServiceProvider, } from "@getstrata/core/contracts/di";
3
3
  export { assertAppDependenciesComplete, getRequiredDependency, resolveService, } from "@getstrata/core/contracts/di";
4
4
  import type { AppDependencies, AppRouteMap, CachedJson, ServiceProvider } from "@getstrata/core/contracts/di";
@@ -9,30 +9,30 @@ declare class HttpKernel {
9
9
  constructor(dependencies: AppDependencies);
10
10
  globalMiddleware(errorFormat?: "json" | "web"): Middleware[];
11
11
  group(name: MiddlewareGroupName): Middleware[];
12
- wrap(groups: MiddlewareGroupName | MiddlewareGroupName[], handler: RouteHandler): RouteHandler;
13
- wrapApi(handler: RouteHandler): RouteHandler;
14
- wrapWeb(handler: RouteHandler): RouteHandler;
12
+ wrap<TRequest extends Request = Request>(groups: MiddlewareGroupName | MiddlewareGroupName[], handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
13
+ wrapApi<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
14
+ wrapWeb<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
15
15
  /** Signed-in HTML users redirect to `home` instead of seeing guest pages. */
16
- wrapWebGuest(handler: RouteHandler, home?: WebGuestHome): RouteHandler;
17
- wrapWebPublicRead(handler: RouteHandler): RouteHandler;
18
- wrapWebAuthenticated(handler: RouteHandler): RouteHandler;
16
+ wrapWebGuest<TRequest extends Request = Request>(handler: RouteHandler<TRequest>, home?: WebGuestHome): RouteHandler<TRequest>;
17
+ wrapWebPublicRead<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
18
+ wrapWebAuthenticated<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
19
19
  /** Signed-in HTML without the email-verified gate (logout, verification notice). */
20
- wrapWebAuthenticatedAllowUnverified(handler: RouteHandler): RouteHandler;
21
- wrapWebVerified(handler: RouteHandler): RouteHandler;
20
+ wrapWebAuthenticatedAllowUnverified<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
21
+ wrapWebVerified<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
22
22
  /** Requires a fresh signed password-confirmation cookie. */
23
- wrapWebPasswordConfirm(handler: RouteHandler): RouteHandler;
24
- wrapWebAbility(ability: string, handler: RouteHandler): RouteHandler;
25
- wrapWebGlobalAdmin(handler: RouteHandler): RouteHandler;
26
- wrapAuthenticated(handler: RouteHandler): RouteHandler;
23
+ wrapWebPasswordConfirm<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
24
+ wrapWebAbility<TRequest extends Request = Request>(ability: string, handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
25
+ wrapWebGlobalAdmin<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
26
+ wrapAuthenticated<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
27
27
  /** JSON routes that require a verified email. No-op when `FEATURE_EMAIL_VERIFICATION` is off. */
28
- wrapVerified(handler: RouteHandler): RouteHandler;
29
- wrapPublicRead(handler: RouteHandler): RouteHandler;
30
- wrapGlobalAdmin(handler: RouteHandler): RouteHandler;
31
- wrapAbility(ability: string, handler: RouteHandler): RouteHandler;
32
- wrapPolicy(resource: string, action: keyof Policy, handler: RouteHandler): RouteHandler;
33
- wrapLogin(handler: RouteHandler): RouteHandler;
34
- wrapSigned(handler: RouteHandler): RouteHandler;
35
- wrapRegister(handler: RouteHandler): RouteHandler;
28
+ wrapVerified<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
29
+ wrapPublicRead<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
30
+ wrapGlobalAdmin<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
31
+ wrapAbility<TRequest extends Request = Request>(ability: string, handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
32
+ wrapPolicy<TRequest extends Request = Request>(resource: string, action: keyof Policy, handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
33
+ wrapLogin<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
34
+ wrapSigned<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
35
+ wrapRegister<TRequest extends Request = Request>(handler: RouteHandler<TRequest>): RouteHandler<TRequest>;
36
36
  private wrapWebAuth;
37
37
  private verifiedMiddleware;
38
38
  private wrapThrottle;
@@ -21,8 +21,8 @@ export declare function wrapSecuredRouteModelByKey<TParams extends Record<string
21
21
  etag?: boolean;
22
22
  }, handler: (request: RouteRequest<TParams>, model: TModel) => Response | Promise<Response>): RouteHandler;
23
23
  /** Web group (CSRF + flash + HTML errors) plus login throttle. Do not wrap with wrapWeb again. */
24
- export declare function wrapWebLogin(kernel: HttpKernel, handler: RouteHandler, onThrottled: (request: Request) => Response | Promise<Response>): RouteHandler;
24
+ export declare function wrapWebLogin<TRequest extends Request = Request>(kernel: HttpKernel, handler: RouteHandler<TRequest>, onThrottled: (request: TRequest) => Response | Promise<Response>): RouteHandler<TRequest>;
25
25
  /** Web group (CSRF + flash + HTML errors) plus register throttle. Do not wrap with wrapWeb again. */
26
- export declare function wrapWebRegister(kernel: HttpKernel, handler: RouteHandler, onThrottled: (request: Request) => Response | Promise<Response>): RouteHandler;
26
+ export declare function wrapWebRegister<TRequest extends Request = Request>(kernel: HttpKernel, handler: RouteHandler<TRequest>, onThrottled: (request: TRequest) => Response | Promise<Response>): RouteHandler<TRequest>;
27
27
  /** Convenience alias for `createHttpKernel`. */
28
28
  export declare function createRouteKernel(dependencies: AppDependencies): HttpKernel;
@@ -15,6 +15,7 @@ import {
15
15
  // ../../src/bootstrap/contracts.ts
16
16
  import {
17
17
  ConfigStore,
18
+ createServiceToken,
18
19
  ServiceContainer
19
20
  } from "@getstrata/core/contracts/container";
20
21
  import {
@@ -2,6 +2,7 @@
2
2
  // ../../src/bootstrap/contracts.ts
3
3
  import {
4
4
  ConfigStore,
5
+ createServiceToken,
5
6
  ServiceContainer
6
7
  } from "@getstrata/core/contracts/container";
7
8
  import {
@@ -13,6 +14,7 @@ export {
13
14
  ConfigStore,
14
15
  ServiceContainer,
15
16
  assertAppDependenciesComplete,
17
+ createServiceToken,
16
18
  getRequiredDependency,
17
19
  resolveService
18
20
  };
@@ -15,6 +15,7 @@ import {
15
15
  // ../../src/bootstrap/contracts.ts
16
16
  import {
17
17
  ConfigStore,
18
+ createServiceToken,
18
19
  ServiceContainer
19
20
  } from "@getstrata/core/contracts/container";
20
21
  import {
package/dist/index.js CHANGED
@@ -530,6 +530,7 @@ function discoverModelTableNames() {
530
530
  // ../../src/bootstrap/contracts.ts
531
531
  import {
532
532
  ConfigStore,
533
+ createServiceToken,
533
534
  ServiceContainer
534
535
  } from "@getstrata/core/contracts/container";
535
536
  import {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/bootstrap",
3
- "version": "2.0.8",
3
+ "version": "2.1.0",
4
4
  "description": "Strata application bootstrap: HttpKernel, DI, web session helpers",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -185,7 +185,7 @@
185
185
  "access": "public"
186
186
  },
187
187
  "peerDependencies": {
188
- "@getstrata/core": "^2.0.8",
188
+ "@getstrata/core": "^2.1.0",
189
189
  "typescript": "^5.9.0 || ^6.0.0 || ^7.0.0"
190
190
  },
191
191
  "engines": {