@objectstack/rest 9.9.1 → 9.10.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/index.cjs CHANGED
@@ -489,7 +489,7 @@ function rowsToCsv(fields, rows, includeHeader) {
489
489
  return lines.join("\r\n") + (lines.length > 0 ? "\r\n" : "");
490
490
  }
491
491
  var RestServer = class {
492
- constructor(server, protocol, config = {}, kernelManager, envRegistry, defaultEnvironmentIdProvider, authServiceProvider, objectQLProvider, emailServiceProvider, sharingServiceProvider, reportsServiceProvider, approvalsServiceProvider, sharingRulesServiceProvider, i18nServiceProvider, analyticsServiceProvider) {
492
+ constructor(server, protocol, config = {}, kernelManager, envRegistry, defaultEnvironmentIdProvider, authServiceProvider, objectQLProvider, emailServiceProvider, sharingServiceProvider, reportsServiceProvider, approvalsServiceProvider, sharingRulesServiceProvider, i18nServiceProvider, analyticsServiceProvider, settingsServiceProvider) {
493
493
  /**
494
494
  * Short-TTL cache for `hostname → environmentId` (P1-4). `resolveByHostname`
495
495
  * is a control-plane lookup (typically a DB query) that otherwise runs on
@@ -520,6 +520,7 @@ var RestServer = class {
520
520
  this.sharingRulesServiceProvider = sharingRulesServiceProvider;
521
521
  this.i18nServiceProvider = i18nServiceProvider;
522
522
  this.analyticsServiceProvider = analyticsServiceProvider;
523
+ this.settingsServiceProvider = settingsServiceProvider;
523
524
  }
524
525
  /**
525
526
  * Resolve the protocol for a given request. When `environmentId` is present
@@ -909,6 +910,23 @@ var RestServer = class {
909
910
  } catch {
910
911
  }
911
912
  }
913
+ let timezone;
914
+ let locale;
915
+ try {
916
+ const settings = this.settingsServiceProvider ? await this.settingsServiceProvider(environmentId).catch(() => void 0) : void 0;
917
+ if (settings && typeof settings.get === "function") {
918
+ const sctx = { tenantId, userId };
919
+ const [tzRes, localeRes] = await Promise.all([
920
+ settings.get("localization", "timezone", sctx).catch(() => void 0),
921
+ settings.get("localization", "locale", sctx).catch(() => void 0)
922
+ ]);
923
+ const tzVal = tzRes?.value;
924
+ const localeVal = localeRes?.value;
925
+ if (typeof tzVal === "string" && tzVal.trim()) timezone = tzVal.trim();
926
+ if (typeof localeVal === "string" && localeVal.trim()) locale = localeVal.trim();
927
+ }
928
+ } catch {
929
+ }
912
930
  return {
913
931
  userId,
914
932
  tenantId,
@@ -916,7 +934,9 @@ var RestServer = class {
916
934
  permissions,
917
935
  systemPermissions,
918
936
  isSystem: false,
919
- org_user_ids
937
+ org_user_ids,
938
+ ...timezone ? { timezone } : {},
939
+ ...locale ? { locale } : {}
920
940
  };
921
941
  } catch {
922
942
  return void 0;
@@ -4449,6 +4469,13 @@ function createRestApiPlugin(config = {}) {
4449
4469
  return void 0;
4450
4470
  }
4451
4471
  };
4472
+ const settingsServiceProvider = async (_environmentId) => {
4473
+ try {
4474
+ return ctx.getService("settings");
4475
+ } catch {
4476
+ return void 0;
4477
+ }
4478
+ };
4452
4479
  if (!server) {
4453
4480
  ctx.logger.warn(`RestApiPlugin: HTTP Server service '${serverService}' not found. REST routes skipped.`);
4454
4481
  return;
@@ -4459,7 +4486,7 @@ function createRestApiPlugin(config = {}) {
4459
4486
  }
4460
4487
  ctx.logger.info("Hydrating REST API from Protocol...");
4461
4488
  try {
4462
- const restServer = new RestServer(server, protocol, config.api, kernelManager, envRegistry, defaultEnvironmentIdProvider, authServiceProvider, objectQLProvider, emailServiceProvider, sharingServiceProvider, reportsServiceProvider, approvalsServiceProvider, sharingRulesServiceProvider, i18nServiceProvider, analyticsServiceProvider);
4489
+ const restServer = new RestServer(server, protocol, config.api, kernelManager, envRegistry, defaultEnvironmentIdProvider, authServiceProvider, objectQLProvider, emailServiceProvider, sharingServiceProvider, reportsServiceProvider, approvalsServiceProvider, sharingRulesServiceProvider, i18nServiceProvider, analyticsServiceProvider, settingsServiceProvider);
4463
4490
  restServer.registerRoutes();
4464
4491
  ctx.logger.info("REST API successfully registered");
4465
4492
  } catch (err) {