@hexclave/js 1.0.9 → 1.0.11

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 (48) hide show
  1. package/dist/config.d.ts +2 -0
  2. package/dist/config.js +22 -0
  3. package/dist/esm/config.d.ts +2 -0
  4. package/dist/esm/config.js +3 -0
  5. package/dist/esm/index.js +1 -1
  6. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  7. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +4 -4
  8. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  9. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  10. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +3 -2
  11. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  12. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +1 -1
  13. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  14. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +2 -1
  15. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  16. package/dist/esm/lib/hexclave-app/url-targets.d.ts.map +1 -1
  17. package/dist/esm/lib/hexclave-app/url-targets.js +1 -0
  18. package/dist/esm/lib/hexclave-app/url-targets.js.map +1 -1
  19. package/dist/esm/lib/hexclave-app/url-targets.test.js +1 -0
  20. package/dist/esm/lib/hexclave-app/url-targets.test.js.map +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/integrations/convex/component/convex.config.d.ts +1 -1
  23. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  24. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +4 -4
  25. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  26. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  27. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +3 -2
  28. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  29. package/dist/lib/hexclave-app/apps/implementations/common.js +1 -1
  30. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  31. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +2 -1
  32. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  33. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
  34. package/dist/lib/hexclave-app/common.d.ts +1 -1
  35. package/dist/lib/hexclave-app/url-targets.d.ts.map +1 -1
  36. package/dist/lib/hexclave-app/url-targets.js +1 -0
  37. package/dist/lib/hexclave-app/url-targets.js.map +1 -1
  38. package/dist/lib/hexclave-app/url-targets.test.js +1 -0
  39. package/dist/lib/hexclave-app/url-targets.test.js.map +1 -1
  40. package/dist/{storage-CKsyME2q.d.ts → storage-CG8QLF8G.d.ts} +1 -1
  41. package/dist/{storage-CKsyME2q.d.ts.map → storage-CG8QLF8G.d.ts.map} +1 -1
  42. package/package.json +11 -2
  43. package/src/config.ts +17 -0
  44. package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +7 -4
  45. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +8 -4
  46. package/src/lib/hexclave-app/apps/implementations/event-tracker.ts +1 -0
  47. package/src/lib/hexclave-app/url-targets.test.ts +1 -0
  48. package/src/lib/hexclave-app/url-targets.ts +1 -0
@@ -14,7 +14,7 @@ let _hexclave_shared_dist_utils_caches = require("@hexclave/shared/dist/utils/ca
14
14
  let _hexclave_shared_dist_utils_globals = require("@hexclave/shared/dist/utils/globals");
15
15
 
16
16
  //#region src/lib/hexclave-app/apps/implementations/common.ts
17
- const clientVersion = "js @hexclave/js@1.0.9";
17
+ const clientVersion = "js @hexclave/js@1.0.11";
18
18
  if (clientVersion.startsWith("STACK_COMPILE_TIME")) throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("Client version was not replaced. Something went wrong during build!");
19
19
  const replaceHexclavePortPrefix = (input) => {
20
20
  if (!input) return input;
@@ -1 +1 @@
1
- {"version":3,"file":"event-tracker.d.ts","names":[],"sources":["../../../../../src/lib/hexclave-app/apps/implementations/event-tracker.ts"],"mappings":";;;KAiCY,gBAAA;EACV,SAAA;EACA,SAAA,GAAY,IAAA,UAAc,OAAA;IAAW,SAAA;EAAA,MAAyB,OAAA,CAAQ,MAAA,CAAO,QAAA,EAAU,KAAA;AAAA;AAAA,cAS5E,YAAA;EAAA,QACH,QAAA;EAAA,QACA,UAAA;EAAA,QACA,gBAAA;EAAA,QACA,WAAA;EAAA,QACA,OAAA;EAAA,QACA,YAAA;EAAA,QACA,QAAA;EAAA,iBACS,uBAAA;EAAA,iBACA,KAAA;EAAA,QAET,kBAAA;EAAA,QACA,qBAAA;cAEI,IAAA,EAAM,gBAAA;EAKlB,KAAA,CAAA;EAqBA,IAAA,CAAA;EAUA,WAAA,CAAA;EAAA,QAKQ,UAAA;EAAA,QAQA,gBAAA;EAAA,QA2BA,qBAAA;EAAA,iBA4BS,WAAA;EAAA,QAIT,cAAA;EAAA,QA0BA,sBAAA;EAAA,iBAWS,eAAA;EAAA,QAsBT,kBAAA;EAAA,iBAIS,WAAA;EAAA,QAIT,uBAAA;EAAA,QASA,SAAA;EAAA,QA0BM,MAAA;EAAA,QA+BN,KAAA;AAAA"}
1
+ {"version":3,"file":"event-tracker.d.ts","names":[],"sources":["../../../../../src/lib/hexclave-app/apps/implementations/event-tracker.ts"],"mappings":";;;KAiCY,gBAAA;EACV,SAAA;EACA,SAAA,GAAY,IAAA,UAAc,OAAA;IAAW,SAAA;EAAA,MAAyB,OAAA,CAAQ,MAAA,CAAO,QAAA,EAAU,KAAA;AAAA;AAAA,cAS5E,YAAA;EAAA,QACH,QAAA;EAAA,QACA,UAAA;EAAA,QACA,gBAAA;EAAA,QACA,WAAA;EAAA,QACA,OAAA;EAAA,QACA,YAAA;EAAA,QACA,QAAA;EAAA,iBACS,uBAAA;EAAA,iBACA,KAAA;EAAA,QAET,kBAAA;EAAA,QACA,qBAAA;cAEI,IAAA,EAAM,gBAAA;EAKlB,KAAA,CAAA;EAqBA,IAAA,CAAA;EAUA,WAAA,CAAA;EAAA,QAKQ,UAAA;EAAA,QAQA,gBAAA;EAAA,QA4BA,qBAAA;EAAA,iBA4BS,WAAA;EAAA,QAIT,cAAA;EAAA,QA0BA,sBAAA;EAAA,iBAWS,eAAA;EAAA,QAsBT,kBAAA;EAAA,iBAIS,WAAA;EAAA,QAIT,uBAAA;EAAA,QASA,SAAA;EAAA,QA0BM,MAAA;EAAA,QA+BN,KAAA;AAAA"}
@@ -104,7 +104,8 @@ var EventTracker = class {
104
104
  viewport_width: window.innerWidth,
105
105
  viewport_height: window.innerHeight,
106
106
  screen_width: screenObject.width,
107
- screen_height: screenObject.height
107
+ screen_height: screenObject.height,
108
+ user_agent: typeof navigator !== "undefined" ? navigator.userAgent : null
108
109
  }
109
110
  });
