Sort le serveur dans une crate pmoserver
This commit is contained in:
282
pmoapp/webapp/node_modules/alien-signals/esm/index.mjs
generated
vendored
Normal file
282
pmoapp/webapp/node_modules/alien-signals/esm/index.mjs
generated
vendored
Normal file
@@ -0,0 +1,282 @@
|
||||
import { createReactiveSystem } from './system.mjs';
|
||||
let cycle = 0;
|
||||
const queuedEffects = [];
|
||||
const { link, unlink, propagate, checkDirty, shallowPropagate, } = createReactiveSystem({
|
||||
update(signal) {
|
||||
if ('getter' in signal) {
|
||||
return updateComputed(signal);
|
||||
}
|
||||
else {
|
||||
return updateSignal(signal, signal.value);
|
||||
}
|
||||
},
|
||||
notify,
|
||||
unwatched(node) {
|
||||
if ('getter' in node) {
|
||||
let toRemove = node.deps;
|
||||
if (toRemove !== undefined) {
|
||||
node.flags = 17;
|
||||
do {
|
||||
toRemove = unlink(toRemove, node);
|
||||
} while (toRemove !== undefined);
|
||||
}
|
||||
}
|
||||
else if ('fn' in node) {
|
||||
effectOper.call(node);
|
||||
}
|
||||
else if (!('previousValue' in node)) {
|
||||
effectScopeOper.call(node);
|
||||
}
|
||||
},
|
||||
});
|
||||
let batchDepth = 0;
|
||||
let notifyIndex = 0;
|
||||
let queuedEffectsLength = 0;
|
||||
let activeSub;
|
||||
export function getActiveSub() {
|
||||
return activeSub;
|
||||
}
|
||||
export function setActiveSub(sub) {
|
||||
const prevSub = activeSub;
|
||||
activeSub = sub;
|
||||
return prevSub;
|
||||
}
|
||||
export function getBatchDepth() {
|
||||
return batchDepth;
|
||||
}
|
||||
export function startBatch() {
|
||||
++batchDepth;
|
||||
}
|
||||
export function endBatch() {
|
||||
if (!--batchDepth) {
|
||||
flush();
|
||||
}
|
||||
}
|
||||
export function isSignal(fn) {
|
||||
return fn.name === 'bound signalOper';
|
||||
}
|
||||
export function isComputed(fn) {
|
||||
return fn.name === 'bound computedOper';
|
||||
}
|
||||
export function isEffect(fn) {
|
||||
return fn.name === 'bound effectOper';
|
||||
}
|
||||
export function isEffectScope(fn) {
|
||||
return fn.name === 'bound effectScopeOper';
|
||||
}
|
||||
export function signal(initialValue) {
|
||||
return signalOper.bind({
|
||||
previousValue: initialValue,
|
||||
value: initialValue,
|
||||
subs: undefined,
|
||||
subsTail: undefined,
|
||||
flags: 1,
|
||||
});
|
||||
}
|
||||
export function computed(getter) {
|
||||
return computedOper.bind({
|
||||
value: undefined,
|
||||
subs: undefined,
|
||||
subsTail: undefined,
|
||||
deps: undefined,
|
||||
depsTail: undefined,
|
||||
flags: 0,
|
||||
getter: getter,
|
||||
});
|
||||
}
|
||||
export function effect(fn) {
|
||||
const e = {
|
||||
fn,
|
||||
subs: undefined,
|
||||
subsTail: undefined,
|
||||
deps: undefined,
|
||||
depsTail: undefined,
|
||||
flags: 2,
|
||||
};
|
||||
const prevSub = setActiveSub(e);
|
||||
if (prevSub !== undefined) {
|
||||
link(e, prevSub, 0);
|
||||
}
|
||||
try {
|
||||
e.fn();
|
||||
}
|
||||
finally {
|
||||
activeSub = prevSub;
|
||||
}
|
||||
return effectOper.bind(e);
|
||||
}
|
||||
export function effectScope(fn) {
|
||||
const e = {
|
||||
deps: undefined,
|
||||
depsTail: undefined,
|
||||
subs: undefined,
|
||||
subsTail: undefined,
|
||||
flags: 0,
|
||||
};
|
||||
const prevSub = setActiveSub(e);
|
||||
if (prevSub !== undefined) {
|
||||
link(e, prevSub, 0);
|
||||
}
|
||||
try {
|
||||
fn();
|
||||
}
|
||||
finally {
|
||||
activeSub = prevSub;
|
||||
}
|
||||
return effectScopeOper.bind(e);
|
||||
}
|
||||
function updateComputed(c) {
|
||||
++cycle;
|
||||
c.depsTail = undefined;
|
||||
c.flags = 5;
|
||||
const prevSub = setActiveSub(c);
|
||||
try {
|
||||
const oldValue = c.value;
|
||||
return oldValue !== (c.value = c.getter(oldValue));
|
||||
}
|
||||
finally {
|
||||
activeSub = prevSub;
|
||||
c.flags &= ~4;
|
||||
purgeDeps(c);
|
||||
}
|
||||
}
|
||||
function updateSignal(s, value) {
|
||||
s.flags = 1;
|
||||
return s.previousValue !== (s.previousValue = value);
|
||||
}
|
||||
function notify(e) {
|
||||
const flags = e.flags;
|
||||
if (!(flags & 64)) {
|
||||
e.flags = flags | 64;
|
||||
const subs = e.subs;
|
||||
if (subs !== undefined) {
|
||||
notify(subs.sub);
|
||||
}
|
||||
else {
|
||||
queuedEffects[queuedEffectsLength++] = e;
|
||||
}
|
||||
}
|
||||
}
|
||||
function run(e, flags) {
|
||||
if (flags & 16
|
||||
|| (flags & 32
|
||||
&& (checkDirty(e.deps, e)
|
||||
|| (e.flags = flags & ~32, false)))) {
|
||||
++cycle;
|
||||
e.depsTail = undefined;
|
||||
e.flags = 6;
|
||||
const prevSub = setActiveSub(e);
|
||||
try {
|
||||
e.fn();
|
||||
}
|
||||
finally {
|
||||
activeSub = prevSub;
|
||||
e.flags &= ~4;
|
||||
purgeDeps(e);
|
||||
}
|
||||
}
|
||||
else {
|
||||
let link = e.deps;
|
||||
while (link !== undefined) {
|
||||
const dep = link.dep;
|
||||
const depFlags = dep.flags;
|
||||
if (depFlags & 64) {
|
||||
run(dep, dep.flags = depFlags & ~(64));
|
||||
}
|
||||
link = link.nextDep;
|
||||
}
|
||||
}
|
||||
}
|
||||
function flush() {
|
||||
while (notifyIndex < queuedEffectsLength) {
|
||||
const effect = queuedEffects[notifyIndex];
|
||||
queuedEffects[notifyIndex++] = undefined;
|
||||
run(effect, effect.flags &= ~(64));
|
||||
}
|
||||
notifyIndex = 0;
|
||||
queuedEffectsLength = 0;
|
||||
}
|
||||
function computedOper() {
|
||||
const flags = this.flags;
|
||||
if (flags & 16
|
||||
|| (flags & 32
|
||||
&& (checkDirty(this.deps, this)
|
||||
|| (this.flags = flags & ~32, false)))) {
|
||||
if (updateComputed(this)) {
|
||||
const subs = this.subs;
|
||||
if (subs !== undefined) {
|
||||
shallowPropagate(subs);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!flags) {
|
||||
this.flags = 1;
|
||||
const prevSub = setActiveSub(this);
|
||||
try {
|
||||
this.value = this.getter();
|
||||
}
|
||||
finally {
|
||||
activeSub = prevSub;
|
||||
}
|
||||
}
|
||||
const sub = activeSub;
|
||||
if (sub !== undefined) {
|
||||
link(this, sub, cycle);
|
||||
}
|
||||
return this.value;
|
||||
}
|
||||
function signalOper(...value) {
|
||||
if (value.length) {
|
||||
if (this.value !== (this.value = value[0])) {
|
||||
this.flags = 17;
|
||||
const subs = this.subs;
|
||||
if (subs !== undefined) {
|
||||
propagate(subs);
|
||||
if (!batchDepth) {
|
||||
flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
const value = this.value;
|
||||
if (this.flags & 16) {
|
||||
if (updateSignal(this, value)) {
|
||||
const subs = this.subs;
|
||||
if (subs !== undefined) {
|
||||
shallowPropagate(subs);
|
||||
}
|
||||
}
|
||||
}
|
||||
let sub = activeSub;
|
||||
while (sub !== undefined) {
|
||||
if (sub.flags & 3) {
|
||||
link(this, sub, cycle);
|
||||
break;
|
||||
}
|
||||
sub = sub.subs?.sub;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
function effectOper() {
|
||||
effectScopeOper.call(this);
|
||||
this.flags = 0;
|
||||
}
|
||||
function effectScopeOper() {
|
||||
let dep = this.deps;
|
||||
while (dep !== undefined) {
|
||||
dep = unlink(dep, this);
|
||||
}
|
||||
const sub = this.subs;
|
||||
if (sub !== undefined) {
|
||||
unlink(sub);
|
||||
}
|
||||
}
|
||||
function purgeDeps(sub) {
|
||||
const depsTail = sub.depsTail;
|
||||
let toRemove = depsTail !== undefined ? depsTail.nextDep : sub.deps;
|
||||
while (toRemove !== undefined) {
|
||||
toRemove = unlink(toRemove, sub);
|
||||
}
|
||||
}
|
||||
234
pmoapp/webapp/node_modules/alien-signals/esm/system.mjs
generated
vendored
Normal file
234
pmoapp/webapp/node_modules/alien-signals/esm/system.mjs
generated
vendored
Normal file
@@ -0,0 +1,234 @@
|
||||
export var ReactiveFlags;
|
||||
(function (ReactiveFlags) {
|
||||
ReactiveFlags[ReactiveFlags["None"] = 0] = "None";
|
||||
ReactiveFlags[ReactiveFlags["Mutable"] = 1] = "Mutable";
|
||||
ReactiveFlags[ReactiveFlags["Watching"] = 2] = "Watching";
|
||||
ReactiveFlags[ReactiveFlags["RecursedCheck"] = 4] = "RecursedCheck";
|
||||
ReactiveFlags[ReactiveFlags["Recursed"] = 8] = "Recursed";
|
||||
ReactiveFlags[ReactiveFlags["Dirty"] = 16] = "Dirty";
|
||||
ReactiveFlags[ReactiveFlags["Pending"] = 32] = "Pending";
|
||||
})(ReactiveFlags || (ReactiveFlags = {}));
|
||||
export function createReactiveSystem({ update, notify, unwatched, }) {
|
||||
return {
|
||||
link,
|
||||
unlink,
|
||||
propagate,
|
||||
checkDirty,
|
||||
shallowPropagate,
|
||||
};
|
||||
function link(dep, sub, version) {
|
||||
const prevDep = sub.depsTail;
|
||||
if (prevDep !== undefined && prevDep.dep === dep) {
|
||||
return;
|
||||
}
|
||||
const nextDep = prevDep !== undefined ? prevDep.nextDep : sub.deps;
|
||||
if (nextDep !== undefined && nextDep.dep === dep) {
|
||||
nextDep.version = version;
|
||||
sub.depsTail = nextDep;
|
||||
return;
|
||||
}
|
||||
const prevSub = dep.subsTail;
|
||||
if (prevSub !== undefined && prevSub.version === version && prevSub.sub === sub) {
|
||||
return;
|
||||
}
|
||||
const newLink = sub.depsTail
|
||||
= dep.subsTail
|
||||
= {
|
||||
version,
|
||||
dep,
|
||||
sub,
|
||||
prevDep,
|
||||
nextDep,
|
||||
prevSub,
|
||||
nextSub: undefined,
|
||||
};
|
||||
if (nextDep !== undefined) {
|
||||
nextDep.prevDep = newLink;
|
||||
}
|
||||
if (prevDep !== undefined) {
|
||||
prevDep.nextDep = newLink;
|
||||
}
|
||||
else {
|
||||
sub.deps = newLink;
|
||||
}
|
||||
if (prevSub !== undefined) {
|
||||
prevSub.nextSub = newLink;
|
||||
}
|
||||
else {
|
||||
dep.subs = newLink;
|
||||
}
|
||||
}
|
||||
function unlink(link, sub = link.sub) {
|
||||
const dep = link.dep;
|
||||
const prevDep = link.prevDep;
|
||||
const nextDep = link.nextDep;
|
||||
const nextSub = link.nextSub;
|
||||
const prevSub = link.prevSub;
|
||||
if (nextDep !== undefined) {
|
||||
nextDep.prevDep = prevDep;
|
||||
}
|
||||
else {
|
||||
sub.depsTail = prevDep;
|
||||
}
|
||||
if (prevDep !== undefined) {
|
||||
prevDep.nextDep = nextDep;
|
||||
}
|
||||
else {
|
||||
sub.deps = nextDep;
|
||||
}
|
||||
if (nextSub !== undefined) {
|
||||
nextSub.prevSub = prevSub;
|
||||
}
|
||||
else {
|
||||
dep.subsTail = prevSub;
|
||||
}
|
||||
if (prevSub !== undefined) {
|
||||
prevSub.nextSub = nextSub;
|
||||
}
|
||||
else if ((dep.subs = nextSub) === undefined) {
|
||||
unwatched(dep);
|
||||
}
|
||||
return nextDep;
|
||||
}
|
||||
function propagate(link) {
|
||||
let next = link.nextSub;
|
||||
let stack;
|
||||
top: do {
|
||||
const sub = link.sub;
|
||||
let flags = sub.flags;
|
||||
if (!(flags & 60)) {
|
||||
sub.flags = flags | 32;
|
||||
}
|
||||
else if (!(flags & 12)) {
|
||||
flags = 0;
|
||||
}
|
||||
else if (!(flags & 4)) {
|
||||
sub.flags = (flags & ~8) | 32;
|
||||
}
|
||||
else if (!(flags & 48) && isValidLink(link, sub)) {
|
||||
sub.flags = flags | 40;
|
||||
flags &= 1;
|
||||
}
|
||||
else {
|
||||
flags = 0;
|
||||
}
|
||||
if (flags & 2) {
|
||||
notify(sub);
|
||||
}
|
||||
if (flags & 1) {
|
||||
const subSubs = sub.subs;
|
||||
if (subSubs !== undefined) {
|
||||
const nextSub = (link = subSubs).nextSub;
|
||||
if (nextSub !== undefined) {
|
||||
stack = { value: next, prev: stack };
|
||||
next = nextSub;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ((link = next) !== undefined) {
|
||||
next = link.nextSub;
|
||||
continue;
|
||||
}
|
||||
while (stack !== undefined) {
|
||||
link = stack.value;
|
||||
stack = stack.prev;
|
||||
if (link !== undefined) {
|
||||
next = link.nextSub;
|
||||
continue top;
|
||||
}
|
||||
}
|
||||
break;
|
||||
} while (true);
|
||||
}
|
||||
function checkDirty(link, sub) {
|
||||
let stack;
|
||||
let checkDepth = 0;
|
||||
let dirty = false;
|
||||
top: do {
|
||||
const dep = link.dep;
|
||||
const flags = dep.flags;
|
||||
if (sub.flags & 16) {
|
||||
dirty = true;
|
||||
}
|
||||
else if ((flags & 17) === 17) {
|
||||
if (update(dep)) {
|
||||
const subs = dep.subs;
|
||||
if (subs.nextSub !== undefined) {
|
||||
shallowPropagate(subs);
|
||||
}
|
||||
dirty = true;
|
||||
}
|
||||
}
|
||||
else if ((flags & 33) === 33) {
|
||||
if (link.nextSub !== undefined || link.prevSub !== undefined) {
|
||||
stack = { value: link, prev: stack };
|
||||
}
|
||||
link = dep.deps;
|
||||
sub = dep;
|
||||
++checkDepth;
|
||||
continue;
|
||||
}
|
||||
if (!dirty) {
|
||||
const nextDep = link.nextDep;
|
||||
if (nextDep !== undefined) {
|
||||
link = nextDep;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
while (checkDepth--) {
|
||||
const firstSub = sub.subs;
|
||||
const hasMultipleSubs = firstSub.nextSub !== undefined;
|
||||
if (hasMultipleSubs) {
|
||||
link = stack.value;
|
||||
stack = stack.prev;
|
||||
}
|
||||
else {
|
||||
link = firstSub;
|
||||
}
|
||||
if (dirty) {
|
||||
if (update(sub)) {
|
||||
if (hasMultipleSubs) {
|
||||
shallowPropagate(firstSub);
|
||||
}
|
||||
sub = link.sub;
|
||||
continue;
|
||||
}
|
||||
dirty = false;
|
||||
}
|
||||
else {
|
||||
sub.flags &= ~32;
|
||||
}
|
||||
sub = link.sub;
|
||||
const nextDep = link.nextDep;
|
||||
if (nextDep !== undefined) {
|
||||
link = nextDep;
|
||||
continue top;
|
||||
}
|
||||
}
|
||||
return dirty;
|
||||
} while (true);
|
||||
}
|
||||
function shallowPropagate(link) {
|
||||
do {
|
||||
const sub = link.sub;
|
||||
const flags = sub.flags;
|
||||
if ((flags & 48) === 32) {
|
||||
sub.flags = flags | 16;
|
||||
if (flags & 2) {
|
||||
notify(sub);
|
||||
}
|
||||
}
|
||||
} while ((link = link.nextSub) !== undefined);
|
||||
}
|
||||
function isValidLink(checkLink, sub) {
|
||||
let link = sub.depsTail;
|
||||
while (link !== undefined) {
|
||||
if (link === checkLink) {
|
||||
return true;
|
||||
}
|
||||
link = link.prevDep;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user