@revealui/core 0.2.0 → 0.2.1
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/README.md +137 -30
- package/dist/api/rate-limit.d.ts +1 -1
- package/dist/api/rate-limit.d.ts.map +1 -1
- package/dist/api/rate-limit.js +16 -1
- package/dist/api/rest.js +2 -2
- package/dist/caching/cdn-config.d.ts +2 -2
- package/dist/caching/cdn-config.d.ts.map +1 -1
- package/dist/caching/cdn-config.js +1 -15
- package/dist/caching/edge-cache.d.ts.map +1 -1
- package/dist/caching/edge-cache.js +8 -4
- package/dist/caching/service-worker.d.ts +7 -18
- package/dist/caching/service-worker.d.ts.map +1 -1
- package/dist/caching/service-worker.js +2 -2
- package/dist/client/admin/utils/auth.d.ts +0 -4
- package/dist/client/admin/utils/auth.d.ts.map +1 -1
- package/dist/client/admin/utils/auth.js +0 -6
- package/dist/client/index.d.ts +0 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +0 -2
- package/dist/collections/operations/create.js +2 -2
- package/dist/config/utils.d.ts.map +1 -1
- package/dist/config/utils.js +19 -5
- package/dist/database/safe-parse.d.ts +26 -0
- package/dist/database/safe-parse.d.ts.map +1 -0
- package/dist/database/safe-parse.js +42 -0
- package/dist/database/universal-postgres.d.ts.map +1 -1
- package/dist/database/universal-postgres.js +12 -12
- package/dist/dataloader.d.ts.map +1 -1
- package/dist/dataloader.js +16 -2
- package/dist/error-handling/error-reporter.d.ts +5 -4
- package/dist/error-handling/error-reporter.d.ts.map +1 -1
- package/dist/error-handling/error-reporter.js +19 -48
- package/dist/error-handling/index.d.ts +1 -1
- package/dist/error-handling/index.d.ts.map +1 -1
- package/dist/error-handling/index.js +1 -1
- package/dist/features.d.ts +5 -1
- package/dist/features.d.ts.map +1 -1
- package/dist/features.js +6 -3
- package/dist/generated/types/index.d.ts +0 -3
- package/dist/generated/types/index.d.ts.map +1 -1
- package/dist/generated/types/index.js +0 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/instance/RevealUIInstance.d.ts.map +1 -1
- package/dist/instance/RevealUIInstance.js +44 -50
- package/dist/instance/methods/create.d.ts.map +1 -1
- package/dist/instance/methods/create.js +4 -1
- package/dist/instance/methods/delete.d.ts.map +1 -1
- package/dist/instance/methods/delete.js +4 -1
- package/dist/instance/methods/hooks.d.ts.map +1 -1
- package/dist/instance/methods/hooks.js +3 -1
- package/dist/instance/methods/update.d.ts.map +1 -1
- package/dist/instance/methods/update.js +4 -1
- package/dist/license.d.ts +14 -5
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +47 -11
- package/dist/observability/health-check.d.ts +1 -1
- package/dist/observability/health-check.d.ts.map +1 -1
- package/dist/observability/health-check.js +37 -7
- package/dist/optimization/code-splitting.d.ts +0 -13
- package/dist/optimization/code-splitting.d.ts.map +1 -1
- package/dist/optimization/code-splitting.js +0 -13
- package/dist/queries/queryBuilder.d.ts.map +1 -1
- package/dist/queries/queryBuilder.js +6 -3
- package/dist/security/auth.d.ts.map +1 -1
- package/dist/security/auth.js +8 -6
- package/dist/security/encryption.d.ts.map +1 -1
- package/dist/security/encryption.js +15 -4
- package/dist/security/gdpr.d.ts +1 -1
- package/dist/security/gdpr.d.ts.map +1 -1
- package/dist/security/gdpr.js +4 -9
- package/dist/types/generated.d.ts +0 -2
- package/dist/types/generated.d.ts.map +1 -1
- package/dist/types/generated.js +0 -1
- package/package.json +2 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universal-postgres.d.ts","sourceRoot":"","sources":["../../src/database/universal-postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAkC,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"universal-postgres.d.ts","sourceRoot":"","sources":["../../src/database/universal-postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAkC,MAAM,mBAAmB,CAAA;AAIxF,MAAM,WAAW,8BAA8B;IAC7C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAA;CAC5C;AAiGD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,8BAAmC,GAC1C,eAAe,CAqcjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,UAAQ,GAAG,IAAI,CAa/D;AAGD,eAAe,wBAAwB,CAAA"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { defaultLogger } from '../instance/logger.js';
|
|
15
15
|
import { logger } from '../observability/logger.js';
|
|
16
|
+
import { safeParseRevealDocuments } from './safe-parse.js';
|
|
16
17
|
import { getSSLConfig } from './ssl-config.js';
|
|
17
18
|
/**
|
|
18
19
|
* Worker-isolated PGlite instances for parallel test execution
|
|
@@ -123,19 +124,18 @@ export function universalPostgresAdapter(config = {}) {
|
|
|
123
124
|
// Neon serverless has limitations with $1, $2 style parameters
|
|
124
125
|
// Using pg ensures full PostgreSQL compatibility
|
|
125
126
|
const neonConnectionString = connectionString;
|
|
127
|
+
const { Pool: NeonPool } = await import('pg');
|
|
128
|
+
const neonPool = new NeonPool({
|
|
129
|
+
connectionString: neonConnectionString,
|
|
130
|
+
ssl: getSSLConfig(neonConnectionString),
|
|
131
|
+
});
|
|
126
132
|
queryFn = async (queryString, values = []) => {
|
|
127
133
|
try {
|
|
128
|
-
|
|
129
|
-
const { Pool } = await import('pg');
|
|
130
|
-
const pool = new Pool({
|
|
131
|
-
connectionString: neonConnectionString,
|
|
132
|
-
ssl: getSSLConfig(neonConnectionString),
|
|
133
|
-
});
|
|
134
|
-
const client = await pool.connect();
|
|
134
|
+
const client = await neonPool.connect();
|
|
135
135
|
try {
|
|
136
136
|
const result = await client.query(queryString, values);
|
|
137
137
|
return {
|
|
138
|
-
rows: result.rows,
|
|
138
|
+
rows: safeParseRevealDocuments(result.rows),
|
|
139
139
|
rowCount: result.rowCount || 0,
|
|
140
140
|
};
|
|
141
141
|
}
|
|
@@ -169,7 +169,7 @@ export function universalPostgresAdapter(config = {}) {
|
|
|
169
169
|
try {
|
|
170
170
|
const result = await client.query(queryString, values);
|
|
171
171
|
return {
|
|
172
|
-
rows: result.rows,
|
|
172
|
+
rows: safeParseRevealDocuments(result.rows),
|
|
173
173
|
rowCount: result.rowCount || 0,
|
|
174
174
|
};
|
|
175
175
|
}
|
|
@@ -191,7 +191,7 @@ export function universalPostgresAdapter(config = {}) {
|
|
|
191
191
|
try {
|
|
192
192
|
const result = await client.query(queryString, values);
|
|
193
193
|
return {
|
|
194
|
-
rows: result.rows,
|
|
194
|
+
rows: safeParseRevealDocuments(result.rows),
|
|
195
195
|
rowCount: result.rowCount || 0,
|
|
196
196
|
};
|
|
197
197
|
}
|
|
@@ -219,7 +219,7 @@ export function universalPostgresAdapter(config = {}) {
|
|
|
219
219
|
queryFn = async (queryString, values = []) => {
|
|
220
220
|
const result = await db.query(queryString, values);
|
|
221
221
|
return {
|
|
222
|
-
rows: result.rows,
|
|
222
|
+
rows: safeParseRevealDocuments(result.rows),
|
|
223
223
|
rowCount: result.rowCount || 0,
|
|
224
224
|
};
|
|
225
225
|
};
|
|
@@ -239,7 +239,7 @@ export function universalPostgresAdapter(config = {}) {
|
|
|
239
239
|
try {
|
|
240
240
|
const result = await client.query(queryString, values);
|
|
241
241
|
return {
|
|
242
|
-
rows: result.rows,
|
|
242
|
+
rows: safeParseRevealDocuments(result.rows),
|
|
243
243
|
rowCount: result.rowCount || 0,
|
|
244
244
|
};
|
|
245
245
|
}
|
package/dist/dataloader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataloader.d.ts","sourceRoot":"","sources":["../src/dataloader.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACX,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"dataloader.d.ts","sourceRoot":"","sources":["../src/dataloader.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACX,MAAM,kBAAkB,CAAA;AA0MzB,UAAU,kBAAmB,SAAQ,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;IACjE,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC3F;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,aAAa,KAAG,kBAmBlD,CAAA;AA6CD,KAAK,kBAAkB,GAAG;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,mBAAmB,CAAA;IACnC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;CACtE,CAAA;AACD,eAAO,MAAM,wBAAwB,GAAI,mJAatC,kBAAkB,KAAG,MAcpB,CAAA"}
|
package/dist/dataloader.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
import DataLoader from 'dataloader';
|
|
2
2
|
import { isValidID } from './utils/isValidID.js';
|
|
3
|
-
const parseCacheKey = (value) =>
|
|
4
|
-
|
|
3
|
+
const parseCacheKey = (value) => {
|
|
4
|
+
try {
|
|
5
|
+
return JSON.parse(value);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
throw new Error(`DataLoader: malformed cache key (not valid JSON): ${value.slice(0, 120)}`);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
const parseBatchKey = (value) => {
|
|
12
|
+
try {
|
|
13
|
+
return JSON.parse(value);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
throw new Error(`DataLoader: malformed batch key (not valid JSON): ${value.slice(0, 120)}`);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
5
19
|
// RevealUI uses `dataloader` to solve the classic N+1 problem.
|
|
6
20
|
// We keep a list of all documents requested to be populated for any given request
|
|
7
21
|
// and then batch together documents within the same collection,
|
|
@@ -141,11 +141,12 @@ export declare class ConsoleErrorReporter implements ErrorReporter {
|
|
|
141
141
|
addBreadcrumb(breadcrumb: Breadcrumb): void;
|
|
142
142
|
}
|
|
143
143
|
/**
|
|
144
|
-
*
|
|
144
|
+
* Logging-only error reporter (development / no external service)
|
|
145
|
+
*
|
|
146
|
+
* Logs errors via the internal logger. Replace with a real Sentry or
|
|
147
|
+
* Datadog integration when an external error-tracking service is needed.
|
|
145
148
|
*/
|
|
146
|
-
export declare class
|
|
147
|
-
private dsn;
|
|
148
|
-
constructor(dsn: string);
|
|
149
|
+
export declare class LoggingErrorReporter implements ErrorReporter {
|
|
149
150
|
captureError(error: Error, context?: Partial<ErrorReport>): void;
|
|
150
151
|
captureMessage(message: string, level?: ErrorLevel, context?: Partial<ErrorReport>): void;
|
|
151
152
|
setUser(_user: UserContext | null): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-reporter.d.ts","sourceRoot":"","sources":["../../src/error-handling/error-reporter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"error-reporter.d.ts","sourceRoot":"","sources":["../../src/error-handling/error-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -260,58 +260,29 @@ export class ConsoleErrorReporter {
|
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
/**
|
|
263
|
-
*
|
|
263
|
+
* Logging-only error reporter (development / no external service)
|
|
264
|
+
*
|
|
265
|
+
* Logs errors via the internal logger. Replace with a real Sentry or
|
|
266
|
+
* Datadog integration when an external error-tracking service is needed.
|
|
264
267
|
*/
|
|
265
|
-
export class
|
|
266
|
-
dsn;
|
|
267
|
-
constructor(dsn) {
|
|
268
|
-
this.dsn = dsn;
|
|
269
|
-
}
|
|
268
|
+
export class LoggingErrorReporter {
|
|
270
269
|
captureError(error, context) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
error: error.message,
|
|
276
|
-
...context,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
// In production, use actual Sentry SDK:
|
|
280
|
-
// Sentry.captureException(error, {
|
|
281
|
-
// contexts: context?.context,
|
|
282
|
-
// tags: context?.tags,
|
|
283
|
-
// user: context?.user,
|
|
284
|
-
// extra: context?.extra,
|
|
285
|
-
// })
|
|
270
|
+
logger.debug('[ErrorReporter] Error captured', {
|
|
271
|
+
error: error.message,
|
|
272
|
+
...context,
|
|
273
|
+
});
|
|
286
274
|
}
|
|
287
275
|
captureMessage(message, level, context) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
// Sentry.captureMessage(message, level)
|
|
296
|
-
}
|
|
297
|
-
setUser(_user) {
|
|
298
|
-
// Sentry.setUser(user)
|
|
299
|
-
}
|
|
300
|
-
setContext(_context) {
|
|
301
|
-
// Sentry.setContext('custom', context)
|
|
302
|
-
}
|
|
303
|
-
setTag(_key, _value) {
|
|
304
|
-
// Sentry.setTag(key, value)
|
|
305
|
-
}
|
|
306
|
-
addBreadcrumb(_breadcrumb) {
|
|
307
|
-
// Sentry.addBreadcrumb({
|
|
308
|
-
// timestamp: breadcrumb.timestamp,
|
|
309
|
-
// level: breadcrumb.level,
|
|
310
|
-
// category: breadcrumb.category,
|
|
311
|
-
// message: breadcrumb.message,
|
|
312
|
-
// data: breadcrumb.data,
|
|
313
|
-
// })
|
|
276
|
+
logger.debug('[ErrorReporter] Message captured', {
|
|
277
|
+
message,
|
|
278
|
+
level,
|
|
279
|
+
...context,
|
|
280
|
+
});
|
|
314
281
|
}
|
|
282
|
+
setUser(_user) { }
|
|
283
|
+
setContext(_context) { }
|
|
284
|
+
setTag(_key, _value) { }
|
|
285
|
+
addBreadcrumb(_breadcrumb) { }
|
|
315
286
|
}
|
|
316
287
|
/**
|
|
317
288
|
* HTTP error reporter (send to custom endpoint)
|
|
@@ -405,7 +376,7 @@ export function initializeErrorReporting(config) {
|
|
|
405
376
|
errorReporter.addReporter(new ConsoleErrorReporter());
|
|
406
377
|
}
|
|
407
378
|
if (config.dsn) {
|
|
408
|
-
errorReporter.addReporter(new
|
|
379
|
+
errorReporter.addReporter(new LoggingErrorReporter());
|
|
409
380
|
}
|
|
410
381
|
// Set up global error handlers
|
|
411
382
|
if (typeof window !== 'undefined') {
|
|
@@ -8,7 +8,7 @@ export { AdaptiveCircuitBreaker, Bulkhead, CircuitBreak, CircuitBreaker, Circuit
|
|
|
8
8
|
export type { ErrorBoundaryProps, ErrorBoundaryState, ErrorBoundaryWithRetryProps, ErrorInfo, ErrorSeverity, } from './error-boundary';
|
|
9
9
|
export { AuthenticationError, ErrorBoundary, ErrorBoundaryWithRetry, getErrorSeverity, isAuthenticationError, isNetworkError, isNotFoundError, isValidationError, NetworkError, NotFoundError, shouldRetryError, useErrorHandler, ValidationError, withErrorBoundary, } from './error-boundary';
|
|
10
10
|
export type { Breadcrumb, ErrorContext, ErrorLevel, ErrorReport, ErrorReporter, UserContext, } from './error-reporter';
|
|
11
|
-
export { ConsoleErrorReporter, ErrorFilters, ErrorReportingSystem, errorReporter, HTTPErrorReporter, initializeErrorReporting,
|
|
11
|
+
export { ConsoleErrorReporter, ErrorFilters, ErrorReportingSystem, errorReporter, HTTPErrorReporter, initializeErrorReporting, LoggingErrorReporter, trackAction, trackAPICall, trackNavigation, } from './error-reporter';
|
|
12
12
|
export type { ErrorFallbackProps } from './fallback-components';
|
|
13
13
|
export { DegradedServiceFallback, ErrorFallback, FeatureUnavailableFallback, InlineError, LoadingFallback, MaintenanceFallback, NetworkErrorFallback, NotFoundFallback, OfflineFallback, PermissionDeniedFallback, RetryBoundary, Skeleton, SuccessMessage, SuspenseFallback, Toast, } from './fallback-components';
|
|
14
14
|
export type { RetryConfig, RetryOptions } from './retry';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error-handling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error-handling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE/D,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,KAAK,GACN,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,KAAK,GACN,MAAM,SAAS,CAAA"}
|
|
@@ -8,7 +8,7 @@ export { AdaptiveCircuitBreaker, Bulkhead, CircuitBreak, CircuitBreaker, Circuit
|
|
|
8
8
|
// Error boundaries
|
|
9
9
|
export { AuthenticationError, ErrorBoundary, ErrorBoundaryWithRetry, getErrorSeverity, isAuthenticationError, isNetworkError, isNotFoundError, isValidationError, NetworkError, NotFoundError, shouldRetryError, useErrorHandler, ValidationError, withErrorBoundary, } from './error-boundary';
|
|
10
10
|
// Error reporting
|
|
11
|
-
export { ConsoleErrorReporter, ErrorFilters, ErrorReportingSystem, errorReporter, HTTPErrorReporter, initializeErrorReporting,
|
|
11
|
+
export { ConsoleErrorReporter, ErrorFilters, ErrorReportingSystem, errorReporter, HTTPErrorReporter, initializeErrorReporting, LoggingErrorReporter, trackAction, trackAPICall, trackNavigation, } from './error-reporter';
|
|
12
12
|
// Fallback components
|
|
13
13
|
export { DegradedServiceFallback, ErrorFallback, FeatureUnavailableFallback, InlineError, LoadingFallback, MaintenanceFallback, NetworkErrorFallback, NotFoundFallback, OfflineFallback, PermissionDeniedFallback, RetryBoundary, Skeleton, SuccessMessage, SuspenseFallback, Toast, } from './fallback-components';
|
|
14
14
|
// Retry logic
|
package/dist/features.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { type LicenseTier } from './license.js';
|
|
|
13
13
|
export interface FeatureFlags {
|
|
14
14
|
/** AI agent system (Pro: 1 provider, Enterprise: all providers) */
|
|
15
15
|
ai: boolean;
|
|
16
|
-
/** AI memory system — working + episodic + vector (
|
|
16
|
+
/** AI memory system — working + episodic + vector (Max: basic, Enterprise: full) */
|
|
17
17
|
aiMemory: boolean;
|
|
18
18
|
/** MCP server integration */
|
|
19
19
|
mcp: boolean;
|
|
@@ -29,6 +29,10 @@ export interface FeatureFlags {
|
|
|
29
29
|
whiteLabel: boolean;
|
|
30
30
|
/** SSO/SAML authentication */
|
|
31
31
|
sso: boolean;
|
|
32
|
+
/** BYOK server-side key storage (Max+) */
|
|
33
|
+
byokServerSide: boolean;
|
|
34
|
+
/** Multi-provider AI (Max+: 2 providers, Enterprise: all providers) */
|
|
35
|
+
aiMultiProvider: boolean;
|
|
32
36
|
/** Audit logging and compliance trail */
|
|
33
37
|
auditLog: boolean;
|
|
34
38
|
/** Full real-time sync with conflict resolution */
|
package/dist/features.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAE3D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,EAAE,EAAE,OAAO,CAAA;IACX,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAA;IACjB,6BAA6B;IAC7B,GAAG,EAAE,OAAO,CAAA;IACZ,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAA;IACpB,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAA;IACnB,8BAA8B;IAC9B,GAAG,EAAE,OAAO,CAAA;IACZ,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAA;IACrB,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,4BAA4B;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAE3D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,EAAE,EAAE,OAAO,CAAA;IACX,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAA;IACjB,6BAA6B;IAC7B,GAAG,EAAE,OAAO,CAAA;IACZ,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAA;IACpB,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAA;IACnB,8BAA8B;IAC9B,GAAG,EAAE,OAAO,CAAA;IACZ,0CAA0C;IAC1C,cAAc,EAAE,OAAO,CAAA;IACvB,uEAAuE;IACvE,eAAe,EAAE,OAAO,CAAA;IACxB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAA;IACrB,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,4BAA4B;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAA;CACnB;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,YAAY,CAQ1C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,YAAY,GAAG,OAAO,CAGrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAelE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,YAAY,GAAG,WAAW,CAExE;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/features.js
CHANGED
|
@@ -12,7 +12,6 @@ import { isLicensed } from './license.js';
|
|
|
12
12
|
/** Feature-to-tier mapping: minimum tier required for each feature */
|
|
13
13
|
const featureTierMap = {
|
|
14
14
|
ai: 'pro',
|
|
15
|
-
aiMemory: 'pro',
|
|
16
15
|
mcp: 'pro',
|
|
17
16
|
editors: 'pro',
|
|
18
17
|
harnesses: 'pro',
|
|
@@ -21,10 +20,13 @@ const featureTierMap = {
|
|
|
21
20
|
dashboard: 'pro',
|
|
22
21
|
customDomain: 'pro',
|
|
23
22
|
analytics: 'pro',
|
|
23
|
+
aiMemory: 'max',
|
|
24
|
+
byokServerSide: 'max',
|
|
25
|
+
aiMultiProvider: 'max',
|
|
26
|
+
auditLog: 'max',
|
|
24
27
|
multiTenant: 'enterprise',
|
|
25
28
|
whiteLabel: 'enterprise',
|
|
26
29
|
sso: 'enterprise',
|
|
27
|
-
auditLog: 'enterprise',
|
|
28
30
|
};
|
|
29
31
|
/**
|
|
30
32
|
* Returns the current feature flags based on the active license tier.
|
|
@@ -69,7 +71,8 @@ export function getFeaturesForTier(tier) {
|
|
|
69
71
|
const tierRank = {
|
|
70
72
|
free: 0,
|
|
71
73
|
pro: 1,
|
|
72
|
-
|
|
74
|
+
max: 2,
|
|
75
|
+
enterprise: 3,
|
|
73
76
|
};
|
|
74
77
|
const flags = {};
|
|
75
78
|
for (const [feature, requiredTier] of Object.entries(featureTierMap)) {
|
|
@@ -10,9 +10,6 @@
|
|
|
10
10
|
* They are generated by scripts and will be overwritten.
|
|
11
11
|
*/
|
|
12
12
|
export * from './cms.js';
|
|
13
|
-
import * as SupabaseNS from './supabase.js';
|
|
14
|
-
export { SupabaseNS };
|
|
15
|
-
export type { Database as SupabaseDatabase } from './supabase.js';
|
|
16
13
|
import * as NeonNS from './neon.js';
|
|
17
14
|
export { NeonNS };
|
|
18
15
|
export type { Database as NeonDatabase } from './neon.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,UAAU,CAAA;AAQxB,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,YAAY,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -11,13 +11,6 @@
|
|
|
11
11
|
*/
|
|
12
12
|
// Re-export all generated types
|
|
13
13
|
export * from './cms.js';
|
|
14
|
-
// Re-export Supabase types
|
|
15
|
-
// Note: Using namespace export to avoid Database type conflict with Neon
|
|
16
|
-
// Access Database type: import { SupabaseNS } from '@revealui/core/generated/types'; type DB = SupabaseNS.Database
|
|
17
|
-
// Or use alias: import { SupabaseDatabase } from '@revealui/core/generated/types'
|
|
18
|
-
// Or import directly: import type { Database } from '@revealui/core/generated/types/supabase'
|
|
19
|
-
import * as SupabaseNS from './supabase.js';
|
|
20
|
-
export { SupabaseNS };
|
|
21
14
|
// Re-export Neon types
|
|
22
15
|
// Note: neon.ts re-exports types from @revealui/contracts/generated to break circular dependencies
|
|
23
16
|
// Using namespace export to avoid Database type conflict with Supabase
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { createRESTHandlers, handleRESTRequest } from './api/rest.js';
|
|
2
2
|
export { anyone, authenticated } from './auth/access.js';
|
|
3
3
|
export type { FloatingToolbarPluginProps, ImageNodeData, RichTextEditorProps, SerializedImageNode, ToolbarPluginProps, } from './client/index.js';
|
|
4
|
-
export { $createImageNode, $isImageNode, AdminDashboard, APIError, APIErrorType, apiClient, CollectionList, clearAuthToken, DocumentForm, FloatingToolbarPlugin,
|
|
4
|
+
export { $createImageNode, $isImageNode, AdminDashboard, APIError, APIErrorType, apiClient, CollectionList, clearAuthToken, DocumentForm, FloatingToolbarPlugin, generatePageMetadata, getAuthHeader, getAuthToken, ImageNode, ImageNodeComponent, ImagePlugin, ImageUploadButton, INSERT_IMAGE_COMMAND, NotFoundPage, OPEN_IMAGE_UPLOAD_COMMAND, RootLayout, RootPage, richTextEditorStyles, serializeConfig, setAuthToken, ToolbarPlugin, useRevealUI, withRevealUIAccess, } from './client/index.js';
|
|
5
5
|
export { buildConfig } from './config/index.js';
|
|
6
6
|
export { getRevealUI } from './config/runtime.js';
|
|
7
7
|
export { deepMerge } from './config/utils.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACxD,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,gBAAgB,EAChB,YAAY,EAEZ,cAAc,EACd,QAAQ,EACR,YAAY,EAEZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,9 +10,7 @@ export { $createImageNode, $isImageNode,
|
|
|
10
10
|
// Admin
|
|
11
11
|
AdminDashboard, APIError, APIErrorType,
|
|
12
12
|
// Re-export admin utils
|
|
13
|
-
apiClient, CollectionList, clearAuthToken, DocumentForm, FloatingToolbarPlugin,
|
|
14
|
-
// HTTP
|
|
15
|
-
fetchFromCMS, fetchHero, fetchMainInfos, fetchVideos, generatePageMetadata, getAuthHeader, getAuthToken, ImageNode, ImageNodeComponent, ImagePlugin, ImageUploadButton, INSERT_IMAGE_COMMAND, NotFoundPage, OPEN_IMAGE_UPLOAD_COMMAND, RootLayout, RootPage,
|
|
13
|
+
apiClient, CollectionList, clearAuthToken, DocumentForm, FloatingToolbarPlugin, generatePageMetadata, getAuthHeader, getAuthToken, ImageNode, ImageNodeComponent, ImagePlugin, ImageUploadButton, INSERT_IMAGE_COMMAND, NotFoundPage, OPEN_IMAGE_UPLOAD_COMMAND, RootLayout, RootPage,
|
|
16
14
|
// Rich text (exclude RichTextEditor component - use richtext/client)
|
|
17
15
|
richTextEditorStyles, serializeConfig, setAuthToken,
|
|
18
16
|
// UI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevealUIInstance.d.ts","sourceRoot":"","sources":["../../src/instance/RevealUIInstance.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,YAAY,EAQZ,gBAAgB,EAGjB,MAAM,mBAAmB,CAAA;AAS1B;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"RevealUIInstance.d.ts","sourceRoot":"","sources":["../../src/instance/RevealUIInstance.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,YAAY,EAQZ,gBAAgB,EAGjB,MAAM,mBAAmB,CAAA;AAS1B;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgZ5F"}
|
|
@@ -17,62 +17,56 @@ import { update } from './methods/update.js';
|
|
|
17
17
|
*/
|
|
18
18
|
export async function createRevealUIInstance(config) {
|
|
19
19
|
const logger = createLogger();
|
|
20
|
-
// Database connection is
|
|
20
|
+
// Database connection is lazy — only connect on first query.
|
|
21
|
+
// A single shared promise guards against concurrent init from multiple requests.
|
|
21
22
|
let dbConnected = false;
|
|
23
|
+
let dbInitPromise = null;
|
|
22
24
|
const ensureDbConnected = async () => {
|
|
23
|
-
if (dbConnected)
|
|
25
|
+
if (dbConnected)
|
|
24
26
|
return;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
type: field.type || 'text',
|
|
45
|
-
required: field.required,
|
|
46
|
-
unique: field.unique,
|
|
47
|
-
}));
|
|
48
|
-
config.db.createTable(collection.slug, tableFields);
|
|
27
|
+
if (!dbInitPromise && config.db) {
|
|
28
|
+
const db = config.db; // capture to satisfy narrowing inside async IIFE
|
|
29
|
+
dbInitPromise = (async () => {
|
|
30
|
+
await db.init?.();
|
|
31
|
+
// Queue table creation BEFORE connect()
|
|
32
|
+
// createTable() pushes promises to a queue that connect() will await
|
|
33
|
+
if (config.collections && db.createTable) {
|
|
34
|
+
for (const collection of config.collections) {
|
|
35
|
+
const fields = collection.fields || [];
|
|
36
|
+
const tableFields = fields
|
|
37
|
+
.filter((field) => field.name && !isJsonFieldType(field))
|
|
38
|
+
.map((field) => ({
|
|
39
|
+
name: field.name || '',
|
|
40
|
+
type: field.type || 'text',
|
|
41
|
+
required: field.required,
|
|
42
|
+
unique: field.unique,
|
|
43
|
+
}));
|
|
44
|
+
db.createTable(collection.slug, tableFields);
|
|
45
|
+
}
|
|
49
46
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// Extract fields from global config
|
|
55
|
-
const fields = global.fields || [];
|
|
56
|
-
// Convert RevealUIField to Field format for createGlobalTable
|
|
57
|
-
// Only include top-level fields that should be stored as columns
|
|
58
|
-
const tableFields = fields
|
|
59
|
-
.filter((field) => {
|
|
60
|
-
// Filter out fields that should be stored as JSON
|
|
47
|
+
// Queue global table creation BEFORE connect()
|
|
48
|
+
if (config.globals && db.createGlobalTable) {
|
|
49
|
+
for (const global of config.globals) {
|
|
50
|
+
const fields = global.fields || [];
|
|
61
51
|
const jsonTypes = ['array', 'group', 'blocks', 'richText'];
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
52
|
+
const tableFields = fields
|
|
53
|
+
.filter((field) => field.name && !jsonTypes.includes(field.type || ''))
|
|
54
|
+
.map((field) => ({
|
|
55
|
+
name: field.name || '',
|
|
56
|
+
type: field.type || 'text',
|
|
57
|
+
required: field.required,
|
|
58
|
+
unique: field.unique,
|
|
59
|
+
}));
|
|
60
|
+
db.createGlobalTable(global.slug, tableFields);
|
|
61
|
+
}
|
|
71
62
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
63
|
+
// Now connect() will wait for all queued table creation promises
|
|
64
|
+
await db.connect?.();
|
|
65
|
+
dbConnected = true;
|
|
66
|
+
})();
|
|
67
|
+
}
|
|
68
|
+
if (dbInitPromise) {
|
|
69
|
+
await dbInitPromise;
|
|
76
70
|
}
|
|
77
71
|
};
|
|
78
72
|
// Initialize collections and globals
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAIjG,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACtC,OAAO,EAAE,mBAAmB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,cAAc,CAAC,CA4CzB"}
|
|
@@ -16,7 +16,10 @@ export async function create(instance, ensureDbConnected, options) {
|
|
|
16
16
|
const collectionConfig = instance.config.collections?.find((c) => c.slug === collection);
|
|
17
17
|
// Enforce collection-level access control
|
|
18
18
|
if (collectionConfig?.access?.create && options.req) {
|
|
19
|
-
const canCreate = await collectionConfig.access.create({
|
|
19
|
+
const canCreate = await collectionConfig.access.create({
|
|
20
|
+
req: options.req,
|
|
21
|
+
data: options.data,
|
|
22
|
+
});
|
|
20
23
|
if (!canCreate) {
|
|
21
24
|
throw new Error('Access denied: you do not have permission to create in this collection');
|
|
22
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGjG,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACtC,OAAO,EAAE,mBAAmB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,cAAc,CAAC,CAwBzB"}
|
|
@@ -15,7 +15,10 @@ export async function deleteMethod(instance, ensureDbConnected, options) {
|
|
|
15
15
|
// Enforce collection-level access control
|
|
16
16
|
const collectionConfig = instance.config.collections?.find((c) => c.slug === collection);
|
|
17
17
|
if (collectionConfig?.access?.delete && options.req) {
|
|
18
|
-
const canDelete = await collectionConfig.access.delete({
|
|
18
|
+
const canDelete = await collectionConfig.access.delete({
|
|
19
|
+
req: options.req,
|
|
20
|
+
id: options.id,
|
|
21
|
+
});
|
|
19
22
|
if (!canDelete) {
|
|
20
23
|
throw new Error('Access denied: you do not have permission to delete in this collection');
|
|
21
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,qBAAqB,EAAE,GAAG,SAAS,EAC1C,IAAI,EAAE;IACJ,GAAG,EAAE,cAAc,CAAA;IACnB,OAAO,EAAE,iBAAiB,CAAA;CAC3B,EACD,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,qBAAqB,EAAE,GAAG,SAAS,EAC1C,IAAI,EAAE;IACJ,GAAG,EAAE,cAAc,CAAA;IACnB,OAAO,EAAE,iBAAiB,CAAA;CAC3B,EACD,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,CA0BzB"}
|
|
@@ -25,7 +25,9 @@ export async function callHooks(hooks, args, revealui) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
catch (error) {
|
|
28
|
-
|
|
28
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
29
|
+
revealui.logger.error(`Hook execution failed: ${msg}`);
|
|
30
|
+
throw error;
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/update.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/instance/methods/update.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAIjG,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACtC,OAAO,EAAE,mBAAmB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,cAAc,CAAC,CAgDzB"}
|
|
@@ -16,7 +16,10 @@ export async function update(instance, ensureDbConnected, options) {
|
|
|
16
16
|
const collectionConfig = instance.config.collections?.find((c) => c.slug === collection);
|
|
17
17
|
// Enforce collection-level access control
|
|
18
18
|
if (collectionConfig?.access?.update && options.req) {
|
|
19
|
-
const canUpdate = await collectionConfig.access.update({
|
|
19
|
+
const canUpdate = await collectionConfig.access.update({
|
|
20
|
+
req: options.req,
|
|
21
|
+
id: options.id,
|
|
22
|
+
});
|
|
20
23
|
if (!canUpdate) {
|
|
21
24
|
throw new Error('Access denied: you do not have permission to update in this collection');
|
|
22
25
|
}
|