Compare commits
3 Commits
Author | SHA1 | Date |
---|---|---|
Tony Garnock-Jones | 7b9f0a6b16 | |
Tony Garnock-Jones | 6d82440704 | |
Tony Garnock-Jones | a9e3c2c4b7 |
|
@ -16,13 +16,13 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"license": "GPL-3.0+",
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@syndicate-lang/core": "*",
|
||||
"@syndicate-lang/html": "*",
|
||||
"@syndicate-lang/ws-relay": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@preserves/schema-cli": ">=0.995.201",
|
||||
"@preserves/schema-cli": "0.995.201",
|
||||
"@syndicate-lang/ts-plugin": "*",
|
||||
"@syndicate-lang/tsc": "*",
|
||||
"rollup": "^2.60",
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"license": "GPL-3.0+",
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/schema": "^0.995.201",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@preserves/schema": "0.995.201",
|
||||
"@syndicate-lang/core": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"license": "GPL-3.0+",
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/schema": "^0.995.201",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@preserves/schema": "0.995.201",
|
||||
"@syndicate-lang/core": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"license": "GPL-3.0+",
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@syndicate-lang/core": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"license": "GPL-3.0+",
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/schema": "^0.995.201",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@preserves/schema": "0.995.201",
|
||||
"@syndicate-lang/core": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"license": "GPL-3.0+",
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/schema": "^0.995.201",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@preserves/schema": "0.995.201",
|
||||
"@syndicate-lang/core": "*",
|
||||
"@syndicate-lang/html": "*",
|
||||
"@syndicate-lang/timer": "*"
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"license": "GPL-3.0+",
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/schema": "^0.995.201",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@preserves/schema": "0.995.201",
|
||||
"@syndicate-lang/core": "*",
|
||||
"@syndicate-lang/html": "*"
|
||||
},
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"packages/*/examples/*/"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@preserves/core": "^0.995.201",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@rollup/plugin-node-resolve": "^13.0",
|
||||
"@types/jest": "^27.0",
|
||||
"@types/node": "^14",
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
M=../../node_modules
|
||||
|
||||
cat \
|
||||
|
@ -43,5 +39,3 @@ cp \
|
|||
$M/@syndicate-lang/ws-relay/dist/syndicate-ws-relay.min.js.map \
|
||||
$M/@syndicate-lang/compiler/dist/syndicate-compiler.min.js.map \
|
||||
.
|
||||
|
||||
echo $(date) $(pwd) 'build complete.'
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/browser-stdenv",
|
||||
"version": "0.35.1",
|
||||
"version": "0.33.0",
|
||||
"description": "Aggregated Syndicate and Preserves scripts for in-browser use",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/browser-stdenv",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -15,16 +15,15 @@
|
|||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"scripts": {
|
||||
"prepare": "./build-aggregate.sh",
|
||||
"prepare:watch": "cd ..; exec inotifytest browser-stdenv/build-aggregate.sh",
|
||||
"clean": "rm -rf index.js index.min.js *.js.map",
|
||||
"veryclean": "yarn run clean && rm -rf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/schema": "^0.995.201",
|
||||
"@syndicate-lang/compiler": "^0.22.0",
|
||||
"@syndicate-lang/core": "^0.34.1",
|
||||
"@syndicate-lang/html2": "^0.35.1",
|
||||
"@syndicate-lang/ws-relay": "^0.36.1"
|
||||
"@preserves/core": "0.995.200",
|
||||
"@preserves/schema": "0.995.201",
|
||||
"@syndicate-lang/compiler": "^0.21.1",
|
||||
"@syndicate-lang/core": "^0.32.0",
|
||||
"@syndicate-lang/html2": "^0.33.0",
|
||||
"@syndicate-lang/ws-relay": "^0.34.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/compiler",
|
||||
"version": "0.22.0",
|
||||
"version": "0.21.1",
|
||||
"description": "Syndicate/JS compiler library",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/compiler",
|
||||
"license": "GPL-3.0+",
|
||||
|
|
|
@ -296,19 +296,14 @@ ${joinItems(sa.captureBinders.map(binderTypeGuard(t)), '\n')}
|
|||
})`;
|
||||
|
||||
if (s.isDynamic) {
|
||||
if (s.test === void 0) {
|
||||
return wrap(t`__SYNDICATE__.Turn.active.assertDataflow(() => ({ target: currentSyndicateTarget, assertion: ${assertion} }));`);
|
||||
} else {
|
||||
return wrap(t`__SYNDICATE__.Turn.active.assertDataflow(() => (${walk(s.test)})
|
||||
? ({ target: currentSyndicateTarget, assertion: ${assertion} })
|
||||
: ({ target: void 0, assertion: void 0 }));`);
|
||||
}
|
||||
return wrap(t`__SYNDICATE__.Turn.active.assertDataflow(() => ({
|
||||
target: currentSyndicateTarget,
|
||||
assertion: ${assertion},
|
||||
}));`);
|
||||
} else {
|
||||
if (s.test === void 0) {
|
||||
return wrap(t`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${assertion});`);
|
||||
} else {
|
||||
return wrap(t`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, (${walk(s.test)}) ? ${assertion} : void 0);`);
|
||||
}
|
||||
return wrap(
|
||||
t`__SYNDICATE__.Turn.active.replace(currentSyndicateTarget, void 0, ${assertion});`
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -75,7 +75,6 @@ export interface PseudoEventEndpointStatement extends GenericEventEndpointStatem
|
|||
export interface AssertionEventEndpointStatement extends GenericEventEndpointStatement {
|
||||
triggerType: 'asserted' | 'retracted' | 'message';
|
||||
pattern: ValuePattern;
|
||||
test?: Expr,
|
||||
}
|
||||
|
||||
export type EventHandlerEndpointStatement =
|
||||
|
@ -326,11 +325,7 @@ export class SyndicateParser {
|
|||
atomString('message'))),
|
||||
option(map(kw('snapshot'), _ => o.isDynamic = false)),
|
||||
bind(o as AssertionEventEndpointStatement, 'pattern',
|
||||
this.valuePattern(1, atom('=>'),
|
||||
seq(atom('when'), group('(', discard)))),
|
||||
option(seq(atom('when'), group(
|
||||
'(', bind(o as AssertionEventEndpointStatement, 'test',
|
||||
this.expr())))),
|
||||
this.valuePattern(1, atom('=>'))),
|
||||
this.mandatoryIfNotTerminal(
|
||||
o, seq(atom('=>'), this.statement(o.body))))));
|
||||
});
|
||||
|
|
|
@ -6,7 +6,6 @@ const currentSyndicateTarget = Syndicate.Dataspace.global;
|
|||
|
||||
(() => {
|
||||
async function translateScripts() {
|
||||
if (SchemaReady) await SchemaReady;
|
||||
|
||||
const syndicateScripts =
|
||||
Array.from(document.getElementsByTagName('script'))
|
||||
|
|
|
@ -187,7 +187,7 @@ __SYNDICATE__.Turn.active.facet(() => {
|
|||
}
|
||||
}
|
||||
}),
|
||||
})
|
||||
}),
|
||||
}));
|
||||
});`));
|
||||
|
||||
|
@ -206,57 +206,8 @@ __SYNDICATE__.Turn.active.facet(() => {
|
|||
}
|
||||
}
|
||||
}),
|
||||
})
|
||||
}),
|
||||
}));
|
||||
});`));
|
||||
|
||||
});
|
||||
|
||||
describe('on', () => {
|
||||
it('message with guard', () => expectCodeEqual(`
|
||||
on message S.Focus(entity) when (isLast.value) => {
|
||||
text.node.focus();
|
||||
}`, `__SYNDICATE__.Turn.active.assertDataflow(() => (isLast.value) ?
|
||||
({
|
||||
target: currentSyndicateTarget,
|
||||
assertion: __SYNDICATE__.Observe({
|
||||
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.ctor(S.Focus, (__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(entity)))))),
|
||||
observer: __SYNDICATE__.Turn.ref({
|
||||
message: (__vs) => {
|
||||
if (Array.isArray(__vs)) {
|
||||
|
||||
|
||||
text.node.focus();
|
||||
|
||||
}
|
||||
}
|
||||
}),
|
||||
})
|
||||
}) :
|
||||
({
|
||||
target: void 0,
|
||||
assertion: void 0
|
||||
}));`));
|
||||
|
||||
it('asserted with guard', () => expectCodeEqual(`on asserted P when (someTest) => x;`, `
|
||||
__SYNDICATE__.Turn.active.assertDataflow(() => (someTest) ?
|
||||
({
|
||||
target: currentSyndicateTarget,
|
||||
assertion: __SYNDICATE__.Observe({
|
||||
pattern: __SYNDICATE__.QuasiValue.finish((__SYNDICATE__.QuasiValue.lit(__SYNDICATE__.fromJS(P)))),
|
||||
observer: __SYNDICATE__.Turn.ref({
|
||||
assert: (__vs, __handle) => {
|
||||
if (Array.isArray(__vs)) {
|
||||
|
||||
x;
|
||||
}
|
||||
}
|
||||
}),
|
||||
})
|
||||
}) :
|
||||
({
|
||||
target: void 0,
|
||||
assertion: void 0
|
||||
}));`));
|
||||
|
||||
});
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
version 1 .
|
||||
|
||||
Reflect = <reflect @thing #:any> .
|
||||
|
||||
Type = <type @thing #:any @type TypeName> .
|
||||
Facet = <facet @thing #:any @facet #:any> .
|
||||
Attribute = <attribute @thing #:any @attribute any> .
|
||||
|
||||
TypeName =
|
||||
/ =entity
|
||||
/ =facet
|
||||
/ =actor
|
||||
/ =space
|
||||
/ =external
|
||||
/ @other symbol .
|
||||
|
||||
# Entities - user controlled properties, but here are some suggestions
|
||||
EntityClass = <entity-class @value any> .
|
||||
|
||||
# Facet
|
||||
FacetActor = <actor @actor #:any> .
|
||||
FacetAlive = <alive @alive bool> .
|
||||
FacetChild = <child @child #:any> .
|
||||
FacetParent = =root / <parent @parent #:any> .
|
||||
FacetAssertion = <assertion @handle int @target #:any>.
|
||||
FacetInertPreventers = <inert-preventers @inertPreventers int> .
|
||||
|
||||
# Actor
|
||||
ActorName = <name @name any> .
|
||||
ActorRoot = <root @root #:any> .
|
||||
ActorStatus = =running / =done / <crashed @reason string> .
|
||||
|
||||
# Space
|
||||
SpaceTaskCount = <task-count @taskCount int> .
|
||||
SpaceActor = <actor @actor #:any> .
|
||||
SpaceStatus = =running / =paused / =terminated .
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/core",
|
||||
"version": "0.34.1",
|
||||
"version": "0.32.0",
|
||||
"description": "Syndicate/JS for browser and node.js",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/core",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -29,13 +29,13 @@
|
|||
"types": "lib/index.d.ts",
|
||||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"devDependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/schema-cli": "^0.995.201"
|
||||
"@preserves/core": "0.995.200",
|
||||
"@preserves/schema-cli": "0.995.201"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@preserves/core": ">=0.995.200"
|
||||
"@preserves/core": "0.995.200"
|
||||
},
|
||||
"dependencies": {
|
||||
"salty-crypto": "^0.3.1"
|
||||
"salty-crypto": "0.3.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ export * from './runtime/bag.js';
|
|||
export * as Dataflow from './runtime/dataflow.js';
|
||||
export { Field } from './runtime/dataflow.js';
|
||||
export * from './runtime/dataspace.js';
|
||||
export * from './runtime/mirror.js';
|
||||
export * as Pattern from './runtime/pattern.js';
|
||||
export * as QuasiValue from './runtime/quasivalue.js';
|
||||
export * from './runtime/randomid.js';
|
||||
|
|
|
@ -9,6 +9,9 @@ import { ActionDescription, StructuredTask, TaskAction } from './task.js';
|
|||
import { randomId } from './randomid.js';
|
||||
import * as Q from '../gen/queuedTasks.js';
|
||||
|
||||
import { Mirror, Reflectable, _asRef } from './mirror';
|
||||
import * as Refl from '../gen/mirror';
|
||||
|
||||
export type AnyValue = Value<Ref>;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -34,12 +37,17 @@ export interface Entity {
|
|||
retract(handle: Handle): void;
|
||||
message(body: Assertion): void;
|
||||
sync(peer: Ref): void;
|
||||
data?: unknown;
|
||||
|
||||
readonly data?: unknown;
|
||||
|
||||
// Caller (the mirror) will ensure that we are not reflected more than once
|
||||
// simultaneously, and will also check that it has jurisdiction over us
|
||||
setMirror?(mirror: Mirror | null): void;
|
||||
}
|
||||
|
||||
export type Cap = Ref;
|
||||
|
||||
export class Ref {
|
||||
export class Ref implements Reflectable {
|
||||
get [IsEmbedded](): true { return true; }
|
||||
|
||||
readonly relay: Facet;
|
||||
|
@ -52,6 +60,10 @@ export class Ref {
|
|||
this.attenuation = attenuation;
|
||||
}
|
||||
|
||||
asRef(): Ref {
|
||||
return this;
|
||||
}
|
||||
|
||||
toString() {
|
||||
let entityRepr = '' + this.target;
|
||||
if (entityRepr === '[object Object]') {
|
||||
|
@ -97,13 +109,19 @@ export const __setNextActorId = (v: number) => nextActorId = v;
|
|||
export type DataflowGraph = Graph<DataflowBlock, Cell>;
|
||||
export type DataflowBlock = () => void;
|
||||
|
||||
export class Actor {
|
||||
name: AnyValue = Symbol.for('A-' + randomId(16));
|
||||
export class Actor implements Reflectable {
|
||||
private _name: AnyValue = Symbol.for('A-' + randomId(16));
|
||||
readonly space: ActorSpace;
|
||||
readonly root: Facet;
|
||||
_dataflowGraph: DataflowGraph | null = null;
|
||||
exitReason: ExitReason = null;
|
||||
readonly exitHooks: Array<LocalAction> = [];
|
||||
_reflectableRef?: Ref;
|
||||
_reflection?: {
|
||||
mirror: Mirror;
|
||||
exitReasonHandle?: Handle;
|
||||
nameHandle?: Handle;
|
||||
};
|
||||
|
||||
static boot(
|
||||
bootProc: LocalAction,
|
||||
|
@ -131,6 +149,31 @@ export class Actor {
|
|||
Turn.for(new Facet(this, this.root), stopIfInertAfter(bootProc));
|
||||
}
|
||||
|
||||
asRef(): Ref {
|
||||
return _asRef(this, this.root);
|
||||
}
|
||||
|
||||
setMirror(mirror: Mirror | null): void {
|
||||
if (mirror === null) {
|
||||
delete this._reflection;
|
||||
} else {
|
||||
this._reflection = { mirror };
|
||||
mirror.setFocusType(Refl.TypeName.actor());
|
||||
mirror.constProp(Refl.ActorRoot(this.root.asRef()));
|
||||
this._reflectName();
|
||||
this._reflectExitReason();
|
||||
}
|
||||
}
|
||||
|
||||
get name(): AnyValue {
|
||||
return this._name;
|
||||
}
|
||||
|
||||
set name(n: AnyValue) {
|
||||
this._name = n;
|
||||
this._reflectName();
|
||||
}
|
||||
|
||||
get dataflowGraph(): DataflowGraph {
|
||||
if (this._dataflowGraph === null) {
|
||||
this._dataflowGraph =
|
||||
|
@ -152,6 +195,7 @@ export class Actor {
|
|||
_terminateWith(reason: Exclude<ExitReason, null>) {
|
||||
if (this.exitReason !== null) return;
|
||||
this.exitReason = reason;
|
||||
this._reflectExitReason();
|
||||
if (!reason.ok) {
|
||||
console.error(`${this} crashed:`, reason.err);
|
||||
}
|
||||
|
@ -160,6 +204,19 @@ export class Actor {
|
|||
this.space.deregister(this);
|
||||
}
|
||||
|
||||
_reflectExitReason() {
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection,
|
||||
'exitReasonHandle',
|
||||
(this.exitReason === null ? Refl.ActorStatus.running() :
|
||||
this.exitReason.ok ? Refl.ActorStatus.done() :
|
||||
Refl.ActorStatus.crashed('' + this.exitReason.err)));
|
||||
}
|
||||
|
||||
_reflectName() {
|
||||
this._reflection?.mirror.setProp(this._reflection, 'nameHandle', Refl.ActorName(this.name));
|
||||
}
|
||||
|
||||
repairDataflowGraph() {
|
||||
if (this._dataflowGraph === null) return;
|
||||
this._dataflowGraph.repairDamage(block => block());
|
||||
|
@ -170,7 +227,7 @@ export class Actor {
|
|||
}
|
||||
}
|
||||
|
||||
export class Facet {
|
||||
export class Facet implements Reflectable {
|
||||
readonly id = nextActorId++;
|
||||
readonly actor: Actor;
|
||||
readonly parent: Facet | null;
|
||||
|
@ -180,12 +237,59 @@ export class Facet {
|
|||
// ^ shutdownActions are not exitHooks - those run even on error. These are for clean shutdown
|
||||
isLive = true;
|
||||
inertCheckPreventers = 0;
|
||||
_reflectableRef?: Ref;
|
||||
_reflection?: {
|
||||
mirror: Mirror;
|
||||
aliveHandle?: Handle;
|
||||
childHandles: { [id: string]: Handle };
|
||||
inertPreventersHandle?: Handle;
|
||||
assertionHandles: { [id: string]: Handle };
|
||||
};
|
||||
|
||||
constructor(actor: Actor, parent: Facet | null, initialAssertions: OutboundMap = new Map()) {
|
||||
this.actor = actor;
|
||||
this.parent = parent;
|
||||
if (parent) parent.children.add(this);
|
||||
this.outbound = initialAssertions;
|
||||
if (parent) parent.addChild(this);
|
||||
this.outbound = initialAssertions; // no mirror yet, no need to reflect
|
||||
}
|
||||
|
||||
asRef(): Ref {
|
||||
return _asRef(this, this);
|
||||
}
|
||||
|
||||
setMirror(mirror: Mirror | null): void {
|
||||
if (mirror === null) {
|
||||
delete this._reflection;
|
||||
} else {
|
||||
this._reflection = { mirror, childHandles: {}, assertionHandles: {} };
|
||||
mirror.setFocusType(Refl.TypeName.facet());
|
||||
mirror.constProp(Refl.FacetActor(this.actor.asRef()));
|
||||
mirror.setProp(this._reflection, 'aliveHandle', Refl.FacetAlive(this.isLive));
|
||||
this.children.forEach(c => mirror.setProp(
|
||||
this._reflection!.childHandles,
|
||||
'' + c.id,
|
||||
Refl.FacetChild(c.asRef())));
|
||||
mirror.constProp(this.parent === null
|
||||
? Refl.FacetParent.root()
|
||||
: Refl.FacetParent.parent(this.parent.asRef()));
|
||||
this.outbound.forEach(e => mirror.setProp(
|
||||
this._reflection!.assertionHandles,
|
||||
'' + e.handle,
|
||||
Refl.FacetAssertion({ handle: e.handle, target: e.peer })));
|
||||
this._reflectInertPreventers();
|
||||
}
|
||||
}
|
||||
|
||||
addChild(child: Facet) {
|
||||
this.children.add(child);
|
||||
this._reflection?.mirror.setProp(this._reflection.childHandles,
|
||||
'' + child.id,
|
||||
Refl.FacetChild(child.asRef()));
|
||||
}
|
||||
|
||||
removeChild(child: Facet) {
|
||||
this.children.delete(child);
|
||||
this._reflection?.mirror.setProp(this._reflection.childHandles, '' + child.id, void 0);
|
||||
}
|
||||
|
||||
wrap<T extends Tuple<any>>(f: (... args: T) => void): (... args: T) => void {
|
||||
|
@ -214,13 +318,21 @@ export class Facet {
|
|||
preventInertCheck(): () => void {
|
||||
let armed = true;
|
||||
this.inertCheckPreventers++;
|
||||
this._reflectInertPreventers();
|
||||
return () => {
|
||||
if (!armed) return;
|
||||
armed = false;
|
||||
this.inertCheckPreventers--;
|
||||
this._reflectInertPreventers();
|
||||
};
|
||||
}
|
||||
|
||||
_reflectInertPreventers() {
|
||||
this._reflection?.mirror.setProp(this._reflection,
|
||||
'inertPreventersHandle',
|
||||
Refl.FacetInertPreventers(this.inertCheckPreventers));
|
||||
}
|
||||
|
||||
_halfLink(other: Facet): void {
|
||||
const h = nextHandle++;
|
||||
const e = {
|
||||
|
@ -230,14 +342,19 @@ export class Facet {
|
|||
established: true,
|
||||
};
|
||||
this.outbound.set(h, e);
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection.assertionHandles,
|
||||
'' + h,
|
||||
Refl.FacetAssertion({ handle: h, target: e.peer }));
|
||||
}
|
||||
|
||||
_terminate(orderly: boolean): void {
|
||||
if (!this.isLive) return;
|
||||
this.isLive = false;
|
||||
this._reflection?.mirror.setProp(this._reflection, 'aliveHandle', Refl.FacetAlive(this.isLive));
|
||||
|
||||
const parent = this.parent;
|
||||
if (parent) parent.children.delete(this);
|
||||
if (parent) parent.removeChild(this);
|
||||
|
||||
Turn.active._inFacet(this, () => {
|
||||
this.children.forEach(child => child._terminate(orderly));
|
||||
|
@ -285,7 +402,7 @@ export class StopOnRetract implements Partial<Entity> {
|
|||
retract(_handle: Handle): void {
|
||||
Turn.active.stop(Turn.activeFacet);
|
||||
}
|
||||
data = STOP_ON_RETRACT;
|
||||
actor = STOP_ON_RETRACT;
|
||||
}
|
||||
|
||||
export function _sync_impl(e: Partial<Entity>, peer: Ref): void {
|
||||
|
@ -397,6 +514,13 @@ export class Turn {
|
|||
this.enqueue(spawningFacet,
|
||||
() => {
|
||||
initialAssertions.forEach(key => spawningFacet.outbound.delete(key));
|
||||
{
|
||||
const r = spawningFacet._reflection;
|
||||
r?.mirror.turn(() => {
|
||||
initialAssertions.forEach(
|
||||
h => r.mirror.setProp(r.assertionHandles, '' + h, void 0));
|
||||
});
|
||||
}
|
||||
newActor.space.queueTask({
|
||||
perform() { newActor._boot(bootProc); },
|
||||
describe() { return { type: 'bootActor', detail }; },
|
||||
|
@ -485,6 +609,10 @@ export class Turn {
|
|||
const crossSpace = this.activeFacet.actor.space !== ref.relay.actor.space;
|
||||
const e = { handle: h, peer: ref, crossSpace: crossSpace ? a : null, established: false };
|
||||
this.activeFacet.outbound.set(h, e);
|
||||
this.activeFacet._reflection?.mirror.setProp(
|
||||
this.activeFacet._reflection.assertionHandles,
|
||||
'' + h,
|
||||
Refl.FacetAssertion({ handle: h, target: ref }));
|
||||
this.enqueue(ref.relay,
|
||||
() => {
|
||||
e.established = true;
|
||||
|
@ -520,6 +648,10 @@ export class Turn {
|
|||
|
||||
_retract(e: OutboundAssertion): void {
|
||||
this.activeFacet.outbound.delete(e.handle);
|
||||
this.activeFacet._reflection?.mirror.setProp(
|
||||
this.activeFacet._reflection.assertionHandles,
|
||||
'' + e.handle,
|
||||
void 0);
|
||||
this.enqueue(e.peer.relay,
|
||||
() => {
|
||||
if (e.established) {
|
||||
|
@ -586,13 +718,14 @@ export class Turn {
|
|||
}
|
||||
|
||||
enqueue(relay: Facet, a0: LocalAction, detail: () => ActionDescription): void {
|
||||
if (this.queues === null) {
|
||||
throw new Error("Attempt to reuse a committed Turn");
|
||||
}
|
||||
const a: StructuredTask<TaskAction> = {
|
||||
this._enqueue(relay, {
|
||||
perform() { Turn.active._inFacet(relay, a0); },
|
||||
describe() { return { targetFacet: relay, action: detail() }; },
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
_enqueue(relay: Facet, a: StructuredTask<TaskAction>): void {
|
||||
if (this.queues === null) throw new Error("Attempt to reuse a committed Turn");
|
||||
this.queues.get(relay.actor)?.push(a) ?? this.queues.set(relay.actor, [a]);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
/// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||
|
||||
import { IdentityMap, KeyedDictionary, stringify, strip } from '@preserves/core';
|
||||
import { Record, IdentityMap, KeyedDictionary, stringify } from '@preserves/core';
|
||||
import { Index, IndexObserver } from './skeleton.js';
|
||||
import { Actor, AnyValue, Assertion, DetailedAction, Entity, Facet, Handle, LocalAction, Ref, Turn } from './actor.js';
|
||||
import { Actor, AnyValue, Assertable, Assertion, DetailedAction, Entity, Facet, Handle, LocalAction, Ref, Turn } from './actor.js';
|
||||
import { Observe, toObserve } from '../gen/dataspace.js';
|
||||
import * as P from '../gen/dataspacePatterns.js';
|
||||
import * as Refl from '../gen/mirror.js';
|
||||
import { Mirror } from './mirror.js';
|
||||
|
||||
export type DataspaceOptions = {
|
||||
tracer?: (event: '+' | '-' | '!',
|
||||
|
@ -46,16 +48,17 @@ export class DataspaceObserver implements IndexObserver<Turn> {
|
|||
}
|
||||
|
||||
export class Dataspace implements Partial<Entity> {
|
||||
private static _local: Ref | undefined = void 0;
|
||||
private static _global: Ref | undefined = void 0;
|
||||
|
||||
static get local(): Ref {
|
||||
if (Dataspace._local === void 0) {
|
||||
static get global(): Ref {
|
||||
if (Dataspace._global === void 0) {
|
||||
Dataspace.boot(ds => {
|
||||
Turn.activeFacet.actor.name = Symbol.for('Dataspace.local');
|
||||
Dataspace._local = ds;
|
||||
Turn.activeFacet.actor.name = Symbol.for('Dataspace.global');
|
||||
// Cast to any because `global` is otherwise readonly (!)
|
||||
Dataspace._global = ds;
|
||||
});
|
||||
}
|
||||
return Dataspace._local!;
|
||||
return Dataspace._global!;
|
||||
}
|
||||
|
||||
// Alias for syndicatec code generator to use, plus hook for fallback use outside a Turn
|
||||
|
@ -72,48 +75,80 @@ export class Dataspace implements Partial<Entity> {
|
|||
if (Turn.active) {
|
||||
return Turn.active._spawn(bootProc);
|
||||
} else {
|
||||
return Actor.boot(bootProc, void 0, Dataspace.local.relay.actor.space);
|
||||
return Actor.boot(bootProc, void 0, Dataspace.global.relay.actor.space);
|
||||
}
|
||||
}
|
||||
|
||||
readonly options: DataspaceOptions;
|
||||
readonly index = new Index();
|
||||
readonly handleMap = new IdentityMap<Handle, Assertion>();
|
||||
readonly observerMap = new KeyedDictionary<Ref, Observe, DataspaceObserver>();
|
||||
readonly observerMap = new IdentityMap<Ref, DataspaceObserver>();
|
||||
readonly data = this;
|
||||
|
||||
private _reflection?: {
|
||||
mirror: Mirror,
|
||||
assertionHandles: { [key: string]: Handle },
|
||||
};
|
||||
|
||||
constructor(options?: DataspaceOptions) {
|
||||
this.options = options ?? {};
|
||||
}
|
||||
|
||||
setMirror(mirror: Mirror | null): void {
|
||||
if (mirror === null) {
|
||||
delete this._reflection;
|
||||
} else {
|
||||
this._reflection = { mirror, assertionHandles: {} };
|
||||
mirror.constProp(Refl.EntityClass<Ref>(Symbol.for('dataspace')));
|
||||
this.handleMap.forEach((v, handle) =>
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection.assertionHandles,
|
||||
'' + handle,
|
||||
this._assertionAttribute(handle, v)));
|
||||
}
|
||||
}
|
||||
|
||||
_assertionAttribute(handle: Handle, v: Assertion): Assertable {
|
||||
return Record(Symbol.for('contents'), [handle, v]);
|
||||
}
|
||||
|
||||
assert(v: Assertion, handle: Handle): void {
|
||||
const is_new = this.index.addAssertion(v, Turn.active);
|
||||
this.options.tracer?.('+', v, this, is_new);
|
||||
if (is_new) {
|
||||
const o = toObserve(strip(v));
|
||||
const o = toObserve(v);
|
||||
if (o !== void 0) {
|
||||
const io = new DataspaceObserver(o.observer);
|
||||
this.observerMap.set(o, io);
|
||||
this.index.addObserver(o.pattern, io, Turn.active);
|
||||
const target = o.observer;
|
||||
const observer = new DataspaceObserver(target);
|
||||
this.observerMap.set(target, observer);
|
||||
this.index.addObserver(o.pattern, observer, Turn.active);
|
||||
}
|
||||
if (this.options.dumpIndex ?? false) this.index.dump();
|
||||
}
|
||||
this.handleMap.set(handle, v);
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection.assertionHandles,
|
||||
'' + handle,
|
||||
this._assertionAttribute(handle, v));
|
||||
}
|
||||
|
||||
retract(handle: Handle): void {
|
||||
const v = this.handleMap.get(handle);
|
||||
if (v === void 0) return;
|
||||
this.handleMap.delete(handle);
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection.assertionHandles,
|
||||
'' + handle,
|
||||
void 0);
|
||||
const is_last = this.index.removeAssertion(v, Turn.active);
|
||||
this.options.tracer?.('-', v, this, is_last);
|
||||
if (is_last) {
|
||||
const o = toObserve(strip(v));
|
||||
const o = toObserve(v);
|
||||
if (o !== void 0) {
|
||||
const io = this.observerMap.get(o);
|
||||
const io = this.observerMap.get(o.observer);
|
||||
if (io !== void 0) {
|
||||
this.index.removeObserver(o.pattern, io, Turn.active);
|
||||
this.observerMap.delete(o);
|
||||
this.observerMap.delete(o.observer);
|
||||
}
|
||||
}
|
||||
if (this.options.dumpIndex ?? false) this.index.dump();
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
/// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
/// SPDX-FileCopyrightText: Copyright © 2023-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||
|
||||
import { Actor, Ref, Facet, LocalAction, Turn, assertionFrom } from './actor';
|
||||
import type { Handle, Assertable } from './actor';
|
||||
import type { Field } from './dataflow';
|
||||
import * as Refl from '../gen/mirror';
|
||||
import { Observe } from '../gen/dataspace';
|
||||
import * as P from './pattern';
|
||||
import { ActorSpace } from './space';
|
||||
import { assertionFacetObserver, Dataspace } from './dataspace';
|
||||
import { stringify, isEmbedded, KeyedDictionary } from '@preserves/core';
|
||||
|
||||
export interface Reflectable {
|
||||
asRef(): Ref;
|
||||
}
|
||||
|
||||
/// A mirror reflects a "focus" object from a "source" space into an "image" in a *different*
|
||||
/// "target" space.
|
||||
///
|
||||
/// From the point of view of the target space, the source space is a Plain Old JavaScript
|
||||
/// program. In all other situations (DOM events, network activity etc.) explicit entry to
|
||||
/// facet turns is required to operate within the target space. Mirrors should be the same.
|
||||
///
|
||||
export class Mirror {
|
||||
readonly imageFacet!: Facet;
|
||||
private focusType!: Field<Refl.TypeName>;
|
||||
|
||||
constructor (
|
||||
public readonly focus: Ref,
|
||||
private readonly image: Ref,
|
||||
public readonly focusSpace: ActorSpace,
|
||||
t: Turn,
|
||||
) {
|
||||
let installed = false;
|
||||
t.facet(() => {
|
||||
(this as any).imageFacet = t.activeFacet;
|
||||
this.focusType = t.field(Refl.TypeName.entity(), 'focusType');
|
||||
if ((this.focus.target.data !== this.focusSpace) &&
|
||||
(this.focus.relay.actor.space !== this.focusSpace))
|
||||
{
|
||||
this.focusType.value = Refl.TypeName.external();
|
||||
} else {
|
||||
this.focus.target.setMirror?.(this);
|
||||
installed = true;
|
||||
}
|
||||
t.assert(this.image,
|
||||
Refl.Facet({ thing: this.focus, facet: this.focus.relay.asRef() }));
|
||||
t.assertDataflow(() => ({
|
||||
target: this.image,
|
||||
assertion: Refl.Type({ thing: this.focus, type: this.focusType.value }),
|
||||
}));
|
||||
});
|
||||
if (installed) this.imageFacet.onStop(() => this.focus.target.setMirror?.(null));
|
||||
}
|
||||
|
||||
setFocusType(n: Refl.TypeName) {
|
||||
this.turn(() => this.focusType.value = n);
|
||||
}
|
||||
|
||||
turn(a: LocalAction) {
|
||||
const t = Turn.active;
|
||||
(t && t.activeFacet === this.imageFacet) ? a() : Turn.for(this.imageFacet, a);
|
||||
}
|
||||
|
||||
constProp(prop: Assertable): void {
|
||||
this.turn(() => {
|
||||
const attribute = assertionFrom(prop);
|
||||
Turn.active.assert(this.image, Refl.Attribute({ thing: this.focus, attribute }));
|
||||
});
|
||||
}
|
||||
|
||||
setProp<Name extends string>(
|
||||
c: { [K in Name]?: Handle },
|
||||
n: Name,
|
||||
prop: Assertable | undefined,
|
||||
): void {
|
||||
this.turn(() => {
|
||||
const a = prop
|
||||
? Refl.Attribute({ thing: this.focus, attribute: assertionFrom(prop) })
|
||||
: void 0;
|
||||
const newHandle = Turn.active.replace(this.image, c[n], a);
|
||||
(newHandle === void 0) ? delete c[n] : c[n] = newHandle;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function spawnMirror(sourceSpace: ActorSpace, targetSpace = new ActorSpace()): Ref {
|
||||
let image!: Ref;
|
||||
Actor.boot(() => {
|
||||
const t = Turn.active;
|
||||
image = t.ref(new Dataspace({
|
||||
tracer: (event, a, _ds, sig) => console.log('DS', event, stringify(a), sig),
|
||||
}));
|
||||
t.assert(image, Observe({
|
||||
pattern: P.rec(Symbol.for('reflect'), P.bind()),
|
||||
observer: t.ref(assertionFacetObserver(a => {
|
||||
if (!Array.isArray(a)) return;
|
||||
const [thing] = a;
|
||||
if (!isEmbedded(thing)) return;
|
||||
new Mirror(thing, image, sourceSpace, Turn.active);
|
||||
})),
|
||||
}));
|
||||
}, void 0, targetSpace);
|
||||
return image;
|
||||
}
|
||||
|
||||
export function _asRef(
|
||||
x: { _reflectableRef?: Ref, setMirror(mirror: Mirror | null): void },
|
||||
facet: Facet,
|
||||
): Ref {
|
||||
if (x._reflectableRef === void 0) {
|
||||
x._reflectableRef = new Ref(facet, { data: x, setMirror: m => x.setMirror(m) });
|
||||
}
|
||||
return x._reflectableRef;
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
/// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
/// SPDX-FileCopyrightText: Copyright © 2016-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||
|
||||
import { canonicalString, KeyedDictionary, is, Record, RecordConstructorInfo, Value, _iterMap, DictionaryMap, Dictionary, EncodableDictionary, unannotate } from '@preserves/core';
|
||||
import { canonicalString, KeyedDictionary, is, Record, RecordConstructorInfo, Value, _iterMap, DictionaryMap, Dictionary, EncodableDictionary } from '@preserves/core';
|
||||
import { AnyValue, Ref } from './actor.js';
|
||||
import * as P from '../gen/dataspacePatterns.js';
|
||||
|
||||
|
@ -10,7 +10,6 @@ export type Path = Array<AnyValue>;
|
|||
export type Shape = string;
|
||||
|
||||
export function classOfValue(v: any): Shape | null {
|
||||
v = unannotate(v);
|
||||
if (Record.isRecord(v)) {
|
||||
return constructorInfoSignature(Record.constructorInfo(v));
|
||||
} else if (Array.isArray(v)) {
|
||||
|
@ -39,7 +38,6 @@ export function constructorInfoSignature(ci: RecordConstructorInfo<Value>): stri
|
|||
}
|
||||
|
||||
export function step(v: AnyValue, index: AnyValue): AnyValue | undefined {
|
||||
v = unannotate(v);
|
||||
const vMap = Dictionary.asMap<Ref>(v);
|
||||
if (vMap) {
|
||||
return vMap.get(index);
|
||||
|
@ -229,7 +227,7 @@ export function drop_lit(p: P.Pattern): AnyValue | null {
|
|||
target.push(walk(p));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function walk(p: P.Pattern): AnyValue {
|
||||
switch (p._variant) {
|
||||
case 'group':
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
/// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
/// SPDX-FileCopyrightText: Copyright © 2023-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||
|
||||
import { IdentityMap, IdentitySet, forEachEmbedded } from '@preserves/core';
|
||||
import { IdentityMap, IdentitySet, embeddedId, forEachEmbedded } from '@preserves/core';
|
||||
import type { Actor, Assertion, ExitReason, Handle, Ref } from './actor.js';
|
||||
import { Mirror } from './mirror.js';
|
||||
import * as Refl from '../gen/mirror';
|
||||
import type { StructuredTask, TaskDescription } from './task.js';
|
||||
|
||||
const LIMIT = 25000;
|
||||
|
@ -24,14 +26,29 @@ export class ActorSpace {
|
|||
delayedTasks: Array<StructuredTask<TaskDescription>> = [];
|
||||
taskFlushHandle: ReturnType<typeof setTimeout> | null = null;
|
||||
|
||||
_reflection?: {
|
||||
mirror: Mirror;
|
||||
stateHandle?: Handle;
|
||||
taskCountHandle?: Handle;
|
||||
actorHandles: { [key: string]: Handle };
|
||||
};
|
||||
|
||||
register(actor: Actor): boolean {
|
||||
if (this.state === ActorSpaceState.TERMINATED) return false;
|
||||
this.actors.add(actor);
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection.actorHandles,
|
||||
'' + embeddedId(actor),
|
||||
Refl.SpaceActor(actor.asRef()));
|
||||
return true;
|
||||
}
|
||||
|
||||
deregister(actor: Actor) {
|
||||
this.actors.delete(actor);
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection.actorHandles,
|
||||
'' + embeddedId(actor),
|
||||
void 0);
|
||||
if (this.actors.size === 0) {
|
||||
this.shutdown({ ok: true });
|
||||
}
|
||||
|
@ -62,6 +79,7 @@ export class ActorSpace {
|
|||
shutdown(reason: Exclude<ExitReason, null>) {
|
||||
if (this.state === ActorSpaceState.TERMINATED) return;
|
||||
this.state = ActorSpaceState.TERMINATED;
|
||||
this._reflectState();
|
||||
Array.from(this.actors.values()).forEach(a => a._terminateWith(reason));
|
||||
}
|
||||
|
||||
|
@ -71,6 +89,8 @@ export class ActorSpace {
|
|||
break;
|
||||
|
||||
case ActorSpaceState.PAUSED:
|
||||
this.taskCounter++;
|
||||
this._reflectTaskCount();
|
||||
this.delayedTasks.push(t);
|
||||
break;
|
||||
|
||||
|
@ -80,6 +100,7 @@ export class ActorSpace {
|
|||
this.taskFlushHandle = setTimeout(() => this._scheduleDelayedTasks(), 0);
|
||||
}
|
||||
if (this.taskCounter >= LIMIT) {
|
||||
this._reflectTaskCount();
|
||||
this.delayedTasks.push(t);
|
||||
} else {
|
||||
queueMicrotask(() => t.perform());
|
||||
|
@ -90,6 +111,7 @@ export class ActorSpace {
|
|||
|
||||
_scheduleDelayedTasks() {
|
||||
this.taskCounter = 0;
|
||||
this._reflectTaskCount();
|
||||
this.delayedTasks.forEach(t => queueMicrotask(() => t.perform()));
|
||||
this.delayedTasks = [];
|
||||
}
|
||||
|
@ -105,6 +127,7 @@ export class ActorSpace {
|
|||
|
||||
case ActorSpaceState.RUNNING:
|
||||
this.state = ActorSpaceState.PAUSED;
|
||||
this._reflectState();
|
||||
if (this.taskFlushHandle !== null) {
|
||||
clearTimeout(this.taskFlushHandle);
|
||||
this.taskFlushHandle = null;
|
||||
|
@ -121,6 +144,7 @@ export class ActorSpace {
|
|||
|
||||
case ActorSpaceState.PAUSED:
|
||||
this.state = ActorSpaceState.RUNNING;
|
||||
this._reflectState();
|
||||
this._scheduleDelayedTasks();
|
||||
return true;
|
||||
|
||||
|
@ -128,4 +152,34 @@ export class ActorSpace {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
setMirror(mirror: Mirror | null): void {
|
||||
if (mirror === null) {
|
||||
delete this._reflection;
|
||||
} else {
|
||||
this._reflection = { mirror, actorHandles: {} };
|
||||
mirror.setFocusType(Refl.TypeName.space());
|
||||
this._reflectState();
|
||||
this._reflectTaskCount();
|
||||
this.actors.forEach(a => mirror.setProp(
|
||||
this._reflection!.actorHandles,
|
||||
'' + embeddedId(a),
|
||||
Refl.SpaceActor(a.asRef())));
|
||||
}
|
||||
}
|
||||
|
||||
_reflectState() {
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection,
|
||||
'stateHandle',
|
||||
(this.state === ActorSpaceState.RUNNING ? Refl.SpaceStatus.running() :
|
||||
this.state === ActorSpaceState.PAUSED ? Refl.SpaceStatus.paused() :
|
||||
this.state === ActorSpaceState.TERMINATED ? Refl.SpaceStatus.terminated() :
|
||||
void 0));
|
||||
}
|
||||
|
||||
_reflectTaskCount() {
|
||||
this._reflection?.mirror.setProp(
|
||||
this._reflection, 'taskCountHandle', Refl.SpaceTaskCount(this.taskCounter));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
/// SPDX-FileCopyrightText: Copyright © 2021-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||
|
||||
export * as dataspacePatterns from './gen/dataspacePatterns.js';
|
||||
export * as dataspace from './gen/dataspace.js';
|
||||
export * as dataspacePatterns from './gen/dataspacePatterns.js';
|
||||
export * as gatekeeper from './gen/gatekeeper.js';
|
||||
export * as protocol from './gen/protocol.js';
|
||||
export * as noise from './gen/noise.js';
|
||||
export * as protocol from './gen/protocol.js';
|
||||
export * as service from './gen/service.js';
|
||||
export * as stdenv from './gen/stdenv.js';
|
||||
export * as stream from './gen/stream.js';
|
||||
|
@ -16,4 +16,5 @@ export * as trace from './gen/trace.js';
|
|||
export * as transportAddress from './gen/transportAddress.js';
|
||||
export * as worker from './gen/worker.js';
|
||||
|
||||
export * as mirror from './gen/mirror.js';
|
||||
export * as queuedTasks from './gen/queuedTasks.js';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/create",
|
||||
"version": "0.25.1",
|
||||
"version": "0.25.0",
|
||||
"description": "Create a new Syndicate/js package",
|
||||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/create",
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"version": "0.0.0",
|
||||
"license": "GPL-3.0+",
|
||||
"devDependencies": {
|
||||
"@preserves/schema-cli": ">=0.995.201",
|
||||
"@preserves/schema-cli": "0.995.201",
|
||||
"@syndicate-lang/ts-plugin": "*",
|
||||
"@syndicate-lang/tsc": "*",
|
||||
"rollup": "^2.60",
|
||||
|
@ -12,7 +12,7 @@
|
|||
"typescript-language-server": "^3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@preserves/core": "^0.995.200",
|
||||
"@preserves/core": "0.995.200",
|
||||
"@syndicate-lang/core": "*",
|
||||
"@syndicate-lang/html2": "*",
|
||||
"@syndicate-lang/ws-relay": "*"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/fs",
|
||||
"version": "0.35.1",
|
||||
"version": "0.33.0",
|
||||
"description": "Reflect contents of a portion of the file system as assertions",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/fs",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -27,16 +27,16 @@
|
|||
"syndicate-fs": "./bin/syndicate-fs.js"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@preserves/core": "^0.995.200"
|
||||
"@preserves/core": "0.995.200"
|
||||
},
|
||||
"dependencies": {
|
||||
"@syndicate-lang/core": "^0.34.1",
|
||||
"@syndicate-lang/service": "^0.35.1",
|
||||
"@syndicate-lang/core": "^0.32.0",
|
||||
"@syndicate-lang/service": "^0.33.0",
|
||||
"chokidar": "^3.5.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@preserves/schema-cli": ">=0.995.201",
|
||||
"@syndicate-lang/ts-plugin": "^0.36.1",
|
||||
"@syndicate-lang/tsc": "^0.36.1"
|
||||
"@preserves/schema-cli": "0.995.201",
|
||||
"@syndicate-lang/ts-plugin": "^0.34.0",
|
||||
"@syndicate-lang/tsc": "^0.34.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/html",
|
||||
"version": "0.35.1",
|
||||
"version": "0.33.0",
|
||||
"description": "DOM/HTML UI for Syndicate/JS",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/html",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -25,10 +25,10 @@
|
|||
"veryclean": "yarn run clean && rm -rf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@syndicate-lang/core": "^0.34.1"
|
||||
"@syndicate-lang/core": "^0.32.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@syndicate-lang/ts-plugin": "^0.36.1",
|
||||
"@syndicate-lang/tsc": "^0.36.1"
|
||||
"@syndicate-lang/ts-plugin": "^0.34.0",
|
||||
"@syndicate-lang/tsc": "^0.34.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ export type UIFragmentRecord = ReturnType<typeof P.UIFragment>;
|
|||
import { HtmlFragments } from "./html";
|
||||
export * from "./html";
|
||||
|
||||
export function boot(ds = Dataspace.local) {
|
||||
export function boot(ds = Dataspace.global) {
|
||||
spawnGlobalEventFactory(ds);
|
||||
spawnWindowEventFactory(ds);
|
||||
spawnUIFragmentFactory(ds);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/html2",
|
||||
"version": "0.35.1",
|
||||
"version": "0.33.0",
|
||||
"description": "DOM/HTML UI for Syndicate/JS",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/html2",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -25,10 +25,10 @@
|
|||
"veryclean": "yarn run clean && rm -rf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@syndicate-lang/core": "^0.34.1"
|
||||
"@syndicate-lang/core": "^0.32.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@syndicate-lang/ts-plugin": "^0.36.1",
|
||||
"@syndicate-lang/tsc": "^0.36.1"
|
||||
"@syndicate-lang/ts-plugin": "^0.34.0",
|
||||
"@syndicate-lang/tsc": "^0.34.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,22 +70,7 @@ function nodeInserter(n: number): PlaceholderAction {
|
|||
switch (typeof f) {
|
||||
case 'string': newNode = document.createTextNode(f); break;
|
||||
case 'number': newNode = document.createTextNode('' + f); break;
|
||||
case 'object':
|
||||
if (f !== null && 'nodeType' in f) {
|
||||
newNode = f;
|
||||
break;
|
||||
}
|
||||
/* fall through */
|
||||
default: {
|
||||
let info;
|
||||
try {
|
||||
info = '' + f;
|
||||
} catch (_e) {
|
||||
info = (f as any).toString();
|
||||
}
|
||||
newNode = document.createTextNode(`<ERROR: invalid HtmlFragment: ${info}>`);
|
||||
break;
|
||||
}
|
||||
default: newNode = f; break;
|
||||
}
|
||||
node.parentNode?.insertBefore(newNode, node);
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ export { HtmlTemplater, template, HtmlFragment } from "./html";
|
|||
export assertion type LocationHash(hash: string);
|
||||
export type LocationHash = ReturnType<typeof LocationHash>;
|
||||
|
||||
export function boot(ds = Dataspace.local) {
|
||||
export function boot(ds = Dataspace.global) {
|
||||
spawnLocationHashTracker(ds);
|
||||
}
|
||||
|
||||
|
@ -20,28 +20,23 @@ type Wrapped = {
|
|||
export type NodeGenerator = (t: HtmlTemplater) => ReturnType<HtmlTemplater>;
|
||||
|
||||
export class Widget implements EventTarget {
|
||||
readonly nodeGenerator: NodeGenerator;
|
||||
readonly facet: Facet;
|
||||
private _node: ChildNode | null = null;
|
||||
parentField: Dataflow.Field<ParentNode | null>;
|
||||
callbacks = new Map<string, Map<EventListenerOrEventListenerObject, Wrapped>>();
|
||||
|
||||
get node(): ChildNode {
|
||||
return this._node!;
|
||||
}
|
||||
|
||||
constructor (node: ChildNode);
|
||||
constructor (nodeGenerator: NodeGenerator);
|
||||
constructor (template: string | HTMLTemplateElement, data: object);
|
||||
constructor (arg0: ChildNode | NodeGenerator | string | HTMLTemplateElement, data?: object) {
|
||||
let nodeGenerator: NodeGenerator;
|
||||
|
||||
constructor (arg0: NodeGenerator | string | HTMLTemplateElement, data?: object) {
|
||||
if (data === void 0) {
|
||||
if (typeof arg0 === 'function') {
|
||||
nodeGenerator = arg0 as NodeGenerator;
|
||||
} else {
|
||||
nodeGenerator = () => [arg0 as ChildNode];
|
||||
}
|
||||
this.nodeGenerator = arg0 as NodeGenerator;
|
||||
} else {
|
||||
nodeGenerator = templateGenerator(arg0 as (string | HTMLTemplateElement), data);
|
||||
this.nodeGenerator = templateGenerator(arg0 as (string | HTMLTemplateElement), data);
|
||||
}
|
||||
|
||||
this.facet = Turn.activeFacet;
|
||||
|
@ -54,7 +49,7 @@ export class Widget implements EventTarget {
|
|||
|
||||
const thisTemplate = template();
|
||||
dataflow {
|
||||
const nodes = nodeGenerator(thisTemplate);
|
||||
const nodes = this.nodeGenerator(thisTemplate);
|
||||
if (nodes.length !== 1) {
|
||||
throw new Error(`@syndicate-lang/html2: Expected exactly one node from template`);
|
||||
}
|
||||
|
@ -64,18 +59,24 @@ export class Widget implements EventTarget {
|
|||
throw new Error(`@syndicate-lang/html2: Node generator is not stable`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get _nodeAsParent(): ParentNode | null {
|
||||
if (this._node && 'querySelector' in this._node) {
|
||||
return this._node as unknown as ParentNode;
|
||||
} else {
|
||||
return null;
|
||||
field parentField: ParentNode | null = this._node?.parentNode ?? null;
|
||||
this.parentField = parentField;
|
||||
|
||||
dataflow {
|
||||
const p = this.parentField.value;
|
||||
if (this.node.parentNode !== p) {
|
||||
if (p === null) {
|
||||
this.node.remove();
|
||||
} else {
|
||||
p.appendChild(this.node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get parent(): ParentNode | null {
|
||||
return this.node.parentNode;
|
||||
return this.parentField.value;
|
||||
}
|
||||
|
||||
set parent(p: string | ParentNode | null) {
|
||||
|
@ -86,34 +87,10 @@ export class Widget implements EventTarget {
|
|||
if (typeof p === 'string') {
|
||||
p = wrt.querySelector(p);
|
||||
}
|
||||
|
||||
if (this.node.parentNode !== p) {
|
||||
if (p === null) {
|
||||
this.node.remove();
|
||||
} else {
|
||||
p.appendChild(this.node);
|
||||
}
|
||||
}
|
||||
|
||||
this.parentField.value = p;
|
||||
return this;
|
||||
}
|
||||
|
||||
querySelector(selector: string): Widget | null;
|
||||
querySelector<T extends Widget>(selector: string, ctor: { new(e: Element): T }): T | null;
|
||||
querySelector<T extends Widget>(selector: string, ctor?: { new(e: Element): T }): Widget | null {
|
||||
const e = this._nodeAsParent?.querySelector(selector);
|
||||
return e ? new (ctor ?? Widget)(e) : null;
|
||||
}
|
||||
|
||||
querySelectorAll(selector: string): Widget[];
|
||||
querySelectorAll<T extends Widget>(selector: string, ctor: { new(e: Element): T }): T[];
|
||||
querySelectorAll<T extends Widget>(selector: string, ctor?: { new(e: Element): T }): Widget[] {
|
||||
const es = this._nodeAsParent?.querySelectorAll(selector);
|
||||
const ws: Widget[] = [];
|
||||
if (es) es.forEach(e => ws.push(new (ctor ?? Widget)(e)));
|
||||
return ws;
|
||||
}
|
||||
|
||||
on(type: string, callback: EventListenerOrEventListenerObject): this {
|
||||
this.addEventListener(type, callback);
|
||||
return this;
|
||||
|
@ -196,21 +173,20 @@ export class ValueWidget extends Widget {
|
|||
this._valueAsNumber = valueAsNumber;
|
||||
|
||||
if ('value' in this.node) {
|
||||
this.on(triggerEvent, () => this.readValues());
|
||||
this.readValues();
|
||||
const readValues = (n: any) => {
|
||||
this.suppressCycleWarning();
|
||||
this._value.value = n?.value ?? '';
|
||||
this._valueAsNumber.value = n?.valueAsNumber ?? NaN;
|
||||
};
|
||||
|
||||
this.on(triggerEvent, e => readValues(e.target));
|
||||
readValues(this.node);
|
||||
|
||||
dataflow { this.valueAsNumber = this._valueAsNumber.value; }
|
||||
dataflow { this.value = this._value.value; }
|
||||
}
|
||||
}
|
||||
|
||||
readValues() {
|
||||
const n = this.node as any;
|
||||
this.suppressCycleWarning();
|
||||
this._value.value = n.value ?? '';
|
||||
this._valueAsNumber.value = n.valueAsNumber ?? NaN;
|
||||
}
|
||||
|
||||
get value(): string {
|
||||
return this._value.value;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/loader",
|
||||
"version": "0.35.1",
|
||||
"version": "0.33.0",
|
||||
"description": "Syndicate/JS node.js loader hook",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/loader",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -22,8 +22,8 @@
|
|||
"types": "lib/index.d.ts",
|
||||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"dependencies": {
|
||||
"@syndicate-lang/compiler": "^0.22.0",
|
||||
"@syndicate-lang/core": "^0.34.1",
|
||||
"@syndicate-lang/service": "^0.35.1"
|
||||
"@syndicate-lang/compiler": "^0.21.1",
|
||||
"@syndicate-lang/core": "^0.32.0",
|
||||
"@syndicate-lang/service": "^0.33.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import Pos = Syntax.Pos;
|
|||
|
||||
import * as Syndicate from '@syndicate-lang/core';
|
||||
Object.defineProperty(globalThis, 'currentSyndicateTarget', {
|
||||
value: Syndicate.Dataspace.local,
|
||||
value: Syndicate.Dataspace.global,
|
||||
writable: false,
|
||||
});
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/service",
|
||||
"version": "0.35.1",
|
||||
"version": "0.33.0",
|
||||
"description": "Run a node.js program as a service within syndicate-server",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/service",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -22,10 +22,10 @@
|
|||
"veryclean": "yarn run clean && rm -rf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@syndicate-lang/core": "^0.34.1"
|
||||
"@syndicate-lang/core": "^0.32.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@syndicate-lang/ts-plugin": "^0.36.1",
|
||||
"@syndicate-lang/tsc": "^0.36.1"
|
||||
"@syndicate-lang/ts-plugin": "^0.34.0",
|
||||
"@syndicate-lang/tsc": "^0.34.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/syndicatec",
|
||||
"version": "0.36.1",
|
||||
"version": "0.34.0",
|
||||
"description": "Syndicate/JS compiler command-line tool",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/syndicatec",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -20,8 +20,8 @@
|
|||
},
|
||||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"dependencies": {
|
||||
"@syndicate-lang/compiler": "^0.22.0",
|
||||
"@syndicate-lang/core": "^0.34.1",
|
||||
"@syndicate-lang/compiler": "^0.21.1",
|
||||
"@syndicate-lang/core": "^0.32.0",
|
||||
"glob": "^7.1.6",
|
||||
"yargs": "^16.2.0"
|
||||
},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/timer",
|
||||
"version": "0.35.1",
|
||||
"version": "0.33.0",
|
||||
"description": "Time and timer driver for Syndicate",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/timer",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -25,10 +25,10 @@
|
|||
"veryclean": "yarn run clean && rm -rf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@syndicate-lang/core": "^0.34.1"
|
||||
"@syndicate-lang/core": "^0.32.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@syndicate-lang/ts-plugin": "^0.36.1",
|
||||
"@syndicate-lang/tsc": "^0.36.1"
|
||||
"@syndicate-lang/ts-plugin": "^0.34.0",
|
||||
"@syndicate-lang/tsc": "^0.34.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ export function sleep(ds: Ref, seconds: number, cb: () => void): void {
|
|||
}
|
||||
}
|
||||
|
||||
export function boot(ds = Dataspace.local) {
|
||||
export function boot(ds = Dataspace.global) {
|
||||
spawn named 'timer/PeriodicTick' {
|
||||
at ds {
|
||||
during Observe({
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/ts-plugin",
|
||||
"version": "0.36.1",
|
||||
"version": "0.34.0",
|
||||
"description": "Syndicate/JS TypeScript tsserver plugin",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/ts-plugin",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -22,8 +22,8 @@
|
|||
"types": "lib/index.d.ts",
|
||||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"dependencies": {
|
||||
"@syndicate-lang/compiler": "^0.22.0",
|
||||
"@syndicate-lang/core": "^0.34.1"
|
||||
"@syndicate-lang/compiler": "^0.21.1",
|
||||
"@syndicate-lang/core": "^0.32.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^4.9"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/tsc",
|
||||
"version": "0.36.1",
|
||||
"version": "0.34.0",
|
||||
"description": "Syndicate for TypeScript compiler command-line tool",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/tsc",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -20,8 +20,8 @@
|
|||
},
|
||||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"dependencies": {
|
||||
"@syndicate-lang/compiler": "^0.22.0",
|
||||
"@syndicate-lang/core": "^0.34.1",
|
||||
"@syndicate-lang/compiler": "^0.21.1",
|
||||
"@syndicate-lang/core": "^0.32.0",
|
||||
"glob": "^7.1.6",
|
||||
"yargs": "^16.2.0"
|
||||
},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@syndicate-lang/ws-relay",
|
||||
"version": "0.36.1",
|
||||
"version": "0.34.0",
|
||||
"description": "Browser WebSocket relay to a Syndicate server",
|
||||
"homepage": "https://github.com/syndicate-lang/syndicate-js/tree/main/packages/ws-relay",
|
||||
"license": "GPL-3.0+",
|
||||
|
@ -25,14 +25,14 @@
|
|||
"types": "lib/index.d.ts",
|
||||
"author": "Tony Garnock-Jones <tonyg@leastfixedpoint.com>",
|
||||
"peerDependencies": {
|
||||
"@preserves/core": "^0.995.200"
|
||||
"@preserves/core": "0.995.200"
|
||||
},
|
||||
"dependencies": {
|
||||
"@syndicate-lang/core": "^0.34.1",
|
||||
"@syndicate-lang/core": "^0.32.0",
|
||||
"salty-crypto": "0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@syndicate-lang/ts-plugin": "^0.36.1",
|
||||
"@syndicate-lang/tsc": "^0.36.1"
|
||||
"@syndicate-lang/ts-plugin": "^0.34.0",
|
||||
"@syndicate-lang/tsc": "^0.34.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ type TransportState = {
|
|||
peer: Ref,
|
||||
};
|
||||
|
||||
export function boot(ds = Dataspace.local, debug: boolean = false, WebSocketConstructor?: typeof WebSocket) {
|
||||
export function boot(ds = Dataspace.global, debug: boolean = false, WebSocketConstructor?: typeof WebSocket) {
|
||||
spawn named 'transportConnector' {
|
||||
at ds {
|
||||
during Observe({ "pattern": :pattern G.TransportConnection({
|
||||
|
@ -470,7 +470,7 @@ export function contactRemote(
|
|||
controlObject: Ref,
|
||||
transportAddr: AnyValue,
|
||||
) => void,
|
||||
ds = Dataspace.local,
|
||||
ds = Dataspace.global,
|
||||
) {
|
||||
const routeValue = 'pathSteps' in route ? G.fromRoute(G.Route(route)) : route;
|
||||
at ds {
|
||||
|
|
6
watchall
6
watchall
|
@ -16,14 +16,12 @@ open() {
|
|||
|
||||
for d in packages/*/tsconfig.json
|
||||
do
|
||||
open "cd $(dirname $d); exec yarn compile:watch"
|
||||
open "cd $(dirname $d); yarn compile:watch"
|
||||
done
|
||||
|
||||
for d in packages/*/rollup.config.js
|
||||
do
|
||||
open "cd $(dirname $d); exec yarn rollup:watch"
|
||||
open "cd $(dirname $d); yarn rollup:watch"
|
||||
done
|
||||
|
||||
open "cd packages/browser-stdenv; exec yarn prepare:watch"
|
||||
|
||||
tmux select-layout even-vertical
|
||||
|
|
323
yarn.lock
323
yarn.lock
|
@ -10,7 +10,7 @@
|
|||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
|
||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2":
|
||||
version "7.24.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
|
||||
integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
|
||||
|
@ -19,37 +19,37 @@
|
|||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/compat-data@^7.23.5":
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
|
||||
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742"
|
||||
integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==
|
||||
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a"
|
||||
integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==
|
||||
version "7.24.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3"
|
||||
integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.2.0"
|
||||
"@babel/code-frame" "^7.24.2"
|
||||
"@babel/generator" "^7.24.5"
|
||||
"@babel/generator" "^7.24.1"
|
||||
"@babel/helper-compilation-targets" "^7.23.6"
|
||||
"@babel/helper-module-transforms" "^7.24.5"
|
||||
"@babel/helpers" "^7.24.5"
|
||||
"@babel/parser" "^7.24.5"
|
||||
"@babel/helper-module-transforms" "^7.23.3"
|
||||
"@babel/helpers" "^7.24.1"
|
||||
"@babel/parser" "^7.24.1"
|
||||
"@babel/template" "^7.24.0"
|
||||
"@babel/traverse" "^7.24.5"
|
||||
"@babel/types" "^7.24.5"
|
||||
"@babel/traverse" "^7.24.1"
|
||||
"@babel/types" "^7.24.0"
|
||||
convert-source-map "^2.0.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.2"
|
||||
json5 "^2.2.3"
|
||||
semver "^6.3.1"
|
||||
|
||||
"@babel/generator@^7.24.5", "@babel/generator@^7.7.2":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3"
|
||||
integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==
|
||||
"@babel/generator@^7.24.1", "@babel/generator@^7.7.2":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0"
|
||||
integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.5"
|
||||
"@babel/types" "^7.24.0"
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.25"
|
||||
jsesc "^2.5.1"
|
||||
|
@ -85,81 +85,81 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.22.5"
|
||||
|
||||
"@babel/helper-module-imports@^7.24.3":
|
||||
"@babel/helper-module-imports@^7.22.15":
|
||||
version "7.24.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128"
|
||||
integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.0"
|
||||
|
||||
"@babel/helper-module-transforms@^7.24.5":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545"
|
||||
integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==
|
||||
"@babel/helper-module-transforms@^7.23.3":
|
||||
version "7.23.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1"
|
||||
integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor" "^7.22.20"
|
||||
"@babel/helper-module-imports" "^7.24.3"
|
||||
"@babel/helper-simple-access" "^7.24.5"
|
||||
"@babel/helper-split-export-declaration" "^7.24.5"
|
||||
"@babel/helper-validator-identifier" "^7.24.5"
|
||||
"@babel/helper-module-imports" "^7.22.15"
|
||||
"@babel/helper-simple-access" "^7.22.5"
|
||||
"@babel/helper-split-export-declaration" "^7.22.6"
|
||||
"@babel/helper-validator-identifier" "^7.22.20"
|
||||
|
||||
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a"
|
||||
integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==
|
||||
version "7.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a"
|
||||
integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==
|
||||
|
||||
"@babel/helper-simple-access@^7.24.5":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba"
|
||||
integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==
|
||||
"@babel/helper-simple-access@^7.22.5":
|
||||
version "7.22.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
|
||||
integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.5"
|
||||
"@babel/types" "^7.22.5"
|
||||
|
||||
"@babel/helper-split-export-declaration@^7.24.5":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6"
|
||||
integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==
|
||||
"@babel/helper-split-export-declaration@^7.22.6":
|
||||
version "7.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
|
||||
integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.5"
|
||||
"@babel/types" "^7.22.5"
|
||||
|
||||
"@babel/helper-string-parser@^7.24.1":
|
||||
"@babel/helper-string-parser@^7.23.4":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
|
||||
integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.24.5":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62"
|
||||
integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==
|
||||
"@babel/helper-validator-identifier@^7.22.20":
|
||||
version "7.22.20"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
|
||||
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
|
||||
|
||||
"@babel/helper-validator-option@^7.23.5":
|
||||
version "7.23.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
|
||||
integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
|
||||
|
||||
"@babel/helpers@^7.24.5":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a"
|
||||
integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==
|
||||
"@babel/helpers@^7.24.1":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94"
|
||||
integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==
|
||||
dependencies:
|
||||
"@babel/template" "^7.24.0"
|
||||
"@babel/traverse" "^7.24.5"
|
||||
"@babel/types" "^7.24.5"
|
||||
"@babel/traverse" "^7.24.1"
|
||||
"@babel/types" "^7.24.0"
|
||||
|
||||
"@babel/highlight@^7.24.2":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e"
|
||||
integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==
|
||||
version "7.24.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26"
|
||||
integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.24.5"
|
||||
"@babel/helper-validator-identifier" "^7.22.20"
|
||||
chalk "^2.4.2"
|
||||
js-tokens "^4.0.0"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790"
|
||||
integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a"
|
||||
integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==
|
||||
|
||||
"@babel/plugin-syntax-async-generators@^7.8.4":
|
||||
version "7.8.4"
|
||||
|
@ -261,29 +261,29 @@
|
|||
"@babel/parser" "^7.24.0"
|
||||
"@babel/types" "^7.24.0"
|
||||
|
||||
"@babel/traverse@^7.24.5", "@babel/traverse@^7.7.2":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8"
|
||||
integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==
|
||||
"@babel/traverse@^7.24.1", "@babel/traverse@^7.7.2":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c"
|
||||
integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.24.2"
|
||||
"@babel/generator" "^7.24.5"
|
||||
"@babel/code-frame" "^7.24.1"
|
||||
"@babel/generator" "^7.24.1"
|
||||
"@babel/helper-environment-visitor" "^7.22.20"
|
||||
"@babel/helper-function-name" "^7.23.0"
|
||||
"@babel/helper-hoist-variables" "^7.22.5"
|
||||
"@babel/helper-split-export-declaration" "^7.24.5"
|
||||
"@babel/parser" "^7.24.5"
|
||||
"@babel/types" "^7.24.5"
|
||||
"@babel/helper-split-export-declaration" "^7.22.6"
|
||||
"@babel/parser" "^7.24.1"
|
||||
"@babel/types" "^7.24.0"
|
||||
debug "^4.3.1"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7"
|
||||
integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.3.3":
|
||||
version "7.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf"
|
||||
integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==
|
||||
dependencies:
|
||||
"@babel/helper-string-parser" "^7.24.1"
|
||||
"@babel/helper-validator-identifier" "^7.24.5"
|
||||
"@babel/helper-string-parser" "^7.23.4"
|
||||
"@babel/helper-validator-identifier" "^7.22.20"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@bcoe/v8-coverage@^0.2.3":
|
||||
|
@ -1426,30 +1426,30 @@
|
|||
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
||||
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
||||
|
||||
"@preserves/core@^0.995.200", "@preserves/core@^0.995.201":
|
||||
version "0.995.201"
|
||||
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.201.tgz#919635b8af3daf705b83656300c4c32136278171"
|
||||
integrity sha512-ZFRheLOtOlFO2hkX2ZVKugTENBz37gSgm0nZp7xIYafRkPkEPcXSZ2cOGRDTXxXQOOEyu4y/iCi3RqJUTBPP+g==
|
||||
"@preserves/core@0.995.200", "@preserves/core@^0.995.200":
|
||||
version "0.995.200"
|
||||
resolved "https://registry.yarnpkg.com/@preserves/core/-/core-0.995.200.tgz#65575cf8f9320e73b5d37fa9ac9d6881a33fd3a6"
|
||||
integrity sha512-htZ2x+hltUpKoPsviWSuelzZW96po9zVSsN0RZEih60FahNX0R2LCqFJ6v5lyATuQ9oHALVi0w8w4rtf8oiAJw==
|
||||
|
||||
"@preserves/schema-cli@>=0.995.201", "@preserves/schema-cli@^0.995.201":
|
||||
version "0.995.202"
|
||||
resolved "https://registry.yarnpkg.com/@preserves/schema-cli/-/schema-cli-0.995.202.tgz#8de6bda084ac66bb11b800b4a210eaff4b09dbaa"
|
||||
integrity sha512-kAFdcgQgapk2q/kV9/dfC72QOX+lE0h8GOz2tva6DOzYiPRkjW/Xa9wmvt5IE0Ebv3pNyVfF/J6OTlXEelaqqw==
|
||||
"@preserves/schema-cli@0.995.201":
|
||||
version "0.995.201"
|
||||
resolved "https://registry.yarnpkg.com/@preserves/schema-cli/-/schema-cli-0.995.201.tgz#e87cb7ba51b225ff6ea96f177c5388907adf6717"
|
||||
integrity sha512-n/lpVgWBY1UTRySPXIwWG4Yu87OrQ9b7Xo8zPPQzD/DJDTEDT3y3SUujY7UTF1pQn09xRGnfPnDu1RoRCv2J3w==
|
||||
dependencies:
|
||||
"@preserves/core" "^0.995.201"
|
||||
"@preserves/schema" "^0.995.202"
|
||||
"@preserves/core" "^0.995.200"
|
||||
"@preserves/schema" "^0.995.201"
|
||||
chalk "^4.1"
|
||||
chokidar "^3.5"
|
||||
commander "^7.2"
|
||||
glob "^7.1"
|
||||
minimatch "^3.0"
|
||||
|
||||
"@preserves/schema@^0.995.201", "@preserves/schema@^0.995.202":
|
||||
version "0.995.202"
|
||||
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.202.tgz#6334deea21d62f2ad709ba7d16a9f8fa7f899c3a"
|
||||
integrity sha512-wnUBBeHsqLY+AGficWm6OsgpHiVWabv+Bkzn8l+xbVrhTRhMbirTUYKetaH658xxjbWLR3B4QVdbu9g5VBlehg==
|
||||
"@preserves/schema@0.995.201", "@preserves/schema@^0.995.201":
|
||||
version "0.995.201"
|
||||
resolved "https://registry.yarnpkg.com/@preserves/schema/-/schema-0.995.201.tgz#827ad539afb0fdf68ba885ee3ff43db0fd473aa5"
|
||||
integrity sha512-0SuhwOEAfxtrAeOTZ8V1yNEcHHHEbfUmoFawrF+vzTQFNZRz/X3LF1FM6wOiJlHtb7tBr4B+rHXX8jfNrqrdkA==
|
||||
dependencies:
|
||||
"@preserves/core" "^0.995.201"
|
||||
"@preserves/core" "^0.995.200"
|
||||
|
||||
"@rollup/plugin-node-resolve@^13.0":
|
||||
version "13.3.0"
|
||||
|
@ -1492,9 +1492,9 @@
|
|||
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
|
||||
|
||||
"@tsconfig/node10@^1.0.7":
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2"
|
||||
integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
|
||||
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
|
||||
|
||||
"@tsconfig/node12@^1.0.7":
|
||||
version "1.0.11"
|
||||
|
@ -1612,9 +1612,9 @@
|
|||
integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
|
||||
|
||||
"@types/node@*":
|
||||
version "20.12.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.8.tgz#35897bf2bfe3469847ab04634636de09552e8256"
|
||||
integrity sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==
|
||||
version "20.11.30"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.30.tgz#9c33467fc23167a347e73834f788f4b9f399d66f"
|
||||
integrity sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
|
@ -2214,9 +2214,9 @@ camelcase@^6.2.0:
|
|||
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
||||
|
||||
caniuse-lite@^1.0.30001587:
|
||||
version "1.0.30001615"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001615.tgz#7c2c8772db681b6dee74d81d6550db68f2d28842"
|
||||
integrity sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==
|
||||
version "1.0.30001600"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079"
|
||||
integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
|
@ -2293,9 +2293,9 @@ ci-info@^3.2.0:
|
|||
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
|
||||
|
||||
cjs-module-lexer@^1.0.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c"
|
||||
integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107"
|
||||
integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==
|
||||
|
||||
clean-stack@^2.0.0:
|
||||
version "2.2.0"
|
||||
|
@ -2707,7 +2707,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4:
|
|||
es-errors "^1.3.0"
|
||||
gopd "^1.0.1"
|
||||
|
||||
define-properties@^1.2.0, define-properties@^1.2.1:
|
||||
define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
|
||||
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
|
||||
|
@ -2835,9 +2835,9 @@ editorconfig@^1.0.4:
|
|||
semver "^7.5.3"
|
||||
|
||||
electron-to-chromium@^1.4.668:
|
||||
version "1.4.755"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.755.tgz#e26b3f5955b9de75a24048587521bde22fa4e0a0"
|
||||
integrity sha512-9nop+3jZxSHIxe1EzEUcjDXzK+3qOv3fY5w0sE88nIZUntbv1aXWmoxGWlklX5XSO4txCpLssWkUSh8RQPovBg==
|
||||
version "1.4.715"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46"
|
||||
integrity sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==
|
||||
|
||||
emittery@^0.8.1:
|
||||
version "0.8.1"
|
||||
|
@ -2867,9 +2867,9 @@ env-paths@^2.2.0:
|
|||
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
|
||||
|
||||
envinfo@^7.7.4:
|
||||
version "7.13.0"
|
||||
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31"
|
||||
integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==
|
||||
version "7.11.1"
|
||||
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1"
|
||||
integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==
|
||||
|
||||
err-code@^2.0.2:
|
||||
version "2.0.3"
|
||||
|
@ -2884,9 +2884,9 @@ error-ex@^1.3.1:
|
|||
is-arrayish "^0.2.1"
|
||||
|
||||
es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2:
|
||||
version "1.23.3"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
|
||||
integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
|
||||
version "1.23.2"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.2.tgz#693312f3940f967b8dd3eebacb590b01712622e0"
|
||||
integrity sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.1"
|
||||
arraybuffer.prototype.slice "^1.0.3"
|
||||
|
@ -2927,11 +2927,11 @@ es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23
|
|||
safe-regex-test "^1.0.3"
|
||||
string.prototype.trim "^1.2.9"
|
||||
string.prototype.trimend "^1.0.8"
|
||||
string.prototype.trimstart "^1.0.8"
|
||||
string.prototype.trimstart "^1.0.7"
|
||||
typed-array-buffer "^1.0.2"
|
||||
typed-array-byte-length "^1.0.1"
|
||||
typed-array-byte-offset "^1.0.2"
|
||||
typed-array-length "^1.0.6"
|
||||
typed-array-length "^1.0.5"
|
||||
unbox-primitive "^1.0.2"
|
||||
which-typed-array "^1.1.15"
|
||||
|
||||
|
@ -2977,7 +2977,7 @@ es-to-primitive@^1.2.1:
|
|||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.2"
|
||||
|
||||
escalade@^3.1.1, escalade@^3.1.2:
|
||||
escalade@^3.1.1:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
|
||||
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
|
||||
|
@ -3391,15 +3391,15 @@ glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2:
|
|||
is-glob "^4.0.1"
|
||||
|
||||
glob@^10.3.3:
|
||||
version "10.3.12"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b"
|
||||
integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==
|
||||
version "10.3.10"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b"
|
||||
integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
|
||||
dependencies:
|
||||
foreground-child "^3.1.0"
|
||||
jackspeak "^2.3.6"
|
||||
jackspeak "^2.3.5"
|
||||
minimatch "^9.0.1"
|
||||
minipass "^7.0.4"
|
||||
path-scurry "^1.10.2"
|
||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
path-scurry "^1.10.1"
|
||||
|
||||
glob@^7.1, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
|
||||
version "7.2.3"
|
||||
|
@ -3419,12 +3419,11 @@ globals@^11.1.0:
|
|||
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
|
||||
|
||||
globalthis@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
|
||||
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
|
||||
integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
|
||||
dependencies:
|
||||
define-properties "^1.2.1"
|
||||
gopd "^1.0.1"
|
||||
define-properties "^1.1.3"
|
||||
|
||||
globby@^11.0.2:
|
||||
version "11.1.0"
|
||||
|
@ -4019,7 +4018,7 @@ istanbul-reports@^3.1.3:
|
|||
html-escaper "^2.0.0"
|
||||
istanbul-lib-report "^3.0.0"
|
||||
|
||||
jackspeak@^2.3.6:
|
||||
jackspeak@^2.3.5:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8"
|
||||
integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
|
||||
|
@ -4713,11 +4712,6 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
lru-cache@^10.2.0:
|
||||
version "10.2.2"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878"
|
||||
integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==
|
||||
|
||||
lru-cache@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||
|
@ -4732,6 +4726,11 @@ lru-cache@^6.0.0:
|
|||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
"lru-cache@^9.1.1 || ^10.0.0":
|
||||
version "10.2.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3"
|
||||
integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
|
||||
|
||||
make-dir@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||
|
@ -4891,9 +4890,9 @@ minimatch@^3.0, minimatch@^3.0.4, minimatch@^3.1.1:
|
|||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^9.0.1:
|
||||
version "9.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
|
||||
integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
|
||||
version "9.0.3"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
|
||||
integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
|
@ -4978,7 +4977,7 @@ minipass@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
|
||||
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
|
||||
|
||||
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4:
|
||||
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
|
||||
version "7.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
|
||||
integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
|
||||
|
@ -5278,9 +5277,9 @@ number-is-nan@^1.0.0:
|
|||
integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==
|
||||
|
||||
nwsapi@^2.2.0:
|
||||
version "2.2.9"
|
||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.9.tgz#7f3303218372db2e9f27c27766bcfc59ae7e61c6"
|
||||
integrity sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==
|
||||
version "2.2.7"
|
||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30"
|
||||
integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
|
||||
|
||||
oauth-sign@~0.9.0:
|
||||
version "0.9.0"
|
||||
|
@ -5544,12 +5543,12 @@ path-parse@^1.0.7:
|
|||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
path-scurry@^1.10.2:
|
||||
version "1.10.2"
|
||||
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.2.tgz#8f6357eb1239d5fa1da8b9f70e9c080675458ba7"
|
||||
integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==
|
||||
path-scurry@^1.10.1:
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
|
||||
integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
|
||||
dependencies:
|
||||
lru-cache "^10.2.0"
|
||||
lru-cache "^9.1.1 || ^10.0.0"
|
||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
|
||||
path-type@^3.0.0:
|
||||
|
@ -5689,9 +5688,9 @@ q@^1.5.1:
|
|||
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
|
||||
|
||||
qs@^6.9.4:
|
||||
version "6.12.1"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a"
|
||||
integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==
|
||||
version "6.12.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.0.tgz#edd40c3b823995946a8a0b1f208669c7a200db77"
|
||||
integrity sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==
|
||||
dependencies:
|
||||
side-channel "^1.0.6"
|
||||
|
||||
|
@ -6066,7 +6065,7 @@ safe-regex-test@^1.0.3:
|
|||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
salty-crypto@0.3, salty-crypto@^0.3.1:
|
||||
salty-crypto@0.3, salty-crypto@0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/salty-crypto/-/salty-crypto-0.3.1.tgz#1242cd948d8152aff104d0945980996b1602ba0e"
|
||||
integrity sha512-dCbF8/UzMV8oXPmMCHWzSp7u8G6NA+pHbaFBVqVgLVBiyxuwVn9iPbyt9WXT0EoXfL9sKt7U1mV+bgsGw5cV7A==
|
||||
|
@ -6212,9 +6211,9 @@ socks-proxy-agent@^6.0.0:
|
|||
socks "^2.6.2"
|
||||
|
||||
socks@^2.3.3, socks@^2.6.2:
|
||||
version "2.8.3"
|
||||
resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5"
|
||||
integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==
|
||||
version "2.8.1"
|
||||
resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.1.tgz#22c7d9dd7882649043cba0eafb49ae144e3457af"
|
||||
integrity sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==
|
||||
dependencies:
|
||||
ip-address "^9.0.5"
|
||||
smart-buffer "^4.2.0"
|
||||
|
@ -6411,7 +6410,7 @@ string.prototype.trimend@^1.0.8:
|
|||
define-properties "^1.2.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.trimstart@^1.0.8:
|
||||
string.prototype.trimstart@^1.0.7:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
|
||||
integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
|
||||
|
@ -6592,9 +6591,9 @@ terminal-link@^2.0.0:
|
|||
supports-hyperlinks "^2.0.0"
|
||||
|
||||
terser@^5.0.0:
|
||||
version "5.31.0"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1"
|
||||
integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==
|
||||
version "5.29.2"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.29.2.tgz#c17d573ce1da1b30f21a877bffd5655dd86fdb35"
|
||||
integrity sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==
|
||||
dependencies:
|
||||
"@jridgewell/source-map" "^0.3.3"
|
||||
acorn "^8.8.2"
|
||||
|
@ -6665,9 +6664,9 @@ to-regex-range@^5.0.1:
|
|||
is-number "^7.0.0"
|
||||
|
||||
tough-cookie@^4.0.0:
|
||||
version "4.1.4"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36"
|
||||
integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
|
||||
integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
|
||||
dependencies:
|
||||
psl "^1.1.33"
|
||||
punycode "^2.1.1"
|
||||
|
@ -6859,7 +6858,7 @@ typed-array-byte-offset@^1.0.2:
|
|||
has-proto "^1.0.3"
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
typed-array-length@^1.0.6:
|
||||
typed-array-length@^1.0.5:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3"
|
||||
integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
|
||||
|
@ -6974,11 +6973,11 @@ upath@^2.0.1:
|
|||
integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==
|
||||
|
||||
update-browserslist-db@^1.0.13:
|
||||
version "1.0.14"
|
||||
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.14.tgz#46a9367c323f8ade9a9dddb7f3ae7814b3a0b31c"
|
||||
integrity sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==
|
||||
version "1.0.13"
|
||||
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
|
||||
integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
|
||||
dependencies:
|
||||
escalade "^3.1.2"
|
||||
escalade "^3.1.1"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
uri-js@^4.2.2:
|
||||
|
|
Loading…
Reference in New Issue