@cosmicdrift/kumiko-server-runtime 0.355.0 → 0.356.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.
@@ -15,9 +15,13 @@
15
15
  import { createAuthEmailPasswordFeature, createAuthSelfRegistrationToggleFeature, } from "@cosmicdrift/kumiko-bundled-features/auth-email-password";
16
16
  import { AUTH_MFA_FEATURE, mfaStatusCheckerFromFeature, } from "@cosmicdrift/kumiko-bundled-features/auth-mfa";
17
17
  import { createConfigFeature } from "@cosmicdrift/kumiko-bundled-features/config";
18
+ import { createFilesTenantDataFeature } from "@cosmicdrift/kumiko-bundled-features/files-tenant-data";
18
19
  import { collectAssignableAppRoles, createTenantFeature, } from "@cosmicdrift/kumiko-bundled-features/tenant";
20
+ import { TENANT_LIFECYCLE_FEATURE } from "@cosmicdrift/kumiko-bundled-features/tenant-lifecycle";
19
21
  import { createUserFeature } from "@cosmicdrift/kumiko-bundled-features/user";
20
22
  import { dedupeFeatures } from "@cosmicdrift/kumiko-framework/engine";
23
+ const FILES_FEATURE = "files";
24
+ const FILES_TENANT_DATA_FEATURE = "files-tenant-data";
21
25
  export function composeFeatures(appFeatures, options) {
22
26
  // ponytail: includeBundled:false skips the auth-mfa auto-wiring below —
23
27
  // an app composing its own foundation and mounting auth-mfa itself is
@@ -76,7 +80,16 @@ export function composeFeatures(appFeatures, options) {
76
80
  }
77
81
  filteredApp.push(f);
78
82
  }
79
- return [...bundled, ...filteredApp];
83
+ const names = new Set(filteredApp.map((f) => f.name));
84
+ // Without it, tenant destroy leaves fileRef rows and stored binaries behind.
85
+ const needsFilesTenantData = names.has(FILES_FEATURE) &&
86
+ names.has(TENANT_LIFECYCLE_FEATURE) &&
87
+ !names.has(FILES_TENANT_DATA_FEATURE);
88
+ return [
89
+ ...bundled,
90
+ ...filteredApp,
91
+ ...(needsFilesTenantData ? [createFilesTenantDataFeature()] : []),
92
+ ];
80
93
  }
81
94
  // The magic-link mail fields shared by all five flows. Conditional spreads omit
82
95
  // undefined keys (exactOptionalPropertyTypes) and avoid the property-write that
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-server-runtime",
3
- "version": "0.355.0",
3
+ "version": "0.356.0",
4
4
  "description": "Production server-boot runtime for Kumiko apps: connections, schema-drift-gate, seeds, lifecycle, graceful shutdown. Symmetric to kumiko-dev-server's runDevApp, without dev/scaffold/codegen tooling.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -84,11 +84,11 @@
84
84
  }
85
85
  },
86
86
  "dependencies": {
87
- "@cosmicdrift/kumiko-bundled-features": "0.355.0",
88
- "@cosmicdrift/kumiko-framework": "0.355.0",
89
- "@cosmicdrift/kumiko-headless": "0.355.0",
90
- "@cosmicdrift/kumiko-renderer-web": "0.355.0",
91
- "@cosmicdrift/kumiko-types": "0.355.0",
87
+ "@cosmicdrift/kumiko-bundled-features": "0.356.0",
88
+ "@cosmicdrift/kumiko-framework": "0.356.0",
89
+ "@cosmicdrift/kumiko-headless": "0.356.0",
90
+ "@cosmicdrift/kumiko-renderer-web": "0.356.0",
91
+ "@cosmicdrift/kumiko-types": "0.356.0",
92
92
  "bun-types": "^1.3.13",
93
93
  "ioredis": "^5.10.1",
94
94
  "temporal-polyfill": "^0.3.2"
package/src/changes.json CHANGED
@@ -1,4 +1,9 @@
1
1
  [
2
+ {
3
+ "version": "0.356.0",
4
+ "type": "improvement",
5
+ "title": "composeFeatures mounts files-tenant-data when files and tenant-lifecycle are present"
6
+ },
2
7
  {
3
8
  "version": "0.354.0",
4
9
  "type": "fix",