@managemint-solutions/sdk 0.17.0 → 0.18.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/dist/audit/index.d.ts +23 -2
- package/dist/audit/index.js +56 -21
- package/dist/audit/index.js.map +1 -1
- package/dist/auth-client/index.d.ts +1 -6
- package/dist/auth-client/index.js +3 -18
- package/dist/auth-client/index.js.map +1 -1
- package/dist/auth.d.ts +36 -1
- package/dist/auth.js +52 -22
- package/dist/auth.js.map +1 -1
- package/dist/billing/index.d.ts +0 -1
- package/dist/billing/index.js +2 -12
- package/dist/billing/index.js.map +1 -1
- package/dist/client.d.ts +16 -1
- package/dist/client.js +8 -6
- package/dist/client.js.map +1 -1
- package/dist/clients/index.js +13 -75
- package/dist/clients/index.js.map +1 -1
- package/dist/errors.d.ts +4 -1
- package/dist/errors.js +7 -58
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +48 -22
- package/dist/index.js +116 -36
- package/dist/index.js.map +1 -1
- package/dist/nest/index.d.ts +26 -3
- package/dist/nest/index.js +54 -15
- package/dist/nest/index.js.map +1 -1
- package/dist/notifications/index.d.ts +0 -1
- package/dist/notifications/index.js +4 -16
- package/dist/notifications/index.js.map +1 -1
- package/dist/organization-invites/index.d.ts +29 -0
- package/dist/organization-invites/index.js +48 -0
- package/dist/organization-invites/index.js.map +1 -0
- package/dist/organizations/index.js +4 -9
- package/dist/organizations/index.js.map +1 -1
- package/dist/permissions/index.d.ts +8 -0
- package/dist/permissions/index.js +16 -1
- package/dist/permissions/index.js.map +1 -1
- package/dist/projects/index.js +12 -75
- package/dist/projects/index.js.map +1 -1
- package/dist/service-client/index.d.ts +2 -0
- package/dist/service-client/index.js +7 -6
- package/dist/service-client/index.js.map +1 -1
- package/dist/supporting-files/index.js +31 -15
- package/dist/supporting-files/index.js.map +1 -1
- package/dist/supporting-files/paths.d.ts +19 -5
- package/dist/supporting-files/paths.js +46 -10
- package/dist/supporting-files/paths.js.map +1 -1
- package/dist/tasks/index.js +7 -33
- package/dist/tasks/index.js.map +1 -1
- package/dist/transforms.d.ts +43 -0
- package/dist/transforms.js +73 -2
- package/dist/transforms.js.map +1 -1
- package/dist/users/index.js +4 -14
- package/dist/users/index.js.map +1 -1
- package/package.json +6 -2
package/dist/nest/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SupabasePublicClient = exports.createSupabaseServiceClientFromEnv = exports.SupabaseUserClient = exports.configureSupabaseUserClient = exports.toHttpException = void 0;
|
|
3
|
+
exports.SupabasePublicClient = exports.createSupabaseServiceClientFromEnv = exports.SupabaseUserClient = exports.getSupabaseRequestContext = exports.attachSupabaseRequestContext = exports.SUPABASE_REQUEST_KEY = exports.configureSupabaseUserClient = exports.toHttpException = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
5
6
|
const auth_client_1 = require("../auth-client");
|
|
6
7
|
const client_1 = require("../client");
|
|
7
8
|
const errors_1 = require("../errors");
|
|
@@ -31,32 +32,70 @@ const getBearerToken = (request) => {
|
|
|
31
32
|
};
|
|
32
33
|
let userClientOptions = {};
|
|
33
34
|
/**
|
|
34
|
-
* Options the
|
|
35
|
-
*
|
|
36
|
-
* pass them).
|
|
35
|
+
* Options the per-request clients are built with. Call it once at startup (the auth guard
|
|
36
|
+
* constructs the client itself, so there is nowhere else to pass them).
|
|
37
37
|
*/
|
|
38
38
|
const configureSupabaseUserClient = (options) => {
|
|
39
39
|
userClientOptions = options;
|
|
40
40
|
};
|
|
41
41
|
exports.configureSupabaseUserClient = configureSupabaseUserClient;
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
/** Where on the request the context is stored — `request[SUPABASE_REQUEST_KEY]`. */
|
|
43
|
+
exports.SUPABASE_REQUEST_KEY = 'supabase';
|
|
44
|
+
/**
|
|
45
|
+
* Verifies the bearer token on `request`, builds the caller's client from it and stores both on
|
|
46
|
+
* the request. This is the one place a token is authenticated, so it belongs in the api's auth
|
|
47
|
+
* guard — a param decorator cannot be async and must not be where identity is established.
|
|
48
|
+
*
|
|
49
|
+
* Idempotent: a second call hands back the context the first one attached.
|
|
50
|
+
*/
|
|
51
|
+
const attachSupabaseRequestContext = async (request) => {
|
|
52
|
+
const existing = request[exports.SUPABASE_REQUEST_KEY];
|
|
53
|
+
if (existing)
|
|
54
|
+
return existing;
|
|
55
|
+
const accessToken = getBearerToken(request);
|
|
56
|
+
const url = getEnvOrThrow('SUPABASE_URL');
|
|
57
|
+
const key = getEnvOrThrow('SUPABASE_PUBLISHABLE_KEY');
|
|
58
|
+
// One supabase-js client for the request: the token check and the caller's data client run on
|
|
59
|
+
// the same url/key/bearer, so there is no reason to build it twice.
|
|
60
|
+
const client = (0, auth_1.createRawClient)(url, key, accessToken);
|
|
44
61
|
try {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
62
|
+
const auth = await (0, auth_1.verifyAccessToken)({ url, key, accessToken, client });
|
|
63
|
+
const context = {
|
|
64
|
+
auth,
|
|
65
|
+
client: (0, client_1.createSupabaseClient)({
|
|
66
|
+
url,
|
|
67
|
+
key,
|
|
68
|
+
accessToken,
|
|
69
|
+
client,
|
|
70
|
+
auth: { mms_id: auth.mms_id, organization_id: auth.organization_id },
|
|
71
|
+
onAuditError: userClientOptions.onAuditError,
|
|
72
|
+
}),
|
|
73
|
+
};
|
|
74
|
+
request[exports.SUPABASE_REQUEST_KEY] = context;
|
|
75
|
+
return context;
|
|
51
76
|
}
|
|
52
77
|
catch (error) {
|
|
53
|
-
//
|
|
54
|
-
//
|
|
78
|
+
// Guards run outside the exception filters' reach for SDK errors, so the authentication
|
|
79
|
+
// failure is converted here.
|
|
55
80
|
if (error instanceof errors_1.SupabaseClientError)
|
|
56
81
|
throw (0, exports.toHttpException)(error);
|
|
57
82
|
throw error;
|
|
58
83
|
}
|
|
59
|
-
}
|
|
84
|
+
};
|
|
85
|
+
exports.attachSupabaseRequestContext = attachSupabaseRequestContext;
|
|
86
|
+
/**
|
|
87
|
+
* The context the auth guard attached. Throws when it is absent, which only happens when the
|
|
88
|
+
* route is missing the guard.
|
|
89
|
+
*/
|
|
90
|
+
const getSupabaseRequestContext = (request) => {
|
|
91
|
+
const context = request[exports.SUPABASE_REQUEST_KEY];
|
|
92
|
+
if (!context)
|
|
93
|
+
throw new common_1.UnauthorizedException('Request is not authenticated');
|
|
94
|
+
return context;
|
|
95
|
+
};
|
|
96
|
+
exports.getSupabaseRequestContext = getSupabaseRequestContext;
|
|
97
|
+
/** The caller's data client, from the context the auth guard attached. */
|
|
98
|
+
exports.SupabaseUserClient = (0, common_1.createParamDecorator)((_, ctx) => (0, exports.getSupabaseRequestContext)(ctx.switchToHttp().getRequest()).client);
|
|
60
99
|
/**
|
|
61
100
|
* A `SupabaseServiceClient` from the ambient env — the SDK-side replacement for the api's
|
|
62
101
|
* `createSupabaseAdminClient()`.
|
package/dist/nest/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nest/index.ts"],"names":[],"mappings":";;;AAAA,2CAMwB;AAGxB,gDAAmF;AACnF,sCAAsE;AACtE,sCAAgD;AAChD,sDAA4F;AAE5F;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAC,KAA0B,EAAiB,EAAE,CAC3E,IAAI,sBAAa,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAD3D,QAAA,eAAe,mBAC4C;AAExE,MAAM,aAAa,GAAG,CACpB,GAA8E,EACtE,EAAE;IACV,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,qCAA4B,CAAC,GAAG,GAAG,oBAAoB,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAU,EAAE;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,8BAAqB,CAAC,0BAA0B,CAAC,CAAC;IACzE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,WAAW,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACjD,MAAM,IAAI,8BAAqB,CAAC,4CAA4C,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAOF,IAAI,iBAAiB,GAA8B,EAAE,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nest/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,13 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
17
|
+
exports.NotificationsOutboxResource = exports.NotificationsResource = void 0;
|
|
18
18
|
const enum_1 = require("@managemint-solutions/entities/notifications/enum");
|
|
19
|
-
Object.defineProperty(exports, "NotificationChannel", { enumerable: true, get: function () { return enum_1.NotificationChannel; } });
|
|
20
|
-
Object.defineProperty(exports, "NotificationStatus", { enumerable: true, get: function () { return enum_1.NotificationStatus; } });
|
|
21
19
|
const enum_2 = require("@managemint-solutions/entities/audit-trail/enum");
|
|
22
20
|
const audit_1 = require("../audit");
|
|
23
21
|
const errors_1 = require("../errors");
|
|
22
|
+
const transforms_1 = require("../transforms");
|
|
24
23
|
__exportStar(require("./dto"), exports);
|
|
25
24
|
// The public contract is the shared entities types; the casts at the returns declare the shape
|
|
26
25
|
// these select strings produce (the columns are defined in the api's supabase/migrations).
|
|
@@ -108,23 +107,12 @@ class NotificationsResource {
|
|
|
108
107
|
notificationsQuery = notificationsQuery.is('read_at', null);
|
|
109
108
|
}
|
|
110
109
|
if (trimmedSearch) {
|
|
111
|
-
|
|
112
|
-
notificationsQuery = notificationsQuery.or(`template_id.ilike.%${escapedSearch}%,type.ilike.%${escapedSearch}%`);
|
|
110
|
+
notificationsQuery = notificationsQuery.or((0, transforms_1.orIlike)(['template_id', 'type'], trimmedSearch));
|
|
113
111
|
}
|
|
114
112
|
const { data, error, count } = await notificationsQuery;
|
|
115
113
|
if (error)
|
|
116
114
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
117
|
-
|
|
118
|
-
const totalPages = totalEstimated > 0 ? Math.ceil(totalEstimated / pageSize) : 0;
|
|
119
|
-
return {
|
|
120
|
-
results: (data ?? []),
|
|
121
|
-
page,
|
|
122
|
-
per_page: pageSize,
|
|
123
|
-
count: totalEstimated,
|
|
124
|
-
total_pages: totalPages,
|
|
125
|
-
has_next_page: page < totalPages,
|
|
126
|
-
has_previous_page: page > 1,
|
|
127
|
-
};
|
|
115
|
+
return (0, transforms_1.toMmsList)(data, page, pageSize, count);
|
|
128
116
|
}
|
|
129
117
|
async getById(notificationId) {
|
|
130
118
|
const { data, error } = await this.supabase
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAMA,4EAI2D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAMA,4EAI2D;AAC3D,0EAAyG;AAGzG,oCAA8F;AAE9F,sCAA8C;AAC9C,8CAAmD;AAGnD,wCAAsB;AAEtB,+FAA+F;AAC/F,2FAA2F;AAC3F,MAAM,wBAAwB,GAAG;;;;;;;;;;;;OAYjB,CAAC;AAEjB,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;OAgBnB,CAAC;AAEjB,gFAAgF;AAChF,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;OAgBpB,CAAC;AAEjB,MAAM,mBAAmB,GAAG;IAC1B,KAAK,EAAE,eAAe;IACtB,UAAU,EAAE,2BAAoB,CAAC,YAAY;CACrC,CAAC;AA0CX;;;;GAIG;AACH,MAAa,qBAAqB;IAIb;IACA;IAJF,KAAK,CAAe;IAErC,YACmB,QAA6B,EAC7B,IAAiB,EAClC,KAAoB;QAFH,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,SAAI,GAAJ,IAAI,CAAa;QAGlC,IAAI,CAAC,KAAK,GAAG,IAAA,oBAAY,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA0B;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACrC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAE3C,2FAA2F;QAC3F,0DAA0D;QAC1D,IAAI,kBAAkB,GAAG,IAAI,CAAC,QAAQ;aACnC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;aACxD,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACpC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;aACpB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,kBAAkB,GAAG,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,kBAAkB,GAAG,kBAAkB,CAAC,EAAE,CAAC,IAAA,oBAAO,EAAC,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAkB,CAAC;QACxD,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,IAAA,sBAAS,EAAsB,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,cAAsB;QAClC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,0BAA0B,CAAC;aAClC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC;aAC5B,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACpC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;aACpB,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,IAAqC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACzC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACpD,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACpC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;aACpB,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,QAAQ,CAAC,cAAsB;QACnC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAC1B,cAAc,EACd,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EACpC,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CACtC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;aAC7C,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACpC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;aACpB,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,cAAsB;QACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,yEAAyE,CAAC;aACjF,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC;aAC5B,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACpC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;aACpB,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,IAAyC,CAAC;IACnD,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,uBAAgB,CAAC,MAAM,EAAE;YACnE,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;CACF;AAnHD,sDAmHC;AAKD;;;;;;;;GAQG;AACH,MAAa,2BAA2B;IAEnB;IACA;IAFnB,YACmB,QAA6B,EAC7B,QAAkC;QADlC,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,aAAQ,GAAR,QAAQ,CAA0B;IAClD,CAAC;IAEI,UAAU,CAAC,cAAyC;QAC1D,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,cAAsB,EAAE,OAAiB;QAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,OAAO,CAAC;aACf,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA8B;QACzC,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAEvD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAmB,CAAC,CAAC;YACtD,OAAO,GAAqC,CAAC;QAC/C,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;aACjB,MAAM,CAAC,2BAA2B,CAAC;aACnC,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,IAAsC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,uBAAuB,CAC3B,iBAAyB;QAEzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,yBAAyB,CAAC;aACjC,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;aAC5C,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,CAAC,IAAI,IAAI,IAAI,CAAsE,CAAC;IAC7F,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CACf,YAAwE,EACxE,MAAkD,EAClD,KAAa;QAEb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAE9D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,WAAW,CACvB,YAAY,CAAC,MAAM,EACnB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EACjC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CACpB,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;aAC3B,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;aACjC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,mHAAmH;IACnH,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CACL,wHAAwH,CACzH;aACA,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC;aAC5B,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,CAAC,IAAI,IAAI,IAAI,CAA8B,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CACb,YAAgC,EAChC,KAAyE;QAEzE,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,yBAAkB,CAAC,IAAI;YAC/B,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,QAAQ,EAAE,QAAQ;YAClB,mBAAmB,EAAE,KAAK,CAAC,iBAAiB;YAC5C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,iBAAiB,EAAE,KAAK,CAAC,EAAE;SAC5B,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAE9D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,OAAO,CAAC;aACf,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;aACjC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,4FAA4F;IAC5F,KAAK,CAAC,YAAY,CAChB,YAAgC,EAChC,KAAiF;QAEjF,MAAM,OAAO,GAAa;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,iBAAiB,EAAE,KAAK,CAAC,EAAE;YAC3B,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,GAAG,CAAC,KAAK,CAAC,QAAQ;gBAChB,CAAC,CAAC,EAAE,MAAM,EAAE,yBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC5D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAE9D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,WAAW,CACf,YAAgC,EAChC,KAA8D;QAE9D,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,YAAwE,EACxE,OAAwD;QAExD,MAAM,OAAO,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAE9D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,WAAW,CACvB,YAAY,CAAC,MAAM,EACnB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAC7C,OAAO,CACR,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,OAAO,CAAC;aACf,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;aACjC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AA5LD,kEA4LC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AuditActor } from '../audit';
|
|
2
|
+
import type { TypedSupabaseClient } from '../client';
|
|
3
|
+
/** The row an invite hands back — the id to send with the sign-up link, and when it lapses. */
|
|
4
|
+
export type OrganizationInvite = {
|
|
5
|
+
mms_id: string;
|
|
6
|
+
expires_at: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* The `organization_invites` table: the record that says a given address is allowed to sign up
|
|
10
|
+
* into a given organization. The `on_auth_user_created` trigger reads it — it requires an
|
|
11
|
+
* unconsumed, unexpired invite matching the new auth user's email and takes the new user's
|
|
12
|
+
* `organization_id` from it, so tenancy is never taken from anything the sign-up supplied.
|
|
13
|
+
*
|
|
14
|
+
* Service-role only: the table carries no `authenticated` grants, so this lives on the service
|
|
15
|
+
* client and never on a caller's client.
|
|
16
|
+
*
|
|
17
|
+
* Not audited — there is no `AuditTrailEntityType` for an invite, so these writes leave no
|
|
18
|
+
* `audit_logs` row. Add one to the entities package before making it audited.
|
|
19
|
+
*/
|
|
20
|
+
export declare class OrganizationInvitesResource {
|
|
21
|
+
private readonly supabase;
|
|
22
|
+
private readonly actor;
|
|
23
|
+
constructor(supabase: TypedSupabaseClient, actor: AuditActor);
|
|
24
|
+
/**
|
|
25
|
+
* Invites an address into the actor's organization. The email is normalized the way the
|
|
26
|
+
* trigger will compare it, so `Sam@Example.com ` and `sam@example.com` are one invite.
|
|
27
|
+
*/
|
|
28
|
+
create(email: string, ttlMinutes?: number): Promise<OrganizationInvite>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrganizationInvitesResource = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
/** How long an invite stays usable when the caller does not say. */
|
|
6
|
+
const DEFAULT_TTL_MINUTES = 60;
|
|
7
|
+
/**
|
|
8
|
+
* The `organization_invites` table: the record that says a given address is allowed to sign up
|
|
9
|
+
* into a given organization. The `on_auth_user_created` trigger reads it — it requires an
|
|
10
|
+
* unconsumed, unexpired invite matching the new auth user's email and takes the new user's
|
|
11
|
+
* `organization_id` from it, so tenancy is never taken from anything the sign-up supplied.
|
|
12
|
+
*
|
|
13
|
+
* Service-role only: the table carries no `authenticated` grants, so this lives on the service
|
|
14
|
+
* client and never on a caller's client.
|
|
15
|
+
*
|
|
16
|
+
* Not audited — there is no `AuditTrailEntityType` for an invite, so these writes leave no
|
|
17
|
+
* `audit_logs` row. Add one to the entities package before making it audited.
|
|
18
|
+
*/
|
|
19
|
+
class OrganizationInvitesResource {
|
|
20
|
+
supabase;
|
|
21
|
+
actor;
|
|
22
|
+
constructor(supabase, actor) {
|
|
23
|
+
this.supabase = supabase;
|
|
24
|
+
this.actor = actor;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Invites an address into the actor's organization. The email is normalized the way the
|
|
28
|
+
* trigger will compare it, so `Sam@Example.com ` and `sam@example.com` are one invite.
|
|
29
|
+
*/
|
|
30
|
+
async create(email, ttlMinutes = DEFAULT_TTL_MINUTES) {
|
|
31
|
+
const expires_at = new Date(Date.now() + ttlMinutes * 60_000).toISOString();
|
|
32
|
+
const { data, error } = await this.supabase
|
|
33
|
+
.from('organization_invites')
|
|
34
|
+
.insert({
|
|
35
|
+
organization_id: this.actor.organization_id,
|
|
36
|
+
email: email.trim().toLowerCase(),
|
|
37
|
+
created_by: this.actor.mms_id,
|
|
38
|
+
expires_at,
|
|
39
|
+
})
|
|
40
|
+
.select('mms_id, expires_at')
|
|
41
|
+
.single();
|
|
42
|
+
if (error)
|
|
43
|
+
throw (0, errors_1.mapPostgrestError)(error);
|
|
44
|
+
return data;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.OrganizationInvitesResource = OrganizationInvitesResource;
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/organization-invites/index.ts"],"names":[],"mappings":";;;AAEA,sCAA8C;AAE9C,oEAAoE;AACpE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAK/B;;;;;;;;;;;GAWG;AACH,MAAa,2BAA2B;IAEnB;IACA;IAFnB,YACmB,QAA6B,EAC7B,KAAiB;QADjB,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,UAAK,GAAL,KAAK,CAAY;IACjC,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAU,GAAG,mBAAmB;QAC1D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC;YACN,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;YAC3C,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC7B,UAAU;SACX,CAAC;aACD,MAAM,CAAC,oBAAoB,CAAC;aAC5B,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,IAA0B,CAAC;IACpC,CAAC;CACF;AA3BD,kEA2BC"}
|
|
@@ -18,6 +18,7 @@ exports.OrganizationSignupResource = exports.OrganizationsResource = void 0;
|
|
|
18
18
|
const enum_1 = require("@managemint-solutions/entities/audit-trail/enum");
|
|
19
19
|
const audit_1 = require("../audit");
|
|
20
20
|
const errors_1 = require("../errors");
|
|
21
|
+
const transforms_1 = require("../transforms");
|
|
21
22
|
__exportStar(require("./dto"), exports);
|
|
22
23
|
// The organizations row *is* the organization: it has no organization_id column, hence
|
|
23
24
|
// `scopeByOrganization: false` wherever it is audited.
|
|
@@ -44,13 +45,7 @@ const ORGANIZATION_SELECT = `
|
|
|
44
45
|
industry,
|
|
45
46
|
currency,
|
|
46
47
|
updated_at,
|
|
47
|
-
last_updated_by:user_profiles!last_updated_by
|
|
48
|
-
mms_id,
|
|
49
|
-
name,
|
|
50
|
-
surname,
|
|
51
|
-
email,
|
|
52
|
-
profile_image
|
|
53
|
-
),
|
|
48
|
+
last_updated_by:user_profiles!last_updated_by ${transforms_1.USER_PROFILE_EMBED},
|
|
54
49
|
address_line_1,
|
|
55
50
|
address_line_2,
|
|
56
51
|
city,
|
|
@@ -118,7 +113,7 @@ class OrganizationsResource {
|
|
|
118
113
|
.single();
|
|
119
114
|
if (error)
|
|
120
115
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
121
|
-
return data;
|
|
116
|
+
return (0, audit_1.withoutInternalId)(data);
|
|
122
117
|
}
|
|
123
118
|
/**
|
|
124
119
|
* A status move that only lands while the organization is still in `expectedFrom` — the
|
|
@@ -214,7 +209,7 @@ class OrganizationSignupResource {
|
|
|
214
209
|
entityId: row.mms_id,
|
|
215
210
|
changes: (0, audit_1.snapshotChanges)(row, 'new'),
|
|
216
211
|
});
|
|
217
|
-
return row;
|
|
212
|
+
return (0, audit_1.withoutInternalId)(row);
|
|
218
213
|
}
|
|
219
214
|
}
|
|
220
215
|
exports.OrganizationSignupResource = OrganizationSignupResource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/organizations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0EAAyG;AAEzG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/organizations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,19 @@ export declare class PermissionsResource {
|
|
|
17
17
|
private readonly auth;
|
|
18
18
|
private readonly table;
|
|
19
19
|
constructor(supabase: TypedSupabaseClient, auth: AuditActor, audit: AuditResource);
|
|
20
|
+
/**
|
|
21
|
+
* The whole permissions row. `*` rather than a select string — the alternative is naming the
|
|
22
|
+
* two role flags and all 78 permission flags — so the internal `id` is dropped on the way out.
|
|
23
|
+
*/
|
|
20
24
|
getForUser(userId: string): Promise<PermissionsEntity>;
|
|
21
25
|
/**
|
|
22
26
|
* The one lookup `PermissionsGuard` makes per gated request: the flag the route asked for,
|
|
23
27
|
* plus the two that bypass it. Returns null when the caller has no permissions row, which the
|
|
24
28
|
* guard treats as a denial.
|
|
29
|
+
*
|
|
30
|
+
* `flag` is interpolated into the select string, so it is checked against the shape a column
|
|
31
|
+
* name can take first — a flag never comes from a request, only from a route's own decorator,
|
|
32
|
+
* so anything else is a bug rather than a bad request.
|
|
25
33
|
*/
|
|
26
34
|
flagsFor(userId: string, flag: string): Promise<PermissionFlags | null>;
|
|
27
35
|
/** Whether a user owns the organization — the guard behind "you cannot deactivate the owner". */
|
|
@@ -37,6 +37,10 @@ class PermissionsResource {
|
|
|
37
37
|
this.auth = auth;
|
|
38
38
|
this.table = (0, audit_1.auditedTable)(supabase, auth, audit, PERMISSIONS_TABLE);
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* The whole permissions row. `*` rather than a select string — the alternative is naming the
|
|
42
|
+
* two role flags and all 78 permission flags — so the internal `id` is dropped on the way out.
|
|
43
|
+
*/
|
|
40
44
|
async getForUser(userId) {
|
|
41
45
|
const { data, error } = await this.supabase
|
|
42
46
|
.from('permissions')
|
|
@@ -46,14 +50,25 @@ class PermissionsResource {
|
|
|
46
50
|
.single();
|
|
47
51
|
if (error)
|
|
48
52
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
49
|
-
return data;
|
|
53
|
+
return (0, audit_1.withoutInternalId)(data);
|
|
50
54
|
}
|
|
51
55
|
/**
|
|
52
56
|
* The one lookup `PermissionsGuard` makes per gated request: the flag the route asked for,
|
|
53
57
|
* plus the two that bypass it. Returns null when the caller has no permissions row, which the
|
|
54
58
|
* guard treats as a denial.
|
|
59
|
+
*
|
|
60
|
+
* `flag` is interpolated into the select string, so it is checked against the shape a column
|
|
61
|
+
* name can take first — a flag never comes from a request, only from a route's own decorator,
|
|
62
|
+
* so anything else is a bug rather than a bad request.
|
|
55
63
|
*/
|
|
56
64
|
async flagsFor(userId, flag) {
|
|
65
|
+
if (!/^[a-z][a-z0-9_]*$/.test(flag)) {
|
|
66
|
+
throw new errors_1.SupabaseClientError({
|
|
67
|
+
status: 500,
|
|
68
|
+
error: 'Internal Error',
|
|
69
|
+
message: 'Invalid permission flag',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
57
72
|
const { data, error } = await this.supabase
|
|
58
73
|
.from('permissions')
|
|
59
74
|
.select(`is_owner, is_admin, ${flag}`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0EAAuF;AAEvF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"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"}
|
package/dist/projects/index.js
CHANGED
|
@@ -54,54 +54,18 @@ const PROJECT_DETAIL_SELECT = `
|
|
|
54
54
|
client:client_profiles!client_id (*),
|
|
55
55
|
manager:user_profiles!manager_id (*),
|
|
56
56
|
updated_at,
|
|
57
|
-
last_updated_by:user_profiles!last_updated_by
|
|
58
|
-
|
|
59
|
-
name,
|
|
60
|
-
surname,
|
|
61
|
-
email,
|
|
62
|
-
profile_image
|
|
63
|
-
),
|
|
64
|
-
created_by:user_profiles!created_by (
|
|
65
|
-
mms_id,
|
|
66
|
-
name,
|
|
67
|
-
surname,
|
|
68
|
-
email,
|
|
69
|
-
profile_image
|
|
70
|
-
),
|
|
57
|
+
last_updated_by:user_profiles!last_updated_by ${transforms_1.USER_PROFILE_EMBED},
|
|
58
|
+
created_by:user_profiles!created_by ${transforms_1.USER_PROFILE_EMBED},
|
|
71
59
|
archived,
|
|
72
60
|
archived_at,
|
|
73
|
-
archived_by:user_profiles!archived_by
|
|
74
|
-
mms_id,
|
|
75
|
-
name,
|
|
76
|
-
surname,
|
|
77
|
-
email,
|
|
78
|
-
profile_image
|
|
79
|
-
),
|
|
61
|
+
archived_by:user_profiles!archived_by ${transforms_1.USER_PROFILE_EMBED},
|
|
80
62
|
unarchived_at,
|
|
81
|
-
unarchived_by:user_profiles!unarchived_by
|
|
82
|
-
mms_id,
|
|
83
|
-
name,
|
|
84
|
-
surname,
|
|
85
|
-
email,
|
|
86
|
-
profile_image
|
|
87
|
-
),
|
|
63
|
+
unarchived_by:user_profiles!unarchived_by ${transforms_1.USER_PROFILE_EMBED},
|
|
88
64
|
deleted,
|
|
89
65
|
deleted_at,
|
|
90
|
-
deleted_by:user_profiles!deleted_by
|
|
91
|
-
mms_id,
|
|
92
|
-
name,
|
|
93
|
-
surname,
|
|
94
|
-
email,
|
|
95
|
-
profile_image
|
|
96
|
-
),
|
|
66
|
+
deleted_by:user_profiles!deleted_by ${transforms_1.USER_PROFILE_EMBED},
|
|
97
67
|
restored_at,
|
|
98
|
-
restored_by:user_profiles!restored_by
|
|
99
|
-
mms_id,
|
|
100
|
-
name,
|
|
101
|
-
surname,
|
|
102
|
-
email,
|
|
103
|
-
profile_image
|
|
104
|
-
)
|
|
68
|
+
restored_by:user_profiles!restored_by ${transforms_1.USER_PROFILE_EMBED}
|
|
105
69
|
`;
|
|
106
70
|
class ProjectsResource {
|
|
107
71
|
supabase;
|
|
@@ -131,8 +95,7 @@ class ProjectsResource {
|
|
|
131
95
|
.range(offset, offset + pageSize - 1)
|
|
132
96
|
.order('created_at', { ascending: false });
|
|
133
97
|
if (trimmedSearch) {
|
|
134
|
-
|
|
135
|
-
projectsQuery = projectsQuery.or(`name.ilike.%${escapedSearch}%,specification.ilike.%${escapedSearch}%`);
|
|
98
|
+
projectsQuery = projectsQuery.or((0, transforms_1.orIlike)(['name', 'specification'], trimmedSearch));
|
|
136
99
|
}
|
|
137
100
|
if (query.created_after) {
|
|
138
101
|
projectsQuery = projectsQuery.gte('created_at', query.created_after);
|
|
@@ -161,17 +124,7 @@ class ProjectsResource {
|
|
|
161
124
|
const { data, error, count } = await projectsQuery;
|
|
162
125
|
if (error)
|
|
163
126
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
164
|
-
|
|
165
|
-
const totalPages = totalEstimated > 0 ? Math.ceil(totalEstimated / pageSize) : 0;
|
|
166
|
-
return {
|
|
167
|
-
results: (data ?? []),
|
|
168
|
-
page,
|
|
169
|
-
per_page: pageSize,
|
|
170
|
-
count: totalEstimated,
|
|
171
|
-
total_pages: totalPages,
|
|
172
|
-
has_next_page: page < totalPages,
|
|
173
|
-
has_previous_page: page > 1,
|
|
174
|
-
};
|
|
127
|
+
return (0, transforms_1.toMmsList)(data, page, pageSize, count);
|
|
175
128
|
}
|
|
176
129
|
async getById(projectId) {
|
|
177
130
|
const { data, error } = await this.supabase
|
|
@@ -226,36 +179,20 @@ class ProjectsResource {
|
|
|
226
179
|
return this.getById(projectId);
|
|
227
180
|
}
|
|
228
181
|
async archive(projectId) {
|
|
229
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.ARCHIVE,
|
|
230
|
-
archived: true,
|
|
231
|
-
archived_at: new Date().toISOString(),
|
|
232
|
-
archived_by: this.auth.mms_id,
|
|
233
|
-
});
|
|
182
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.ARCHIVE, (0, transforms_1.archivedPatch)(this.auth.mms_id));
|
|
234
183
|
return this.getById(projectId);
|
|
235
184
|
}
|
|
236
185
|
async unarchive(projectId) {
|
|
237
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.UNARCHIVE,
|
|
238
|
-
archived: false,
|
|
239
|
-
unarchived_at: new Date().toISOString(),
|
|
240
|
-
unarchived_by: this.auth.mms_id,
|
|
241
|
-
});
|
|
186
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.UNARCHIVE, (0, transforms_1.unarchivedPatch)(this.auth.mms_id));
|
|
242
187
|
return this.getById(projectId);
|
|
243
188
|
}
|
|
244
189
|
async restore(projectId) {
|
|
245
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.RESTORE,
|
|
246
|
-
deleted: false,
|
|
247
|
-
restored_at: new Date().toISOString(),
|
|
248
|
-
restored_by: this.auth.mms_id,
|
|
249
|
-
});
|
|
190
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.RESTORE, (0, transforms_1.restoredPatch)(this.auth.mms_id));
|
|
250
191
|
return this.getById(projectId);
|
|
251
192
|
}
|
|
252
193
|
/** Soft delete — the row stays, flagged `deleted`, and `restore()` brings it back. */
|
|
253
194
|
async remove(projectId) {
|
|
254
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.DELETE,
|
|
255
|
-
deleted: true,
|
|
256
|
-
deleted_at: new Date().toISOString(),
|
|
257
|
-
deleted_by: this.auth.mms_id,
|
|
258
|
-
});
|
|
195
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.DELETE, (0, transforms_1.deletedPatch)(this.auth.mms_id));
|
|
259
196
|
}
|
|
260
197
|
}
|
|
261
198
|
exports.ProjectsResource = ProjectsResource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/projects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,0EAGyD;AAEzD,oCAA+E;AAE/E,sCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/projects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,0EAGyD;AAEzD,oCAA+E;AAE/E,sCAA8C;AAC9C,8CASuB;AAGvB,wCAAsB;AAEtB,wEAAwE;AACxE,gGAAgG;AAChG,4EAA4E;AAC5E,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;OAcZ,CAAC;AAEjB,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;wDAgB0B,+BAAkB;8CAC5B,+BAAkB;;;gDAGhB,+BAAkB;;oDAEd,+BAAkB;;;8CAGxB,+BAAkB;;gDAEhB,+BAAkB;OAClD,CAAC;AAEjB,MAAa,gBAAgB;IAIR;IACA;IAJF,KAAK,CAAe;IAErC,YACmB,QAA6B,EAC7B,IAAiB,EAClC,KAAoB;QAFH,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,SAAI,GAAJ,IAAI,CAAa;QAGlC,IAAI,CAAC,KAAK,GAAG,IAAA,oBAAY,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;YAC/C,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,2BAAoB,CAAC,QAAQ;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAqB;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACrC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAE3C,2FAA2F;QAC3F,0DAA0D;QAC1D,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ;aAC9B,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;aACnD,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;aAChD,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;aAC7B,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;aACpB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;aACpC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7C,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,IAAA,oBAAO,EAAC,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC;QACnD,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,IAAA,sBAAS,EAAiB,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC7B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,qBAAqB,CAAC;aAC7B,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;aAChD,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aACvB,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAE1C,4EAA4E;QAC5E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,EAAE;gBACR,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;gBACjB,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;aACU,CAAC;QAChC,CAAC;QAED,OAAO,IAAgC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAuB;QAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAClC,GAAG,KAAK;YACR,UAAU,EAAE,IAAA,wBAAW,EAAC,KAAK,CAAC,UAAU,CAAC;YACzC,QAAQ,EAAE,IAAA,wBAAW,EAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;YAC1C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YAC5B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAAuB;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;YACjC,GAAG,KAAK;YACR,UAAU,EAAE,IAAA,wBAAW,EAAC,KAAK,CAAC,UAAU,CAAC;YACzC,QAAQ,EAAE,IAAA,wBAAW,EAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACjC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,uBAAgB,CAAC,OAAO,EAAE,IAAA,0BAAa,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAElG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CACzB,SAAS,EACT,uBAAgB,CAAC,SAAS,EAC1B,IAAA,4BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAClC,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,uBAAgB,CAAC,OAAO,EAAE,IAAA,0BAAa,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAElG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,uBAAgB,CAAC,MAAM,EAAE,IAAA,yBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClG,CAAC;CACF;AA7JD,4CA6JC"}
|
|
@@ -2,6 +2,7 @@ import { AuditResource, type AuditActor, type AuditedTable, type AuditedTableOpt
|
|
|
2
2
|
import type { TypedSupabaseClient } from '../client';
|
|
3
3
|
import { BillingResource } from '../billing';
|
|
4
4
|
import { NotificationsOutboxResource } from '../notifications';
|
|
5
|
+
import { OrganizationInvitesResource } from '../organization-invites';
|
|
5
6
|
import { OrganizationsResource, OrganizationSignupResource } from '../organizations';
|
|
6
7
|
import { PermissionsResource } from '../permissions';
|
|
7
8
|
import { UsersResource } from '../users';
|
|
@@ -23,6 +24,7 @@ export declare class SupabaseOrganizationScope {
|
|
|
23
24
|
readonly actor: AuditActor;
|
|
24
25
|
readonly audit: AuditResource;
|
|
25
26
|
readonly billing: BillingResource;
|
|
27
|
+
readonly invites: OrganizationInvitesResource;
|
|
26
28
|
readonly organizations: OrganizationsResource;
|
|
27
29
|
readonly permissions: PermissionsResource;
|
|
28
30
|
readonly users: UsersResource;
|