@jskit-ai/workspaces-core 0.1.33 → 0.1.34

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.
@@ -1,7 +1,7 @@
1
1
  export default Object.freeze({
2
2
  packageVersion: 1,
3
3
  packageId: "@jskit-ai/workspaces-core",
4
- version: "0.1.33",
4
+ version: "0.1.34",
5
5
  kind: "runtime",
6
6
  description: "Workspace tenancy runtime plus HTTP routes, role catalog, and workspace config scaffolding.",
7
7
  dependsOn: [
@@ -116,10 +116,10 @@ export default Object.freeze({
116
116
  mutations: {
117
117
  dependencies: {
118
118
  runtime: {
119
- "@jskit-ai/json-rest-api-core": "0.1.2",
120
- "@jskit-ai/resource-core": "0.1.2",
121
- "@jskit-ai/resource-crud-core": "0.1.2",
122
- "@jskit-ai/users-core": "0.1.67"
119
+ "@jskit-ai/json-rest-api-core": "0.1.3",
120
+ "@jskit-ai/resource-core": "0.1.3",
121
+ "@jskit-ai/resource-crud-core": "0.1.3",
122
+ "@jskit-ai/users-core": "0.1.68"
123
123
  },
124
124
  dev: {}
125
125
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/workspaces-core",
3
- "version": "0.1.33",
3
+ "version": "0.1.34",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "test": "node --test"
@@ -17,14 +17,14 @@
17
17
  "./shared/resources/workspaceSettingsResource": "./src/shared/resources/workspaceSettingsResource.js"
18
18
  },
19
19
  "dependencies": {
20
- "@jskit-ai/auth-core": "0.1.56",
21
- "@jskit-ai/database-runtime": "0.1.57",
22
- "@jskit-ai/http-runtime": "0.1.56",
23
- "@jskit-ai/json-rest-api-core": "0.1.2",
24
- "@jskit-ai/kernel": "0.1.57",
25
- "@jskit-ai/resource-crud-core": "0.1.2",
26
- "@jskit-ai/resource-core": "0.1.2",
27
- "@jskit-ai/users-core": "0.1.67",
20
+ "@jskit-ai/auth-core": "0.1.57",
21
+ "@jskit-ai/database-runtime": "0.1.58",
22
+ "@jskit-ai/http-runtime": "0.1.57",
23
+ "@jskit-ai/json-rest-api-core": "0.1.3",
24
+ "@jskit-ai/kernel": "0.1.58",
25
+ "@jskit-ai/resource-crud-core": "0.1.3",
26
+ "@jskit-ai/resource-core": "0.1.3",
27
+ "@jskit-ai/users-core": "0.1.68",
28
28
  "json-rest-schema": "1.x.x"
29
29
  }
30
30
  }
@@ -84,12 +84,19 @@ function createRepository({ api, knex } = {}) {
84
84
 
85
85
  const withTransaction = createWithTransaction(knex);
86
86
 
87
- async function queryMemberships(filters = {}, options = {}, { includeUser = false } = {}) {
87
+ async function queryMemberships(filters = {}, options = {}, { include = [] } = {}) {
88
+ const normalizedInclude = Array.from(
89
+ new Set(
90
+ (Array.isArray(include) ? include : [])
91
+ .map((entry) => normalizeText(entry))
92
+ .filter(Boolean)
93
+ )
94
+ );
88
95
  const result = await api.resources.workspaceMemberships.query(
89
96
  {
90
97
  queryParams: {
91
98
  filters,
92
- ...(includeUser ? { include: ["user"] } : {})
99
+ ...(normalizedInclude.length > 0 ? { include: normalizedInclude } : {})
93
100
  },
94
101
  transaction: options?.trx || null,
95
102
  simplified: false
@@ -263,7 +270,7 @@ function createRepository({ api, knex } = {}) {
263
270
  status: "active"
264
271
  },
265
272
  options,
266
- { includeUser: true }
273
+ { include: ["user"] }
267
274
  );
268
275
 
269
276
  const members = rows
@@ -48,13 +48,15 @@ function createWorkspaceMembershipsApiStub({
48
48
  } = {}) {
49
49
  const state = {
50
50
  postPayload: null,
51
- patchPayload: null
51
+ patchPayload: null,
52
+ queryCalls: []
52
53
  };
53
54
 
54
55
  const api = {
55
56
  resources: {
56
57
  workspaceMemberships: {
57
58
  async query({ queryParams }) {
59
+ state.queryCalls.push(queryParams || {});
58
60
  const filters = queryParams?.filters || {};
59
61
  const includeUser = Array.isArray(queryParams?.include) && queryParams.include.includes("user");
60
62
 
@@ -250,3 +252,23 @@ test("workspaceMembershipsRepository.listActiveByWorkspaceId keeps summary rows
250
252
  }
251
253
  ]);
252
254
  });
255
+
256
+ test("workspaceMembershipsRepository.listActiveWorkspaceIdsByUserId returns normalized workspace ids from the canonical resource", async () => {
257
+ const membershipRow = {
258
+ id: "11",
259
+ workspace: { id: "7" },
260
+ user: { id: "9" },
261
+ roleSid: "owner",
262
+ status: "active",
263
+ createdAt: "2026-03-09 00:26:35.710",
264
+ updatedAt: "2026-03-10 00:26:35.710"
265
+ };
266
+ const { api } = createWorkspaceMembershipsApiStub({
267
+ rowByComposite: new Map([["7:9", membershipRow]])
268
+ });
269
+ const repository = createRepository({ api, knex: createKnexStub() });
270
+
271
+ const workspaceIds = await repository.listActiveWorkspaceIdsByUserId("9");
272
+
273
+ assert.deepEqual(workspaceIds, ["7"]);
274
+ });