@hs-x/cli 0.4.12 → 0.4.14

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 (117) hide show
  1. package/README.md +21 -7
  2. package/dist/commands/completion.d.ts.map +1 -1
  3. package/dist/commands/completion.js +3 -0
  4. package/dist/commands/completion.js.map +1 -1
  5. package/dist/commands/deploy.d.ts +10 -0
  6. package/dist/commands/deploy.d.ts.map +1 -1
  7. package/dist/commands/deploy.js +37 -13
  8. package/dist/commands/deploy.js.map +1 -1
  9. package/dist/commands/dev.d.ts +1 -0
  10. package/dist/commands/dev.d.ts.map +1 -1
  11. package/dist/commands/dev.js +346 -32
  12. package/dist/commands/dev.js.map +1 -1
  13. package/dist/commands/help-command.d.ts.map +1 -1
  14. package/dist/commands/help-command.js +22 -6
  15. package/dist/commands/help-command.js.map +1 -1
  16. package/dist/commands/project-lifecycle.d.ts +10 -0
  17. package/dist/commands/project-lifecycle.d.ts.map +1 -1
  18. package/dist/commands/project-lifecycle.js +120 -33
  19. package/dist/commands/project-lifecycle.js.map +1 -1
  20. package/dist/commands/project.d.ts +3 -0
  21. package/dist/commands/project.d.ts.map +1 -1
  22. package/dist/commands/project.js +2 -0
  23. package/dist/commands/project.js.map +1 -1
  24. package/dist/constants.d.ts +1 -1
  25. package/dist/constants.js +1 -1
  26. package/dist/dev/account-selection.d.ts +55 -0
  27. package/dist/dev/account-selection.d.ts.map +1 -1
  28. package/dist/dev/account-selection.js +120 -0
  29. package/dist/dev/account-selection.js.map +1 -1
  30. package/dist/dev/browser-log-bridge.d.ts +13 -8
  31. package/dist/dev/browser-log-bridge.d.ts.map +1 -1
  32. package/dist/dev/browser-log-bridge.js +37 -17
  33. package/dist/dev/browser-log-bridge.js.map +1 -1
  34. package/dist/dev/clipboard.d.ts +9 -0
  35. package/dist/dev/clipboard.d.ts.map +1 -0
  36. package/dist/dev/clipboard.js +42 -0
  37. package/dist/dev/clipboard.js.map +1 -0
  38. package/dist/dev/compat-shim.d.ts +19 -4
  39. package/dist/dev/compat-shim.d.ts.map +1 -1
  40. package/dist/dev/compat-shim.js +31 -4
  41. package/dist/dev/compat-shim.js.map +1 -1
  42. package/dist/dev/component-selection.d.ts +12 -0
  43. package/dist/dev/component-selection.d.ts.map +1 -1
  44. package/dist/dev/component-selection.js +29 -0
  45. package/dist/dev/component-selection.js.map +1 -1
  46. package/dist/dev/frontend-log-relay.d.ts +12 -0
  47. package/dist/dev/frontend-log-relay.d.ts.map +1 -1
  48. package/dist/dev/frontend-log-relay.js +31 -20
  49. package/dist/dev/frontend-log-relay.js.map +1 -1
  50. package/dist/dev/hubspot-log-lane.d.ts +27 -0
  51. package/dist/dev/hubspot-log-lane.d.ts.map +1 -0
  52. package/dist/dev/hubspot-log-lane.js +73 -0
  53. package/dist/dev/hubspot-log-lane.js.map +1 -0
  54. package/dist/dev/hubspot-logs-poller.d.ts +7 -1
  55. package/dist/dev/hubspot-logs-poller.d.ts.map +1 -1
  56. package/dist/dev/hubspot-logs-poller.js +28 -1
  57. package/dist/dev/hubspot-logs-poller.js.map +1 -1
  58. package/dist/dev/keyboard.d.ts +21 -3
  59. package/dist/dev/keyboard.d.ts.map +1 -1
  60. package/dist/dev/keyboard.js +106 -6
  61. package/dist/dev/keyboard.js.map +1 -1
  62. package/dist/dev/local-proxy.d.ts +90 -0
  63. package/dist/dev/local-proxy.d.ts.map +1 -0
  64. package/dist/dev/local-proxy.js +186 -0
  65. package/dist/dev/local-proxy.js.map +1 -0
  66. package/dist/dev/log-server.d.ts +9 -0
  67. package/dist/dev/log-server.d.ts.map +1 -1
  68. package/dist/dev/log-server.js +46 -3
  69. package/dist/dev/log-server.js.map +1 -1
  70. package/dist/dev/production-app-check.d.ts +23 -0
  71. package/dist/dev/production-app-check.d.ts.map +1 -0
  72. package/dist/dev/production-app-check.js +28 -0
  73. package/dist/dev/production-app-check.js.map +1 -0
  74. package/dist/dev/session-manager.d.ts +51 -1
  75. package/dist/dev/session-manager.d.ts.map +1 -1
  76. package/dist/dev/session-manager.js +155 -12
  77. package/dist/dev/session-manager.js.map +1 -1
  78. package/dist/dev/startup-progress.d.ts +7 -0
  79. package/dist/dev/startup-progress.d.ts.map +1 -0
  80. package/dist/dev/startup-progress.js +27 -0
  81. package/dist/dev/startup-progress.js.map +1 -0
  82. package/dist/dev/stream-event-format.d.ts +10 -1
  83. package/dist/dev/stream-event-format.d.ts.map +1 -1
  84. package/dist/dev/stream-event-format.js +157 -5
  85. package/dist/dev/stream-event-format.js.map +1 -1
  86. package/dist/dev/stream-renderer.d.ts +34 -1
  87. package/dist/dev/stream-renderer.d.ts.map +1 -1
  88. package/dist/dev/stream-renderer.js +371 -60
  89. package/dist/dev/stream-renderer.js.map +1 -1
  90. package/dist/dev/trace-markdown.d.ts +25 -0
  91. package/dist/dev/trace-markdown.d.ts.map +1 -0
  92. package/dist/dev/trace-markdown.js +159 -0
  93. package/dist/dev/trace-markdown.js.map +1 -0
  94. package/dist/hubspot-app-logs.d.ts +9 -0
  95. package/dist/hubspot-app-logs.d.ts.map +1 -1
  96. package/dist/hubspot-app-logs.js +6 -4
  97. package/dist/hubspot-app-logs.js.map +1 -1
  98. package/dist/hubspot-developer-client.js +3 -0
  99. package/dist/hubspot-developer-client.js.map +1 -1
  100. package/dist/hubspot-project.d.ts +2 -0
  101. package/dist/hubspot-project.d.ts.map +1 -1
  102. package/dist/hubspot-project.js +13 -1
  103. package/dist/hubspot-project.js.map +1 -1
  104. package/dist/prompt.d.ts +15 -0
  105. package/dist/prompt.d.ts.map +1 -1
  106. package/dist/prompt.js +66 -15
  107. package/dist/prompt.js.map +1 -1
  108. package/dist/reporter/human.d.ts.map +1 -1
  109. package/dist/reporter/human.js +6 -1
  110. package/dist/reporter/human.js.map +1 -1
  111. package/dist/reporter/style.d.ts +10 -0
  112. package/dist/reporter/style.d.ts.map +1 -1
  113. package/dist/reporter/style.js +39 -0
  114. package/dist/reporter/style.js.map +1 -1
  115. package/dist/services/hubspot-dev-client.js +3 -0
  116. package/dist/services/hubspot-dev-client.js.map +1 -1
  117. package/package.json +9 -8
