@stratum-hq/lib 0.7.0 → 1.0.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.
Files changed (91) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +28 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/services/api-key-service.d.ts.map +1 -1
  6. package/dist/services/api-key-service.js +4 -1
  7. package/dist/services/api-key-service.js.map +1 -1
  8. package/dist/services/config-service.js +2 -2
  9. package/dist/services/config-service.js.map +1 -1
  10. package/dist/services/key-rotation-service.js +1 -1
  11. package/dist/services/key-rotation-service.js.map +1 -1
  12. package/dist/services/role-service.d.ts +13 -3
  13. package/dist/services/role-service.d.ts.map +1 -1
  14. package/dist/services/role-service.js +18 -5
  15. package/dist/services/role-service.js.map +1 -1
  16. package/dist/services/tenant-service.d.ts.map +1 -1
  17. package/dist/services/tenant-service.js +12 -2
  18. package/dist/services/tenant-service.js.map +1 -1
  19. package/dist/stratum.d.ts +4 -4
  20. package/dist/stratum.d.ts.map +1 -1
  21. package/dist/stratum.js +1 -1
  22. package/dist/stratum.js.map +1 -1
  23. package/package.json +8 -1
  24. package/dist/__tests__/crypto.test.d.ts +0 -2
  25. package/dist/__tests__/crypto.test.d.ts.map +0 -1
  26. package/dist/__tests__/crypto.test.js +0 -41
  27. package/dist/__tests__/crypto.test.js.map +0 -1
  28. package/dist/__tests__/migrate-schemas.test.d.ts +0 -2
  29. package/dist/__tests__/migrate-schemas.test.d.ts.map +0 -1
  30. package/dist/__tests__/migrate-schemas.test.js +0 -225
  31. package/dist/__tests__/migrate-schemas.test.js.map +0 -1
  32. package/dist/__tests__/stratum-als.test.d.ts +0 -2
  33. package/dist/__tests__/stratum-als.test.d.ts.map +0 -1
  34. package/dist/__tests__/stratum-als.test.js +0 -49
  35. package/dist/__tests__/stratum-als.test.js.map +0 -1
  36. package/dist/__tests__/webhook-signature.test.d.ts +0 -2
  37. package/dist/__tests__/webhook-signature.test.d.ts.map +0 -1
  38. package/dist/__tests__/webhook-signature.test.js +0 -103
  39. package/dist/__tests__/webhook-signature.test.js.map +0 -1
  40. package/dist/services/__tests__/abac-service.test.d.ts +0 -2
  41. package/dist/services/__tests__/abac-service.test.d.ts.map +0 -1
  42. package/dist/services/__tests__/abac-service.test.js +0 -108
  43. package/dist/services/__tests__/abac-service.test.js.map +0 -1
  44. package/dist/services/__tests__/api-key-service.test.d.ts +0 -2
  45. package/dist/services/__tests__/api-key-service.test.d.ts.map +0 -1
  46. package/dist/services/__tests__/api-key-service.test.js +0 -76
  47. package/dist/services/__tests__/api-key-service.test.js.map +0 -1
  48. package/dist/services/__tests__/audit-service.test.d.ts +0 -2
  49. package/dist/services/__tests__/audit-service.test.d.ts.map +0 -1
  50. package/dist/services/__tests__/audit-service.test.js +0 -230
  51. package/dist/services/__tests__/audit-service.test.js.map +0 -1
  52. package/dist/services/__tests__/config-service.test.d.ts +0 -2
  53. package/dist/services/__tests__/config-service.test.d.ts.map +0 -1
  54. package/dist/services/__tests__/config-service.test.js +0 -565
  55. package/dist/services/__tests__/config-service.test.js.map +0 -1
  56. package/dist/services/__tests__/consent-service.test.d.ts +0 -2
  57. package/dist/services/__tests__/consent-service.test.d.ts.map +0 -1
  58. package/dist/services/__tests__/consent-service.test.js +0 -169
  59. package/dist/services/__tests__/consent-service.test.js.map +0 -1
  60. package/dist/services/__tests__/event-service.test.d.ts +0 -2
  61. package/dist/services/__tests__/event-service.test.d.ts.map +0 -1
  62. package/dist/services/__tests__/event-service.test.js +0 -193
  63. package/dist/services/__tests__/event-service.test.js.map +0 -1
  64. package/dist/services/__tests__/key-rotation-service.test.d.ts +0 -2
  65. package/dist/services/__tests__/key-rotation-service.test.d.ts.map +0 -1
  66. package/dist/services/__tests__/key-rotation-service.test.js +0 -132
  67. package/dist/services/__tests__/key-rotation-service.test.js.map +0 -1
  68. package/dist/services/__tests__/permission-service.test.d.ts +0 -2
  69. package/dist/services/__tests__/permission-service.test.d.ts.map +0 -1
  70. package/dist/services/__tests__/permission-service.test.js +0 -480
  71. package/dist/services/__tests__/permission-service.test.js.map +0 -1
  72. package/dist/services/__tests__/retention-service.test.d.ts +0 -2
  73. package/dist/services/__tests__/retention-service.test.d.ts.map +0 -1
  74. package/dist/services/__tests__/retention-service.test.js +0 -152
  75. package/dist/services/__tests__/retention-service.test.js.map +0 -1
  76. package/dist/services/__tests__/role-service.test.d.ts +0 -2
  77. package/dist/services/__tests__/role-service.test.d.ts.map +0 -1
  78. package/dist/services/__tests__/role-service.test.js +0 -134
  79. package/dist/services/__tests__/role-service.test.js.map +0 -1
  80. package/dist/services/__tests__/tenant-service.test.d.ts +0 -2
  81. package/dist/services/__tests__/tenant-service.test.d.ts.map +0 -1
  82. package/dist/services/__tests__/tenant-service.test.js +0 -548
  83. package/dist/services/__tests__/tenant-service.test.js.map +0 -1
  84. package/dist/services/__tests__/test-helpers.d.ts +0 -9
  85. package/dist/services/__tests__/test-helpers.d.ts.map +0 -1
  86. package/dist/services/__tests__/test-helpers.js +0 -19
  87. package/dist/services/__tests__/test-helpers.js.map +0 -1
  88. package/dist/services/__tests__/webhook-service.test.d.ts +0 -2
  89. package/dist/services/__tests__/webhook-service.test.d.ts.map +0 -1
  90. package/dist/services/__tests__/webhook-service.test.js +0 -184
  91. package/dist/services/__tests__/webhook-service.test.js.map +0 -1