110
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-tracker.js","names":[],"sources":["../../../../../src/lib/hexclave-app/apps/implementations/event-tracker.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { isBrowserLike } from \"@hexclave/shared/dist/utils/env\";\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { generateUuid } from \"./session-replay\";\n\nconst FLUSH_INTERVAL_MS = 10_000;\nconst MAX_EVENTS_PER_BATCH = 50;\nconst MAX_APPROX_BYTES_PER_BATCH = 64_000;\n\nfunction hasScreenDimensions(value: unknown): value is { width: number, height: number } {\n if (value == null || typeof value !== \"object\") {\n return false;\n }\n if (!(\"width\" in value) || !(\"height\" in value)) {\n return false;\n }\n return typeof value.width === \"number\" && typeof value.height === \"number\";\n}\n\nfunction hasHistoryMethods(value: unknown): value is { pushState: History[\"pushState\"], replaceState: History[\"replaceState\"] } {\n if (value == null || typeof value !== \"object\") {\n return false;\n }\n if (!(\"pushState\" in value) || !(\"replaceState\" in value)) {\n return false;\n }\n return typeof value.pushState === \"function\" && typeof value.replaceState === \"function\";\n}\n\nexport type EventTrackerDeps = {\n projectId: string,\n sendBatch: (body: string, options: { keepalive: boolean }) => Promise<Result<Response, Error>>,\n};\n\ntype TrackedEvent = {\n event_type: \"$page-view\" | \"$click\",\n event_at_ms: number,\n data: Record<string, unknown>,\n};\n\nexport class EventTracker {\n private _started = false;\n private _cancelled = false;\n private _detachListeners: (() => void) | null = null;\n private _flushTimer: ReturnType<typeof setInterval> | null = null;\n private _events: TrackedEvent[] = [];\n private _approxBytes = 0;\n private _lastUrl: string | null = null;\n private readonly _sessionReplaySegmentId: string;\n private readonly _deps: EventTrackerDeps;\n\n private _originalPushState: History[\"pushState\"] | null = null;\n private _originalReplaceState: History[\"replaceState\"] | null = null;\n\n constructor(deps: EventTrackerDeps) {\n this._deps = deps;\n this._sessionReplaySegmentId = generateUuid();\n }\n\n start() {\n if (this._started) return;\n if (!isBrowserLike()) return;\n if (\n typeof window.addEventListener !== \"function\"\n || typeof window.removeEventListener !== \"function\"\n || typeof document.addEventListener !== \"function\"\n || typeof document.removeEventListener !== \"function\"\n || !hasScreenDimensions(window.screen)\n ) {\n return;\n }\n this._started = true;\n\n this._setupPageViewCapture();\n this._setupClickCapture();\n this._setupPageHideListeners();\n\n this._flushTimer = setInterval(() => this._tick(), FLUSH_INTERVAL_MS);\n }\n\n stop() {\n this._cancelled = true;\n if (this._flushTimer !== null) {\n clearInterval(this._flushTimer);\n this._flushTimer = null;\n }\n runAsynchronously(() => this._flush({ keepalive: true }));\n this._teardown();\n }\n\n clearBuffer() {\n this._events = [];\n this._approxBytes = 0;\n }\n\n private _pushEvent(event: TrackedEvent) {\n this._events.push(event);\n this._approxBytes += JSON.stringify(event).length;\n if (this._events.length >= MAX_EVENTS_PER_BATCH || this._approxBytes >= MAX_APPROX_BYTES_PER_BATCH) {\n runAsynchronously(() => this._flush({ keepalive: false }));\n }\n }\n\n private _capturePageView(entryType: \"initial\" | \"push\" | \"replace\" | \"pop\") {\n const screenObject = window.screen;\n if (!hasScreenDimensions(screenObject)) {\n return;\n }\n\n const url = window.location.href;\n if (url === this._lastUrl && entryType !== \"initial\") return;\n this._lastUrl = url;\n\n this._pushEvent({\n event_type: \"$page-view\",\n event_at_ms: Date.now(),\n data: {\n url,\n path: window.location.pathname,\n referrer: document.referrer,\n title: document.title,\n entry_type: entryType,\n viewport_width: window.innerWidth,\n viewport_height: window.innerHeight,\n screen_width: screenObject.width,\n screen_height: screenObject.height,\n },\n });\n }\n\n private _setupPageViewCapture() {\n // Fire initial page-view\n this._capturePageView(\"initial\");\n const historyObject = window.history;\n if (!hasHistoryMethods(historyObject)) {\n return;\n }\n const originalPushState = historyObject.pushState;\n const originalReplaceState = historyObject.replaceState;\n\n // Monkey-patch history.pushState\n this._originalPushState = (...args: Parameters<History[\"pushState\"]>) => originalPushState.apply(historyObject, args);\n historyObject.pushState = (...args: Parameters<History[\"pushState\"]>) => {\n this._originalPushState!(...args);\n this._capturePageView(\"push\");\n };\n\n // Monkey-patch history.replaceState\n this._originalReplaceState = (...args: Parameters<History[\"replaceState\"]>) => originalReplaceState.apply(historyObject, args);\n historyObject.replaceState = (...args: Parameters<History[\"replaceState\"]>) => {\n this._originalReplaceState!(...args);\n this._capturePageView(\"replace\");\n };\n\n // Listen for popstate (back/forward navigation)\n window.addEventListener(\"popstate\", this._onPopState);\n }\n\n private readonly _onPopState = () => {\n this._capturePageView(\"pop\");\n };\n\n private _buildSelector(element: Element): string {\n const parts: string[] = [];\n let current: Element | null = element;\n let depth = 0;\n\n while (current && depth < 5) {\n let part = current.tagName.toLowerCase();\n if (current.id) {\n part += `#${current.id}`;\n parts.unshift(part);\n break;\n }\n if (current.className && typeof current.className === \"string\") {\n const classes = current.className.trim().split(/\\s+/).filter(Boolean);\n if (classes.length > 0) {\n part += `.${classes.join(\".\")}`;\n }\n }\n parts.unshift(part);\n current = current.parentElement;\n depth++;\n }\n\n return parts.join(\" > \");\n }\n\n private _findNearestAnchorHref(element: Element): string | null {\n let current: Element | null = element;\n while (current) {\n if (current.tagName === \"A\" && current.hasAttribute(\"href\")) {\n return current.getAttribute(\"href\");\n }\n current = current.parentElement;\n }\n return null;\n }\n\n private readonly _onClickCapture = (event: MouseEvent) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n this._pushEvent({\n event_type: \"$click\",\n event_at_ms: Date.now(),\n data: {\n tag_name: target.tagName.toLowerCase(),\n text: target.textContent.trim().substring(0, 200),\n href: this._findNearestAnchorHref(target),\n selector: this._buildSelector(target),\n x: event.clientX,\n y: event.clientY,\n page_x: event.pageX,\n page_y: event.pageY,\n viewport_width: window.innerWidth,\n viewport_height: window.innerHeight,\n },\n });\n };\n\n private _setupClickCapture() {\n document.addEventListener(\"click\", this._onClickCapture, { capture: true });\n }\n\n private readonly _onPageHide = () => {\n runAsynchronously(() => this._flush({ keepalive: true }));\n };\n\n private _setupPageHideListeners() {\n window.addEventListener(\"pagehide\", this._onPageHide);\n document.addEventListener(\"visibilitychange\", this._onPageHide);\n this._detachListeners = () => {\n window.removeEventListener(\"pagehide\", this._onPageHide);\n document.removeEventListener(\"visibilitychange\", this._onPageHide);\n };\n }\n\n private _teardown() {\n if (this._detachListeners) {\n this._detachListeners();\n this._detachListeners = null;\n }\n\n // Restore history methods\n const historyObject = window.history;\n if (hasHistoryMethods(historyObject)) {\n if (this._originalPushState) {\n historyObject.pushState = this._originalPushState;\n }\n if (this._originalReplaceState) {\n historyObject.replaceState = this._originalReplaceState;\n }\n }\n this._originalPushState = null;\n this._originalReplaceState = null;\n\n window.removeEventListener(\"popstate\", this._onPopState);\n document.removeEventListener(\"click\", this._onClickCapture, { capture: true });\n\n this._events = [];\n this._approxBytes = 0;\n }\n\n private async _flush(options: { keepalive: boolean }) {\n if (this._events.length === 0) return;\n\n const nowMs = Date.now();\n\n const batchId = generateUuid();\n const payload = {\n session_replay_segment_id: this._sessionReplaySegmentId,\n batch_id: batchId,\n sent_at_ms: nowMs,\n events: this._events,\n };\n\n this._events = [];\n this._approxBytes = 0;\n\n const res = await this._deps.sendBatch(\n JSON.stringify(payload),\n { keepalive: options.keepalive },\n );\n\n if (res.status === \"error\") {\n console.warn(\"EventTracker flush failed:\", res.error);\n return;\n }\n\n if (!res.data.ok) {\n console.warn(\"EventTracker flush failed:\", res.data.status, await res.data.text());\n }\n }\n\n private _tick() {\n if (this._cancelled) return;\n if (this._events.length > 0) {\n runAsynchronously(() => this._flush({ keepalive: false }));\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"event-tracker.js","names":[],"sources":["../../../../../src/lib/hexclave-app/apps/implementations/event-tracker.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { isBrowserLike } from \"@hexclave/shared/dist/utils/env\";\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { generateUuid } from \"./session-replay\";\n\nconst FLUSH_INTERVAL_MS = 10_000;\nconst MAX_EVENTS_PER_BATCH = 50;\nconst MAX_APPROX_BYTES_PER_BATCH = 64_000;\n\nfunction hasScreenDimensions(value: unknown): value is { width: number, height: number } {\n if (value == null || typeof value !== \"object\") {\n return false;\n }\n if (!(\"width\" in value) || !(\"height\" in value)) {\n return false;\n }\n return typeof value.width === \"number\" && typeof value.height === \"number\";\n}\n\nfunction hasHistoryMethods(value: unknown): value is { pushState: History[\"pushState\"], replaceState: History[\"replaceState\"] } {\n if (value == null || typeof value !== \"object\") {\n return false;\n }\n if (!(\"pushState\" in value) || !(\"replaceState\" in value)) {\n return false;\n }\n return typeof value.pushState === \"function\" && typeof value.replaceState === \"function\";\n}\n\nexport type EventTrackerDeps = {\n projectId: string,\n sendBatch: (body: string, options: { keepalive: boolean }) => Promise<Result<Response, Error>>,\n};\n\ntype TrackedEvent = {\n event_type: \"$page-view\" | \"$click\",\n event_at_ms: number,\n data: Record<string, unknown>,\n};\n\nexport class EventTracker {\n private _started = false;\n private _cancelled = false;\n private _detachListeners: (() => void) | null = null;\n private _flushTimer: ReturnType<typeof setInterval> | null = null;\n private _events: TrackedEvent[] = [];\n private _approxBytes = 0;\n private _lastUrl: string | null = null;\n private readonly _sessionReplaySegmentId: string;\n private readonly _deps: EventTrackerDeps;\n\n private _originalPushState: History[\"pushState\"] | null = null;\n private _originalReplaceState: History[\"replaceState\"] | null = null;\n\n constructor(deps: EventTrackerDeps) {\n this._deps = deps;\n this._sessionReplaySegmentId = generateUuid();\n }\n\n start() {\n if (this._started) return;\n if (!isBrowserLike()) return;\n if (\n typeof window.addEventListener !== \"function\"\n || typeof window.removeEventListener !== \"function\"\n || typeof document.addEventListener !== \"function\"\n || typeof document.removeEventListener !== \"function\"\n || !hasScreenDimensions(window.screen)\n ) {\n return;\n }\n this._started = true;\n\n this._setupPageViewCapture();\n this._setupClickCapture();\n this._setupPageHideListeners();\n\n this._flushTimer = setInterval(() => this._tick(), FLUSH_INTERVAL_MS);\n }\n\n stop() {\n this._cancelled = true;\n if (this._flushTimer !== null) {\n clearInterval(this._flushTimer);\n this._flushTimer = null;\n }\n runAsynchronously(() => this._flush({ keepalive: true }));\n this._teardown();\n }\n\n clearBuffer() {\n this._events = [];\n this._approxBytes = 0;\n }\n\n private _pushEvent(event: TrackedEvent) {\n this._events.push(event);\n this._approxBytes += JSON.stringify(event).length;\n if (this._events.length >= MAX_EVENTS_PER_BATCH || this._approxBytes >= MAX_APPROX_BYTES_PER_BATCH) {\n runAsynchronously(() => this._flush({ keepalive: false }));\n }\n }\n\n private _capturePageView(entryType: \"initial\" | \"push\" | \"replace\" | \"pop\") {\n const screenObject = window.screen;\n if (!hasScreenDimensions(screenObject)) {\n return;\n }\n\n const url = window.location.href;\n if (url === this._lastUrl && entryType !== \"initial\") return;\n this._lastUrl = url;\n\n this._pushEvent({\n event_type: \"$page-view\",\n event_at_ms: Date.now(),\n data: {\n url,\n path: window.location.pathname,\n referrer: document.referrer,\n title: document.title,\n entry_type: entryType,\n viewport_width: window.innerWidth,\n viewport_height: window.innerHeight,\n screen_width: screenObject.width,\n screen_height: screenObject.height,\n user_agent: typeof navigator !== \"undefined\" ? navigator.userAgent : null,\n },\n });\n }\n\n private _setupPageViewCapture() {\n // Fire initial page-view\n this._capturePageView(\"initial\");\n const historyObject = window.history;\n if (!hasHistoryMethods(historyObject)) {\n return;\n }\n const originalPushState = historyObject.pushState;\n const originalReplaceState = historyObject.replaceState;\n\n // Monkey-patch history.pushState\n this._originalPushState = (...args: Parameters<History[\"pushState\"]>) => originalPushState.apply(historyObject, args);\n historyObject.pushState = (...args: Parameters<History[\"pushState\"]>) => {\n this._originalPushState!(...args);\n this._capturePageView(\"push\");\n };\n\n // Monkey-patch history.replaceState\n this._originalReplaceState = (...args: Parameters<History[\"replaceState\"]>) => originalReplaceState.apply(historyObject, args);\n historyObject.replaceState = (...args: Parameters<History[\"replaceState\"]>) => {\n this._originalReplaceState!(...args);\n this._capturePageView(\"replace\");\n };\n\n // Listen for popstate (back/forward navigation)\n window.addEventListener(\"popstate\", this._onPopState);\n }\n\n private readonly _onPopState = () => {\n this._capturePageView(\"pop\");\n };\n\n private _buildSelector(element: Element): string {\n const parts: string[] = [];\n let current: Element | null = element;\n let depth = 0;\n\n while (current && depth < 5) {\n let part = current.tagName.toLowerCase();\n if (current.id) {\n part += `#${current.id}`;\n parts.unshift(part);\n break;\n }\n if (current.className && typeof current.className === \"string\") {\n const classes = current.className.trim().split(/\\s+/).filter(Boolean);\n if (classes.length > 0) {\n part += `.${classes.join(\".\")}`;\n }\n }\n parts.unshift(part);\n current = current.parentElement;\n depth++;\n }\n\n return parts.join(\" > \");\n }\n\n private _findNearestAnchorHref(element: Element): string | null {\n let current: Element | null = element;\n while (current) {\n if (current.tagName === \"A\" && current.hasAttribute(\"href\")) {\n return current.getAttribute(\"href\");\n }\n current = current.parentElement;\n }\n return null;\n }\n\n private readonly _onClickCapture = (event: MouseEvent) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n this._pushEvent({\n event_type: \"$click\",\n event_at_ms: Date.now(),\n data: {\n tag_name: target.tagName.toLowerCase(),\n text: target.textContent.trim().substring(0, 200),\n href: this._findNearestAnchorHref(target),\n selector: this._buildSelector(target),\n x: event.clientX,\n y: event.clientY,\n page_x: event.pageX,\n page_y: event.pageY,\n viewport_width: window.innerWidth,\n viewport_height: window.innerHeight,\n },\n });\n };\n\n private _setupClickCapture() {\n document.addEventListener(\"click\", this._onClickCapture, { capture: true });\n }\n\n private readonly _onPageHide = () => {\n runAsynchronously(() => this._flush({ keepalive: true }));\n };\n\n private _setupPageHideListeners() {\n window.addEventListener(\"pagehide\", this._onPageHide);\n document.addEventListener(\"visibilitychange\", this._onPageHide);\n this._detachListeners = () => {\n window.removeEventListener(\"pagehide\", this._onPageHide);\n document.removeEventListener(\"visibilitychange\", this._onPageHide);\n };\n }\n\n private _teardown() {\n if (this._detachListeners) {\n this._detachListeners();\n this._detachListeners = null;\n }\n\n // Restore history methods\n const historyObject = window.history;\n if (hasHistoryMethods(historyObject)) {\n if (this._originalPushState) {\n historyObject.pushState = this._originalPushState;\n }\n if (this._originalReplaceState) {\n historyObject.replaceState = this._originalReplaceState;\n }\n }\n this._originalPushState = null;\n this._originalReplaceState = null;\n\n window.removeEventListener(\"popstate\", this._onPopState);\n document.removeEventListener(\"click\", this._onClickCapture, { capture: true });\n\n this._events = [];\n this._approxBytes = 0;\n }\n\n private async _flush(options: { keepalive: boolean }) {\n if (this._events.length === 0) return;\n\n const nowMs = Date.now();\n\n const batchId = generateUuid();\n const payload = {\n session_replay_segment_id: this._sessionReplaySegmentId,\n batch_id: batchId,\n sent_at_ms: nowMs,\n events: this._events,\n };\n\n this._events = [];\n this._approxBytes = 0;\n\n const res = await this._deps.sendBatch(\n JSON.stringify(payload),\n { keepalive: options.keepalive },\n );\n\n if (res.status === \"error\") {\n console.warn(\"EventTracker flush failed:\", res.error);\n return;\n }\n\n if (!res.data.ok) {\n console.warn(\"EventTracker flush failed:\", res.data.status, await res.data.text());\n }\n }\n\n private _tick() {\n if (this._cancelled) return;\n if (this._events.length > 0) {\n runAsynchronously(() => this._flush({ keepalive: false }));\n }\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as GenericQueryCtx } from "../../../../storage-CKsyME2q.js";
1
+ import { t as GenericQueryCtx } from "../../../../storage-CG8QLF8G.js";
2
2
  import { AsyncStoreProperty, GetCurrentPartialUserOptions, GetCurrentUserOptions } from "../../common.js";
3
3
  import { CustomerProductsList, CustomerProductsRequestOptions, InlineProduct, ServerItem } from "../../customers/index.js";
4
4
  import { EmailDeliveryInfo, SendEmailOptions } from "../../email/index.js";
@@ -1,4 +1,4 @@
1
- import { r as UserIdentity, t as GenericQueryCtx } from "../../storage-CKsyME2q.js";
1
+ import { r as UserIdentity, t as GenericQueryCtx } from "../../storage-CG8QLF8G.js";
2
2
  import { ProviderType } from "@hexclave/shared/dist/utils/oauth";
3
3
  import { DefaultHandlerUrlTarget, HandlerPageUrls, HandlerRedirectUrls, HandlerUrlOptions, HandlerUrlTarget, HandlerUrls, ResolvedHandlerUrls } from "@hexclave/shared/dist/interface/handler-urls";
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"url-targets.d.ts","names":[],"sources":["../../../src/lib/hexclave-app/url-targets.ts"],"mappings":";;;cA2Ga,mBAAA,GAAuB,OAAA;EAAW,SAAA;EAAmB,QAAA;AAAA;AAAA,cAyBrD,uBAAA,GAA2B,OAAA;EACtC,SAAA;EACA,WAAA;EACA,aAAA;AAAA;AAAA,cA+DW,kBAAA,GAAsB,OAAA;EAAW,IAAA,EAAM,iBAAA;EAA+B,SAAA;AAAA,MAAsB,mBAAA;AAAA,cAqJ5F,sBAAA,GAA0B,OAAA;EACrC,iBAAA,UAvNA;EAyNA,MAAA;EACA,SAAA;AAAA;AAAA,cAOW,oCAAA,GAAwC,OAAA;EACnD,aAAA,EAAe,uBAAA;EACf,SAAA;EACA,WAAA;AAAA;AAAA,iBAiBc,aAAA,CAAc,QAAA,UAAkB,cAAA;EAA4B,KAAA;EAAe,UAAA;EAAoB,aAAA;EAA8B,aAAA;AAAA;AAAA,cAuBhI,4BAAA,GAAgC,OAAA;EAAW,GAAA;EAAa,SAAA;AAAA"}
1
+ {"version":3,"file":"url-targets.d.ts","names":[],"sources":["../../../src/lib/hexclave-app/url-targets.ts"],"mappings":";;;cA2Ga,mBAAA,GAAuB,OAAA;EAAW,SAAA;EAAmB,QAAA;AAAA;AAAA,cA0BrD,uBAAA,GAA2B,OAAA;EACtC,SAAA;EACA,WAAA;EACA,aAAA;AAAA;AAAA,cA+DW,kBAAA,GAAsB,OAAA;EAAW,IAAA,EAAM,iBAAA;EAA+B,SAAA;AAAA,MAAsB,mBAAA;AAAA,cAqJ5F,sBAAA,GAA0B,OAAA;EACrC,iBAAA,UAvNA;EAyNA,MAAA;EACA,SAAA;AAAA;AAAA,cAOW,oCAAA,GAAwC,OAAA;EACnD,aAAA,EAAe,uBAAA;EACf,SAAA;EACA,WAAA;AAAA;AAAA,iBAiBc,aAAA,CAAc,QAAA,UAAkB,cAAA;EAA4B,KAAA;EAAe,UAAA;EAAoB,aAAA;EAA8B,aAAA;AAAA;AAAA,cAuBhI,4BAAA,GAAgC,OAAA;EAAW,GAAA;EAAa,SAAA;AAAA"}
@@ -62,6 +62,7 @@ const isRelativeUrlString = (url) => {
62
62
  return !schemePrefixRegex.test(url);
63
63
  };