@@ -1,8 +1,9 @@
1
1
  import { existsSync, readFileSync, watch, writeFileSync } from 'node:fs';
2
2
  import { join, parse } from 'node:path';
3
- const BRIDGE_MARKER = '/*__HSX_DEV_BROWSER_LOG_BRIDGE_V3__*/';
4
- const STATE_BRIDGE_MARKER = '/*__HSX_DEV_STATE_BRIDGE_V14__*/';
3
+ const BRIDGE_MARKER = '/*__HSX_DEV_BROWSER_LOG_BRIDGE_V4__*/';
4
+ const STATE_BRIDGE_MARKER = '/*__HSX_DEV_STATE_BRIDGE_V15__*/';
5
5
  const PREVIOUS_STATE_BRIDGE_MARKERS = [
6
+ '/*__HSX_DEV_STATE_BRIDGE_V14__*/',
6
7
  '/*__HSX_DEV_STATE_BRIDGE_V13__*/',
7
8
  '/*__HSX_DEV_STATE_BRIDGE_V12__*/',
8
9
  '/*__HSX_DEV_STATE_BRIDGE_V11__*/',
@@ -18,11 +19,19 @@ const PREVIOUS_STATE_BRIDGE_MARKERS = [
18
19
  '/*__HSX_DEV_STATE_BRIDGE_V1__*/',
19
20
  ];
20
21
  const PREVIOUS_BRIDGE_MARKERS = [
22
+ '/*__HSX_DEV_BROWSER_LOG_BRIDGE_V3__*/',
21
23
  '/*__HSX_DEV_BROWSER_LOG_BRIDGE_V2__*/',
22
24
  '/*__HSX_DEV_BROWSER_LOG_BRIDGE__*/',
23
25
  ];
24
26
  const LEGACY_BRIDGE_END = '}catch{}})();';
25
27
  const HUBSPOT_UI_EXTENSION_TYPES = new Set(['CARD', 'SETTINGS', 'PAGE', 'CRM_BULK_ACTION']);
28
+ /**
29
+ * One generated helper shared by both bridges: post a relay payload through
30
+ * `hubspot.fetch` (HubSpot's local proxy rewrites the origin to the hs-x
31
+ * sidecar) or, when no relay URL was configured, through the temporary app
32
+ * function. Either way it resolves to the relay's JSON reply.
33
+ */
34
+ const RELAY_SEND = 'const relay=parameters=>{try{if(relayUrl){if(typeof g.hsFetch!=="function")return Promise.resolve(undefined);return Promise.resolve(g.hsFetch(relayUrl,{method:"POST",body:parameters})).then(response=>response&&typeof response.json==="function"?response.json():undefined)}const fn=g.serverless;if(typeof fn!=="function")return Promise.resolve(undefined);return Promise.resolve(Reflect.apply(fn,g,[relayFunctionName,{parameters}]))}catch(error){return Promise.reject(error)}};';
26
35
  /**
27
36
  * Adds a development-only bootstrap to HubSpot's generated UI-extension IIFE.
28
37
  * The customer's source tree is never rewritten and production builds never
@@ -37,11 +46,12 @@ export function injectBrowserLogBridge(bundle, input) {
37
46
  /** Exported for focused VM/browser-shape tests. */
38
47
  export function browserLogBridgePrelude(input) {
39
48
  const relayFunctionName = JSON.stringify(input.relayFunctionName);
49
+ const relayUrl = JSON.stringify(input.relayUrl ?? '');
40
50
  const source = JSON.stringify(input.source);
41
51
  // Deliberately emitted as one line: prepending a generated line would shift
42
52
  // every Vite source-map mapping. The bridge mirrors calls after preserving
43
53
  // the original browser/HubSpot logger behavior and never throws into the app.
44
- return `${BRIDGE_MARKER}(()=>{try{const g=globalThis;if(g.__HSX_DEV_BROWSER_LOG_BRIDGE_V3__)return;if(g.__HSX_DEV_BROWSER_LOG_BRIDGE_V2__){Object.defineProperty(g,"__HSX_DEV_BROWSER_LOG_BRIDGE_V3__",{value:true,configurable:true});return}Object.defineProperty(g,"__HSX_DEV_BROWSER_LOG_BRIDGE_V3__",{value:true,configurable:true});const relayFunctionName=${relayFunctionName},source=${source},queue=[];let timer,insideLogger=0;const levelOf=n=>n==="error"?"error":n==="warn"?"warn":n==="debug"?"debug":"info";const normalize=value=>{if(value instanceof Error)return{name:value.name,message:value.message,stack:value.stack};const seen=new WeakSet;try{const json=JSON.stringify(value,(_key,item)=>{if(typeof item==="undefined")return "[undefined]";if(typeof item==="bigint")return String(item)+"n";if(typeof item==="function")return "[Function "+(item.name||"anonymous")+"]";if(typeof item==="symbol")return String(item);if(item&&typeof item==="object"){if(seen.has(item))return "[Circular]";seen.add(item)}return item});return json===undefined?String(value):JSON.parse(json)}catch{return String(value)}};const render=value=>{if(typeof value==="string")return value;if(typeof value==="undefined")return "undefined";if(value instanceof Error)return value.stack||value.message;const normalized=normalize(value);return typeof normalized==="string"?normalized:JSON.stringify(normalized)};const flush=()=>{timer=undefined;if(queue.length===0)return;const batch=queue.splice(0,100);try{const send=g.serverless;if(typeof send==="function")void Promise.resolve(Reflect.apply(send,g,[relayFunctionName,{parameters:{entries:batch}}])).catch(()=>{})}catch{}if(queue.length>0)timer=setTimeout(flush,0)};const emit=(level,args,api)=>{try{const msg=args.map(render).join(" ").slice(0,65536);if(!msg)return;const fields={api};if(args.some(value=>value!==null&&typeof value==="object")){const normalizedArgs=args.map(normalize);if(JSON.stringify(normalizedArgs).length<=65536)fields.args=normalizedArgs}queue.push({level,msg,ts:Date.now(),source,fields});if(queue.length>=100)flush();else if(timer===undefined)timer=setTimeout(flush,100)}catch{}};const wrap=(target,name,kind)=>{try{const original=target?.[name];if(typeof original!=="function")return;target[name]=function(...args){if(kind==="console"&&insideLogger>0)return original.apply(this,args);let result;if(kind==="logger")insideLogger++;try{result=original.apply(this,args)}finally{if(kind==="logger")insideLogger--}emit(levelOf(name),args,kind+"."+name);return result}}catch{}};for(const name of ["log","info","debug","warn","error"])wrap(g.console,name,"console");if(g.logger&&typeof g.logger==="object")for(const name of ["info","debug","warn","error"])wrap(g.logger,name,"logger")}catch{}})();`;
54
+ return `${BRIDGE_MARKER}(()=>{try{const g=globalThis;if(g.__HSX_DEV_BROWSER_LOG_BRIDGE_V4__)return;if(g.__HSX_DEV_BROWSER_LOG_BRIDGE_V3__||g.__HSX_DEV_BROWSER_LOG_BRIDGE_V2__){Object.defineProperty(g,"__HSX_DEV_BROWSER_LOG_BRIDGE_V4__",{value:true,configurable:true});return}Object.defineProperty(g,"__HSX_DEV_BROWSER_LOG_BRIDGE_V4__",{value:true,configurable:true});const relayFunctionName=${relayFunctionName},relayUrl=${relayUrl},source=${source},queue=[];${RELAY_SEND}let timer,insideLogger=0;const levelOf=n=>n==="error"?"error":n==="warn"?"warn":n==="debug"?"debug":"info";const normalize=value=>{if(value instanceof Error)return{name:value.name,message:value.message,stack:value.stack};const seen=new WeakSet;try{const json=JSON.stringify(value,(_key,item)=>{if(typeof item==="undefined")return "[undefined]";if(typeof item==="bigint")return String(item)+"n";if(typeof item==="function")return "[Function "+(item.name||"anonymous")+"]";if(typeof item==="symbol")return String(item);if(item&&typeof item==="object"){if(seen.has(item))return "[Circular]";seen.add(item)}return item});return json===undefined?String(value):JSON.parse(json)}catch{return String(value)}};const render=value=>{if(typeof value==="string")return value;if(typeof value==="undefined")return "undefined";if(value instanceof Error)return value.stack||value.message;const normalized=normalize(value);return typeof normalized==="string"?normalized:JSON.stringify(normalized)};const flush=()=>{timer=undefined;if(queue.length===0)return;const batch=queue.splice(0,100);try{void relay({entries:batch}).catch(()=>{})}catch{}if(queue.length>0)timer=setTimeout(flush,0)};const emit=(level,args,api)=>{try{const msg=args.map(render).join(" ").slice(0,65536);if(!msg)return;const fields={api};if(args.some(value=>value!==null&&typeof value==="object")){const normalizedArgs=args.map(normalize);if(JSON.stringify(normalizedArgs).length<=65536)fields.args=normalizedArgs}queue.push({level,msg,ts:Date.now(),source,fields});if(queue.length>=100)flush();else if(timer===undefined)timer=setTimeout(flush,100)}catch{}};const wrap=(target,name,kind)=>{try{const original=target?.[name];if(typeof original!=="function")return;target[name]=function(...args){if(kind==="console"&&insideLogger>0)return original.apply(this,args);let result;if(kind==="logger")insideLogger++;try{result=original.apply(this,args)}finally{if(kind==="logger")insideLogger--}emit(levelOf(name),args,kind+"."+name);return result}}catch{}};for(const name of ["log","info","debug","warn","error"])wrap(g.console,name,"console");if(g.logger&&typeof g.logger==="object")for(const name of ["info","debug","warn","error"])wrap(g.logger,name,"logger")}catch{}})();`;
45
55
  }
46
56
  /** Adds opt-in, dev-session-only React state rehydration to a generated bundle. */
47
57
  export function injectBrowserStateBridge(bundle, input) {
@@ -52,6 +62,7 @@ export function injectBrowserStateBridge(bundle, input) {
52
62
  /** Exported for focused VM/browser-shape tests. */
53
63
  export function browserStateBridgePrelude(input) {
54
64
  const relayFunctionName = JSON.stringify(input.relayFunctionName);
65
+ const relayUrl = JSON.stringify(input.relayUrl ?? '');
55
66
  const source = JSON.stringify(input.source);
56
67
  // This remains a single generated line for the same source-map reason as
57
68
  // the log bridge. State is held only by the local relay process and is never
@@ -60,40 +71,41 @@ export function browserStateBridgePrelude(input) {
60
71
  STATE_BRIDGE_MARKER,
61
72
  '(()=>{try{',
62
73
  'const g=globalThis;',
63
- 'Object.defineProperty(g,"__HSX_DEV_STATE_BRIDGE_V14__",{value:true,configurable:true});',
64
- `const relayFunctionName=${relayFunctionName},source=${source};`,
65
- 'if(typeof g.serverless!=="function")return;',
74
+ 'Object.defineProperty(g,"__HSX_DEV_STATE_BRIDGE_V15__",{value:true,configurable:true});',
75
+ `const relayFunctionName=${relayFunctionName},relayUrl=${relayUrl},source=${source};`,
76
+ 'if(typeof g.serverless!=="function"&&!(relayUrl&&typeof g.hsFetch==="function"))return;',
77
+ RELAY_SEND,
66
78
  'const hasOwn=(object,key)=>Object.prototype.hasOwnProperty.call(object,key),registered=new Map,pending=new Map,outgoing=new Map,wrappedBySetter=new WeakMap,slotCounters=new Map;',
67
79
  'const hotRuntime=g.__HSX_DEV_HOT_ROOT_V1__&&typeof g.__HSX_DEV_HOT_ROOT_V1__==="object"?g.__HSX_DEV_HOT_ROOT_V1__:{current:null,root:null,wrapper:null,generation:0,force:null};Object.defineProperty(g,"__HSX_DEV_HOT_ROOT_V1__",{value:hotRuntime,configurable:true});',
68
80
  'let hydrated=false,snapshot={},timer;',
69
81
  'const jsonSafe=(value,seen=new WeakSet,depth=0)=>{if(value===null||typeof value==="string"||typeof value==="boolean")return true;if(typeof value==="number")return Number.isFinite(value);if(typeof value!=="object"||depth>20||seen.has(value))return false;seen.add(value);if(Array.isArray(value))return value.every(item=>jsonSafe(item,seen,depth+1));const proto=Object.getPrototypeOf(value);return(proto===Object.prototype||proto===null)&&Object.values(value).every(item=>jsonSafe(item,seen,depth+1))};',
70
82
  'const clone=value=>{if(!jsonSafe(value))return;try{const serialized=JSON.stringify(value);if(serialized===undefined||serialized.length>65536)return;return{ok:true,value:JSON.parse(serialized)}}catch{return}};',
71
83
  'const unwrap=value=>value&&typeof value==="object"&&value.response&&typeof value.response==="object"?value.response:value;',
72
- 'const flush=()=>{timer=undefined;if(outgoing.size===0)return;const entries=Array.from(outgoing,([key,value])=>({key,value})).slice(0,100);for(const{key}of entries)outgoing.delete(key);try{void Promise.resolve(Reflect.apply(g.serverless,g,[relayFunctionName,{parameters:{op:"state:merge",source,entries}}])).catch(()=>{})}catch{}if(outgoing.size>0)timer=setTimeout(flush,0)};',
84
+ 'const flush=()=>{timer=undefined;if(outgoing.size===0)return;const entries=Array.from(outgoing,([key,value])=>({key,value})).slice(0,100);for(const{key}of entries)outgoing.delete(key);try{void relay({op:"state:merge",source,entries}).catch(()=>{})}catch{}if(outgoing.size>0)timer=setTimeout(flush,0)};',
73
85
  'const queueState=(key,value)=>{const normalized=clone(value);if(!normalized)return;outgoing.set(key,normalized.value);if(timer===undefined)timer=setTimeout(flush,75)};',
74
86
  'const finish=state=>{snapshot=state&&typeof state==="object"&&!Array.isArray(state)?state:{};hydrated=true;for(const[key,set]of registered){if(hasOwn(snapshot,key))set(()=>snapshot[key]);else if(pending.has(key))queueState(key,pending.get(key))}pending.clear()};',
75
- 'const stateReady=new Promise(resolve=>{let settled=false;const complete=state=>{if(settled)return;settled=true;finish(state);resolve()};const timeout=setTimeout(()=>complete({}),1500);try{void Promise.resolve(Reflect.apply(g.serverless,g,[relayFunctionName,{parameters:{op:"state:get",source}}])).then(result=>{clearTimeout(timeout);complete(unwrap(result)?.state)}).catch(()=>{clearTimeout(timeout);complete({})})}catch{clearTimeout(timeout);complete({})}});',
87
+ 'const stateReady=new Promise(resolve=>{let settled=false;const complete=state=>{if(settled)return;settled=true;finish(state);resolve()};const timeout=setTimeout(()=>complete({}),1500);try{void relay({op:"state:get",source}).then(result=>{clearTimeout(timeout);complete(unwrap(result)?.state)}).catch(()=>{clearTimeout(timeout);complete({})})}catch{clearTimeout(timeout);complete({})}});',
76
88
  'function preservedUseState(baseKey,owner,initial){if(!owner||typeof owner.useState!=="function")throw new TypeError("React.useState is unavailable");let key=baseKey;if(typeof owner.useRef==="function"){const identity=Reflect.apply(owner.useRef,owner,[]);if(typeof identity.current!=="string"){const slot=slotCounters.get(baseKey)||0;slotCounters.set(baseKey,slot+1);identity.current=baseKey+":"+slot}key=identity.current}const saved=hydrated&&hasOwn(snapshot,key),pair=Reflect.apply(owner.useState,owner,[saved?()=>snapshot[key]:initial]),set=pair[1];registered.set(key,set);let wrapped=wrappedBySetter.get(set);if(!wrapped){wrapped=value=>set(previous=>{const next=typeof value==="function"?value(previous):value;if(hydrated)queueState(key,next);else pending.set(key,next);return next});wrappedBySetter.set(set,wrapped)}return[pair[0],wrapped]}',
77
89
  'function preservedExtend(owner,callback,...rest){if(!owner||typeof owner.extend!=="function")throw new TypeError("hubspot.extend is unavailable");if(typeof callback!=="function")return Reflect.apply(owner.extend,owner,[callback,...rest]);const reused=typeof hotRuntime.wrapper==="function";hotRuntime.current=callback;hotRuntime.stateReady=stateReady;hotRuntime.isHydrated=()=>hydrated;hotRuntime.generation+=1;if(!hotRuntime.root){hotRuntime.root=function HsxHotRoot({args}){const react=g.React,currentGeneration=hotRuntime.generation;if(!react||typeof react.useState!=="function"||typeof react.useEffect!=="function")return Reflect.apply(hotRuntime.current,undefined,args);const[ready,setReady]=react.useState(hotRuntime.isHydrated());if(typeof react.useReducer==="function"){const[,force]=react.useReducer(value=>value+1,0);hotRuntime.force=force}react.useEffect(()=>{let active=true;if(!ready)void hotRuntime.stateReady.then(()=>{if(active)setReady(true)});return()=>{active=false}},[ready,currentGeneration]);const children=Reflect.apply(hotRuntime.current,undefined,args);return ready?children:null}}if(!hotRuntime.wrapper)hotRuntime.wrapper=(...args)=>{const react=g.React;return react&&typeof react.createElement==="function"?react.createElement(hotRuntime.root,{args}):Reflect.apply(hotRuntime.current,undefined,args)};const result=Reflect.apply(owner.extend,owner,[hotRuntime.wrapper,...rest]);if(reused&&typeof hotRuntime.force==="function")setTimeout(()=>{try{hotRuntime.force()}catch{}},0);return result}',
78
- 'Object.defineProperty(g,"__HSX_DEV_USE_STATE_V14__",{value:preservedUseState,configurable:true});',
79
- 'Object.defineProperty(g,"__HSX_DEV_EXTEND_V14__",{value:preservedExtend,configurable:true});',
90
+ 'Object.defineProperty(g,"__HSX_DEV_USE_STATE_V15__",{value:preservedUseState,configurable:true});',
91
+ 'Object.defineProperty(g,"__HSX_DEV_EXTEND_V15__",{value:preservedExtend,configurable:true});',
80
92
  '}catch{}})();',
81
93
  ].join('');
82
94
  }
83
95
  function instrumentStateCalls(bundle) {
84
96
  const expression = /\b[A-Za-z_$][\w$]*\.useState\s*\(/g;
85
97
  let ordinal = 0;
86
- const upgradedState = bundle.replace(/globalThis\.__HSX_DEV_USE_STATE_V(?:11|10|[23456789])__\("h(\d+)",/g, (_match, value) => {
98
+ const upgradedState = bundle.replace(/globalThis\.__HSX_DEV_USE_STATE_V(?:1[0-4]|[23456789])__\("h(\d+)",/g, (_match, value) => {
87
99
  ordinal = Math.max(ordinal, Number(value) + 1);
88
- return `globalThis.__HSX_DEV_USE_STATE_V14__("h${value}",`;
100
+ return `globalThis.__HSX_DEV_USE_STATE_V15__("h${value}",`;
89
101
  });
90
102
  const withState = upgradedState.replace(expression, (match) => {
91
103
  const owner = match.slice(0, match.indexOf('.'));
92
- return `globalThis.__HSX_DEV_USE_STATE_V14__("h${ordinal++}",${owner},`;
104
+ return `globalThis.__HSX_DEV_USE_STATE_V15__("h${ordinal++}",${owner},`;
93
105
  });
94
106
  return withState
95
- .replace(/globalThis\.__HSX_DEV_EXTEND_V(?:11|10|[23456789])__\(hubspot,/g, 'globalThis.__HSX_DEV_EXTEND_V14__(hubspot,')
96
- .replace(/\bhubspot\.extend\s*\(/g, 'globalThis.__HSX_DEV_EXTEND_V14__(hubspot,')
107
+ .replace(/globalThis\.__HSX_DEV_EXTEND_V(?:1[0-4]|[23456789])__\(hubspot,/g, 'globalThis.__HSX_DEV_EXTEND_V15__(hubspot,')
108
+ .replace(/\bhubspot\.extend\s*\(/g, 'globalThis.__HSX_DEV_EXTEND_V15__(hubspot,')
97
109
  .replace(/globalThis\.__HSX_DEV_CREATE_ELEMENT_V(?:11|10|[6789])__\(([A-Za-z_$][\w$]*),/g, '$1.createElement(')
98
110
  .replace(/globalThis\.__HSX_DEV_CAPTURE_COMPONENT_V11__\(createAndRegisterRemoteReactComponent,/g, 'createAndRegisterRemoteReactComponent(')
99
111
  .replace(/globalThis\.__HSX_DEV_CAPTURE_LOADING_BUTTON_V(?:10|9)__\(createAndRegisterRemoteReactComponent,/g, 'createAndRegisterRemoteReactComponent(');
@@ -113,6 +125,7 @@ export function createHubSpotDevBrowserLogInstrumentor(input) {
113
125
  const before = readFileSync(bundlePath, 'utf8');
114
126
  const bridgeInput = {
115
127
  relayFunctionName: input.relayFunctionName,
128
+ ...(input.relayUrl ? { relayUrl: input.relayUrl } : {}),
116
129
  source: target.source,
117
130
  };
118
131
  let after = before;
@@ -133,7 +146,7 @@ export function createHubSpotDevBrowserLogInstrumentor(input) {
133
146
  return patched;
134
147
  };
135
148
  return {
136
- logger: wrapHubSpotDevLogger(input.logger, patchBundles),
149
+ logger: wrapHubSpotDevLogger(input.logger, patchBundles, input.suppressWarning),
137
150
  ...(outputDir ? { outputDir } : {}),
138
151
  targets,
139
152
  patchBundles,
@@ -166,12 +179,19 @@ export function createHubSpotDevBrowserLogInstrumentor(input) {
166
179
  },
167
180
  };
168
181
  }
169
- function wrapHubSpotDevLogger(logger, patchBundles) {
182
+ function wrapHubSpotDevLogger(logger, patchBundles, suppressWarning) {
170
183
  if (!logger || typeof logger !== 'object')
171
184
  return logger;
172
185
  return new Proxy(logger, {
173
186
  get(target, property, receiver) {
174
187
  const value = Reflect.get(target, property, receiver);
188
+ if (property === 'warn' && typeof value === 'function' && suppressWarning) {
189
+ return (...args) => {
190
+ if (args.some((arg) => typeof arg === 'string' && suppressWarning(arg)))
191
+ return;
192
+ return Reflect.apply(value, target, args);
193
+ };
194
+ }
175
195
  if (property !== 'info' || typeof value !== 'function')
176
196
  return value;
177
197
  return (...args) => {
@@ -1 +1 @@
1
- {"version":3,"file":"browser-log-bridge.js","sourceRoot":"","sources":["../../src/dev/browser-log-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-log-bridge.js","sourceRoot":"","sources":["../../src/dev/browser-log-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type ClipboardCopyResult = {
2
+ readonly ok: true;
3
+ } | {
4
+ readonly ok: false;
5
+ readonly reason: string;
6
+ };
7
+ /** Copy without invoking a shell, so trace contents can never become commands. */
8
+ export declare function copyTextToClipboard(text: string, platform?: NodeJS.Platform): ClipboardCopyResult;
9
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/dev/clipboard.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAOpD,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,mBAAmB,CAuBrB"}
@@ -0,0 +1,42 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ /** Copy without invoking a shell, so trace contents can never become commands. */
3
+ export function copyTextToClipboard(text, platform = process.platform) {
4
+ const commands = clipboardCommands(platform);
5
+ if (commands.length === 0) {
6
+ return { ok: false, reason: `clipboard is unsupported on ${platform}` };
7
+ }
8
+ let lastReason = 'no clipboard command is installed';
9
+ for (const candidate of commands) {
10
+ const result = spawnSync(candidate.command, [...candidate.args], {
11
+ input: text,
12
+ encoding: 'utf8',
13
+ timeout: 5_000,
14
+ windowsHide: true,
15
+ stdio: ['pipe', 'ignore', 'pipe'],
16
+ });
17
+ if (result.status === 0)
18
+ return { ok: true };
19
+ if (result.error && 'code' in result.error && result.error.code === 'ENOENT')
20
+ continue;
21
+ lastReason =
22
+ result.error?.message ||
23
+ result.stderr?.trim() ||
24
+ `${candidate.command} exited ${result.status}`;
25
+ }
26
+ return { ok: false, reason: lastReason };
27
+ }
28
+ function clipboardCommands(platform) {
29
+ if (platform === 'darwin')
30
+ return [{ command: 'pbcopy', args: [] }];
31
+ if (platform === 'win32')
32
+ return [{ command: 'clip.exe', args: [] }];
33
+ if (platform === 'linux') {
34
+ return [
35
+ { command: 'wl-copy', args: [] },
36
+ { command: 'xclip', args: ['-selection', 'clipboard'] },
37
+ { command: 'xsel', args: ['--clipboard', '--input'] },
38
+ ];
39
+ }
40
+ return [];
41
+ }
42
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/dev/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAW/C,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,WAA4B,OAAO,CAAC,QAAQ;IAE5C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,QAAQ,EAAE,EAAE,CAAC;IAC1E,CAAC;IAED,IAAI,UAAU,GAAG,mCAAmC,CAAC;IACrD,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE;YAC/D,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACvF,UAAU;YACR,MAAM,CAAC,KAAK,EAAE,OAAO;gBACrB,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;gBACrB,GAAG,SAAS,CAAC,OAAO,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAyB;IAClD,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO;YACL,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;YAChC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE;YACvD,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE;SACtD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -3,10 +3,10 @@
3
3
  * a version bump (or a breaking change in shape) only requires editing this
4
4
  * one file.
5
5
  *
6
- * Pins (kept in @hs-x/hubspot-cli package.json):
7
- * @hubspot/local-dev-lib 5.10.3
8
- * @hubspot/project-parsing-lib 0.22.1
9
- * @hubspot/ui-extensions-dev-server 2.1.2
6
+ * Pins are kept in @hs-x/cli and @hs-x/hubspot-cli package.json:
7
+ * @hubspot/local-dev-lib
8
+ * @hubspot/project-parsing-lib
9
+ * @hubspot/ui-extensions-dev-server
10
10
  */
11
11
  export interface ProjectIr {
12
12
  readonly intermediateNodesIndexedByUid: Record<string, unknown>;
@@ -72,5 +72,20 @@ export interface DevStack {
72
72
  readonly getAccountConfig: (accountId: number) => unknown;
73
73
  }
74
74
  export declare function loadDevStack(): Promise<DevStack>;
75
+ export interface HubSpotDevAppShape {
76
+ readonly platformVersion: string;
77
+ readonly distribution?: string | undefined;
78
+ readonly authType?: string | undefined;
79
+ }
80
+ /**
81
+ * Mirror of `DevServerState.isPublicApp()` in the pinned
82
+ * `@hubspot/ui-extensions-dev-server`: HubSpot mounts its local
83
+ * AppFunctionExecutionService only for private, static-auth apps on 2026.03+.
84
+ * For every other app `hubspot.serverless` has no local executor, so anything
85
+ * hs-x rides on that channel (the frontend log relay, reload-state) must stay
86
+ * off or the browser SDK raises its "hubspot.serverless is not available"
87
+ * overlay inside the card.
88
+ */
89
+ export declare function hubSpotDevServesAppFunctionsLocally(app: HubSpotDevAppShape): boolean;
75
90
  export {};
76
91
  //# sourceMappingURL=compat-shim.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compat-shim.d.ts","sourceRoot":"","sources":["../../src/dev/compat-shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compat-shim.d.ts","sourceRoot":"","sources":["../../src/dev/compat-shim.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@
3
3
  * a version bump (or a breaking change in shape) only requires editing this
4
4
  * one file.
5
5
  *
6
- * Pins (kept in @hs-x/hubspot-cli package.json):
7
- * @hubspot/local-dev-lib 5.10.3
8
- * @hubspot/project-parsing-lib 0.22.1
9
- * @hubspot/ui-extensions-dev-server 2.1.2
6
+ * Pins are kept in @hs-x/cli and @hs-x/hubspot-cli package.json:
7
+ * @hubspot/local-dev-lib
8
+ * @hubspot/project-parsing-lib
9
+ * @hubspot/ui-extensions-dev-server
10
10
  */
11
11
  function isRecord(value) {
12
12
  return typeof value === 'object' && value !== null;
@@ -97,4 +97,31 @@ export async function loadDevStack() {
97
97
  },
98
98
  };
99
99
  }
100
+ /**
101
+ * Platform versions where the pinned dev server can execute app functions in
102
+ * the CLI process (`DevServerState.isPublicApp()` → `isUnifiedServerlessVersion`).
103
+ */
104
+ const HUBSPOT_LOCAL_APP_FUNCTION_PLATFORM_VERSIONS = new Set([
105
+ '2026.03',
106
+ '2026.03-beta',
107
+ '2026.09',
108
+ '2026.09-beta',
109
+ '2027.03',
110
+ '2027.03-beta',
111
+ 'unstable',
112
+ ]);
113
+ /**
114
+ * Mirror of `DevServerState.isPublicApp()` in the pinned
115
+ * `@hubspot/ui-extensions-dev-server`: HubSpot mounts its local
116
+ * AppFunctionExecutionService only for private, static-auth apps on 2026.03+.
117
+ * For every other app `hubspot.serverless` has no local executor, so anything
118
+ * hs-x rides on that channel (the frontend log relay, reload-state) must stay
119
+ * off or the browser SDK raises its "hubspot.serverless is not available"
120
+ * overlay inside the card.
121
+ */
122
+ export function hubSpotDevServesAppFunctionsLocally(app) {
123
+ return (HUBSPOT_LOCAL_APP_FUNCTION_PLATFORM_VERSIONS.has(app.platformVersion) &&
124
+ app.distribution?.toLowerCase() === 'private' &&
125
+ app.authType?.toLowerCase() === 'static');
126
+ }
100
127
  //# sourceMappingURL=compat-shim.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compat-shim.js","sourceRoot":"","sources":["../../src/dev/compat-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,SAAS,GACb,QAAQ,CAAC,KAAK,CAAC,IAAI,4BAA4B,IAAI,KAAK;QACtD,CAAC,CAAC,KAAK,CAAC,0BAA0B;QAClC,CAAC,CAAC,KAAK,CAAC;IACZ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO;QACL,6BAA6B,EAAE,SAAS,CAAC,6BAA6B;QACtE,WAAW,EAAE,SAAS,CAAC,WAAW;KACnC,CAAC;AACJ,CAAC;AAqCD;;;;;;;GAOG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAAkC;IAElC,MAAM,mBAAoB,SAAQ,IAAI;QAC3B,KAAK,CAAC,WAAW,CAAC,IAAwB;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACxE,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,qFAAqF,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAClI,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;KACF;IACD,OAAO,IAAI,mBAAmB,EAA8C,CAAC;AAC/E,CAAC;AAkBD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAErC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,wCAAwC,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;IAE9D,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAC1D,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO;QACL,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC7C,kBAAkB,CAAC,MAAM,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChE,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;QAC1D,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;QACxD,gBAAgB,EAAE,GAA0B,EAAE,CAAC,WAAW,CAAC,gBAAgB,EAAE;QAC7E,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC3D,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;QACnE,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,GAAG,EAAE,gCAAgC,CACnC,GAAG,CAAC,mCAA8E,CACnF;QACD,gBAAgB,EAAE,CAAC,SAAiB,EAAE,EAAE;YACtC,IAAI,CAAC;gBACH,OAAO,MAAM,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;gBAC3D,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"compat-shim.js","sourceRoot":"","sources":["../../src/dev/compat-shim.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,23 @@ export interface HubSpotDevComponentCandidate {
3
3
  readonly uid: string;
4
4
  readonly label: string;
5
5
  readonly description: string;
6
+ readonly cells?: readonly string[];
6
7
  readonly entrypoint?: string;
7
8
  /** Owning APPLICATION node (from the IR's `componentDeps.app`). */
8
9
  readonly appUid?: string;
9
10
  }
10
11
  export declare function listHubSpotDevComponentCandidates(nodesByUid: Readonly<Record<string, unknown>>): readonly HubSpotDevComponentCandidate[];
12
+ export interface HubSpotDevApplication {
13
+ readonly uid: string;
14
+ readonly name?: string;
15
+ /** `PRIVATE` or `MARKETPLACE`, as written in the app's hsmeta config. */
16
+ readonly distribution?: string;
17
+ /** `static` or `oauth`. */
18
+ readonly authType?: string;
19
+ }
20
+ /** The IR's APPLICATION node (HubSpot's dev server serves exactly one). */
21
+ export declare function findHubSpotDevApplication(nodesByUid: Readonly<Record<string, unknown>>): HubSpotDevApplication | undefined;
22
+ export declare function isHubSpotMarketplaceApp(app: HubSpotDevApplication | undefined): boolean;
11
23
  /**
12
24
  * HubSpot's UI dev server serves exactly one app per session (it takes the
13
25
  * first APPLICATION node it sees and attributes every extension to it), so a
@@ -1 +1 @@
1
- {"version":3,"file":"component-selection.d.ts","sourceRoot":"","sources":["../../src/dev/component-selection.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,aAA2D,CAAC;AAInG,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5C,SAAS,4BAA4B,EAAE,CAgCzC;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,SAAS,4BAA4B,EAAE,EACnD,YAAY,EAAE,SAAS,MAAM,EAAE,GAE7B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBnD;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,SAAS,4BAA4B,EAAE,EACnD,SAAS,EAAE,SAAS,MAAM,EAAE,GAE1B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBnD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC7C,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAClC;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CA2B9F"}
1
+ {"version":3,"file":"component-selection.d.ts","sourceRoot":"","sources":["../../src/dev/component-selection.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,aAA2D,CAAC;AAInG,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5C,SAAS,4BAA4B,EAAE,CAsCzC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,2EAA2E;AAC3E,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5C,qBAAqB,GAAG,SAAS,CAiBnC;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAEvF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,SAAS,4BAA4B,EAAE,EACnD,YAAY,EAAE,SAAS,MAAM,EAAE,GAE7B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBnD;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,SAAS,4BAA4B,EAAE,EACnD,SAAS,EAAE,SAAS,MAAM,EAAE,GAE1B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBnD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC7C,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAClC;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CA2B9F"}
@@ -27,12 +27,41 @@ export function listHubSpotDevComponentCandidates(nodesByUid) {
27
27
  uid,
28
28
  label,
29
29
  description: context.join(' · '),
30
+ cells: [
31
+ componentType.toLowerCase().replaceAll('_', '-'),
32
+ objectTypes.join(', ') || '—',
33
+ location ?? '—',
34
+ uid,
35
+ ],
30
36
  ...(entrypoint ? { entrypoint } : {}),
31
37
  ...(appUid ? { appUid } : {}),
32
38
  });
33
39
  }
34
40
  return candidates.toSorted((left, right) => left.label.localeCompare(right.label));
35
41
  }
42
+ /** The IR's APPLICATION node (HubSpot's dev server serves exactly one). */
43
+ export function findHubSpotDevApplication(nodesByUid) {
44
+ for (const [uid, value] of Object.entries(nodesByUid)) {
45
+ const node = asRecord(value);
46
+ if (asString(node?.componentType) !== 'APPLICATION')
47
+ continue;
48
+ const config = asRecord(node?.config);
49
+ const auth = asRecord(config?.auth);
50
+ const name = asString(config?.name);
51
+ const distribution = asString(config?.distribution);
52
+ const authType = asString(auth?.type);
53
+ return {
54
+ uid: asString(node?.uid) ?? uid,
55
+ ...(name ? { name } : {}),
56
+ ...(distribution ? { distribution } : {}),
57
+ ...(authType ? { authType } : {}),
58
+ };
59
+ }
60
+ return undefined;
61
+ }
62
+ export function isHubSpotMarketplaceApp(app) {
63
+ return app?.distribution?.toUpperCase() === 'MARKETPLACE';
64
+ }
36
65
  /**
37
66
  * HubSpot's UI dev server serves exactly one app per session (it takes the
38
67
  * first APPLICATION node it sees and attributes every extension to it), so a
@@ -1 +1 @@
1
- {"version":3,"file":"component-selection.js","sourceRoot":"","sources":["../../src/dev/component-selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-selection.js","sourceRoot":"","sources":["../../src/dev/component-selection.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,21 @@ export interface FrontendLogEntry {
7
7
  readonly source?: string;
8
8
  readonly fields?: Record<string, unknown>;
9
9
  }
10
+ /**
11
+ * How the card reaches this relay:
12
+ * - `serverless`: a temporary app function executed by HubSpot's dev server
13
+ * in this process (private static-auth apps on 2026.03+ only).
14
+ * - `fetch`: `hubspot.fetch` to the hs-x sidecar through HubSpot's local proxy
15
+ * mode (any app shape; the sidecar calls `handle` for each post).
16
+ */
17
+ export type FrontendLogRelayTransport = 'serverless' | 'fetch';
10
18
  export interface FrontendLogRelay {
19
+ readonly transport: FrontendLogRelayTransport;
11
20
  readonly functionUid: string;
12
21
  readonly nodesByUid: Record<string, unknown>;
13
22
  readonly modulePath: string;
23
+ /** Process one relay payload (log batch or state op); what the sidecar calls. */
24
+ handle(payload: unknown): unknown;
14
25
  cleanup(): Promise<void>;
15
26
  }
16
27
  /**
@@ -25,5 +36,6 @@ export declare function createFrontendLogRelay(input: {
25
36
  readonly onEntry?: (entry: FrontendLogEntry) => void;
26
37
  /** Keep JSON-safe React state in this dev process for reload rehydration. */
27
38
  readonly preserveState?: boolean;
39
+ readonly transport?: FrontendLogRelayTransport;
28
40
  }): Promise<FrontendLogRelay>;
29
41
  //# sourceMappingURL=frontend-log-relay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-log-relay.d.ts","sourceRoot":"","sources":["../../src/dev/frontend-log-relay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,sBAAsB,oCAAoC,CAAC;AASxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8E5B"}
1
+ {"version":3,"file":"frontend-log-relay.d.ts","sourceRoot":"","sources":["../../src/dev/frontend-log-relay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,sBAAsB,oCAAoC,CAAC;AASxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAClC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CAChD,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwF5B"}
@@ -16,18 +16,21 @@ const MAX_STATE_VALUE_LENGTH = 65_536;
16
16
  * the sanitized entries to HS-X. Nothing is written into the app source tree.
17
17
  */
18
18
  export async function createFrontendLogRelay(input) {
19
- if (FRONTEND_LOG_RELAY_UID in input.nodesByUid) {
19
+ const transport = input.transport ?? 'serverless';
20
+ if (transport === 'serverless' && FRONTEND_LOG_RELAY_UID in input.nodesByUid) {
20
21
  throw new Error(`Reserved HS-X dev function UID is already in use: ${FRONTEND_LOG_RELAY_UID}`);
21
22
  }
22
- const temporaryDir = await mkdtemp(join(tmpdir(), 'hsx-dev-frontend-log-'));
23
- const modulePath = join(temporaryDir, 'relay.cjs');
24
- const metaPath = join(temporaryDir, 'relay-hsmeta.json');
25
- await writeFile(modulePath, `'use strict';\nexports.main = async function main(context) {\n const relay = globalThis[Symbol.for(${JSON.stringify(RELAY_HOOK_KEY)})];\n if (typeof relay !== 'function') return { ok: false };\n const result = await relay(context && context.parameters);\n return result && typeof result === 'object' ? result : { ok: true };\n};\n`, 'utf8');
23
+ const temporaryDir = transport === 'serverless' ? await mkdtemp(join(tmpdir(), 'hsx-dev-frontend-log-')) : undefined;
24
+ const modulePath = temporaryDir ? join(temporaryDir, 'relay.cjs') : '';
25
+ const metaPath = temporaryDir ? join(temporaryDir, 'relay-hsmeta.json') : '';
26
+ if (temporaryDir) {
27
+ await writeFile(modulePath, `'use strict';\nexports.main = async function main(context) {\n const relay = globalThis[Symbol.for(${JSON.stringify(RELAY_HOOK_KEY)})];\n if (typeof relay !== 'function') return { ok: false };\n const result = await relay(context && context.parameters);\n return result && typeof result === 'object' ? result : { ok: true };\n};\n`, 'utf8');
28
+ }
26
29
  const relaySymbol = Symbol.for(RELAY_HOOK_KEY);
27
30
  const relayGlobal = globalThis;
28
31
  const previousHook = relayGlobal[relaySymbol];
29
32
  const stateBySource = new Map();
30
- relayGlobal[relaySymbol] = (payload) => {
33
+ const handle = (payload) => {
31
34
  const record = asRecord(payload);
32
35
  if (input.preserveState && record?.op === 'state:get') {
33
36
  const source = normalizeStateIdentifier(record.source, 256);
@@ -58,31 +61,39 @@ export async function createFrontendLogRelay(input) {
58
61
  }
59
62
  return { ok: true };
60
63
  };
64
+ if (temporaryDir)
65
+ relayGlobal[relaySymbol] = handle;
61
66
  const appUid = findApplicationUid(input.nodesByUid);
62
- const nodesByUid = {
63
- ...input.nodesByUid,
64
- [FRONTEND_LOG_RELAY_UID]: {
65
- uid: FRONTEND_LOG_RELAY_UID,
66
- componentType: 'APP_FUNCTION',
67
- componentDeps: appUid ? { app: appUid } : {},
68
- metaFilePath: 'relay-hsmeta.json',
69
- config: { entrypoint: 'relay.cjs', secretKeys: [] },
70
- files: {},
71
- localDev: {
72
- componentRoot: temporaryDir,
73
- componentConfigPath: metaPath,
67
+ const nodesByUid = temporaryDir
68
+ ? {
69
+ ...input.nodesByUid,
70
+ [FRONTEND_LOG_RELAY_UID]: {
71
+ uid: FRONTEND_LOG_RELAY_UID,
72
+ componentType: 'APP_FUNCTION',
73
+ componentDeps: appUid ? { app: appUid } : {},
74
+ metaFilePath: 'relay-hsmeta.json',
75
+ config: { entrypoint: 'relay.cjs', secretKeys: [] },
76
+ files: {},
77
+ localDev: {
78
+ componentRoot: temporaryDir,
79
+ componentConfigPath: metaPath,
80
+ },
74
81
  },
75
- },
76
- };
82
+ }
83
+ : { ...input.nodesByUid };
77
84
  let cleanedUp = false;
78
85
  return {
86
+ transport,
79
87
  functionUid: FRONTEND_LOG_RELAY_UID,
80
88
  nodesByUid,
81
89
  modulePath,
90
+ handle,
82
91
  async cleanup() {
83
92
  if (cleanedUp)
84
93
  return;
85
94
  cleanedUp = true;
95
+ if (!temporaryDir)
96
+ return;
86
97
  if (previousHook === undefined)
87
98
  delete relayGlobal[relaySymbol];
88
99
  else