Files
FrenoCorp/node_modules/solid-refresh/dist/solid-refresh.js
Michael Freno 7c684a42cc FRE-600: Fix code review blockers
- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-25 00:08:01 -04:00

153 lines
5.0 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var solidJs = require('solid-js');
function createProxy(source) {
return new Proxy(function hmrCompWrapper(props, ...rest) {
const s = source();
if (!s || solidJs.$DEVCOMP in s) {
return solidJs.createMemo(() => {
const c = source();
if (c) {
return solidJs.untrack(() => c(props));
}
return undefined;
});
}
// no $DEVCOMP means it did not go through devComponent so source() is a regular function, not a component
return s.call(this, props, ...rest);
}, {
get(_, property) {
return source()[property];
},
set(_, property, value) {
source()[property] = value;
return true;
}
});
}
function isListUpdated(a, b) {
if (a == null && b != null) {
return true;
}
if (a != null && b == null) {
return true;
}
if (a && b) {
if (a.length !== b.length) {
return true;
}
for (let i = 0, len = a.length; i < len; i++) {
if (!Object.is(a[i], b[i])) {
return true;
}
}
}
return false;
}
function hot$1({ component: Comp, id, signature, dependencies }, hot) {
if (hot) {
const [comp, setComp] = solidJs.createSignal(Comp, { internal: true });
const prev = hot.data;
// Check if there's previous data
if (prev && prev[id]) {
// Check if there's a new signature and dependency
// This is always new in standard HMR
if (signature && dependencies) {
// Check if signature changed
// or dependencies changed
if (prev[id].signature !== signature ||
isListUpdated(prev[id].dependencies, dependencies)) {
// Remount
prev[id].dependencies = dependencies;
prev[id].signature = signature;
prev[id].setComp(() => Comp);
}
}
else {
prev[id].setComp(() => Comp);
}
}
hot.dispose(data => {
data[id] = prev
? prev[id]
: {
setComp,
signature,
dependencies
};
});
hot.accept();
return createProxy(comp);
}
return Comp;
}
const HOT_DATA_PREFIX = "solid-refresh-ctx";
function hot({ component: Comp, id, signature, dependencies }, hot) {
let Component = Comp;
function handler(newModule) {
const registration = newModule.$$registrations[id];
if (!registration) {
// For some reason, the registration was lost, invalidate
return true;
}
registration.component.setComp = Comp.setComp;
registration.component.signature = Comp.signature;
registration.component.dependencies = Comp.dependencies;
// Check if incoming module has signature
if (registration.signature && registration.dependencies) {
// Compare old signature and dependencies
if (registration.signature !== Comp.signature ||
isListUpdated(registration.dependencies, Comp.dependencies)) {
// Remount
Comp.dependencies = registration.dependencies;
Comp.signature = registration.signature;
Comp.setComp(() => registration.component);
}
}
else {
// No granular update, remount
Comp.setComp(() => registration.component);
}
registration.component.signature = Comp.signature;
registration.component.dependencies = Comp.dependencies;
return false;
}
if (hot && hot.data) {
const refreshData = (hot.data[HOT_DATA_PREFIX] = hot.data[HOT_DATA_PREFIX] || {});
if (refreshData[id]) {
Comp.setComp = refreshData[id].Comp.setComp;
return { Component: refreshData[id].Component, handler };
}
const [comp, setComp] = solidJs.createSignal(Comp, { internal: true });
Comp.setComp = setComp;
Comp.dependencies = dependencies;
Comp.signature = signature;
Component = createProxy(comp);
refreshData[id] = { Component, Comp };
}
return { Component, handler };
}
let warned = false;
function shouldWarnAndDecline() {
const result = solidJs.DEV && Object.keys(solidJs.DEV).length;
if (result) {
return false;
}
if (!warned) {
console.warn("To use solid-refresh, you need to use the dev build of SolidJS. Make sure your build system supports package.json conditional exports and has the 'development' condition turned on.");
warned = true;
}
return true;
}
exports.esm = hot;
exports.shouldWarnAndDecline = shouldWarnAndDecline;
exports.standard = hot$1;