@rpcbase/server 0.476.0 → 0.477.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 (33) hide show
  1. package/dist/{handler-DEEir2xV.js → handler-BOTZftAB.js} +29 -29
  2. package/dist/{handler-BITFtEr_.js → handler-B_mMDLBO.js} +80 -39
  3. package/dist/{handler-BYVnU9H-.js → handler-Cl-0-832.js} +1 -1
  4. package/dist/{handler-CHuOXAtH.js → handler-Dd20DHyz.js} +15 -11
  5. package/dist/index.d.ts +0 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +102 -87
  8. package/dist/notifications/api/notifications/handler.d.ts.map +1 -1
  9. package/dist/notifications.js +1 -1
  10. package/dist/rts/api/changes/handler.d.ts.map +1 -1
  11. package/dist/rts/index.d.ts +3 -1
  12. package/dist/rts/index.d.ts.map +1 -1
  13. package/dist/{index-Ckx0UHs6.js → rts/index.js} +99 -32
  14. package/dist/{schemas-DI7ewltq.js → schemas-D5T9tDtI.js} +609 -12
  15. package/dist/{shared-Chfrv8o6.js → shared-UGuDRAKK.js} +16 -30
  16. package/dist/uploads/api/file-uploads/handlers/completeUpload.d.ts.map +1 -1
  17. package/dist/uploads/api/file-uploads/handlers/getStatus.d.ts.map +1 -1
  18. package/dist/uploads/api/file-uploads/handlers/uploadChunk.d.ts.map +1 -1
  19. package/dist/uploads/api/file-uploads/shared.d.ts +3 -0
  20. package/dist/uploads/api/file-uploads/shared.d.ts.map +1 -1
  21. package/dist/uploads.js +1 -1
  22. package/package.json +4 -4
  23. package/dist/passwordHashStorage.test.d.ts +0 -2
  24. package/dist/passwordHashStorage.test.d.ts.map +0 -1
  25. package/dist/rts/api/changes/handler.test.d.ts +0 -2
  26. package/dist/rts/api/changes/handler.test.d.ts.map +0 -1
  27. package/dist/rts/index.ws.test.d.ts +0 -2
  28. package/dist/rts/index.ws.test.d.ts.map +0 -1
  29. package/dist/rts.d.ts +0 -3
  30. package/dist/rts.d.ts.map +0 -1
  31. package/dist/rts.js +0 -13
  32. package/dist/uploads/api/files/handlers/getFile.test.d.ts +0 -2
  33. package/dist/uploads/api/files/handlers/getFile.test.d.ts.map +0 -1
package/dist/index.js CHANGED
@@ -19,7 +19,6 @@ import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
19
19
  import { jsx } from "react/jsx-runtime";
20
20
  import { createPath, matchRoutes, parsePath, createStaticRouter, StaticRouterProvider } from "@rpcbase/router";
21
21
  import { s } from "./email-DEw8keax.js";
22
- import { i, n, r } from "./index-Ckx0UHs6.js";
23
22
  function getDefaultExportFromCjs(x) {
24
23
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
25
24
  }
@@ -95,9 +94,9 @@ function requireLib() {
95
94
  }
96
95
  return ip;
97
96
  });