64
64
  const nonHostedHandlerNames = new Set([
65
+ "home",
65
66
  "afterSignIn",
66
67
  "afterSignUp",
67
68
  "afterSignOut"
@@ -1 +1 @@
1
- {"version":3,"file":"url-targets.js","names":["envVars","HexclaveAssertionError"],"sources":["../../../src/lib/hexclave-app/url-targets.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { getCustomPagePrompts, type CustomPagePrompt } from \"@hexclave/shared/dist/interface/handler-urls\";\nimport { HexclaveAssertionError } from \"@hexclave/shared/dist/utils/errors\";\nimport { getHostedHandlerUrlFromConfig } from \"@hexclave/shared/dist/utils/redirect-urls\";\nimport { envVars } from \"../../generated/env\";\nimport { DefaultHandlerUrlTarget, HandlerPageUrls, HandlerUrlOptions, HandlerUrlTarget, HandlerUrls, ResolvedHandlerUrls } from \"./common\";\n\nconst localUrlPlaceholderOrigin = \"http://example.com\";\nconst schemePrefixRegex = /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/;\n\nconst customPagePrompts: Record<keyof Omit<HandlerPageUrls, \"handler\">, CustomPagePrompt> = getCustomPagePrompts();\n\nconst joinHandlerComponentPath = (basePath: string, pagePath: string): string => {\n const normalizedBasePath = basePath.endsWith(\"/\") && basePath.length > 1\n ? basePath.slice(0, -1)\n : basePath;\n if (pagePath.length === 0) {\n return normalizedBasePath;\n }\n if (normalizedBasePath === \"/\") {\n return `/${pagePath}`;\n }\n return `${normalizedBasePath}/${pagePath}`;\n};\n\nconst getHostedPagePathForHandlerName = (handlerName: keyof HandlerUrls): string => {\n switch (handlerName) {\n case \"handler\": {\n return \"\";\n }\n case \"home\": {\n return \"\";\n }\n case \"afterSignIn\": {\n return \"\";\n }\n case \"afterSignUp\": {\n return \"\";\n }\n case \"afterSignOut\": {\n return \"\";\n }\n case \"signIn\": {\n return \"sign-in\";\n }\n case \"signUp\": {\n return \"sign-up\";\n }\n case \"signOut\": {\n return \"sign-out\";\n }\n case \"emailVerification\": {\n return \"email-verification\";\n }\n case \"passwordReset\": {\n return \"password-reset\";\n }\n case \"forgotPassword\": {\n return \"forgot-password\";\n }\n case \"oauthCallback\": {\n return \"oauth-callback\";\n }\n case \"magicLinkCallback\": {\n return \"magic-link-callback\";\n }\n case \"accountSettings\": {\n return \"account-settings\";\n }\n case \"teamInvitation\": {\n return \"team-invitation\";\n }\n case \"cliAuthConfirm\": {\n return \"cli-auth-confirm\";\n }\n case \"mfa\": {\n return \"mfa\";\n }\n case \"error\": {\n return \"error\";\n }\n case \"onboarding\": {\n return \"onboarding\";\n }\n }\n};\n\nconst resolveCustomTargetUrl = (options: {\n target: { type: \"custom\", url: string, version: number },\n handlerName: keyof HandlerUrls,\n}): string => {\n const handlerName = options.handlerName;\n if (handlerName in customPagePrompts) {\n const customPagePrompt = customPagePrompts[handlerName as keyof typeof customPagePrompts];\n if (options.target.version === 0 || options.target.version in customPagePrompt.versions) {\n return options.target.url;\n }\n\n throw new Error(`Unsupported custom page version ${options.target.version} for ${options.handlerName} page at ${options.target.url}. The latest supported version of this page is ${Math.max(0, ...Object.keys(customPagePrompt.versions).map(Number))}. Please upgrade your Hexclave SDK to a version that supports this version.`);\n } else {\n throw new Error(`URL target ${options.handlerName} cannot be a custom page. Please specify the URL as a string instead.`);\n }\n};\n\nexport const getHostedHandlerUrl = (options: { projectId: string, pagePath: string }): string => {\n const normalizedPagePath = options.pagePath.replace(/^\\/+/, \"\");\n const hostedPath = normalizedPagePath.length > 0 ? `handler/${normalizedPagePath}` : \"handler\";\n return getHostedHandlerUrlFromConfig({\n projectId: options.projectId,\n hostedPath,\n hostedHandlerDomainSuffix: envVars.HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX,\n hostedHandlerUrlTemplate: envVars.HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE,\n hexclavePortPrefix: envVars.HEXCLAVE_PORT_PREFIX,\n });\n};\n\nconst isRelativeUrlString = (url: string): boolean => {\n if (url.startsWith(\"//\")) {\n return false;\n }\n return !schemePrefixRegex.test(url);\n};\n\nconst nonHostedHandlerNames = new Set<keyof HandlerUrls>([\n \"afterSignIn\",\n \"afterSignUp\",\n \"afterSignOut\",\n]);\n\nexport const isLocalHandlerUrlTarget = (options: {\n targetUrl: string,\n handlerPath: string,\n currentOrigin?: string,\n}): boolean => {\n const urlObject = new URL(options.targetUrl, localUrlPlaceholderOrigin);\n const isHandlerPathTarget = urlObject.pathname === options.handlerPath\n || urlObject.pathname.startsWith(`${options.handlerPath}/`);\n if (!isHandlerPathTarget) {\n return false;\n }\n\n // On server we only have path information, so treat matching handler paths as local.\n if (options.currentOrigin == null) {\n return true;\n }\n\n return isRelativeUrlString(options.targetUrl) || urlObject.origin === options.currentOrigin;\n};\n\nconst resolveUrlTarget = (options: {\n target: HandlerUrlTarget,\n fallbackPath: string,\n handlerName: keyof HandlerUrls,\n projectId: string,\n}): string => {\n if (typeof options.target === \"string\") {\n return options.target;\n }\n\n switch (options.target.type) {\n case \"handler-component\": {\n return options.fallbackPath;\n }\n case \"hosted\": {\n if (nonHostedHandlerNames.has(options.handlerName)) {\n return options.fallbackPath;\n }\n return getHostedHandlerUrl({\n projectId: options.projectId,\n pagePath: getHostedPagePathForHandlerName(options.handlerName),\n });\n }\n case \"custom\": {\n return resolveCustomTargetUrl({\n target: options.target,\n handlerName: options.handlerName,\n });\n }\n }\n};\n\nconst assertOAuthCallbackTargetIsRelative = (target: HandlerUrlTarget): void => {\n const url = typeof target === \"string\"\n ? target\n : target.type === \"custom\"\n ? target.url\n : null;\n if (url != null && !isRelativeUrlString(url)) {\n throw new HexclaveAssertionError(\"OAuth callback URLs must be relative.\", {\n oauthCallbackUrl: url,\n hint: \"Use a relative URL like '/handler/oauth-callback', or use { type: 'hosted' } to let Stack use the current page for hosted callbacks.\",\n });\n }\n};\n\nexport const resolveHandlerUrls = (options: { urls: HandlerUrlOptions | undefined, projectId: string }): ResolvedHandlerUrls => {\n const configuredUrls = options.urls;\n const defaultTarget = configuredUrls?.default ?? { type: \"handler-component\" } as const;\n const oauthCallbackTarget: HandlerUrlTarget = configuredUrls?.oauthCallback ?? (\n defaultTarget.type === \"hosted\"\n ? defaultTarget\n : { type: \"handler-component\" }\n );\n assertOAuthCallbackTargetIsRelative(oauthCallbackTarget);\n let handlerComponentBasePath = \"/handler\";\n if (typeof configuredUrls?.handler === \"string\") {\n handlerComponentBasePath = configuredUrls.handler;\n } else if (configuredUrls?.handler != null && configuredUrls.handler.type === \"custom\") {\n handlerComponentBasePath = resolveCustomTargetUrl({\n target: configuredUrls.handler,\n handlerName: \"handler\",\n });\n }\n\n const homeTarget = configuredUrls?.home ?? defaultTarget;\n const localHome = resolveUrlTarget({\n target: typeof homeTarget !== \"string\" && homeTarget.type === \"hosted\"\n ? { type: \"handler-component\" }\n : homeTarget,\n fallbackPath: \"/\",\n handlerName: \"home\",\n projectId: options.projectId,\n });\n const home = resolveUrlTarget({\n target: homeTarget,\n fallbackPath: \"/\",\n handlerName: \"home\",\n projectId: options.projectId,\n });\n const afterSignIn = resolveUrlTarget({\n target: configuredUrls?.afterSignIn ?? defaultTarget,\n fallbackPath: localHome,\n handlerName: \"afterSignIn\",\n projectId: options.projectId,\n });\n\n return {\n handler: resolveUrlTarget({\n target: configuredUrls?.handler ?? defaultTarget,\n fallbackPath: handlerComponentBasePath,\n handlerName: \"handler\",\n projectId: options.projectId,\n }),\n signIn: resolveUrlTarget({\n target: configuredUrls?.signIn ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-in\"),\n handlerName: \"signIn\",\n projectId: options.projectId,\n }),\n signUp: resolveUrlTarget({\n target: configuredUrls?.signUp ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-up\"),\n handlerName: \"signUp\",\n projectId: options.projectId,\n }),\n afterSignIn,\n afterSignUp: resolveUrlTarget({\n target: configuredUrls?.afterSignUp ?? defaultTarget,\n fallbackPath: afterSignIn,\n handlerName: \"afterSignUp\",\n projectId: options.projectId,\n }),\n signOut: resolveUrlTarget({\n target: configuredUrls?.signOut ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-out\"),\n handlerName: \"signOut\",\n projectId: options.projectId,\n }),\n afterSignOut: resolveUrlTarget({\n target: configuredUrls?.afterSignOut ?? defaultTarget,\n fallbackPath: localHome,\n handlerName: \"afterSignOut\",\n projectId: options.projectId,\n }),\n emailVerification: resolveUrlTarget({\n target: configuredUrls?.emailVerification ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"email-verification\"),\n handlerName: \"emailVerification\",\n projectId: options.projectId,\n }),\n passwordReset: resolveUrlTarget({\n target: configuredUrls?.passwordReset ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"password-reset\"),\n handlerName: \"passwordReset\",\n projectId: options.projectId,\n }),\n forgotPassword: resolveUrlTarget({\n target: configuredUrls?.forgotPassword ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"forgot-password\"),\n handlerName: \"forgotPassword\",\n projectId: options.projectId,\n }),\n home,\n oauthCallback: resolveUrlTarget({\n target: oauthCallbackTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"oauth-callback\"),\n handlerName: \"oauthCallback\",\n projectId: options.projectId,\n }),\n magicLinkCallback: resolveUrlTarget({\n target: configuredUrls?.magicLinkCallback ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"magic-link-callback\"),\n handlerName: \"magicLinkCallback\",\n projectId: options.projectId,\n }),\n accountSettings: resolveUrlTarget({\n target: configuredUrls?.accountSettings ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"account-settings\"),\n handlerName: \"accountSettings\",\n projectId: options.projectId,\n }),\n teamInvitation: resolveUrlTarget({\n target: configuredUrls?.teamInvitation ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"team-invitation\"),\n handlerName: \"teamInvitation\",\n projectId: options.projectId,\n }),\n cliAuthConfirm: resolveUrlTarget({\n target: configuredUrls?.cliAuthConfirm ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"cli-auth-confirm\"),\n handlerName: \"cliAuthConfirm\",\n projectId: options.projectId,\n }),\n mfa: resolveUrlTarget({\n target: configuredUrls?.mfa ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"mfa\"),\n handlerName: \"mfa\",\n projectId: options.projectId,\n }),\n error: resolveUrlTarget({\n target: configuredUrls?.error ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"error\"),\n handlerName: \"error\",\n projectId: options.projectId,\n }),\n onboarding: resolveUrlTarget({\n target: configuredUrls?.onboarding ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"onboarding\"),\n handlerName: \"onboarding\",\n projectId: options.projectId,\n }),\n };\n};\n\nexport const buildCliAuthConfirmUrl = (options: {\n cliAuthConfirmUrl: string,\n /** Used as the base URL only when cliAuthConfirmUrl is relative. */\n appUrl: string,\n loginCode: string,\n}): string => {\n const url = new URL(options.cliAuthConfirmUrl, options.appUrl);\n url.searchParams.set(\"login_code\", options.loginCode);\n return url.toString();\n};\n\nexport const resolveUnknownHandlerPathFallbackUrl = (options: {\n defaultTarget: DefaultHandlerUrlTarget | undefined,\n projectId: string,\n unknownPath: string,\n}): string | null => {\n const defaultTarget = options.defaultTarget ?? { type: \"handler-component\" } satisfies DefaultHandlerUrlTarget;\n\n switch (defaultTarget.type) {\n case \"handler-component\": {\n return null;\n }\n case \"hosted\": {\n return getHostedHandlerUrl({\n projectId: options.projectId,\n pagePath: options.unknownPath,\n });\n }\n }\n};\n\nexport function getPagePrompt(pageName: string, currentVersion?: number): { title: string; fullPrompt: string; upgradePrompt: string | null; latestVersion: number } | null {\n if (!(pageName in customPagePrompts)) return null;\n const prompt = customPagePrompts[pageName as keyof typeof customPagePrompts];\n const versionKeys = Object.keys(prompt.versions).map(Number);\n const latestVersion = versionKeys.length > 0 ? Math.max(...versionKeys) : 0;\n\n let upgradePrompt: string | null = null;\n if (currentVersion != null) {\n const relevantVersions = versionKeys\n .filter(v => v > currentVersion)\n .sort((a, b) => a - b);\n const prompts = relevantVersions\n .map(v => prompt.versions[v].upgradePrompt)\n .filter(p => p.length > 0);\n upgradePrompt = prompts.length > 0 ? prompts.join(\"\\n\\n\") : null;\n } else {\n const upgradeEntry = latestVersion > 0 ? prompt.versions[latestVersion] : undefined;\n upgradePrompt = upgradeEntry?.upgradePrompt ?? null;\n }\n\n return { title: prompt.title, fullPrompt: prompt.fullPrompt, upgradePrompt, latestVersion };\n}\n\nexport const isHostedHandlerUrlForProject = (options: { url: string, projectId: string }): boolean => {\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(options.url);\n } catch {\n return false;\n }\n\n const hostedBaseUrl = new URL(getHostedHandlerUrl({ projectId: options.projectId, pagePath: \"\" }));\n return parsedUrl.origin === hostedBaseUrl.origin\n && (parsedUrl.pathname === hostedBaseUrl.pathname || parsedUrl.pathname.startsWith(`${hostedBaseUrl.pathname}/`));\n};\n"],"mappings":";;;;;;;;AAUA,MAAM,4BAA4B;AAClC,MAAM,oBAAoB;AAE1B,MAAM,4FAA4G;AAElH,MAAM,4BAA4B,UAAkB,aAA6B;CAC/E,MAAM,qBAAqB,SAAS,SAAS,IAAI,IAAI,SAAS,SAAS,IACnE,SAAS,MAAM,GAAG,GAAG,GACrB;AACJ,KAAI,SAAS,WAAW,EACtB,QAAO;AAET,KAAI,uBAAuB,IACzB,QAAO,IAAI;AAEb,QAAO,GAAG,mBAAmB,GAAG;;AAGlC,MAAM,mCAAmC,gBAA2C;AAClF,SAAQ,aAAR;EACE,KAAK,UACH,QAAO;EAET,KAAK,OACH,QAAO;EAET,KAAK,cACH,QAAO;EAET,KAAK,cACH,QAAO;EAET,KAAK,eACH,QAAO;EAET,KAAK,SACH,QAAO;EAET,KAAK,SACH,QAAO;EAET,KAAK,UACH,QAAO;EAET,KAAK,oBACH,QAAO;EAET,KAAK,gBACH,QAAO;EAET,KAAK,iBACH,QAAO;EAET,KAAK,gBACH,QAAO;EAET,KAAK,oBACH,QAAO;EAET,KAAK,kBACH,QAAO;EAET,KAAK,iBACH,QAAO;EAET,KAAK,iBACH,QAAO;EAET,KAAK,MACH,QAAO;EAET,KAAK,QACH,QAAO;EAET,KAAK,aACH,QAAO;;;AAKb,MAAM,0BAA0B,YAGlB;CACZ,MAAM,cAAc,QAAQ;AAC5B,KAAI,eAAe,mBAAmB;EACpC,MAAM,mBAAmB,kBAAkB;AAC3C,MAAI,QAAQ,OAAO,YAAY,KAAK,QAAQ,OAAO,WAAW,iBAAiB,SAC7E,QAAO,QAAQ,OAAO;AAGxB,QAAM,IAAI,MAAM,mCAAmC,QAAQ,OAAO,QAAQ,OAAO,QAAQ,YAAY,WAAW,QAAQ,OAAO,IAAI,iDAAiD,KAAK,IAAI,GAAG,GAAG,OAAO,KAAK,iBAAiB,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,6EAA6E;OAEpU,OAAM,IAAI,MAAM,cAAc,QAAQ,YAAY,uEAAuE;;AAI7H,MAAa,uBAAuB,YAA6D;CAC/F,MAAM,qBAAqB,QAAQ,SAAS,QAAQ,QAAQ,GAAG;CAC/D,MAAM,aAAa,mBAAmB,SAAS,IAAI,WAAW,uBAAuB;AACrF,qFAAqC;EACnC,WAAW,QAAQ;EACnB;EACA,2BAA2BA,+BAAQ;EACnC,0BAA0BA,+BAAQ;EAClC,oBAAoBA,+BAAQ;EAC7B,CAAC;;AAGJ,MAAM,uBAAuB,QAAyB;AACpD,KAAI,IAAI,WAAW,KAAK,CACtB,QAAO;AAET,QAAO,CAAC,kBAAkB,KAAK,IAAI;;AAGrC,MAAM,wBAAwB,IAAI,IAAuB;CACvD;CACA;CACA;CACD,CAAC;AAEF,MAAa,2BAA2B,YAIzB;CACb,MAAM,YAAY,IAAI,IAAI,QAAQ,WAAW,0BAA0B;AAGvE,KAAI,EAFwB,UAAU,aAAa,QAAQ,eACtD,UAAU,SAAS,WAAW,GAAG,QAAQ,YAAY,GAAG,EAE3D,QAAO;AAIT,KAAI,QAAQ,iBAAiB,KAC3B,QAAO;AAGT,QAAO,oBAAoB,QAAQ,UAAU,IAAI,UAAU,WAAW,QAAQ;;AAGhF,MAAM,oBAAoB,YAKZ;AACZ,KAAI,OAAO,QAAQ,WAAW,SAC5B,QAAO,QAAQ;AAGjB,SAAQ,QAAQ,OAAO,MAAvB;EACE,KAAK,oBACH,QAAO,QAAQ;EAEjB,KAAK;AACH,OAAI,sBAAsB,IAAI,QAAQ,YAAY,CAChD,QAAO,QAAQ;AAEjB,UAAO,oBAAoB;IACzB,WAAW,QAAQ;IACnB,UAAU,gCAAgC,QAAQ,YAAY;IAC/D,CAAC;EAEJ,KAAK,SACH,QAAO,uBAAuB;GAC5B,QAAQ,QAAQ;GAChB,aAAa,QAAQ;GACtB,CAAC;;;AAKR,MAAM,uCAAuC,WAAmC;CAC9E,MAAM,MAAM,OAAO,WAAW,WAC1B,SACA,OAAO,SAAS,WACd,OAAO,MACP;AACN,KAAI,OAAO,QAAQ,CAAC,oBAAoB,IAAI,CAC1C,OAAM,IAAIC,0DAAuB,yCAAyC;EACxE,kBAAkB;EAClB,MAAM;EACP,CAAC;;AAIN,MAAa,sBAAsB,YAA6F;CAC9H,MAAM,iBAAiB,QAAQ;CAC/B,MAAM,gBAAgB,gBAAgB,WAAW,EAAE,MAAM,qBAAqB;CAC9E,MAAM,sBAAwC,gBAAgB,kBAC5D,cAAc,SAAS,WACnB,gBACA,EAAE,MAAM,qBAAqB;AAEnC,qCAAoC,oBAAoB;CACxD,IAAI,2BAA2B;AAC/B,KAAI,OAAO,gBAAgB,YAAY,SACrC,4BAA2B,eAAe;UACjC,gBAAgB,WAAW,QAAQ,eAAe,QAAQ,SAAS,SAC5E,4BAA2B,uBAAuB;EAChD,QAAQ,eAAe;EACvB,aAAa;EACd,CAAC;CAGJ,MAAM,aAAa,gBAAgB,QAAQ;CAC3C,MAAM,YAAY,iBAAiB;EACjC,QAAQ,OAAO,eAAe,YAAY,WAAW,SAAS,WAC1D,EAAE,MAAM,qBAAqB,GAC7B;EACJ,cAAc;EACd,aAAa;EACb,WAAW,QAAQ;EACpB,CAAC;CACF,MAAM,OAAO,iBAAiB;EAC5B,QAAQ;EACR,cAAc;EACd,aAAa;EACb,WAAW,QAAQ;EACpB,CAAC;CACF,MAAM,cAAc,iBAAiB;EACnC,QAAQ,gBAAgB,eAAe;EACvC,cAAc;EACd,aAAa;EACb,WAAW,QAAQ;EACpB,CAAC;AAEF,QAAO;EACL,SAAS,iBAAiB;GACxB,QAAQ,gBAAgB,WAAW;GACnC,cAAc;GACd,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,QAAQ,iBAAiB;GACvB,QAAQ,gBAAgB,UAAU;GAClC,cAAc,yBAAyB,0BAA0B,UAAU;GAC3E,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,QAAQ,iBAAiB;GACvB,QAAQ,gBAAgB,UAAU;GAClC,cAAc,yBAAyB,0BAA0B,UAAU;GAC3E,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF;EACA,aAAa,iBAAiB;GAC5B,QAAQ,gBAAgB,eAAe;GACvC,cAAc;GACd,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,SAAS,iBAAiB;GACxB,QAAQ,gBAAgB,WAAW;GACnC,cAAc,yBAAyB,0BAA0B,WAAW;GAC5E,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,cAAc,iBAAiB;GAC7B,QAAQ,gBAAgB,gBAAgB;GACxC,cAAc;GACd,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,mBAAmB,iBAAiB;GAClC,QAAQ,gBAAgB,qBAAqB;GAC7C,cAAc,yBAAyB,0BAA0B,qBAAqB;GACtF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,eAAe,iBAAiB;GAC9B,QAAQ,gBAAgB,iBAAiB;GACzC,cAAc,yBAAyB,0BAA0B,iBAAiB;GAClF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,gBAAgB,iBAAiB;GAC/B,QAAQ,gBAAgB,kBAAkB;GAC1C,cAAc,yBAAyB,0BAA0B,kBAAkB;GACnF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF;EACA,eAAe,iBAAiB;GAC9B,QAAQ;GACR,cAAc,yBAAyB,0BAA0B,iBAAiB;GAClF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,mBAAmB,iBAAiB;GAClC,QAAQ,gBAAgB,qBAAqB;GAC7C,cAAc,yBAAyB,0BAA0B,sBAAsB;GACvF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,iBAAiB,iBAAiB;GAChC,QAAQ,gBAAgB,mBAAmB;GAC3C,cAAc,yBAAyB,0BAA0B,mBAAmB;GACpF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,gBAAgB,iBAAiB;GAC/B,QAAQ,gBAAgB,kBAAkB;GAC1C,cAAc,yBAAyB,0BAA0B,kBAAkB;GACnF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,gBAAgB,iBAAiB;GAC/B,QAAQ,gBAAgB,kBAAkB;GAC1C,cAAc,yBAAyB,0BAA0B,mBAAmB;GACpF,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,KAAK,iBAAiB;GACpB,QAAQ,gBAAgB,OAAO;GAC/B,cAAc,yBAAyB,0BAA0B,MAAM;GACvE,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,OAAO,iBAAiB;GACtB,QAAQ,gBAAgB,SAAS;GACjC,cAAc,yBAAyB,0BAA0B,QAAQ;GACzE,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACF,YAAY,iBAAiB;GAC3B,QAAQ,gBAAgB,cAAc;GACtC,cAAc,yBAAyB,0BAA0B,aAAa;GAC9E,aAAa;GACb,WAAW,QAAQ;GACpB,CAAC;EACH;;AAGH,MAAa,0BAA0B,YAKzB;CACZ,MAAM,MAAM,IAAI,IAAI,QAAQ,mBAAmB,QAAQ,OAAO;AAC9D,KAAI,aAAa,IAAI,cAAc,QAAQ,UAAU;AACrD,QAAO,IAAI,UAAU;;AAGvB,MAAa,wCAAwC,YAIhC;AAGnB,UAFsB,QAAQ,iBAAiB,EAAE,MAAM,qBAAqB,EAEtD,MAAtB;EACE,KAAK,oBACH,QAAO;EAET,KAAK,SACH,QAAO,oBAAoB;GACzB,WAAW,QAAQ;GACnB,UAAU,QAAQ;GACnB,CAAC;;;AAKR,SAAgB,cAAc,UAAkB,gBAA4H;AAC1K,KAAI,EAAE,YAAY,mBAAoB,QAAO;CAC7C,MAAM,SAAS,kBAAkB;CACjC,MAAM,cAAc,OAAO,KAAK,OAAO,SAAS,CAAC,IAAI,OAAO;CAC5D,MAAM,gBAAgB,YAAY,SAAS,IAAI,KAAK,IAAI,GAAG,YAAY,GAAG;CAE1E,IAAI,gBAA+B;AACnC,KAAI,kBAAkB,MAAM;EAI1B,MAAM,UAHmB,YACtB,QAAO,MAAK,IAAI,eAAe,CAC/B,MAAM,GAAG,MAAM,IAAI,EAAE,CAErB,KAAI,MAAK,OAAO,SAAS,GAAG,cAAc,CAC1C,QAAO,MAAK,EAAE,SAAS,EAAE;AAC5B,kBAAgB,QAAQ,SAAS,IAAI,QAAQ,KAAK,OAAO,GAAG;OAG5D,kBADqB,gBAAgB,IAAI,OAAO,SAAS,iBAAiB,SAC5C,iBAAiB;AAGjD,QAAO;EAAE,OAAO,OAAO;EAAO,YAAY,OAAO;EAAY;EAAe;EAAe;;AAG7F,MAAa,gCAAgC,YAAyD;CACpG,IAAI;AACJ,KAAI;AACF,cAAY,IAAI,IAAI,QAAQ,IAAI;SAC1B;AACN,SAAO;;CAGT,MAAM,gBAAgB,IAAI,IAAI,oBAAoB;EAAE,WAAW,QAAQ;EAAW,UAAU;EAAI,CAAC,CAAC;AAClG,QAAO,UAAU,WAAW,cAAc,WACpC,UAAU,aAAa,cAAc,YAAY,UAAU,SAAS,WAAW,GAAG,cAAc,SAAS,GAAG"}
1
+ {"version":3,"file":"url-targets.js","names":["envVars","HexclaveAssertionError"],"sources":["../../../src/lib/hexclave-app/url-targets.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { getCustomPagePrompts, type CustomPagePrompt } from \"@hexclave/shared/dist/interface/handler-urls\";\nimport { HexclaveAssertionError } from \"@hexclave/shared/dist/utils/errors\";\nimport { getHostedHandlerUrlFromConfig } from \"@hexclave/shared/dist/utils/redirect-urls\";\nimport { envVars } from \"../../generated/env\";\nimport { DefaultHandlerUrlTarget, HandlerPageUrls, HandlerUrlOptions, HandlerUrlTarget, HandlerUrls, ResolvedHandlerUrls } from \"./common\";\n\nconst localUrlPlaceholderOrigin = \"http://example.com\";\nconst schemePrefixRegex = /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/;\n\nconst customPagePrompts: Record<keyof Omit<HandlerPageUrls, \"handler\">, CustomPagePrompt> = getCustomPagePrompts();\n\nconst joinHandlerComponentPath = (basePath: string, pagePath: string): string => {\n const normalizedBasePath = basePath.endsWith(\"/\") && basePath.length > 1\n ? basePath.slice(0, -1)\n : basePath;\n if (pagePath.length === 0) {\n return normalizedBasePath;\n }\n if (normalizedBasePath === \"/\") {\n return `/${pagePath}`;\n }\n return `${normalizedBasePath}/${pagePath}`;\n};\n\nconst getHostedPagePathForHandlerName = (handlerName: keyof HandlerUrls): string => {\n switch (handlerName) {\n case \"handler\": {\n return \"\";\n }\n case \"home\": {\n return \"\";\n }\n case \"afterSignIn\": {\n return \"\";\n }\n case \"afterSignUp\": {\n return \"\";\n }\n case \"afterSignOut\": {\n return \"\";\n }\n case \"signIn\": {\n return \"sign-in\";\n }\n case \"signUp\": {\n return \"sign-up\";\n }\n case \"signOut\": {\n return \"sign-out\";\n }\n case \"emailVerification\": {\n return \"email-verification\";\n }\n case \"passwordReset\": {\n return \"password-reset\";\n }\n case \"forgotPassword\": {\n return \"forgot-password\";\n }\n case \"oauthCallback\": {\n return \"oauth-callback\";\n }\n case \"magicLinkCallback\": {\n return \"magic-link-callback\";\n }\n case \"accountSettings\": {\n return \"account-settings\";\n }\n case \"teamInvitation\": {\n return \"team-invitation\";\n }\n case \"cliAuthConfirm\": {\n return \"cli-auth-confirm\";\n }\n case \"mfa\": {\n return \"mfa\";\n }\n case \"error\": {\n return \"error\";\n }\n case \"onboarding\": {\n return \"onboarding\";\n }\n }\n};\n\nconst resolveCustomTargetUrl = (options: {\n target: { type: \"custom\", url: string, version: number },\n handlerName: keyof HandlerUrls,\n}): string => {\n const handlerName = options.handlerName;\n if (handlerName in customPagePrompts) {\n const customPagePrompt = customPagePrompts[handlerName as keyof typeof customPagePrompts];\n if (options.target.version === 0 || options.target.version in customPagePrompt.versions) {\n return options.target.url;\n }\n\n throw new Error(`Unsupported custom page version ${options.target.version} for ${options.handlerName} page at ${options.target.url}. The latest supported version of this page is ${Math.max(0, ...Object.keys(customPagePrompt.versions).map(Number))}. Please upgrade your Hexclave SDK to a version that supports this version.`);\n } else {\n throw new Error(`URL target ${options.handlerName} cannot be a custom page. Please specify the URL as a string instead.`);\n }\n};\n\nexport const getHostedHandlerUrl = (options: { projectId: string, pagePath: string }): string => {\n const normalizedPagePath = options.pagePath.replace(/^\\/+/, \"\");\n const hostedPath = normalizedPagePath.length > 0 ? `handler/${normalizedPagePath}` : \"handler\";\n return getHostedHandlerUrlFromConfig({\n projectId: options.projectId,\n hostedPath,\n hostedHandlerDomainSuffix: envVars.HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX,\n hostedHandlerUrlTemplate: envVars.HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE,\n hexclavePortPrefix: envVars.HEXCLAVE_PORT_PREFIX,\n });\n};\n\nconst isRelativeUrlString = (url: string): boolean => {\n if (url.startsWith(\"//\")) {\n return false;\n }\n return !schemePrefixRegex.test(url);\n};\n\nconst nonHostedHandlerNames = new Set<keyof HandlerUrls>([\n \"home\",\n \"afterSignIn\",\n \"afterSignUp\",\n \"afterSignOut\",\n]);\n\nexport const isLocalHandlerUrlTarget = (options: {\n targetUrl: string,\n handlerPath: string,\n currentOrigin?: string,\n}): boolean => {\n const urlObject = new URL(options.targetUrl, localUrlPlaceholderOrigin);\n const isHandlerPathTarget = urlObject.pathname === options.handlerPath\n || urlObject.pathname.startsWith(`${options.handlerPath}/`);\n if (!isHandlerPathTarget) {\n return false;\n }\n\n // On server we only have path information, so treat matching handler paths as local.\n if (options.currentOrigin == null) {\n return true;\n }\n\n return isRelativeUrlString(options.targetUrl) || urlObject.origin === options.currentOrigin;\n};\n\nconst resolveUrlTarget = (options: {\n target: HandlerUrlTarget,\n fallbackPath: string,\n handlerName: keyof HandlerUrls,\n projectId: string,\n}): string => {\n if (typeof options.target === \"string\") {\n return options.target;\n }\n\n switch (options.target.type) {\n case \"handler-component\": {\n return options.fallbackPath;\n }\n case \"hosted\": {\n if (nonHostedHandlerNames.has(options.handlerName)) {\n return options.fallbackPath;\n }\n return getHostedHandlerUrl({\n projectId: options.projectId,\n pagePath: getHostedPagePathForHandlerName(options.handlerName),\n });\n }\n case \"custom\": {\n return resolveCustomTargetUrl({\n target: options.target,\n handlerName: options.handlerName,\n });\n }\n }\n};\n\nconst assertOAuthCallbackTargetIsRelative = (target: HandlerUrlTarget): void => {\n const url = typeof target === \"string\"\n ? target\n : target.type === \"custom\"\n ? target.url\n : null;\n if (url != null && !isRelativeUrlString(url)) {\n throw new HexclaveAssertionError(\"OAuth callback URLs must be relative.\", {\n oauthCallbackUrl: url,\n hint: \"Use a relative URL like '/handler/oauth-callback', or use { type: 'hosted' } to let Stack use the current page for hosted callbacks.\",\n });\n }\n};\n\nexport const resolveHandlerUrls = (options: { urls: HandlerUrlOptions | undefined, projectId: string }): ResolvedHandlerUrls => {\n const configuredUrls = options.urls;\n const defaultTarget = configuredUrls?.default ?? { type: \"handler-component\" } as const;\n const oauthCallbackTarget: HandlerUrlTarget = configuredUrls?.oauthCallback ?? (\n defaultTarget.type === \"hosted\"\n ? defaultTarget\n : { type: \"handler-component\" }\n );\n assertOAuthCallbackTargetIsRelative(oauthCallbackTarget);\n let handlerComponentBasePath = \"/handler\";\n if (typeof configuredUrls?.handler === \"string\") {\n handlerComponentBasePath = configuredUrls.handler;\n } else if (configuredUrls?.handler != null && configuredUrls.handler.type === \"custom\") {\n handlerComponentBasePath = resolveCustomTargetUrl({\n target: configuredUrls.handler,\n handlerName: \"handler\",\n });\n }\n\n const homeTarget = configuredUrls?.home ?? defaultTarget;\n const localHome = resolveUrlTarget({\n target: typeof homeTarget !== \"string\" && homeTarget.type === \"hosted\"\n ? { type: \"handler-component\" }\n : homeTarget,\n fallbackPath: \"/\",\n handlerName: \"home\",\n projectId: options.projectId,\n });\n const home = resolveUrlTarget({\n target: homeTarget,\n fallbackPath: \"/\",\n handlerName: \"home\",\n projectId: options.projectId,\n });\n const afterSignIn = resolveUrlTarget({\n target: configuredUrls?.afterSignIn ?? defaultTarget,\n fallbackPath: localHome,\n handlerName: \"afterSignIn\",\n projectId: options.projectId,\n });\n\n return {\n handler: resolveUrlTarget({\n target: configuredUrls?.handler ?? defaultTarget,\n fallbackPath: handlerComponentBasePath,\n handlerName: \"handler\",\n projectId: options.projectId,\n }),\n signIn: resolveUrlTarget({\n target: configuredUrls?.signIn ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-in\"),\n handlerName: \"signIn\",\n projectId: options.projectId,\n }),\n signUp: resolveUrlTarget({\n target: configuredUrls?.signUp ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-up\"),\n handlerName: \"signUp\",\n projectId: options.projectId,\n }),\n afterSignIn,\n afterSignUp: resolveUrlTarget({\n target: configuredUrls?.afterSignUp ?? defaultTarget,\n fallbackPath: afterSignIn,\n handlerName: \"afterSignUp\",\n projectId: options.projectId,\n }),\n signOut: resolveUrlTarget({\n target: configuredUrls?.signOut ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-out\"),\n handlerName: \"signOut\",\n projectId: options.projectId,\n }),\n afterSignOut: resolveUrlTarget({\n target: configuredUrls?.afterSignOut ?? defaultTarget,\n fallbackPath: localHome,\n handlerName: \"afterSignOut\",\n projectId: options.projectId,\n }),\n emailVerification: resolveUrlTarget({\n target: configuredUrls?.emailVerification ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"email-verification\"),\n handlerName: \"emailVerification\",\n projectId: options.projectId,\n }),\n passwordReset: resolveUrlTarget({\n target: configuredUrls?.passwordReset ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"password-reset\"),\n handlerName: \"passwordReset\",\n projectId: options.projectId,\n }),\n forgotPassword: resolveUrlTarget({\n target: configuredUrls?.forgotPassword ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"forgot-password\"),\n handlerName: \"forgotPassword\",\n projectId: options.projectId,\n }),\n home,\n oauthCallback: resolveUrlTarget({\n target: oauthCallbackTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"oauth-callback\"),\n handlerName: \"oauthCallback\",\n projectId: options.projectId,\n }),\n magicLinkCallback: resolveUrlTarget({\n target: configuredUrls?.magicLinkCallback ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"magic-link-callback\"),\n handlerName: \"magicLinkCallback\",\n projectId: options.projectId,\n }),\n accountSettings: resolveUrlTarget({\n target: configuredUrls?.accountSettings ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"account-settings\"),\n handlerName: \"accountSettings\",\n projectId: options.projectId,\n }),\n teamInvitation: resolveUrlTarget({\n target: configuredUrls?.teamInvitation ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"team-invitation\"),\n handlerName: \"teamInvitation\",\n projectId: options.projectId,\n }),\n cliAuthConfirm: resolveUrlTarget({\n target: configuredUrls?.cliAuthConfirm ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"cli-auth-confirm\"),\n handlerName: \"cliAuthConfirm\",\n projectId: options.projectId,\n }),\n mfa: resolveUrlTarget({\n target: configuredUrls?.mfa ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"mfa\"),\n handlerName: \"mfa\",\n projectId: options.projectId,\n }),\n error: resolveUrlTarget({\n target: configuredUrls?.error ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"error\"),\n handlerName: \"error\",\n projectId: options.projectId,\n }),\n onboarding: resolveUrlTarget({\n target: configuredUrls?.onboarding ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"onboarding\"),\n handlerName: \"onboarding\",\n projectId: options.projectId,\n }),\n };\n};\n\nexport const buildCliAuthConfirmUrl = (options: {\n cliAuthConfirmUrl: string,\n /** Used as the base URL only when cliAuthConfirmUrl is relative. */\n appUrl: string,\n loginCode: string,\n}): string => {\n const url = new URL(options.cliAuthConfirmUrl, options.appUrl);\n url.searchParams.set(\"login_code\", options.loginCode);\n return url.toString();\n};\n\nexport const resolveUnknownHandlerPathFallbackUrl = (options: {\n defaultTarget: DefaultHandlerUrlTarget | undefined,\n projectId: string,\n unknownPath: string,\n}): string | null => {\n const defaultTarget = options.defaultTarget ?? { type: \"handler-component\" } satisfies DefaultHandlerUrlTarget;\n\n switch (defaultTarget.type) {\n case \"handler-component\": {\n return null;\n }\n case \"hosted\": {\n return getHostedHandlerUrl({\n projectId: options.projectId,\n pagePath: options.unknownPath,\n });\n }\n }\n};\n\nexport function getPagePrompt(pageName: string, currentVersion?: number): { title: string; fullPrompt: string; upgradePrompt: string | null; latestVersion: number } | null {\n if (!(pageName in customPagePrompts)) return null;\n const prompt = customPagePrompts[pageName as keyof typeof customPagePrompts];\n const versionKeys = Object.keys(prompt.versions).map(Number);\n const latestVersion = versionKeys.length > 0 ? Math.max(...versionKeys) : 0;\n\n let upgradePrompt: string | null = null;\n if (currentVersion != null) {\n const relevantVersions = versionKeys\n .filter(v => v > currentVersion)\n .sort((a, b) => a - b);\n const prompts = relevantVersions\n .map(v => prompt.versions[v].upgradePrompt)\n .filter(p => p.length > 0);\n upgradePrompt = prompts.length > 0 ? prompts.join(\"\\n\\n\") : null;\n } else {\n const upgradeEntry = latestVersion > 0 ? prompt.versions[latestVersion] : undefined;\n upgradePrompt = upgradeEntry?.upgradePrompt ?? null;\n }\n\n return { title: prompt.title, fullPrompt: prompt.fullPrompt, upgradePrompt, latestVersion };\n}\n\nexport const isHostedHandlerUrlForProject = (options: { url: string, projectId: string }): boolean => {\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(options.url);\n } catch {\n return false;\n }\n\n const hostedBaseUrl = new URL(getHostedHandlerUrl({ projectId: options.projectId, pagePath: \"\" }));\n return parsedUrl.origin === hostedBaseUrl.origin\n && (parsedUrl.pathname === hostedBaseUrl.pathname || parsedUrl.pathname.startsWith(`${hostedBaseUrl.pathname}/`));\n};\n"],"mappings":"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"}
@@ -97,6 +97,7 @@ let __url_targets_js = require("./url-targets.js");
97
97
  });