@@ -1,152 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const vitest_1 = require("vitest");
37
- vitest_1.vi.mock("../../pool-helpers.js", () => ({
38
- withClient: vitest_1.vi.fn(),
39
- withTransaction: vitest_1.vi.fn(),
40
- }));
41
- const poolHelpers = __importStar(require("../../pool-helpers.js"));
42
- const retentionService = __importStar(require("../retention-service.js"));
43
- function makeMockPool() {
44
- return {};
45
- }
46
- (0, vitest_1.beforeEach)(() => {
47
- vitest_1.vi.clearAllMocks();
48
- });
49
- (0, vitest_1.describe)("purgeExpiredData", () => {
50
- (0, vitest_1.it)("deletes expired records and returns total count", async () => {
51
- const pool = makeMockPool();
52
- const mockQuery = vitest_1.vi.fn()
53
- .mockResolvedValueOnce({ rowCount: 5 }) // webhook_deliveries
54
- .mockResolvedValueOnce({ rowCount: 3 }) // webhook_events
55
- .mockResolvedValueOnce({ rowCount: 10 }); // audit_logs
56
- vitest_1.vi.mocked(poolHelpers.withTransaction).mockImplementation(async (_pool, fn) => {
57
- const client = { query: mockQuery };
58
- return fn(client);
59
- });
60
- const result = await retentionService.purgeExpiredData(pool, 30);
61
- (0, vitest_1.expect)(result).toEqual({ deleted_count: 18 });
62
- (0, vitest_1.expect)(mockQuery).toHaveBeenCalledTimes(3);
63
- (0, vitest_1.expect)(mockQuery.mock.calls[0][0]).toContain("webhook_deliveries");
64
- (0, vitest_1.expect)(mockQuery.mock.calls[1][0]).toContain("webhook_events");
65
- (0, vitest_1.expect)(mockQuery.mock.calls[2][0]).toContain("audit_logs");
66
- });
67
- (0, vitest_1.it)("uses default 90-day retention when not specified", async () => {
68
- const pool = makeMockPool();
69
- const mockQuery = vitest_1.vi.fn().mockResolvedValue({ rowCount: 0 });
70
- vitest_1.vi.mocked(poolHelpers.withTransaction).mockImplementation(async (_pool, fn) => {
71
- const client = { query: mockQuery };
72
- return fn(client);
73
- });
74
- await retentionService.purgeExpiredData(pool);
75
- (0, vitest_1.expect)(mockQuery).toHaveBeenCalledTimes(3);
76
- });
77
- });
78
- (0, vitest_1.describe)("purgeTenant", () => {
79
- (0, vitest_1.it)("deletes all tenant data in FK-safe order", async () => {
80
- const pool = makeMockPool();
81
- const mockQuery = vitest_1.vi.fn()
82
- // Query 1: child count check
83
- .mockResolvedValueOnce({ rows: [{ count: 0 }] })
84
- // Queries 2-10: deletes in FK order
85
- .mockResolvedValue({ rowCount: 0 });
86
- vitest_1.vi.mocked(poolHelpers.withTransaction).mockImplementation(async (_pool, fn) => {
87
- const client = { query: mockQuery };
88
- return fn(client);
89
- });
90
- await retentionService.purgeTenant(pool, "tenant-123");
91
- // 1 child check + 11 deletes (config, permissions by tenant_id,
92
- // permissions by source_tenant_id, api_keys, roles, webhook_deliveries,
93
- // webhook_events, webhooks, consent_records, audit_logs, tenants)
94
- (0, vitest_1.expect)(mockQuery).toHaveBeenCalledTimes(12);
95
- // First query is the child count check
96
- (0, vitest_1.expect)(mockQuery.mock.calls[0][0]).toContain("COUNT");
97
- // Then FK-ordered deletes
98
- (0, vitest_1.expect)(mockQuery.mock.calls[1][0]).toContain("config_entries");
99
- (0, vitest_1.expect)(mockQuery.mock.calls[2][0]).toContain("permission_policies");
100
- (0, vitest_1.expect)(mockQuery.mock.calls[3][0]).toContain("permission_policies");
101
- (0, vitest_1.expect)(mockQuery.mock.calls[4][0]).toContain("api_keys");
102
- (0, vitest_1.expect)(mockQuery.mock.calls[5][0]).toContain("roles");
103
- // Last delete is the tenant itself
104
- (0, vitest_1.expect)(mockQuery.mock.calls[11][0]).toContain("tenants");
105
- // Verify tenant_id parameter
106
- (0, vitest_1.expect)(mockQuery.mock.calls[1][1]).toEqual(["tenant-123"]);
107
- });
108
- });
109
- (0, vitest_1.describe)("exportTenantData", () => {
110
- (0, vitest_1.it)("returns structured data for the tenant", async () => {
111
- const pool = makeMockPool();
112
- const tenantRow = { id: "tenant-123", name: "Test Corp" };
113
- const mockQuery = vitest_1.vi.fn()
114
- .mockResolvedValueOnce({ rows: [tenantRow] }) // tenants
115
- .mockResolvedValueOnce({ rows: [] }) // config_entries
116
- .mockResolvedValueOnce({ rows: [] }) // permission_policies
117
- .mockResolvedValueOnce({ rows: [] }) // api_keys
118
- .mockResolvedValueOnce({ rows: [] }) // webhooks
119
- .mockResolvedValueOnce({ rows: [] }) // webhook_events
120
- .mockResolvedValueOnce({ rows: [] }) // webhook_deliveries
121
- .mockResolvedValueOnce({ rows: [] }) // audit_logs
122
- .mockResolvedValueOnce({ rows: [] }); // consent_records
123
- vitest_1.vi.mocked(poolHelpers.withClient).mockImplementation(async (_pool, fn) => {
124
- const client = { query: mockQuery };
125
- return fn(client);
126
- });
127
- const result = await retentionService.exportTenantData(pool, "tenant-123");
128
- (0, vitest_1.expect)(result.tenant).toEqual(tenantRow);
129
- (0, vitest_1.expect)(result.config_entries).toEqual([]);
130
- (0, vitest_1.expect)(result.permission_policies).toEqual([]);
131
- (0, vitest_1.expect)(result.api_keys).toEqual([]);
132
- (0, vitest_1.expect)(result.webhooks).toEqual([]);
133
- (0, vitest_1.expect)(result.webhook_events).toEqual([]);
134
- (0, vitest_1.expect)(result.webhook_deliveries).toEqual([]);
135
- (0, vitest_1.expect)(result.audit_logs).toEqual([]);
136
- (0, vitest_1.expect)(result.consent_records).toEqual([]);
137
- });
138
- (0, vitest_1.it)("returns null tenant when not found", async () => {
139
- const pool = makeMockPool();
140
- const mockQuery = vitest_1.vi.fn().mockResolvedValue({ rows: [] });
141
- vitest_1.vi.mocked(poolHelpers.withClient).mockImplementation(async (_pool, fn) => {
142
- const client = { query: mockQuery };
143
- return fn(client);
144
- });
145
- const result = await retentionService.exportTenantData(pool, "nonexistent");
146
- (0, vitest_1.expect)(result.tenant).toBeNull();
147
- // 9 queries: tenant, config, permissions, api_keys, webhooks,
148
- // webhook_events, webhook_deliveries, audit_logs, consent_records
149
- (0, vitest_1.expect)(mockQuery).toHaveBeenCalledTimes(9);
150
- });
151
- });
152
- //# sourceMappingURL=retention-service.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retention-service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/retention-service.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=role-service.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"role-service.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/role-service.test.ts"],"names":[],"mappings":""}
@@ -1,134 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const vitest_1 = require("vitest");
37
- // Mock pool-helpers before importing role-service
38
- vitest_1.vi.mock("../../pool-helpers.js", () => ({
39
- withClient: vitest_1.vi.fn(),
40
- withTransaction: vitest_1.vi.fn(),
41
- }));
42
- const poolHelpers = __importStar(require("../../pool-helpers.js"));
43
- const roleService = __importStar(require("../role-service.js"));
44
- const test_helpers_js_1 = require("./test-helpers.js");
45
- /** Wire withClient to call the callback with a { query } client. */
46
- function withMockQuery(mockQuery) {
47
- vitest_1.vi.mocked(poolHelpers.withClient).mockImplementation(async (_pool, fn) => {
48
- const client = { query: mockQuery };
49
- return fn(client);
50
- });
51
- }
52
- (0, vitest_1.beforeEach)(() => {
53
- vitest_1.vi.clearAllMocks();
54
- });
55
- (0, vitest_1.describe)("assignRole", () => {
56
- (0, vitest_1.it)("upserts a principal role assignment and returns true", async () => {
57
- const pool = (0, test_helpers_js_1.makeMockPool)();
58
- const mockQuery = vitest_1.vi.fn().mockResolvedValueOnce({ rows: [{ role_id: "role-1" }] });
59
- withMockQuery(mockQuery);
60
- const ok = await roleService.assignRole(pool, "user", "user-1", "role-1");
61
- (0, vitest_1.expect)(ok).toBe(true);
62
- const [sql, params] = mockQuery.mock.calls[0];
63
- (0, vitest_1.expect)(sql).toContain("INSERT INTO principal_roles");
64
- (0, vitest_1.expect)(sql).toContain("ON CONFLICT");
65
- (0, vitest_1.expect)(params).toEqual(["user", "user-1", "role-1", null]);
66
- });
67
- (0, vitest_1.it)("scopes the role to a tenant when tenantId is passed", async () => {
68
- const pool = (0, test_helpers_js_1.makeMockPool)();
69
- const mockQuery = vitest_1.vi.fn().mockResolvedValueOnce({ rows: [{ role_id: "role-1" }] });
70
- withMockQuery(mockQuery);
71
- await roleService.assignRole(pool, "user", "user-1", "role-1", "tenant-1");
72
- const [sql, params] = mockQuery.mock.calls[0];
73
- (0, vitest_1.expect)(sql).toContain("WHERE EXISTS");
74
- (0, vitest_1.expect)(sql).toContain("tenant_id = $4 OR tenant_id IS NULL");
75
- (0, vitest_1.expect)(params).toEqual(["user", "user-1", "role-1", "tenant-1"]);
76
- });
77
- (0, vitest_1.it)("returns false when the role belongs to another tenant (refused)", async () => {
78
- const pool = (0, test_helpers_js_1.makeMockPool)();
79
- // The guarded INSERT ... SELECT ... WHERE EXISTS writes no row.
80
- const mockQuery = vitest_1.vi.fn().mockResolvedValueOnce({ rows: [] });
81
- withMockQuery(mockQuery);
82
- const ok = await roleService.assignRole(pool, "user", "user-1", "foreign-role", "tenant-1");
83
- (0, vitest_1.expect)(ok).toBe(false);
84
- });
85
- });
86
- (0, vitest_1.describe)("removeRole", () => {
87
- (0, vitest_1.it)("returns true when an assignment is removed", async () => {
88
- const pool = (0, test_helpers_js_1.makeMockPool)();
89
- const mockQuery = vitest_1.vi.fn().mockResolvedValueOnce({ rows: [{ role_id: "role-1" }] });
90
- withMockQuery(mockQuery);
91
- const ok = await roleService.removeRole(pool, "user", "user-1");
92
- (0, vitest_1.expect)(ok).toBe(true);
93
- (0, vitest_1.expect)(mockQuery.mock.calls[0][0]).toContain("DELETE FROM principal_roles");
94
- (0, vitest_1.expect)(mockQuery.mock.calls[0][1]).toEqual(["user", "user-1"]);
95
- });
96
- (0, vitest_1.it)("returns false when there was no assignment", async () => {
97
- const pool = (0, test_helpers_js_1.makeMockPool)();
98
- const mockQuery = vitest_1.vi.fn().mockResolvedValueOnce({ rows: [] });
99
- withMockQuery(mockQuery);
100
- const ok = await roleService.removeRole(pool, "user", "ghost");
101
- (0, vitest_1.expect)(ok).toBe(false);
102
- });
103
- });
104
- (0, vitest_1.describe)("resolvePrincipalScopes", () => {
105
- (0, vitest_1.it)("returns the assigned role's scopes", async () => {
106
- const pool = (0, test_helpers_js_1.makeMockPool)();
107
- const mockQuery = vitest_1.vi
108
- .fn()
109
- .mockResolvedValueOnce({ rows: [{ scopes: ["read", "write"] }] });
110
- withMockQuery(mockQuery);
111
- const scopes = await roleService.resolvePrincipalScopes(pool, "user", "user-1");
112
- (0, vitest_1.expect)(scopes).toEqual(["read", "write"]);
113
- const [sql, params] = mockQuery.mock.calls[0];
114
- (0, vitest_1.expect)(sql).toContain("JOIN roles r ON r.id = pr.role_id");
115
- (0, vitest_1.expect)(params).toEqual(["user", "user-1", null]);
116
- });
117
- (0, vitest_1.it)("scopes resolution to a tenant when tenantId is passed", async () => {
118
- const pool = (0, test_helpers_js_1.makeMockPool)();
119
- const mockQuery = vitest_1.vi.fn().mockResolvedValueOnce({ rows: [{ scopes: ["read"] }] });
120
- withMockQuery(mockQuery);
121
- await roleService.resolvePrincipalScopes(pool, "user", "user-1", "tenant-1");
122
- const [sql, params] = mockQuery.mock.calls[0];
123
- (0, vitest_1.expect)(sql).toContain("r.tenant_id = $3 OR r.tenant_id IS NULL");
124
- (0, vitest_1.expect)(params).toEqual(["user", "user-1", "tenant-1"]);
125
- });
126
- (0, vitest_1.it)("fails closed with [] when the principal has no role", async () => {
127
- const pool = (0, test_helpers_js_1.makeMockPool)();
128
- const mockQuery = vitest_1.vi.fn().mockResolvedValueOnce({ rows: [] });
129
- withMockQuery(mockQuery);
130
- const scopes = await roleService.resolvePrincipalScopes(pool, "user", "ghost");
131
- (0, vitest_1.expect)(scopes).toEqual([]);
132
- });
133
- });
134
- //# sourceMappingURL=role-service.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"role-service.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/role-service.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tenant-service.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenant-service.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/tenant-service.test.ts"],"names":[],"mappings":""}