98
- for (var i2 = 0; i2 < forwardedIps.length; i2++) {
99
- if (is.ip(forwardedIps[i2])) {
100
- return forwardedIps[i2];
97
+ for (var i = 0; i < forwardedIps.length; i++) {
98
+ if (is.ip(forwardedIps[i])) {
99
+ return forwardedIps[i];
101
100
  }
102
101
  }
103
102
  return null;
@@ -208,8 +207,8 @@ function createGetModuleFromFilename(basePath = process.argv[1] ? dirname(proces
208
207
  if (".js" === ext || ".mjs" === ext || ".cjs" === ext) file = file.slice(0, -1 * ext.length);
209
208
  const decodedFile = decodeURIComponent(file);
210
209
  if (!dir) dir = ".";
211
- const n2 = dir.lastIndexOf("/node_modules");
212
- if (n2 > -1) return `${dir.slice(n2 + 14).replace(/\//g, ".")}:${decodedFile}`;
210
+ const n = dir.lastIndexOf("/node_modules");
211
+ if (n > -1) return `${dir.slice(n + 14).replace(/\//g, ".")}:${decodedFile}`;
213
212
  if (dir.startsWith(normalizedBase)) {
214
213
  const moduleName = dir.slice(normalizedBase.length + 1).replace(/\//g, ".");
215
214
  return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;
@@ -336,12 +335,12 @@ class UUID {
336
335
  }
337
336
  if (hex) {
338
337
  const inner = new Uint8Array(16);
339
- for (let i2 = 0; i2 < 16; i2 += 4) {
340
- const n2 = parseInt(hex.substring(2 * i2, 2 * i2 + 8), 16);
341
- inner[i2 + 0] = n2 >>> 24;
342
- inner[i2 + 1] = n2 >>> 16;
343
- inner[i2 + 2] = n2 >>> 8;
344
- inner[i2 + 3] = n2;
338
+ for (let i = 0; i < 16; i += 4) {
339
+ const n = parseInt(hex.substring(2 * i, 2 * i + 8), 16);
340
+ inner[i + 0] = n >>> 24;
341
+ inner[i + 1] = n >>> 16;
342
+ inner[i + 2] = n >>> 8;
343
+ inner[i + 3] = n;
345
344
  }
346
345
  return new UUID(inner);
347
346
  }
@@ -349,18 +348,18 @@ class UUID {
349
348
  }
350
349
  toString() {
351
350
  let text = "";
352
- for (let i2 = 0; i2 < this.bytes.length; i2++) {
353
- text += DIGITS.charAt(this.bytes[i2] >>> 4);
354
- text += DIGITS.charAt(15 & this.bytes[i2]);
355
- if (3 === i2 || 5 === i2 || 7 === i2 || 9 === i2) text += "-";
351
+ for (let i = 0; i < this.bytes.length; i++) {
352
+ text += DIGITS.charAt(this.bytes[i] >>> 4);
353
+ text += DIGITS.charAt(15 & this.bytes[i]);
354
+ if (3 === i || 5 === i || 7 === i || 9 === i) text += "-";
356
355
  }
357
356
  return text;
358
357
  }
359
358
  toHex() {
360
359
  let text = "";
361
- for (let i2 = 0; i2 < this.bytes.length; i2++) {
362
- text += DIGITS.charAt(this.bytes[i2] >>> 4);
363
- text += DIGITS.charAt(15 & this.bytes[i2]);
360
+ for (let i = 0; i < this.bytes.length; i++) {
361
+ text += DIGITS.charAt(this.bytes[i] >>> 4);
362
+ text += DIGITS.charAt(15 & this.bytes[i]);
364
363
  }
365
364
  return text;
366
365
  }
@@ -368,12 +367,12 @@ class UUID {
368
367
  return this.toString();
369
368
  }
370
369
  getVariant() {
371
- const n2 = this.bytes[8] >>> 4;
372
- if (n2 < 0) throw new Error("unreachable");
373
- if (n2 <= 7) return this.bytes.every((e) => 0 === e) ? "NIL" : "VAR_0";
374
- if (n2 <= 11) return "VAR_10";
375
- if (n2 <= 13) return "VAR_110";
376
- if (n2 <= 15) return this.bytes.every((e) => 255 === e) ? "MAX" : "VAR_RESERVED";
370
+ const n = this.bytes[8] >>> 4;
371
+ if (n < 0) throw new Error("unreachable");
372
+ if (n <= 7) return this.bytes.every((e) => 0 === e) ? "NIL" : "VAR_0";
373
+ if (n <= 11) return "VAR_10";
374
+ if (n <= 13) return "VAR_110";
375
+ if (n <= 15) return this.bytes.every((e) => 255 === e) ? "MAX" : "VAR_RESERVED";
377
376
  else throw new Error("unreachable");
378
377
  }
379
378
  getVersion() {
@@ -386,8 +385,8 @@ class UUID {
386
385
  return 0 === this.compareTo(other);
387
386
  }
388
387
  compareTo(other) {
389
- for (let i2 = 0; i2 < 16; i2++) {
390
- const diff = this.bytes[i2] - other.bytes[i2];
388
+ for (let i = 0; i < 16; i++) {
389
+ const diff = this.bytes[i] - other.bytes[i];
391
390
  if (0 !== diff) return Math.sign(diff);
392
391
  }
393
392
  return 0;
@@ -722,8 +721,8 @@ function removeTrailingSlash(url) {
722
721
  }
723
722
  async function retriable(fn, props) {
724
723
  let lastError = null;
725
- for (let i2 = 0; i2 < props.retryCount + 1; i2++) {
726
- if (i2 > 0) await new Promise((r2) => setTimeout(r2, props.retryDelay));
724
+ for (let i = 0; i < props.retryCount + 1; i++) {
725
+ if (i > 0) await new Promise((r) => setTimeout(r, props.retryDelay));
727
726
  try {
728
727
  const res = await fn();
729
728
  return res;
@@ -1121,7 +1120,8 @@ class PostHogCoreStateless {
1121
1120
  flags: {},
1122
1121
  featureFlags: {},
1123
1122
  featureFlagPayloads: {},
1124
- requestId: flagsResponse?.requestId
1123
+ requestId: flagsResponse?.requestId,
1124
+ quotaLimited: flagsResponse.quotaLimited
1125
1125
  };
1126
1126
  }
1127
1127
  return flagsResponse;
@@ -1425,8 +1425,8 @@ function getFilenameToChunkIdMap(stackParser) {
1425
1425
  if (result) acc[result[0]] = result[1];
1426
1426
  else {
1427
1427
  const parsedStack = stackParser(stackKey);
1428
- for (let i2 = parsedStack.length - 1; i2 >= 0; i2--) {
1429
- const stackFrame = parsedStack[i2];
1428
+ for (let i = parsedStack.length - 1; i >= 0; i--) {
1429
+ const stackFrame = parsedStack[i];
1430
1430
  const filename = stackFrame?.filename;
1431
1431
  const chunkId = chunkIdMap[stackKey];
1432
1432
  if (filename && chunkId) {
@@ -1634,8 +1634,8 @@ function createStackParser(platform, ...parsers) {
1634
1634
  return (stack, skipFirstLines = 0) => {
1635
1635
  const frames = [];
1636
1636
  const lines = stack.split("\n");
1637
- for (let i2 = skipFirstLines; i2 < lines.length; i2++) {
1638
- const line = lines[i2];
1637
+ for (let i = skipFirstLines; i < lines.length; i++) {
1638
+ const line = lines[i];
1639
1639
  if (line.length > 1024) continue;
1640
1640
  const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, "$1") : line;
1641
1641
  if (!cleanedLine.match(/\S*Error: /)) {
@@ -1717,10 +1717,10 @@ function extractExceptionKeysForMessage(err, maxLength = 40) {
1717
1717
  const keys = Object.keys(err);
1718
1718
  keys.sort();
1719
1719
  if (!keys.length) return "[object has no keys]";
1720
- for (let i2 = keys.length; i2 > 0; i2--) {
1721
- const serialized = keys.slice(0, i2).join(", ");
1720
+ for (let i = keys.length; i > 0; i--) {
1721
+ const serialized = keys.slice(0, i).join(", ");
1722
1722
  if (!(serialized.length > maxLength)) {
1723
- if (i2 === keys.length) return serialized;
1723
+ if (i === keys.length) return serialized;
1724
1724
  return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;
1725
1725
  }
1726
1726
  }
@@ -1829,8 +1829,8 @@ const MAX_CONTEXTLINES_COLNO = 1e3;
1829
1829
  const MAX_CONTEXTLINES_LINENO = 1e4;
1830
1830
  async function addSourceContext(frames) {
1831
1831
  const filesToLines = {};
1832
- for (let i2 = frames.length - 1; i2 >= 0; i2--) {
1833
- const frame = frames[i2];
1832
+ for (let i = frames.length - 1; i >= 0; i--) {
1833
+ const frame = frames[i];
1834
1834
  const filename = frame?.filename;
1835
1835
  if (!frame || "string" != typeof filename || "number" != typeof frame.lineno || shouldSkipContextLinesForFile(filename) || shouldSkipContextLinesForFrame(frame)) continue;
1836
1836
  const filesToLinesOutput = filesToLines[filename];
@@ -1846,7 +1846,7 @@ async function addSourceContext(frames) {
1846
1846
  if (!filesToLineRanges) continue;
1847
1847
  filesToLineRanges.sort((a, b) => a - b);
1848
1848
  const ranges = makeLineReaderRanges(filesToLineRanges);
1849
- if (ranges.every((r2) => rangeExistsInContentCache(file, r2))) continue;
1849
+ if (ranges.every((r) => rangeExistsInContentCache(file, r))) continue;
1850
1850
  const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});
1851
1851
  readlinePromises.push(getContextLinesFromFile(file, ranges, cache));
1852
1852
  }
@@ -1914,8 +1914,8 @@ function addSourceContextToFrames(frames, cache) {
1914
1914
  function addContextToFrame(lineno, frame, contents) {
1915
1915
  if (void 0 === frame.lineno || void 0 === contents) return;
1916
1916
  frame.pre_context = [];
1917
- for (let i2 = makeRangeStart(lineno); i2 < lineno; i2++) {
1918
- const line = contents[i2];
1917
+ for (let i = makeRangeStart(lineno); i < lineno; i++) {
1918
+ const line = contents[i];
1919
1919
  if (void 0 === line) return void clearLineContext(frame);
1920
1920
  frame.pre_context.push(line);
1921
1921
  }
@@ -1923,8 +1923,8 @@ function addContextToFrame(lineno, frame, contents) {
1923
1923
  frame.context_line = contents[lineno];
1924
1924
  const end = makeRangeEnd(lineno);
1925
1925
  frame.post_context = [];
1926
- for (let i2 = lineno + 1; i2 <= end; i2++) {
1927
- const line = contents[i2];
1926
+ for (let i = lineno + 1; i <= end; i++) {
1927
+ const line = contents[i];
1928
1928
  if (void 0 === line) break;
1929
1929
  frame.post_context.push(line);
1930
1930
  }
@@ -1945,29 +1945,29 @@ function shouldSkipContextLinesForFrame(frame) {
1945
1945
  function rangeExistsInContentCache(file, range) {
1946
1946
  const contents = LRU_FILE_CONTENTS_CACHE.get(file);
1947
1947
  if (void 0 === contents) return false;
1948
- for (let i2 = range[0]; i2 <= range[1]; i2++) if (void 0 === contents[i2]) return false;
1948
+ for (let i = range[0]; i <= range[1]; i++) if (void 0 === contents[i]) return false;
1949
1949
  return true;
1950
1950
  }
1951
1951
  function makeLineReaderRanges(lines) {
1952
1952
  if (!lines.length) return [];
1953
- let i2 = 0;
1953
+ let i = 0;
1954
1954
  const line = lines[0];
1955
1955
  if ("number" != typeof line) return [];
1956
1956
  let current = makeContextRange(line);
1957
1957
  const out = [];
1958
1958
  while (true) {
1959
- if (i2 === lines.length - 1) {
1959
+ if (i === lines.length - 1) {
1960
1960
  out.push(current);
1961
1961
  break;
1962
1962
  }
1963
- const next = lines[i2 + 1];
1963
+ const next = lines[i + 1];
1964
1964
  if ("number" != typeof next) break;
1965
1965
  if (next <= current[1]) current[1] = next + DEFAULT_LINES_OF_CONTEXT;
1966
1966
  else {
1967
1967
  out.push(current);
1968
1968
  current = makeContextRange(next);
1969
1969
  }
1970
- i2++;
1970
+ i++;
1971
1971
  }
1972
1972
  return out;
1973
1973
  }
@@ -2096,7 +2096,13 @@ class ErrorTracking {
2096
2096
  this._rateLimiter.stop();
2097
2097
  }
2098
2098
  }
2099
- const version = "5.17.4";
2099
+ const version = "5.18.0";
2100
+ const FeatureFlagError = {
2101
+ ERRORS_WHILE_COMPUTING: "errors_while_computing_flags",
2102
+ FLAG_MISSING: "flag_missing",
2103
+ QUOTA_LIMITED: "quota_limited",
2104
+ UNKNOWN_ERROR: "unknown_error"
2105
+ };
2100
2106
  async function hashSHA1(text) {
2101
2107
  const subtle = globalThis.crypto?.subtle;
2102
2108
  if (!subtle) throw new Error("SubtleCrypto API not available");
@@ -2818,13 +2824,23 @@ class PostHogBackendClient extends PostHogCoreStateless {
2818
2824
  let requestId;
2819
2825
  let evaluatedAt;
2820
2826
  let flagDetail;
2827
+ let featureFlagError;
2821
2828
  if (!flagWasLocallyEvaluated && !onlyEvaluateLocally) {
2822
- const remoteResponse = await super.getFeatureFlagDetailStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);
2823
- if (void 0 === remoteResponse) return;
2824
- flagDetail = remoteResponse.response;
2825
- response = getFeatureFlagValue(flagDetail);
2826
- requestId = remoteResponse?.requestId;
2827
- evaluatedAt = remoteResponse?.evaluatedAt;
2829
+ const flagsResponse = await super.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [
2830
+ key
2831
+ ]);
2832
+ if (void 0 === flagsResponse) featureFlagError = FeatureFlagError.UNKNOWN_ERROR;
2833
+ else {
2834
+ requestId = flagsResponse.requestId;
2835
+ evaluatedAt = flagsResponse.evaluatedAt;
2836
+ const errors = [];
2837
+ if (flagsResponse.errorsWhileComputingFlags) errors.push(FeatureFlagError.ERRORS_WHILE_COMPUTING);
2838
+ if (flagsResponse.quotaLimited?.includes("feature_flags")) errors.push(FeatureFlagError.QUOTA_LIMITED);
2839
+ flagDetail = flagsResponse.flags[key];
2840
+ if (void 0 === flagDetail) errors.push(FeatureFlagError.FLAG_MISSING);
2841
+ if (errors.length > 0) featureFlagError = errors.join(",");
2842
+ response = getFeatureFlagValue(flagDetail);
2843
+ }
2828
2844
  }
2829
2845
  const featureFlagReportedKey = `${key}_${response}`;
2830
2846
  if (sendFeatureFlagEvents && (!(distinctId in this.distinctIdHasSentFlagCalls) || !this.distinctIdHasSentFlagCalls[distinctId].includes(featureFlagReportedKey))) {
@@ -2833,20 +2849,22 @@ class PostHogBackendClient extends PostHogCoreStateless {
2833
2849
  else this.distinctIdHasSentFlagCalls[distinctId] = [
2834
2850
  featureFlagReportedKey
2835
2851
  ];
2852
+ const properties = {
2853
+ $feature_flag: key,
2854
+ $feature_flag_response: response,
2855
+ $feature_flag_id: flagDetail?.metadata?.id,
2856
+ $feature_flag_version: flagDetail?.metadata?.version,
2857
+ $feature_flag_reason: flagDetail?.reason?.description ?? flagDetail?.reason?.code,
2858
+ locally_evaluated: flagWasLocallyEvaluated,
2859
+ [`$feature/${key}`]: response,
2860
+ $feature_flag_request_id: requestId,
2861
+ $feature_flag_evaluated_at: evaluatedAt
2862
+ };
2863
+ if (featureFlagError) properties.$feature_flag_error = featureFlagError;
2836
2864
  this.capture({
2837
2865
  distinctId,
2838
2866
  event: "$feature_flag_called",
2839
- properties: {
2840
- $feature_flag: key,
2841
- $feature_flag_response: response,
2842
- $feature_flag_id: flagDetail?.metadata?.id,
2843
- $feature_flag_version: flagDetail?.metadata?.version,
2844
- $feature_flag_reason: flagDetail?.reason?.description ?? flagDetail?.reason?.code,
2845
- locally_evaluated: flagWasLocallyEvaluated,
2846
- [`$feature/${key}`]: response,
2847
- $feature_flag_request_id: requestId,
2848
- $feature_flag_evaluated_at: evaluatedAt
2849
- },
2867
+ properties,
2850
2868
  groups,
2851
2869
  disableGeoip
2852
2870
  });
@@ -3561,15 +3579,15 @@ const parseEnvInt = (value) => {
3561
3579
  return parsed;
3562
3580
  };
3563
3581
  const isPowerOfTwo = (value) => (value & value - 1) === 0;
3564
- const estimateScryptMemoryBytes = ({ N, r: r2, p }) => {
3565
- return 128 * r2 * (N + p);
3582
+ const estimateScryptMemoryBytes = ({ N, r, p }) => {
3583
+ return 128 * r * (N + p);
3566
3584
  };
3567
3585
  const validateScryptParams = (params) => {
3568
- const { N, r: r2, p, keylen, saltBytes, maxmemBytes } = params;
3586
+ const { N, r, p, keylen, saltBytes, maxmemBytes } = params;
3569
3587
  if (!Number.isSafeInteger(N) || N < 2 || N > MAX_SCRYPT_N || !isPowerOfTwo(N)) {
3570
3588
  return { ok: false, error: "invalid_scrypt_N" };
3571
3589
  }
3572
- if (!Number.isSafeInteger(r2) || r2 < 1 || r2 > MAX_SCRYPT_R) {
3590
+ if (!Number.isSafeInteger(r) || r < 1 || r > MAX_SCRYPT_R) {
3573
3591
  return { ok: false, error: "invalid_scrypt_r" };
3574
3592
  }
3575
3593
  if (!Number.isSafeInteger(p) || p < 1 || p > MAX_SCRYPT_P) {
@@ -3584,7 +3602,7 @@ const validateScryptParams = (params) => {
3584
3602
  if (!Number.isSafeInteger(maxmemBytes) || maxmemBytes < 16 * 1024 * 1024 || maxmemBytes > MAX_SCRYPT_MAXMEM_BYTES) {
3585
3603
  return { ok: false, error: "invalid_scrypt_maxmem" };
3586
3604
  }
3587
- const estimatedMem = estimateScryptMemoryBytes({ N, r: r2, p });
3605
+ const estimatedMem = estimateScryptMemoryBytes({ N, r, p });
3588
3606
  if (estimatedMem > maxmemBytes) {
3589
3607
  return { ok: false, error: "scrypt_params_exceed_maxmem" };
3590
3608
  }
@@ -3619,9 +3637,9 @@ const getCurrentScryptParams = (opts) => {
3619
3637
  return params;
3620
3638
  };
3621
3639
  const scryptAsync = async (password, salt, params) => {
3622
- const { N, r: r2, p, keylen, maxmemBytes } = params;
3640
+ const { N, r, p, keylen, maxmemBytes } = params;
3623
3641
  return await new Promise((resolve, reject) => {
3624
- crypto.scrypt(password, salt, keylen, { N, r: r2, p, maxmem: maxmemBytes }, (err, derivedKey) => {
3642
+ crypto.scrypt(password, salt, keylen, { N, r, p, maxmem: maxmemBytes }, (err, derivedKey) => {
3625
3643
  if (err) {
3626
3644
  reject(err);
3627
3645
  return;
@@ -3668,10 +3686,10 @@ const parseStoredScryptHash = (stored) => {
3668
3686
  params.set(key, value);
3669
3687
  }
3670
3688
  const N = params.get("N");
3671
- const r2 = params.get("r");
3689
+ const r = params.get("r");
3672
3690
  const p = params.get("p");
3673
3691
  const keylen = params.get("keylen");
3674
- if (N === void 0 || r2 === void 0 || p === void 0 || keylen === void 0) return null;
3692
+ if (N === void 0 || r === void 0 || p === void 0 || keylen === void 0) return null;
3675
3693
  if (params.size !== 4) return null;
3676
3694
  const salt = parseB64(saltB64);
3677
3695
  const dk = parseB64(dkB64);
@@ -3682,31 +3700,31 @@ const parseStoredScryptHash = (stored) => {
3682
3700
  const currentMaxmemBytes = getCurrentMaxmemBytes();
3683
3701
  const validated = validateScryptParams({
3684
3702
  N,
3685
- r: r2,
3703
+ r,
3686
3704
  p,
3687
3705
  keylen,
3688
3706
  saltBytes: salt.length,
3689
3707
  maxmemBytes: currentMaxmemBytes
3690
3708
  });
3691
3709
  if (!validated.ok) return null;
3692
- return { N, r: r2, p, keylen, salt, dk };
3710
+ return { N, r, p, keylen, salt, dk };
3693
3711
  };
3694
3712
  async function hashPasswordForStorage(password, opts) {
3695
- const { N, r: r2, p, keylen, saltBytes, maxmemBytes } = getCurrentScryptParams(opts);
3713
+ const { N, r, p, keylen, saltBytes, maxmemBytes } = getCurrentScryptParams(opts);
3696
3714
  const salt = crypto.randomBytes(saltBytes);
3697
- const dk = await scryptAsync(password, salt, { N, r: r2, p, keylen, maxmemBytes });
3715
+ const dk = await scryptAsync(password, salt, { N, r, p, keylen, maxmemBytes });
3698
3716
  const saltB64 = salt.toString("base64");
3699
3717
  const dkB64 = dk.toString("base64");
3700
- return `$scrypt$N=${N},r=${r2},p=${p},keylen=${keylen}$${saltB64}$${dkB64}`;
3718
+ return `$scrypt$N=${N},r=${r},p=${p},keylen=${keylen}$${saltB64}$${dkB64}`;
3701
3719
  }
3702
3720
  async function verifyPasswordFromStorage(password, stored) {
3703
3721
  const parsed = parseStoredScryptHash(stored);
3704
3722
  if (!parsed) return false;
3705
- const { N, r: r2, p, keylen, salt, dk } = parsed;
3723
+ const { N, r, p, keylen, salt, dk } = parsed;
3706
3724
  const maxmemBytes = getCurrentMaxmemBytes();
3707
3725
  let derivedKey;
3708
3726
  try {
3709
- derivedKey = await scryptAsync(password, salt, { N, r: r2, p, keylen, maxmemBytes });
3727
+ derivedKey = await scryptAsync(password, salt, { N, r, p, keylen, maxmemBytes });
3710
3728
  } catch {
3711
3729
  return false;
3712
3730
  }
@@ -3729,7 +3747,7 @@ function createLocation(current, to, state = null, key) {
3729
3747
  return location;
3730
3748
  }
3731
3749
  function getShortCircuitMatches(routes) {
3732
- const route = routes.length === 1 ? routes[0] : routes.find((r2) => r2.index || !r2.path || r2.path === "/") || {
3750
+ const route = routes.length === 1 ? routes[0] : routes.find((r) => r.index || !r.path || r.path === "/") || {
3733
3751
  id: "__shim-error-route__"
3734
3752
  };
3735
3753
  return {
@@ -4212,10 +4230,7 @@ export {
4212
4230
  getDerivedKey,
4213
4231
  hashPassword,
4214
4232
  hashPasswordForStorage,
4215
- i as initRts,
4216
4233
  initServer,
4217
- n as notifyRtsModelChanged,
4218
- r as registerRtsHandler,
4219
4234
  s as sendEmail,
4220
4235
  ssrMiddleware,
4221
4236
  verifyPasswordFromStorage
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/notifications/api/notifications/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,cAAc,CAAA;yBAsYnC,KAAK,GAAG;AAAxB,wBASC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/notifications/api/notifications/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,cAAc,CAAA;yBAubnC,KAAK,GAAG;AAAxB,wBASC"}
@@ -1,7 +1,7 @@
1
1
  import { loadModel, loadRbModel } from "@rpcbase/db";
2
2
  import { s as sendEmail } from "./email-DEw8keax.js";
3
3
  const routes = Object.entries({
4
- .../* @__PURE__ */ Object.assign({ "./api/notifications/handler.ts": () => import("./handler-BITFtEr_.js") })
4
+ .../* @__PURE__ */ Object.assign({ "./api/notifications/handler.ts": () => import("./handler-B_mMDLBO.js") })
5
5
  }).reduce((acc, [path, mod]) => {
6
6
  acc[path.replace("./api/", "@rpcbase/server/notifications/api/")] = mod;
7
7
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/rts/api/changes/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,cAAc,CAAA;AAOnD,KAAK,WAAW,GAAG;IACjB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B,CAAA;yBA0He,KAAK,GAAG,CAAC,WAAW,CAAC;AAArC,wBAEC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/rts/api/changes/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,cAAc,CAAA;AAQnD,KAAK,WAAW,GAAG;IACjB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B,CAAA;yBAuIe,KAAK,GAAG,CAAC,WAAW,CAAC;AAArC,wBAEC"}
@@ -1,9 +1,11 @@
1
1
  import { Server as HttpServer } from 'node:http';
2
2
  import { RequestHandler } from 'express';
3
+ import { AppAbility } from '../../../db/acl/src';
3
4
  import { WebSocket } from 'ws';
4
5
  type SocketMeta = {
5
6
  tenantId: string;
6
7
  userId: string;
8
+ ability: AppAbility;
7
9
  };
8
10
  type HandlerFn = (socket: RtsSocket) => void | (() => void);
9
11
  declare class RtsSocket {
@@ -34,5 +36,5 @@ export declare const initRts: ({ server, path, sessionMiddleware, maxPayloadByte
34
36
  }) => void;
35
37
  export declare const registerRtsHandler: (handler: HandlerFn) => void;
36
38
  export declare const notifyRtsModelChanged: (tenantId: string, modelName: string) => void;
37
- export {};
39
+ export * from './routes';
38
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rts/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAA;AAGtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,IAAI,CAAA;AAqBlE,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAoBD,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;AAiC3D,cAAM,SAAS;IACb,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC,SAAgB,MAAM,EAAE,MAAM,CAAA;IAE9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqD;gBAE3D,EACjB,EAAE,EACF,EAAE,EACF,IAAI,GACL,EAAE;QACD,EAAE,EAAE,MAAM,CAAA;QACV,EAAE,EAAE,SAAS,CAAA;QACb,IAAI,EAAE,UAAU,CAAA;KACjB;IAOM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAOlE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAO7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,KAAK,IAAI,IAAI;IAQb,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAOvD;AAseD,eAAO,MAAM,OAAO,GAAI,4NAQrB;IACD,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,cAAc,CAAA;IAClC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,KAAG,IA8GH,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,KAAG,IAEvD,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,KAAG,IAE3E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rts/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAA;AAGtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,EAAmH,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGlK,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,IAAI,CAAA;AAqBlE,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,UAAU,CAAA;CACpB,CAAA;AAoBD,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;AAiC3D,cAAM,SAAS;IACb,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC,SAAgB,MAAM,EAAE,MAAM,CAAA;IAE9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqD;gBAE3D,EACjB,EAAE,EACF,EAAE,EACF,IAAI,GACL,EAAE;QACD,EAAE,EAAE,MAAM,CAAA;QACV,EAAE,EAAE,SAAS,CAAA;QACb,IAAI,EAAE,UAAU,CAAA;KACjB;IAOM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAOlE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAO7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,KAAK,IAAI,IAAI;IAQb,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAOvD;AA+iBD,eAAO,MAAM,OAAO,GAAI,4NAQrB;IACD,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,cAAc,CAAA;IAClC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,KAAG,IA8GH,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,KAAG,IAEvD,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,KAAG,IAE3E,CAAA;AAED,cAAc,UAAU,CAAA"}