@cosmicdrift/kumiko-dev-server 0.273.0 → 0.275.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-dev-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.275.0",
|
|
4
4
|
"description": "Dev-tooling for Kumiko apps: local dev-server bootstrap (runDevApp), scaffolding, codegen. Its compose-stacks/env-schema subpaths are consumed at prod boot too — see @cosmicdrift/kumiko-server-runtime for the prod runner itself.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
"kumiko-upgrade": "./bin/kumiko-upgrade.ts"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@cosmicdrift/kumiko-bundled-features": "0.
|
|
63
|
-
"@cosmicdrift/kumiko-framework": "0.
|
|
64
|
-
"@cosmicdrift/kumiko-server-runtime": "0.
|
|
62
|
+
"@cosmicdrift/kumiko-bundled-features": "0.275.0",
|
|
63
|
+
"@cosmicdrift/kumiko-framework": "0.275.0",
|
|
64
|
+
"@cosmicdrift/kumiko-server-runtime": "0.275.0",
|
|
65
65
|
"ts-morph": "^28.0.0"
|
|
66
66
|
},
|
|
67
67
|
"publishConfig": {
|
|
@@ -105,24 +105,22 @@ describe("composeStacks", () => {
|
|
|
105
105
|
]);
|
|
106
106
|
});
|
|
107
107
|
|
|
108
|
-
test("composeIdentityStack + composeGdprStack(sessions) →
|
|
108
|
+
test("composeIdentityStack + composeGdprStack(sessions) → identical sessions deduped at boot", () => {
|
|
109
109
|
const names = stackFeatureNames([
|
|
110
110
|
...composeIdentityStack(),
|
|
111
111
|
...composeGdprStack({ sessions: true }),
|
|
112
112
|
]);
|
|
113
113
|
expect(names.filter((n) => n === "sessions")).toHaveLength(2);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
),
|
|
125
|
-
).toThrow(/duplicate feature/i);
|
|
114
|
+
const composed = composeFeatures(
|
|
115
|
+
[
|
|
116
|
+
createPersonalAccessTokensFeature({ scopes: {} }),
|
|
117
|
+
...composeIdentityStack(),
|
|
118
|
+
...composeGdprStack({ sessions: true }),
|
|
119
|
+
],
|
|
120
|
+
{ includeBundled: true },
|
|
121
|
+
);
|
|
122
|
+
expect(stackFeatureNames(composed).filter((n) => n === "sessions")).toHaveLength(1);
|
|
123
|
+
expect(() => validateBoot(composed)).not.toThrow();
|
|
126
124
|
});
|
|
127
125
|
});
|
|
128
126
|
|
package/src/compose-stacks.ts
CHANGED
|
@@ -77,9 +77,8 @@ export type UserDataRightsStackOptions = {
|
|
|
77
77
|
readonly includeDefaults?: boolean;
|
|
78
78
|
};
|
|
79
79
|
|
|
80
|
-
// `sessions` may live on composeIdentityStack OR composeGdprStack
|
|
81
|
-
//
|
|
82
|
-
// that each push "sessions" crashes createRegistry with "duplicate feature".
|
|
80
|
+
// `sessions` may live on composeIdentityStack OR composeGdprStack; both with default
|
|
81
|
+
// options is deduped at boot, differing options throw "Duplicate feature".
|
|
83
82
|
export type OpsStackOptions = {
|
|
84
83
|
readonly delivery?: boolean;
|
|
85
84
|
readonly audit?: boolean;
|