98
98
  (0, vitest.expect)(urls.signIn).toBe("https://project-id.example-stack-hosted.test/handler/sign-in");
99
99
  (0, vitest.expect)(urls.signOut).toBe("https://project-id.example-stack-hosted.test/handler/sign-out");
100
+ (0, vitest.expect)(urls.home).toBe("/");
100
101
  (0, vitest.expect)(urls.afterSignIn).toBe("/");
101
102
  (0, vitest.expect)(urls.afterSignUp).toBe("/");
102
103
  (0, vitest.expect)(urls.afterSignOut).toBe("/");
@@ -1 +1 @@
1
- {"version":3,"file":"url-targets.test.js","names":[],"sources":["../../../src/lib/hexclave-app/url-targets.test.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { buildCliAuthConfirmUrl, getPagePrompt, isLocalHandlerUrlTarget, resolveHandlerUrls, resolveUnknownHandlerPathFallbackUrl } from \"./url-targets\";\n\ndescribe(\"handler URL targets\", () => {\n afterEach(() => {\n vi.unstubAllEnvs();\n });\n\n it(\"treats handler-component targets the same as omitted values\", () => {\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: \"/custom-handler\",\n signIn: { type: \"handler-component\" },\n },\n });\n\n expect(urls.signIn).toBe(\"/custom-handler/sign-in\");\n });\n\n it(\"treats custom v0 page targets like legacy string targets\", () => {\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: \"/custom-handler\",\n signIn: { type: \"handler-component\" },\n signUp: { type: \"custom\", url: \"/sign-up-explicit\", version: 0 },\n },\n });\n\n expect(urls.signIn).toBe(\"/custom-handler/sign-in\");\n expect(urls.signUp).toBe(\"/sign-up-explicit\");\n });\n\n it(\"throws on v0 custom target for handler page\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: { type: \"custom\", url: \"/custom-handler\", version: 0 },\n },\n })).toThrowError(/cannot be a custom page/);\n });\n\n it(\"supports the latest documented custom target version\", () => {\n const signInPrompt = getPagePrompt(\"signIn\");\n if (signInPrompt == null) {\n throw new Error(\"Expected signIn prompt metadata to exist\");\n }\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n signIn: { type: \"custom\", url: \"/custom-sign-in\", version: signInPrompt.latestVersion },\n },\n });\n\n expect(urls.signIn).toBe(\"/custom-sign-in\");\n });\n\n it(\"throws on custom target versions newer than the latest supported version\", () => {\n const signInPrompt = getPagePrompt(\"signIn\");\n if (signInPrompt == null) {\n throw new Error(\"Expected signIn prompt metadata to exist\");\n }\n\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n signIn: { type: \"custom\", url: \"/custom-sign-in\", version: signInPrompt.latestVersion + 1 },\n },\n })).toThrowError(/Unsupported custom page version/);\n });\n\n it(\"throws on non-zero custom version for handler page\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: { type: \"custom\", url: \"/custom-handler\", version: 1 },\n },\n })).toThrowError(/cannot be a custom page/);\n });\n\n it(\"uses hosted defaults for unspecified URLs\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n signUp: \"/sign-up\",\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signUp).toBe(\"/sign-up\");\n expect(urls.signIn).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-in\");\n expect(urls.cliAuthConfirm).toBe(\"https://project-id.example-stack-hosted.test/handler/cli-auth-confirm\");\n });\n\n it(\"keeps redirect-only post-auth targets local even when the default target is hosted\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signIn).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-in\");\n expect(urls.signOut).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-out\");\n expect(urls.afterSignIn).toBe(\"/\");\n expect(urls.afterSignUp).toBe(\"/\");\n expect(urls.afterSignOut).toBe(\"/\");\n });\n\n it(\"rejects absolute OAuth callback string targets\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n oauthCallback: \"https://app.example.test/oauth-callback\",\n },\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: OAuth callback URLs must be relative.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n });\n\n it(\"rejects absolute OAuth callback custom targets\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n oauthCallback: { type: \"custom\", url: \"https://app.example.test/oauth-callback\", version: 0 },\n },\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: OAuth callback URLs must be relative.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n });\n\n it(\"inherits a hosted default target for the OAuth callback\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signIn).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-in\");\n expect(urls.oauthCallback).toBe(\"https://project-id.example-stack-hosted.test/handler/oauth-callback\");\n });\n\n it(\"supports custom CLI auth confirmation targets\", () => {\n const cliAuthConfirmPrompt = getPagePrompt(\"cliAuthConfirm\");\n if (cliAuthConfirmPrompt == null) {\n throw new Error(\"Expected cliAuthConfirm prompt metadata to exist\");\n }\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n cliAuthConfirm: { type: \"custom\", url: \"/cli/authorize\", version: cliAuthConfirmPrompt.latestVersion },\n },\n });\n\n expect(urls.cliAuthConfirm).toBe(\"/cli/authorize\");\n });\n\n it(\"builds CLI auth login URLs from the resolved confirmation target\", () => {\n expect(buildCliAuthConfirmUrl({\n cliAuthConfirmUrl: \"/cli/authorize\",\n appUrl: \"https://app.example.test/base\",\n loginCode: \"login-code\",\n })).toBe(\"https://app.example.test/cli/authorize?login_code=login-code\");\n });\n\n it(\"uses default target for unknown /handler/* pages\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const url = resolveUnknownHandlerPathFallbackUrl({\n defaultTarget: { type: \"hosted\" },\n projectId: \"project-id\",\n unknownPath: \"custom-page\",\n });\n\n expect(url).toBe(\"https://project-id.example-stack-hosted.test/handler/custom-page\");\n });\n\n it(\"uses the full hosted handler URL template when configured\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE\", \"http://{projectId}.localhost:${NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX:-81}09/{hostedPath}\");\n vi.stubEnv(\"NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX\", \"93\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signIn).toBe(\"http://project-id.localhost:9309/handler/sign-in\");\n expect(urls.accountSettings).toBe(\"http://project-id.localhost:9309/handler/account-settings\");\n });\n\n it(\"validates the hosted handler URL template placeholders\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE\", \"http://localhost:9309/{projectId}/handler\");\n\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n })).toThrowError(/\\{projectId\\} and \\{hostedPath\\}/);\n });\n\n it(\"rejects hosted handler URL templates that put the project ID in the path\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE\", \"http://localhost:9309/{projectId}/{hostedPath}\");\n\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: The hosted handler URL template must put {projectId} in the hostname.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n });\n});\n\ndescribe(\"isLocalHandlerUrlTarget\", () => {\n it(\"treats relative handler URLs as local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"/handler/sign-in\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(true);\n });\n\n it(\"treats same-origin absolute handler URLs as local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"http://p91.localhost:9101/handler/sign-in\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(true);\n });\n\n it(\"treats cross-origin absolute handler URLs as non-local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"https://project-id.built-with-hexclave.com/handler/sign-in\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(false);\n });\n\n it(\"treats non-handler paths as non-local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"/projects\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(false);\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"url-targets.test.js","names":[],"sources":["../../../src/lib/hexclave-app/url-targets.test.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { buildCliAuthConfirmUrl, getPagePrompt, isLocalHandlerUrlTarget, resolveHandlerUrls, resolveUnknownHandlerPathFallbackUrl } from \"./url-targets\";\n\ndescribe(\"handler URL targets\", () => {\n afterEach(() => {\n vi.unstubAllEnvs();\n });\n\n it(\"treats handler-component targets the same as omitted values\", () => {\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: \"/custom-handler\",\n signIn: { type: \"handler-component\" },\n },\n });\n\n expect(urls.signIn).toBe(\"/custom-handler/sign-in\");\n });\n\n it(\"treats custom v0 page targets like legacy string targets\", () => {\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: \"/custom-handler\",\n signIn: { type: \"handler-component\" },\n signUp: { type: \"custom\", url: \"/sign-up-explicit\", version: 0 },\n },\n });\n\n expect(urls.signIn).toBe(\"/custom-handler/sign-in\");\n expect(urls.signUp).toBe(\"/sign-up-explicit\");\n });\n\n it(\"throws on v0 custom target for handler page\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: { type: \"custom\", url: \"/custom-handler\", version: 0 },\n },\n })).toThrowError(/cannot be a custom page/);\n });\n\n it(\"supports the latest documented custom target version\", () => {\n const signInPrompt = getPagePrompt(\"signIn\");\n if (signInPrompt == null) {\n throw new Error(\"Expected signIn prompt metadata to exist\");\n }\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n signIn: { type: \"custom\", url: \"/custom-sign-in\", version: signInPrompt.latestVersion },\n },\n });\n\n expect(urls.signIn).toBe(\"/custom-sign-in\");\n });\n\n it(\"throws on custom target versions newer than the latest supported version\", () => {\n const signInPrompt = getPagePrompt(\"signIn\");\n if (signInPrompt == null) {\n throw new Error(\"Expected signIn prompt metadata to exist\");\n }\n\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n signIn: { type: \"custom\", url: \"/custom-sign-in\", version: signInPrompt.latestVersion + 1 },\n },\n })).toThrowError(/Unsupported custom page version/);\n });\n\n it(\"throws on non-zero custom version for handler page\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n handler: { type: \"custom\", url: \"/custom-handler\", version: 1 },\n },\n })).toThrowError(/cannot be a custom page/);\n });\n\n it(\"uses hosted defaults for unspecified URLs\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n signUp: \"/sign-up\",\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signUp).toBe(\"/sign-up\");\n expect(urls.signIn).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-in\");\n expect(urls.cliAuthConfirm).toBe(\"https://project-id.example-stack-hosted.test/handler/cli-auth-confirm\");\n });\n\n it(\"keeps redirect-only post-auth targets local even when the default target is hosted\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signIn).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-in\");\n expect(urls.signOut).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-out\");\n expect(urls.home).toBe(\"/\");\n expect(urls.afterSignIn).toBe(\"/\");\n expect(urls.afterSignUp).toBe(\"/\");\n expect(urls.afterSignOut).toBe(\"/\");\n });\n\n it(\"rejects absolute OAuth callback string targets\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n oauthCallback: \"https://app.example.test/oauth-callback\",\n },\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: OAuth callback URLs must be relative.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n });\n\n it(\"rejects absolute OAuth callback custom targets\", () => {\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n oauthCallback: { type: \"custom\", url: \"https://app.example.test/oauth-callback\", version: 0 },\n },\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: OAuth callback URLs must be relative.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n });\n\n it(\"inherits a hosted default target for the OAuth callback\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signIn).toBe(\"https://project-id.example-stack-hosted.test/handler/sign-in\");\n expect(urls.oauthCallback).toBe(\"https://project-id.example-stack-hosted.test/handler/oauth-callback\");\n });\n\n it(\"supports custom CLI auth confirmation targets\", () => {\n const cliAuthConfirmPrompt = getPagePrompt(\"cliAuthConfirm\");\n if (cliAuthConfirmPrompt == null) {\n throw new Error(\"Expected cliAuthConfirm prompt metadata to exist\");\n }\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n cliAuthConfirm: { type: \"custom\", url: \"/cli/authorize\", version: cliAuthConfirmPrompt.latestVersion },\n },\n });\n\n expect(urls.cliAuthConfirm).toBe(\"/cli/authorize\");\n });\n\n it(\"builds CLI auth login URLs from the resolved confirmation target\", () => {\n expect(buildCliAuthConfirmUrl({\n cliAuthConfirmUrl: \"/cli/authorize\",\n appUrl: \"https://app.example.test/base\",\n loginCode: \"login-code\",\n })).toBe(\"https://app.example.test/cli/authorize?login_code=login-code\");\n });\n\n it(\"uses default target for unknown /handler/* pages\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX\", \".example-stack-hosted.test\");\n\n const url = resolveUnknownHandlerPathFallbackUrl({\n defaultTarget: { type: \"hosted\" },\n projectId: \"project-id\",\n unknownPath: \"custom-page\",\n });\n\n expect(url).toBe(\"https://project-id.example-stack-hosted.test/handler/custom-page\");\n });\n\n it(\"uses the full hosted handler URL template when configured\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE\", \"http://{projectId}.localhost:${NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX:-81}09/{hostedPath}\");\n vi.stubEnv(\"NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX\", \"93\");\n\n const urls = resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n });\n\n expect(urls.signIn).toBe(\"http://project-id.localhost:9309/handler/sign-in\");\n expect(urls.accountSettings).toBe(\"http://project-id.localhost:9309/handler/account-settings\");\n });\n\n it(\"validates the hosted handler URL template placeholders\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE\", \"http://localhost:9309/{projectId}/handler\");\n\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n })).toThrowError(/\\{projectId\\} and \\{hostedPath\\}/);\n });\n\n it(\"rejects hosted handler URL templates that put the project ID in the path\", () => {\n vi.stubEnv(\"NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE\", \"http://localhost:9309/{projectId}/{hostedPath}\");\n\n expect(() => resolveHandlerUrls({\n projectId: \"project-id\",\n urls: {\n default: { type: \"hosted\" },\n },\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: The hosted handler URL template must put {projectId} in the hostname.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n });\n});\n\ndescribe(\"isLocalHandlerUrlTarget\", () => {\n it(\"treats relative handler URLs as local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"/handler/sign-in\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(true);\n });\n\n it(\"treats same-origin absolute handler URLs as local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"http://p91.localhost:9101/handler/sign-in\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(true);\n });\n\n it(\"treats cross-origin absolute handler URLs as non-local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"https://project-id.built-with-hexclave.com/handler/sign-in\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(false);\n });\n\n it(\"treats non-handler paths as non-local targets\", () => {\n expect(isLocalHandlerUrlTarget({\n targetUrl: \"/projects\",\n handlerPath: \"/handler\",\n currentOrigin: \"http://p91.localhost:9101\",\n })).toBe(false);\n });\n});\n"],"mappings":"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"}
@@ -1909,4 +1909,4 @@ interface StorageReader {
1909
1909
  }
1910
1910
  //#endregion
1911
1911
  export { FunctionReference as n, UserIdentity as r, GenericQueryCtx as t };
1912
- //# sourceMappingURL=storage-CKsyME2q.d.ts.map
1912
+ //# sourceMappingURL=storage-CG8QLF8G.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-CKsyME2q.d.ts","names":["JSONValue","key","Id","TableName","__tableName","Value","ArrayBuffer","NumericValue","slowBigIntToBase64","value","slowBase64ToBigInt","encoded","modernBigIntToBase64","modernBase64ToBigInt","bigIntToBase64","base64ToBigInt","jsonToConvex","stringifyValueForError","convexToJson","convexOrUndefinedToJson","patchValueToJson","Expand","ObjectType","Record","Key","BetterOmit","T","K","Property","UnionToIntersection","UnionType","k","I","GenericId","GenericValidator","JSONValue","TableNameFromType","T","TableName","BaseValidator","Type","IsOptional","FieldPaths","OptionalProperty","isOptional","type","fieldPaths","isConvexValidator","constructor","optional","VId","tableName","kind","VFloat64","VInt64","VBoolean","VBytes","ArrayBuffer","VString","VNull","VAny","VObject","Fields","Record","Property","JoinFieldPaths","fields","VLiteral","value","VArray","Element","Validator","element","VRecord","Key","Value","key","VUnion","members","VOptional","Members","Start","End","ObjectFieldType","ValidatorJSON","fieldType","RecordKeyValidatorJSON","RecordValueValidatorJSON","keys","values","Expand","GenericId","OptionalProperty","VAny","VArray","VBoolean","VBytes","VFloat64","VId","VInt64","VLiteral","VNull","VObject","VOptional","VRecord","VString","VUnion","Validator","GenericValidator","isValidator","v","asObjectValidator","V","PropertyValidators","ObjectType","obj","AsObjectValidator","TableName","T","T_1","T_2","Key","Value","T_3","T_4","ArrayBuffer","OptionalKeys","Property","Infer","Exclude","Property_1","Property_2","Record","id","tableName","null","number","float64","bigint","int64","boolean","string","bytes","literal","array","element","object","fields","record","keys","values","union","members","any","optional","value","Fields","RequiredKeys","JSONValue","UserIdentity","tokenIdentifier","subject","issuer","name","givenName","familyName","nickname","preferredUsername","profileUrl","pictureUrl","email","emailVerified","gender","birthday","timezone","language","phoneNumber","phoneNumberVerified","address","updatedAt","key","UserIdentityAttributes","Omit","Auth","Promise","getUserIdentity","Value","GenericDocument","Record","GenericFieldPaths","GenericIndexFields","GenericTableIndexes","GenericSearchIndexConfig","searchField","filterFields","GenericTableSearchIndexes","GenericVectorIndexConfig","vectorField","dimensions","GenericTableVectorIndexes","ValueFromUnion","T","Key","Default","FieldTypeFromFieldPath","Document","FieldPath","FieldTypeFromFieldPathInner","First","FieldValue","Second","GenericTableInfo","document","fieldPaths","indexes","searchIndexes","vectorIndexes","DocumentByInfo","TableInfo","FieldPaths","Indexes","IndexNames","NamedIndex","IndexName","SearchIndexes","SearchIndexNames","NamedSearchIndex","VectorIndexes","VectorIndexNames","NamedVectorIndex","GenericDataModel","AnyDataModel","tableName","TableNamesInDataModel","DataModel","NamedTableInfo","TableName","DocumentByName","Value","NumericValue","DocumentByInfo","FieldPaths","FieldTypeFromFieldPath","GenericTableInfo","Expression","T","_isExpression","_value","ExpressionOrValue","FilterBuilder","FieldPath","TableInfo","Array","eq","l","r","neq","lt","lte","gt","gte","add","sub","mul","div","mod","neg","x","and","exprs","or","not","field","fieldPath","GenericIndexFields","GenericDocument","FieldTypeFromFieldPath","PlusOne","N","IndexRangeBuilder","Document","IndexFields","FieldNum","NextIndexRangeBuilder","LowerBoundIndexRangeBuilder","eq","fieldName","value","IndexRange","IndexFieldName","UpperBoundIndexRangeBuilder","gt","gte","lt","lte","_isIndexRange","Cursor","PaginationResult","T","page","isDone","continueCursor","splitCursor","pageStatus","PaginationOptions","numItems","cursor","paginationOptsValidator","___values_validators_js0","VFloat64","VString","VNull","VUnion","VObject","id","endCursor","maximumRowsRead","maximumBytesRead","FieldTypeFromFieldPath","GenericDocument","GenericSearchIndexConfig","SearchFilterBuilder","Document","SearchIndexConfig","SearchFilterFinalizer","search","fieldName","query","FieldName","SearchFilter","eq","value","_isSearchFilter","DocumentByInfo","GenericTableInfo","IndexNames","NamedIndex","NamedSearchIndex","SearchIndexNames","ExpressionOrValue","FilterBuilder","IndexRange","IndexRangeBuilder","PaginationResult","PaginationOptions","SearchFilter","SearchFilterBuilder","QueryInitializer","IndexName","TableInfo","Query","OrderedQuery","fullTableScan","withIndex","indexName","q","indexRange","withSearchIndex","searchFilter","order","Promise","Array","AsyncIterable","filter","predicate","paginate","paginationOpts","collect","take","n","first","unique","GenericId","BetterOmit","Expand","GenericDocument","SystemFields","_creationTime","IdField","TableName","_id","WithoutSystemFields","Document","WithOptionalSystemFields","Pick","Partial","SystemIndexes","by_id","by_creation_time","IndexTiebreakerField","AnyDataModel","GenericDataModel","GenericTableIndexes","GenericTableSearchIndexes","GenericTableVectorIndexes","TableNamesInDataModel","IdField","IndexTiebreakerField","SystemFields","SystemIndexes","Expand","GenericValidator","ObjectType","VObject","Validator","ExtractFieldPaths","T","ExtractDocument","DbIndexConfig","FirstFieldPath","RestFieldPaths","fields","SearchIndexConfig","SearchField","FilterFields","searchField","filterFields","VectorIndexConfig","VectorField","vectorField","dimensions","IndexOptions","staged","TableDefinition","IndexName","DocumentType","Indexes","SearchIndexes","VectorIndexes","Record","indexes","stagedDbIndexes","searchIndexes","stagedSearchIndexes","vectorIndexes","stagedVectorIndexes","validator","indexDescriptor","index","name","indexConfig","searchIndex","vectorIndex","self","defineTable","DocumentSchema","documentSchema","GenericSchema","SchemaDefinition","Schema","StrictTableTypes","tables","strictTableNameTypes","schemaValidation","DefineSchemaOptions","StrictTableNameTypes","defineSchema","schema","options","DataModelFromSchemaDefinition","SchemaDef","TableName","MaybeMakeLooseDataModel","document","fieldPaths","DataModel","_systemSchema","___values_validators_js0","VString","VAny","VArray","VFloat64","VLiteral","VUnion","_scheduled_functions","completedTime","args","scheduledTime","state","kind","error","_storage","contentType","sha256","size","SystemDataModel","SystemTableNames","GenericId","DocumentByName","GenericDataModel","NamedTableInfo","TableNamesInDataModel","QueryInitializer","SystemDataModel","WithOptionalSystemFields","WithoutSystemFields","BaseDatabaseReader","TableName","DataModel","Promise","get","id","query","tableName","normalizeId","BaseDatabaseReaderWithTable","BaseTableReader","table","GenericDatabaseReader","system","GenericDatabaseReaderWithTable","GenericDatabaseWriter","PatchValue","insert","value","patch","replace","delete","GenericDatabaseWriterWithTable","BaseTableWriter","T","P","EmptyObject","DefaultFunctionArgs","FunctionVisibility","RegisteredAction","RegisteredMutation","RegisteredQuery","Expand","UnionToIntersection","PaginationOptions","PaginationResult","FunctionType","FunctionReference","Type","Visibility","Args","ReturnType","ComponentPath","_type","_visibility","_args","_returnType","_componentPath","getFunctionName","AnyFunctionReference","functionReference","makeFunctionReference","type","args","ret","name","FunctionReferenceFromExport","Export","ReturnValue","ConvertReturnType","FunctionReferencesInModule","Module","Record","ExportName","ApiForModule","ModulePath","First","Second","_","ApiFromModules","AllModules","ApiFromModulesAllowEmptyNodes","FilterApi","ExpandModulesAndDirs","API","Predicate","mod","filterApi","api","justInternal","justPublic","justQueries","justMutations","justActions","justPaginatedQueries","paginationOpts","justSchedulable","ObjectType","Key","AnyModuleDirOrFunc","key","AnyApi","PartialApi","anyApi","FunctionArgs","FuncRef","OptionalRestArgs","ArgsAndOptions","Options","options","FunctionReturnType","UndefinedToNull","T","NullToUndefinedOrNull","Awaited","ValidatorTypeToReturnType","Promise","Auth","GenericDatabaseReader","GenericDatabaseReaderWithTable","GenericDatabaseWriter","GenericDatabaseWriterWithTable","StorageActionWriter","StorageReader","StorageWriter","FunctionReference","FunctionReturnType","OptionalRestArgs","ValidatorTypeToReturnType","GenericValidator","Infer","ObjectType","PropertyValidators","Id","GenericDataModel","NamedTableInfo","TableNamesInDataModel","VectorIndexNames","Scheduler","VectorSearchQuery","Expand","Validator","GenericMutationCtx","Query","Mutation","DataModel","Promise","db","auth","storage","scheduler","runQuery","query","args","runMutation","mutation","GenericMutationCtxWithTable","Omit","GenericQueryCtx","GenericQueryCtxWithTable","GenericActionCtx","Action","TableName","IndexName","Array","runAction","action","vectorSearch","tableName","indexName","_id","_score","DefaultFunctionArgs","Record","OneArgArray","ArgsObject","NoArgsArray","ArgsArray","EmptyObject","ArgsArrayToObject","Args","FunctionVisibility","VisibilityProperties","Visiblity","isPublic","isInternal","RegisteredMutation","Visibility","Returns","isConvexFunction","isMutation","RegisteredQuery","isQuery","RegisteredAction","isAction","PublicHttpAction","isHttp","UnvalidatedFunction","Ctx","ctx","handler","ValidatedFunction","ArgsValidator","ReturnValueForOptionalValidator","ReturnsValidator","ArgsArrayForOptionalValidator","DefaultArgsForOptionalValidator","MutationBuilder","ReturnValue","OneOrZeroArgs","returns","MutationBuilderWithTable","QueryBuilder","QueryBuilderWithTable","ActionBuilder","func","HttpActionBuilder","Request","Response","request","GenericId","StorageId","FileStorageId","FileMetadata","storageId","sha256","size","contentType","StorageReader","T","Promise","getUrl","__tableName","getMetadata","StorageWriter","generateUploadUrl","delete","StorageActionWriter","Blob","get","store","blob","options"],"sources":["../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/values/value.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/type_utils.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/values/validators.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/values/validator.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/authentication.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/data_model.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/filter_builder.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/index_range_builder.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/pagination.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/search_filter_builder.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/query.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/system_fields.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/schema.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/database.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/api.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/registration.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/storage.d.ts"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],"mappings":"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"}
1
+ {"version":3,"file":"storage-CG8QLF8G.d.ts","names":["JSONValue","key","Id","TableName","__tableName","Value","ArrayBuffer","NumericValue","slowBigIntToBase64","value","slowBase64ToBigInt","encoded","modernBigIntToBase64","modernBase64ToBigInt","bigIntToBase64","base64ToBigInt","jsonToConvex","stringifyValueForError","convexToJson","convexOrUndefinedToJson","patchValueToJson","Expand","ObjectType","Record","Key","BetterOmit","T","K","Property","UnionToIntersection","UnionType","k","I","GenericId","GenericValidator","JSONValue","TableNameFromType","T","TableName","BaseValidator","Type","IsOptional","FieldPaths","OptionalProperty","isOptional","type","fieldPaths","isConvexValidator","constructor","optional","VId","tableName","kind","VFloat64","VInt64","VBoolean","VBytes","ArrayBuffer","VString","VNull","VAny","VObject","Fields","Record","Property","JoinFieldPaths","fields","VLiteral","value","VArray","Element","Validator","element","VRecord","Key","Value","key","VUnion","members","VOptional","Members","Start","End","ObjectFieldType","ValidatorJSON","fieldType","RecordKeyValidatorJSON","RecordValueValidatorJSON","keys","values","Expand","GenericId","OptionalProperty","VAny","VArray","VBoolean","VBytes","VFloat64","VId","VInt64","VLiteral","VNull","VObject","VOptional","VRecord","VString","VUnion","Validator","GenericValidator","isValidator","v","asObjectValidator","V","PropertyValidators","ObjectType","obj","AsObjectValidator","TableName","T","T_1","T_2","Key","Value","T_3","T_4","ArrayBuffer","OptionalKeys","Property","Infer","Exclude","Property_1","Property_2","Record","id","tableName","null","number","float64","bigint","int64","boolean","string","bytes","literal","array","element","object","fields","record","keys","values","union","members","any","optional","value","Fields","RequiredKeys","JSONValue","UserIdentity","tokenIdentifier","subject","issuer","name","givenName","familyName","nickname","preferredUsername","profileUrl","pictureUrl","email","emailVerified","gender","birthday","timezone","language","phoneNumber","phoneNumberVerified","address","updatedAt","key","UserIdentityAttributes","Omit","Auth","Promise","getUserIdentity","Value","GenericDocument","Record","GenericFieldPaths","GenericIndexFields","GenericTableIndexes","GenericSearchIndexConfig","searchField","filterFields","GenericTableSearchIndexes","GenericVectorIndexConfig","vectorField","dimensions","GenericTableVectorIndexes","ValueFromUnion","T","Key","Default","FieldTypeFromFieldPath","Document","FieldPath","FieldTypeFromFieldPathInner","First","FieldValue","Second","GenericTableInfo","document","fieldPaths","indexes","searchIndexes","vectorIndexes","DocumentByInfo","TableInfo","FieldPaths","Indexes","IndexNames","NamedIndex","IndexName","SearchIndexes","SearchIndexNames","NamedSearchIndex","VectorIndexes","VectorIndexNames","NamedVectorIndex","GenericDataModel","AnyDataModel","tableName","TableNamesInDataModel","DataModel","NamedTableInfo","TableName","DocumentByName","Value","NumericValue","DocumentByInfo","FieldPaths","FieldTypeFromFieldPath","GenericTableInfo","Expression","T","_isExpression","_value","ExpressionOrValue","FilterBuilder","FieldPath","TableInfo","Array","eq","l","r","neq","lt","lte","gt","gte","add","sub","mul","div","mod","neg","x","and","exprs","or","not","field","fieldPath","GenericIndexFields","GenericDocument","FieldTypeFromFieldPath","PlusOne","N","IndexRangeBuilder","Document","IndexFields","FieldNum","NextIndexRangeBuilder","LowerBoundIndexRangeBuilder","eq","fieldName","value","IndexRange","IndexFieldName","UpperBoundIndexRangeBuilder","gt","gte","lt","lte","_isIndexRange","Cursor","PaginationResult","T","page","isDone","continueCursor","splitCursor","pageStatus","PaginationOptions","numItems","cursor","paginationOptsValidator","___values_validators_js0","VFloat64","VString","VNull","VUnion","VObject","id","endCursor","maximumRowsRead","maximumBytesRead","FieldTypeFromFieldPath","GenericDocument","GenericSearchIndexConfig","SearchFilterBuilder","Document","SearchIndexConfig","SearchFilterFinalizer","search","fieldName","query","FieldName","SearchFilter","eq","value","_isSearchFilter","DocumentByInfo","GenericTableInfo","IndexNames","NamedIndex","NamedSearchIndex","SearchIndexNames","ExpressionOrValue","FilterBuilder","IndexRange","IndexRangeBuilder","PaginationResult","PaginationOptions","SearchFilter","SearchFilterBuilder","QueryInitializer","IndexName","TableInfo","Query","OrderedQuery","fullTableScan","withIndex","indexName","q","indexRange","withSearchIndex","searchFilter","order","Promise","Array","AsyncIterable","filter","predicate","paginate","paginationOpts","collect","take","n","first","unique","GenericId","BetterOmit","Expand","GenericDocument","SystemFields","_creationTime","IdField","TableName","_id","WithoutSystemFields","Document","WithOptionalSystemFields","Pick","Partial","SystemIndexes","by_id","by_creation_time","IndexTiebreakerField","AnyDataModel","GenericDataModel","GenericTableIndexes","GenericTableSearchIndexes","GenericTableVectorIndexes","TableNamesInDataModel","IdField","IndexTiebreakerField","SystemFields","SystemIndexes","Expand","GenericValidator","ObjectType","VObject","Validator","ExtractFieldPaths","T","ExtractDocument","DbIndexConfig","FirstFieldPath","RestFieldPaths","fields","SearchIndexConfig","SearchField","FilterFields","searchField","filterFields","VectorIndexConfig","VectorField","vectorField","dimensions","IndexOptions","staged","TableDefinition","IndexName","DocumentType","Indexes","SearchIndexes","VectorIndexes","Record","indexes","stagedDbIndexes","searchIndexes","stagedSearchIndexes","vectorIndexes","stagedVectorIndexes","validator","indexDescriptor","index","name","indexConfig","searchIndex","vectorIndex","self","defineTable","DocumentSchema","documentSchema","GenericSchema","SchemaDefinition","Schema","StrictTableTypes","tables","strictTableNameTypes","schemaValidation","DefineSchemaOptions","StrictTableNameTypes","defineSchema","schema","options","DataModelFromSchemaDefinition","SchemaDef","TableName","MaybeMakeLooseDataModel","document","fieldPaths","DataModel","_systemSchema","___values_validators_js0","VString","VAny","VArray","VFloat64","VLiteral","VUnion","_scheduled_functions","completedTime","args","scheduledTime","state","kind","error","_storage","contentType","sha256","size","SystemDataModel","SystemTableNames","GenericId","DocumentByName","GenericDataModel","NamedTableInfo","TableNamesInDataModel","QueryInitializer","SystemDataModel","WithOptionalSystemFields","WithoutSystemFields","BaseDatabaseReader","TableName","DataModel","Promise","get","id","query","tableName","normalizeId","BaseDatabaseReaderWithTable","BaseTableReader","table","GenericDatabaseReader","system","GenericDatabaseReaderWithTable","GenericDatabaseWriter","PatchValue","insert","value","patch","replace","delete","GenericDatabaseWriterWithTable","BaseTableWriter","T","P","EmptyObject","DefaultFunctionArgs","FunctionVisibility","RegisteredAction","RegisteredMutation","RegisteredQuery","Expand","UnionToIntersection","PaginationOptions","PaginationResult","FunctionType","FunctionReference","Type","Visibility","Args","ReturnType","ComponentPath","_type","_visibility","_args","_returnType","_componentPath","getFunctionName","AnyFunctionReference","functionReference","makeFunctionReference","type","args","ret","name","FunctionReferenceFromExport","Export","ReturnValue","ConvertReturnType","FunctionReferencesInModule","Module","Record","ExportName","ApiForModule","ModulePath","First","Second","_","ApiFromModules","AllModules","ApiFromModulesAllowEmptyNodes","FilterApi","ExpandModulesAndDirs","API","Predicate","mod","filterApi","api","justInternal","justPublic","justQueries","justMutations","justActions","justPaginatedQueries","paginationOpts","justSchedulable","ObjectType","Key","AnyModuleDirOrFunc","key","AnyApi","PartialApi","anyApi","FunctionArgs","FuncRef","OptionalRestArgs","ArgsAndOptions","Options","options","FunctionReturnType","UndefinedToNull","T","NullToUndefinedOrNull","Awaited","ValidatorTypeToReturnType","Promise","Auth","GenericDatabaseReader","GenericDatabaseReaderWithTable","GenericDatabaseWriter","GenericDatabaseWriterWithTable","StorageActionWriter","StorageReader","StorageWriter","FunctionReference","FunctionReturnType","OptionalRestArgs","ValidatorTypeToReturnType","GenericValidator","Infer","ObjectType","PropertyValidators","Id","GenericDataModel","NamedTableInfo","TableNamesInDataModel","VectorIndexNames","Scheduler","VectorSearchQuery","Expand","Validator","GenericMutationCtx","Query","Mutation","DataModel","Promise","db","auth","storage","scheduler","runQuery","query","args","runMutation","mutation","GenericMutationCtxWithTable","Omit","GenericQueryCtx","GenericQueryCtxWithTable","GenericActionCtx","Action","TableName","IndexName","Array","runAction","action","vectorSearch","tableName","indexName","_id","_score","DefaultFunctionArgs","Record","OneArgArray","ArgsObject","NoArgsArray","ArgsArray","EmptyObject","ArgsArrayToObject","Args","FunctionVisibility","VisibilityProperties","Visiblity","isPublic","isInternal","RegisteredMutation","Visibility","Returns","isConvexFunction","isMutation","RegisteredQuery","isQuery","RegisteredAction","isAction","PublicHttpAction","isHttp","UnvalidatedFunction","Ctx","ctx","handler","ValidatedFunction","ArgsValidator","ReturnValueForOptionalValidator","ReturnsValidator","ArgsArrayForOptionalValidator","DefaultArgsForOptionalValidator","MutationBuilder","ReturnValue","OneOrZeroArgs","returns","MutationBuilderWithTable","QueryBuilder","QueryBuilderWithTable","ActionBuilder","func","HttpActionBuilder","Request","Response","request","GenericId","StorageId","FileStorageId","FileMetadata","storageId","sha256","size","contentType","StorageReader","T","Promise","getUrl","__tableName","getMetadata","StorageWriter","generateUploadUrl","delete","StorageActionWriter","Blob","get","store","blob","options"],"sources":["../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/values/value.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/type_utils.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/values/validators.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/values/validator.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/authentication.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/data_model.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/filter_builder.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/index_range_builder.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/pagination.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/search_filter_builder.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/query.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/system_fields.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/schema.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/database.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/api.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/registration.d.ts","../../../node_modules/.pnpm/convex@1.27.0_react@19.2.1/node_modules/convex/dist/cjs-types/server/storage.d.ts"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "//": "THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template (FOR package.json FILES, PLEASE EDIT package-template.json)",
3
3
  "name": "@hexclave/js",
4
- "version": "1.0.9",
4
+ "version": "1.0.11",
5
5
  "repository": "https://github.com/hexclave/hexclave",
6
6
  "sideEffects": false,
7
7
  "main": "./dist/index.js",
@@ -16,6 +16,15 @@
16
16
  "default": "./dist/index.js"
17
17
  }
18
18
  },
19
+ "./config": {
20
+ "types": "./dist/config.d.ts",
21
+ "import": {
22
+ "default": "./dist/esm/config.js"
23
+ },
24
+ "require": {
25
+ "default": "./dist/config.js"
26
+ }
27
+ },
19
28
  "./convex.config": {
20
29
  "types": "./dist/integrations/convex/component/convex.config.d.ts",
21
30
  "import": {
@@ -57,7 +66,7 @@
57
66
  "rrweb": "^1.1.3",
58
67
  "tsx": "^4.21.0",
59
68
  "yup": "^1.7.1",
60
- "@hexclave/shared": "1.0.9"
69
+ "@hexclave/shared": "1.0.11"
61
70
  },
62
71
  "devDependencies": {
63
72
  "@quetzallabs/i18n": "^0.1.19",
package/src/config.ts ADDED
@@ -0,0 +1,17 @@
1
+
2
+ //===========================================
3
+ // THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
4
+ //===========================================
5
+ // Lightweight, side-effect-free entrypoint for authoring `hexclave.config.ts`
6
+ // files. Importing from here (e.g. `@hexclave/next/config`) gives you the
7
+ // `defineHexclaveConfig` helper and config types WITHOUT pulling in the
8
+ // framework runtime (React, server-only, Next.js internals). That matters
9
+ // because tooling such as the local dashboard evaluates your config file in a
10
+ // plain Node context — importing `defineHexclaveConfig` from the package root
11
+ // would drag in the whole SDK and fail to load.
12
+ //
13
+ // Hexclave aliases and legacy Stack* names — @deprecated JSDoc lives on the
14
+ // original declarations in @hexclave/shared/config so it survives dts bundling
15
+ // (per-specifier JSDoc on re-exports does not).
16
+ export type { HexclaveConfig, StackConfig } from "@hexclave/shared/config";
17
+ export { defineHexclaveConfig, defineStackConfig, showOnboardingHexclaveConfigValue } from "@hexclave/shared/config";