New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

reactive-vscode

Package Overview
Dependencies
Maintainers
0
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reactive-vscode - npm Package Compare versions

Comparing version 0.2.0-beta.7 to 0.2.0-beta.8

142

dist/index.d.ts

@@ -19,2 +19,3 @@ /// <reference types="vscode" />

import { ExtensionTerminalOptions } from 'vscode';
import { FileSystemWatcher } from 'vscode';
import { FoldingRangeProvider } from 'vscode';

@@ -28,2 +29,5 @@ import { GlobPattern } from 'vscode';

import { OutputChannel } from 'vscode';
import { QuickInputButton } from 'vscode';
import { QuickPickItem } from 'vscode';
import { QuickPickItemButtonEvent } from 'vscode';
import { Range } from 'vscode';

@@ -228,2 +232,76 @@ import { Ref } from '@reactive-vscode/reactivity';

export declare interface QuickPickOptions<T extends QuickPickItem> {
/**
* Items to pick from. This can be read and updated by the extension.
*/
items?: MaybeRefOrGetter<readonly T[]>;
/**
* Buttons for actions in the UI.
*/
buttons?: MaybeRefOrGetter<readonly QuickInputButton[]>;
/**
* An optional title.
*/
title?: MaybeRefOrGetter<string | undefined>;
/**
* An optional current step count.
*/
step?: MaybeRefOrGetter<number | undefined>;
/**
* An optional total step count.
*/
totalSteps?: MaybeRefOrGetter<number | undefined>;
/**
* If the UI should allow for user input. Defaults to true.
*
* Change this to false, e.g., while validating user input or
* loading data for the next step in user input.
*/
enabled?: MaybeRefOrGetter<boolean>;
/**
* If the UI should show a progress indicator. Defaults to false.
*
* Change this to true, e.g., while loading more data or validating
* user input.
*/
busy?: MaybeRefOrGetter<boolean>;
/**
* If the UI should stay open even when loosing UI focus. Defaults to false.
* This setting is ignored on iPad and is always false.
*/
ignoreFocusOut?: MaybeRefOrGetter<boolean>;
/**
* Optional placeholder shown in the filter textbox when no filter has been entered.
*/
placeholder?: MaybeRefOrGetter<string | undefined>;
/**
* If multiple items can be selected at the same time. Defaults to false.
*/
canSelectMany?: MaybeRefOrGetter<boolean>;
/**
* If the filter text should also be matched against the description of the items. Defaults to false.
*/
matchOnDescription?: MaybeRefOrGetter<boolean>;
/**
* If the filter text should also be matched against the detail of the items. Defaults to false.
*/
matchOnDetail?: MaybeRefOrGetter<boolean>;
/**
* An optional flag to maintain the scroll position of the quick pick when the quick pick items are updated. Defaults to false.
*/
keepScrollPosition?: MaybeRefOrGetter<boolean>;
/**
* Initial value of the filter text.
*/
value?: string;
/**
* Initial active items. This can be read and updated by the extension.
*/
activeItems?: readonly T[];
/**
* Initial selected items. This can be read and updated by the extension.
*/
selectedItems?: readonly T[];
}
export declare type TextEditorCommandCallback = (textEditor: TextEditor, edit: TextEditorEdit, ...args: any[]) => void;

@@ -292,2 +370,3 @@

* @reactive `extensions.all`
* @category extension
*/

@@ -364,3 +443,3 @@ export declare const useAllExtensions: () => ComputedRef<readonly Extension<any>[]>;

*/
export declare function useEvent<T>(event: Event_2<T>, listeners?: ((e: T) => any)[]): Event_2<T>;
export declare function useEvent<T>(event: Event_2<T>, listeners?: ((e: T) => any)[]): (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable_2[]) => void;

@@ -382,2 +461,13 @@ /**

/**
* Get a reactive secret value from the extension's secrets.
*
* @reactive `ExtensionContext.secrets`
* @category extension
*/
export declare function useExtensionSecret(key: string): Promise<Ref<string | undefined> & {
set: (newValue: string) => Promise<void>;
remove: () => Promise<void>;
}>;
/**
* @reactive `tasks.fetchTasks`

@@ -414,13 +504,13 @@ */

export declare interface UseFSWatcher {
readonly watchers: ShallowReactive<Map<GlobPattern, FileSystemWatcher>>;
readonly onDidCreate: Event_2<Uri>;
readonly onDidChange: Event_2<Uri>;
readonly onDidDelete: Event_2<Uri>;
}
/**
* @reactive `workspace.createFileSystemWatcher`
*/
export declare function useFsWatcher(globPattern: GlobPattern, ignoreCreateEvents?: boolean | undefined, ignoreChangeEvents?: boolean | undefined, ignoreDeleteEvents?: boolean | undefined): {
onDidCreate: Event_2<Uri>;
onDidChange: Event_2<Uri>;
onDidDelete: Event_2<Uri>;
ignoreCreateEvents: boolean;
ignoreChangeEvents: boolean;
ignoreDeleteEvents: boolean;
};
export declare function useFsWatcher(globPattern: MaybeRefOrGetter<GlobPattern | GlobPattern[]>, ignoreCreateEvents?: MaybeNullableRefOrGetter<boolean>, ignoreChangeEvents?: MaybeNullableRefOrGetter<boolean>, ignoreDeleteEvents?: MaybeNullableRefOrGetter<boolean>): UseFSWatcher;

@@ -509,2 +599,36 @@ /**

/**
* Creates a customizable quick pick UI.
*
* @reactive `window.createQuickPick`
*/
export declare function useQuickPick<T extends QuickPickItem>(options?: QuickPickOptions<T>): {
onDidChangeActive: (listener: (e: readonly T[]) => any, thisArgs?: any, disposables?: Disposable_2[] | undefined) => void;
onDidChangeSelection: (listener: (e: readonly T[]) => any, thisArgs?: any, disposables?: Disposable_2[] | undefined) => void;
onDidAccept: (listener: (e: void) => any, thisArgs?: any, disposables?: Disposable_2[] | undefined) => void;
onDidHide: (listener: (e: void) => any, thisArgs?: any, disposables?: Disposable_2[] | undefined) => void;
onDidTriggerButton: (listener: (e: QuickInputButton) => any, thisArgs?: any, disposables?: Disposable_2[] | undefined) => void;
onDidChangeValue: (listener: (e: string) => any, thisArgs?: any, disposables?: Disposable_2[] | undefined) => void;
value: ShallowRef<string>;
activeItems: ShallowRef<readonly T[]>;
selectedItems: ShallowRef<readonly T[]>;
placeholder: string | undefined;
buttons: readonly QuickInputButton[];
onDidTriggerItemButton: Event_2<QuickPickItemButtonEvent<T>>;
items: readonly T[];
canSelectMany: boolean;
matchOnDescription: boolean;
matchOnDetail: boolean;
keepScrollPosition?: boolean | undefined;
title: string | undefined;
step: number | undefined;
totalSteps: number | undefined;
enabled: boolean;
busy: boolean;
ignoreFocusOut: boolean;
show(): void;
hide(): void;
dispose(): void;
};
/**
* @reactive `window.createStatusBarItem`

@@ -511,0 +635,0 @@ */

748

dist/index.js

@@ -1,16 +0,16 @@

import { getCurrentScope as L, onScopeDispose as W, shallowRef as l, effectScope as q, computed as f, reactive as J, toValue as a, watchEffect as m, watch as b, ref as E, shallowReactive as K, toRaw as z, isRef as Y } from "@reactive-vscode/reactivity";
import { getCurrentScope as O, onScopeDispose as V, shallowRef as d, effectScope as K, computed as v, reactive as Q, toValue as r, watchEffect as C, watch as D, ref as x, shallowReactive as F, toRaw as z, isRef as Y } from "@reactive-vscode/reactivity";
export * from "@reactive-vscode/reactivity";
import { workspace as C, commands as k, window as c, debug as V, extensions as R, comments as G, env as T, EventEmitter as F, tasks as D, Uri as Q, languages as X, ColorThemeKind as A, l10n as N } from "vscode";
function Z(e) {
return L() ? (W(e), !0) : !1;
import { workspace as w, commands as y, window as c, debug as I, extensions as R, comments as G, env as S, EventEmitter as L, tasks as p, Uri as X, languages as Z, ColorThemeKind as P, l10n as N } from "vscode";
function _(e) {
return O() ? (V(e), !0) : !1;
}
function O(e, t) {
function W(e, t) {
const n = /* @__PURE__ */ new Map();
return (...r) => {
const i = t(...r);
return (...a) => {
const i = t(...a);
let o = n.get(i);
return o ? o.refCount++ : (o = {
data: e(...r),
data: e(...a),
refCount: 1
}, n.set(i, o)), Z(() => {
}, n.set(i, o)), _(() => {
--o.refCount === 0 && n.delete(i);

@@ -20,3 +20,3 @@ }), o.data;

}
function h(e) {
function m(e) {
let t;

@@ -29,45 +29,45 @@ return () => t ?? (t = e());

}
const x = l(null), y = q();
const E = d(null), A = K();
function he(e) {
return {
activate: (t) => (x.value = t, y.run(() => (I.map((n) => n(t)), e()))),
activate: (t) => (E.value = t, A.run(() => (M.map((n) => n(t)), e()))),
deactivate: () => {
$.map((t) => t()), y.stop();
$.map((t) => t()), A.stop();
}
};
}
const I = [];
function P(e) {
x.value ? e(x.value) : I.push(e);
const M = [];
function j(e) {
E.value ? e(E.value) : M.push(e);
}
function _(e, t, n) {
const r = !e, i = C.getConfiguration(r ? void 0 : e, n);
function o(d, v) {
const g = l(v), S = f({
get: () => g.value,
set: (w) => {
g.value = w, i.update(d, w);
function ee(e, t, n) {
const a = !e, i = w.getConfiguration(a ? void 0 : e, n);
function o(l, f) {
const h = d(f), b = v({
get: () => h.value,
set: (g) => {
h.value = g, i.update(l, g);
}
});
return S.update = async (w, H, U) => {
await i.update(d, w, H, U), S.value = w;
}, S.set = (w) => {
g.value = w;
}, S;
return b.update = async (g, U, J) => {
await i.update(l, g, U, J), b.value = g;
}, b.set = (g) => {
h.value = g;
}, b;
}
const s = Object.fromEntries(
Object.keys(t).map((d) => [d, o(d, i.get(d))])
Object.keys(t).map((l) => [l, o(l, i.get(l))])
);
return P(() => {
u(C.onDidChangeConfiguration(
r ? (d) => {
const v = C.getConfiguration();
for (const g in t)
d.affectsConfiguration(g) && s[g].set(v.get(g));
} : (d) => {
if (!d.affectsConfiguration(e))
return j(() => {
u(w.onDidChangeConfiguration(
a ? (l) => {
const f = w.getConfiguration();
for (const h in t)
l.affectsConfiguration(h) && s[h].set(f.get(h));
} : (l) => {
if (!l.affectsConfiguration(e))
return;
const v = C.getConfiguration(e);
for (const g in t)
d.affectsConfiguration(`${e}.${g}`) && s[g].set(v.get(g));
const f = w.getConfiguration(e);
for (const h in t)
l.affectsConfiguration(`${e}.${h}`) && s[h].set(f.get(h));
}

@@ -78,10 +78,10 @@ ));

function me(e, t, n) {
const r = _(e, t, n);
return J({
...r,
$update(i, o, s, d) {
return r[i].update(o, s, d);
const a = ee(e, t, n);
return Q({
...a,
$update(i, o, s, l) {
return a[i].update(o, s, l);
},
$set(i, o) {
return r[i].set(o);
return a[i].set(o);
}

@@ -91,10 +91,10 @@ });

function Ce(e, t) {
const n = l(null), r = [], i = (o) => (...s) => n.value ? n.value[o](...s) : (r.push([o, s]), null);
return P(() => {
n.value = se(e, t);
for (const [o, s] of r)
const n = d(null), a = [], i = (o) => (...s) => n.value ? n.value[o](...s) : (a.push([o, s]), null);
return j(() => {
n.value = ue(e, t);
for (const [o, s] of a)
n.value[o](...s);
}), {
logger: n,
outputChannel: f(() => {
outputChannel: v(() => {
var o;

@@ -115,6 +115,6 @@ return (o = n.value) == null ? void 0 : o.outputChannel;

function be(e, ...t) {
return k.executeCommand(e, ...t);
return y.executeCommand(e, ...t);
}
function ee(e, t = !1) {
const n = x.value;
function te(e, t = !1) {
const n = E.value;
if (!n && !t)

@@ -125,19 +125,19 @@ throw new Error("Cannot get absolute path because the extension is not activated yet");

function we(e, t = !1) {
return f(() => ee(a(e), t));
return v(() => te(r(e), t));
}
function u(e) {
return (L() ?? y).cleanups.push(e.dispose.bind(e)), e;
return (O() ?? A).cleanups.push(e.dispose.bind(e)), e;
}
const te = h(() => {
const e = l(c.activeColorTheme);
const ne = m(() => {
const e = d(c.activeColorTheme);
return u(c.onDidChangeActiveColorTheme((t) => {
e.value = t;
})), e;
}), Te = h(() => {
const e = l(V.activeDebugSession);
return u(V.onDidChangeActiveDebugSession((t) => {
}), De = m(() => {
const e = d(I.activeDebugSession);
return u(I.onDidChangeActiveDebugSession((t) => {
e.value = t;
})), f(() => e.value);
}), ne = h(() => {
const e = l(c.activeTextEditor);
})), v(() => e.value);
}), ae = m(() => {
const e = d(c.activeTextEditor);
return u(c.onDidChangeActiveTextEditor((t) => {

@@ -147,35 +147,35 @@ e.value = t;

});
function re(e, t, n) {
const r = "key" in t ? t : c.createTextEditorDecorationType(t);
m(() => {
function ie(e, t, n) {
const a = "key" in t ? t : c.createTextEditorDecorationType(t);
C(() => {
var i;
(i = a(e)) == null || i.setDecorations(r, a(n));
(i = r(e)) == null || i.setDecorations(a, r(n));
});
}
function De(e, t) {
const n = ne();
re(n, e, t);
function Te(e, t) {
const n = ae();
ie(n, e, t);
}
const Se = h(() => {
const e = l(c.activeNotebookEditor);
const Se = m(() => {
const e = d(c.activeNotebookEditor);
return u(c.onDidChangeActiveNotebookEditor((t) => {
e.value = t;
})), e;
}), pe = h(() => {
const e = l(c.activeTerminal);
}), pe = m(() => {
const e = d(c.activeTerminal);
return u(c.onDidChangeActiveTerminal((t) => {
e.value = t;
})), e;
}), xe = h(() => {
const e = l(R.all);
}), Ee = m(() => {
const e = d(R.all);
return u(R.onDidChange(() => {
e.value = R.all;
})), f(() => e.value);
})), v(() => e.value);
});
function ie(e, t) {
u(k.registerCommand(e, t));
function re(e, t) {
u(y.registerCommand(e, t));
}
function Ee(e) {
function xe(e) {
for (const [t, n] of Object.entries(e))
n && ie(t, n);
n && re(t, n);
}

@@ -185,25 +185,25 @@ function ke(e, t) {

}
function M(e) {
function B(e) {
var n;
const t = l((n = a(e)) == null ? void 0 : n.state);
return b(e, () => {
var r;
t.value = (r = a(e)) == null ? void 0 : r.state;
}), u(c.onDidChangeTerminalState((r) => {
r === a(e) && (t.value = r.state);
})), f(() => t.value);
const t = d((n = r(e)) == null ? void 0 : n.state);
return D(e, () => {
var a;
t.value = (a = r(e)) == null ? void 0 : a.state;
}), u(c.onDidChangeTerminalState((a) => {
a === r(e) && (t.value = a.state);
})), v(() => t.value);
}
function Re(...e) {
const t = E(null);
function ye(...e) {
const t = x(null);
function n() {
return !!t.value && t.value.exitStatus == null;
}
function r() {
function a() {
return n() ? t.value : t.value = c.createTerminal(...e);
}
function i(d) {
r().sendText(d);
function i(l) {
a().sendText(l);
}
function o() {
r().show();
a().show();
}

@@ -213,3 +213,3 @@ function s() {

}
return W(s), {
return V(s), {
terminal: t,

@@ -220,79 +220,91 @@ getIsActive: n,

close: s,
state: M(t)
state: B(t)
};
}
const ye = h(() => {
const e = l(T.shell);
return u(T.onDidChangeShell((t) => {
const Re = m(() => {
const e = d(S.shell);
return u(S.onDidChangeShell((t) => {
e.value = t;
})), f(() => e.value);
})), v(() => e.value);
});
function Ve(e) {
function Ae(e) {
var n;
const t = l((n = a(e)) == null ? void 0 : n.getText());
return m(() => {
var r;
t.value = (r = a(e)) == null ? void 0 : r.getText();
}), u(C.onDidChangeTextDocument((r) => {
r.document === a(e) && (t.value = r.document.getText());
const t = d((n = r(e)) == null ? void 0 : n.getText());
return C(() => {
var a;
t.value = (a = r(e)) == null ? void 0 : a.getText();
}), u(w.onDidChangeTextDocument((a) => {
a.document === r(e) && (t.value = a.document.getText());
})), t;
}
function p(e, t = []) {
const n = (r, i, o) => u(e(r, i, o));
for (const r of t)
n(r);
return n;
function T(e, t) {
const n = (a, i, o) => {
u(e(a, i, o));
};
return t == null || t.forEach((a) => n(a)), n;
}
function ae(e, t = []) {
const n = Array.isArray(e) ? e : t ?? [], r = u(Array.isArray(e) || e == null ? new F() : e), i = p(r.event, n);
function k(e, t = []) {
const n = Array.isArray(e) ? e : t ?? [], a = u(Array.isArray(e) || e == null ? new L() : e), i = T(a.event, n);
for (const o of n)
i(o);
return {
event: r.event,
fire: r.fire.bind(r),
event: a.event,
fire: a.fire.bind(a),
addListener: i
};
}
function Ae(e) {
return f(() => D.fetchTasks(a(e)));
async function Ve(e) {
const t = E.value.secrets, n = x(await t.get(e));
return n.set = async (a) => {
n.value = a, await t.store(e, a);
}, n.remove = async () => {
n.value = void 0, await t.delete(e);
}, u(t.onDidChange(async (a) => {
a.key === e && (n.value = await t.get(e));
})), D(n, (a) => {
a === void 0 ? t.delete(e) : t.store(e, a);
}), n;
}
function Ie(e) {
return v(() => p.fetchTasks(r(e)));
}
function oe(e) {
return K({
return F({
get scheme() {
return a(e).scheme;
return r(e).scheme;
},
get authority() {
return a(e).authority;
return r(e).authority;
},
get path() {
return a(e).path;
return r(e).path;
},
get query() {
return a(e).query;
return r(e).query;
},
get fragment() {
return a(e).fragment;
return r(e).fragment;
},
get fsPath() {
return a(e).fsPath;
return r(e).fsPath;
},
with(t) {
return a(e).with(t);
return r(e).with(t);
},
toString() {
return a(e).toString();
return r(e).toString();
},
toJSON() {
return a(e).toJSON();
return r(e).toJSON();
}
});
}
function Ne(e) {
return oe(() => Q.file(a(e)));
function Pe(e) {
return oe(() => X.file(r(e)));
}
function Le(e, t) {
const n = new F(), r = l();
m(() => {
r.value && n.fire(), r.value = a(t);
}), u(X.registerFoldingRangeProvider(
function Ne(e, t) {
const n = new L(), a = d();
C(() => {
a.value && n.fire(), a.value = r(t);
}), u(Z.registerFoldingRangeProvider(
e,

@@ -302,4 +314,4 @@ {

provideFoldingRanges(i, o, s) {
var d;
return (d = r.value) == null ? void 0 : d.call(r, i, o, s);
var l;
return (l = a.value) == null ? void 0 : l.call(a, i, o, s);
}

@@ -309,38 +321,49 @@ }

}
function We(e, t, n, r) {
const i = u(C.createFileSystemWatcher(e, t, n, r));
return {
...i,
onDidCreate: p(i.onDidCreate),
onDidChange: p(i.onDidChange),
onDidDelete: p(i.onDidDelete)
function Oe(e, t, n, a) {
const i = F(/* @__PURE__ */ new Map()), o = k(), s = k(), l = k();
return C(() => {
const f = r(e), h = Array.isArray(f) ? f : [f];
for (const [b, g] of i)
h.includes(b) || g.dispose();
for (const b of h)
if (!i.has(b)) {
const g = w.createFileSystemWatcher(
b,
r(t) || !1,
r(n) || !1,
r(a) || !1
);
g.onDidCreate(o.fire), g.onDidChange(s.fire), g.onDidDelete(l.fire);
}
}), V(() => {
for (const f of i.values())
f.dispose();
}), {
watchers: i,
onDidCreate: o.event,
onDidChange: s.event,
onDidDelete: l.event
};
}
const Fe = h(() => {
const e = te();
return f(() => e.value.kind === A.Dark || e.value.kind === A.HighContrast);
}), Oe = h(() => {
const e = l(T.isTelemetryEnabled);
return u(T.onDidChangeTelemetryEnabled((t) => {
const Fe = m(() => {
const e = ne();
return v(() => e.value.kind === P.Dark || e.value.kind === P.HighContrast);
}), Le = m(() => {
const e = d(S.isTelemetryEnabled);
return u(S.onDidChangeTelemetryEnabled((t) => {
e.value = t;
})), f(() => e.value);
})), v(() => e.value);
});
function $e(e, ...t) {
return f(() => typeof t[0] == "object" ? N.t(a(e), z(t[0])) : N.t(a(e), ...t.map(a)));
function We(e, ...t) {
return v(() => typeof t[0] == "object" ? N.t(r(e), z(t[0])) : N.t(r(e), ...t.map(r)));
}
const Ie = h(() => {
const e = l(T.logLevel);
return u(T.onDidChangeLogLevel((t) => {
e.value = t;
})), f(() => e.value);
});
function ue(e, t) {
function se(e, t) {
return u(c.createOutputChannel(e, t));
}
function Pe(e) {
const t = /* @__PURE__ */ new Date(), n = String(t.getFullYear()).padStart(4, "0"), r = String(t.getMonth() + 1).padStart(2, "0"), i = String(t.getDate()).padStart(2, "0"), o = String(t.getHours()).padStart(2, "0"), s = String(t.getMinutes()).padStart(2, "0"), d = String(t.getSeconds()).padStart(2, "0"), v = String(t.getMilliseconds()).padStart(3, "0");
return `${n}-${r}-${i} ${o}:${s}:${d}.${v} [${e}] `;
function $e(e) {
const t = /* @__PURE__ */ new Date(), n = String(t.getFullYear()).padStart(4, "0"), a = String(t.getMonth() + 1).padStart(2, "0"), i = String(t.getDate()).padStart(2, "0"), o = String(t.getHours()).padStart(2, "0"), s = String(t.getMinutes()).padStart(2, "0"), l = String(t.getSeconds()).padStart(2, "0"), f = String(t.getMilliseconds()).padStart(3, "0");
return `${n}-${a}-${i} ${o}:${s}:${l}.${f} [${e}] `;
}
function se(e, t = {}) {
const n = t.outputChannel ?? ue(e), r = (i) => (...o) => {
function ue(e, t = {}) {
const n = t.outputChannel ?? se(e), a = (i) => (...o) => {
var s;

@@ -351,6 +374,6 @@ n.appendLine((((s = t.getPrefix) == null ? void 0 : s.call(t, i)) ?? "") + o.join(" "));

outputChannel: n,
createLoggerFunc: r,
info: r("INFO"),
warn: r("WARN"),
error: r("ERROR"),
createLoggerFunc: a,
info: a("INFO"),
warn: a("WARN"),
error: a("ERROR"),
append: n.append.bind(n),

@@ -364,24 +387,30 @@ appendLine: n.appendLine.bind(n),

}
const Me = m(() => {
const e = d(S.logLevel);
return u(S.onDidChangeLogLevel((t) => {
e.value = t;
})), v(() => e.value);
});
function ce(e) {
var n;
const t = l(((n = a(e)) == null ? void 0 : n.selections) ?? []);
return b(e, () => {
var r;
t.value = ((r = a(e)) == null ? void 0 : r.selections) ?? [];
}), u(c.onDidChangeNotebookEditorSelection((r) => {
r.notebookEditor === a(e) && (t.value = r.selections);
})), f({
const t = d(((n = r(e)) == null ? void 0 : n.selections) ?? []);
return D(e, () => {
var a;
t.value = ((a = r(e)) == null ? void 0 : a.selections) ?? [];
}), u(c.onDidChangeNotebookEditorSelection((a) => {
a.notebookEditor === r(e) && (t.value = a.selections);
})), v({
get() {
return t.value;
},
set(r) {
t.value = r;
const i = a(e);
i && (i.selections = r);
set(a) {
t.value = a;
const i = r(e);
i && (i.selections = a);
}
});
}
function Me(e) {
function je(e) {
const t = ce(e);
return f({
return v({
get() {

@@ -395,14 +424,14 @@ return t.value[0];

}
function je(e) {
function Be(e) {
var n;
const t = l(((n = a(e)) == null ? void 0 : n.visibleRanges) ?? []);
return b(e, () => {
var r;
t.value = ((r = a(e)) == null ? void 0 : r.visibleRanges) ?? [];
}), u(c.onDidChangeNotebookEditorVisibleRanges((r) => {
r.notebookEditor === a(e) && (t.value = r.visibleRanges);
})), f(() => t.value);
const t = d(((n = r(e)) == null ? void 0 : n.visibleRanges) ?? []);
return D(e, () => {
var a;
t.value = ((a = r(e)) == null ? void 0 : a.visibleRanges) ?? [];
}), u(c.onDidChangeNotebookEditorVisibleRanges((a) => {
a.notebookEditor === r(e) && (t.value = a.visibleRanges);
})), v(() => t.value);
}
const Be = h(() => {
const e = l(c.terminals);
const He = m(() => {
const e = d(c.terminals);
function t() {

@@ -413,7 +442,44 @@ e.value = c.terminals;

});
function He(e) {
function qe(e = {}) {
const t = u(c.createQuickPick()), n = T(t.onDidChangeActive), a = T(t.onDidChangeSelection), i = T(t.onDidAccept), o = T(t.onDidHide), s = T(t.onDidTriggerButton), l = T(t.onDidChangeValue);
[
"items",
"buttons",
"title",
"step",
"totalSteps",
"enabled",
"busy",
"ignoreFocusOut",
"placeholder",
"canSelectMany",
"matchOnDescription",
"matchOnDetail",
"keepScrollPosition"
].forEach((g) => {
e[g] && C(() => t[g] = r(e[g]));
}), e.value && (t.value = e.value);
const f = d(t.value);
l((g) => f.value = g), e.activeItems && (t.activeItems = e.activeItems);
const h = d(t.activeItems);
n((g) => h.value = g), e.selectedItems && (t.selectedItems = e.selectedItems);
const b = d(t.selectedItems);
return a((g) => b.value = g), {
...t,
onDidChangeActive: n,
onDidChangeSelection: a,
onDidAccept: i,
onDidHide: o,
onDidTriggerButton: s,
onDidChangeValue: l,
value: f,
activeItems: h,
selectedItems: b
};
}
function Ue(e) {
const t = u(e.id ? c.createStatusBarItem(e.id, e.alignment, e.priority) : c.createStatusBarItem(e.alignment, e.priority));
function n(r) {
const i = e[r];
i != null && m(() => t[r] = a(i));
function n(a) {
const i = e[a];
i != null && C(() => t[a] = r(i));
}

@@ -430,10 +496,10 @@ return [

}
const Ue = h(() => {
const e = l(D.taskExecutions);
const Je = m(() => {
const e = d(p.taskExecutions);
function t() {
e.value = D.taskExecutions;
e.value = p.taskExecutions;
}
return u(D.onDidStartTask(t)), u(D.onDidEndTask(t)), f(() => e.value);
return u(p.onDidStartTask(t)), u(p.onDidEndTask(t)), v(() => e.value);
});
function qe(...e) {
function Ke(...e) {
const t = u(c.createTerminal(...e));

@@ -457,9 +523,9 @@ return {

hide: t.hide.bind(t),
state: M(t)
state: B(t)
};
}
function le(e, t) {
u(k.registerTextEditorCommand(e, t));
u(y.registerTextEditorCommand(e, t));
}
function Je(e) {
function Qe(e) {
for (const [t, n] of Object.entries(e))

@@ -469,11 +535,11 @@ le(t, n);

function de(e, t) {
var r;
const n = l(((r = a(e)) == null ? void 0 : r.selections) ?? []);
return b(e, () => {
var a;
const n = d(((a = r(e)) == null ? void 0 : a.selections) ?? []);
return D(e, () => {
var i;
n.value = ((i = a(e)) == null ? void 0 : i.selections) ?? [];
n.value = ((i = r(e)) == null ? void 0 : i.selections) ?? [];
}), u(c.onDidChangeTextEditorSelection((i) => {
const o = a(e), s = a(t);
const o = r(e), s = r(t);
i.textEditor === o && (!s || s.includes(i.kind)) && (n.value = i.selections);
})), f({
})), v({
get() {

@@ -484,3 +550,3 @@ return n.value;

n.value = i;
const o = a(e);
const o = r(e);
o && (o.selections = i);

@@ -490,49 +556,49 @@ }

}
function Ke(e, t) {
function ze(e, t) {
const n = de(e, t);
return f({
return v({
get() {
return n.value[0];
},
set(r) {
n.value = n.value.toSpliced(0, 1, r);
set(a) {
n.value = n.value.toSpliced(0, 1, a);
}
});
}
function ze(e) {
function Ye(e) {
var n;
const t = l((n = a(e)) == null ? void 0 : n.viewColumn);
return b(e, () => {
var r;
t.value = (r = a(e)) == null ? void 0 : r.viewColumn;
}), u(c.onDidChangeTextEditorViewColumn((r) => {
r.textEditor === a(e) && (t.value = r.viewColumn);
})), f(() => t.value);
const t = d((n = r(e)) == null ? void 0 : n.viewColumn);
return D(e, () => {
var a;
t.value = (a = r(e)) == null ? void 0 : a.viewColumn;
}), u(c.onDidChangeTextEditorViewColumn((a) => {
a.textEditor === r(e) && (t.value = a.viewColumn);
})), v(() => t.value);
}
function Ye(e) {
function Ge(e) {
var n;
const t = l(((n = a(e)) == null ? void 0 : n.visibleRanges) ?? []);
return b(e, () => {
var r;
t.value = ((r = a(e)) == null ? void 0 : r.visibleRanges) ?? [];
}), u(c.onDidChangeTextEditorVisibleRanges((r) => {
r.textEditor === a(e) && (t.value = r.visibleRanges);
})), f(() => t.value);
const t = d(((n = r(e)) == null ? void 0 : n.visibleRanges) ?? []);
return D(e, () => {
var a;
t.value = ((a = r(e)) == null ? void 0 : a.visibleRanges) ?? [];
}), u(c.onDidChangeTextEditorVisibleRanges((a) => {
a.textEditor === r(e) && (t.value = a.visibleRanges);
})), v(() => t.value);
}
function j(e, t) {
m(() => {
const n = a(e);
n && (n.badge = a(t));
function H(e, t) {
C(() => {
const n = r(e);
n && (n.badge = r(t));
});
}
function B(e, t) {
m(() => {
const n = a(e);
n && (n.title = a(t));
function q(e, t) {
C(() => {
const n = r(e);
n && (n.title = r(t));
});
}
const Ge = O(
const Xe = W(
(e, t, n) => {
const r = ae();
b(t, () => r.fire()), n != null && n.watchSource && b(n.watchSource, () => r.fire());
const a = k();
D(t, () => a.fire()), n != null && n.watchSource && D(n.watchSource, () => a.fire());
const i = /* @__PURE__ */ new WeakMap(), o = u(c.createTreeView(e, {

@@ -542,3 +608,3 @@ ...n,

...n,
onDidChangeTreeData: r.event,
onDidChangeTreeData: a.event,
getTreeItem(s) {

@@ -548,4 +614,4 @@ return s.treeItem;

getChildren(s) {
var d;
return s ? ((d = s.children) == null || d.forEach((v) => i.set(v, s)), s.children) : a(t);
var l;
return s ? ((l = s.children) == null || l.forEach((f) => i.set(f, s)), s.children) : r(t);
},

@@ -557,15 +623,15 @@ getParent(s) {

}));
return n != null && n.title && B(o, n.title), n != null && n.badge && j(o, n.badge), o;
return n != null && n.title && q(o, n.title), n != null && n.badge && H(o, n.badge), o;
},
(e) => e
);
function Qe(e) {
var r;
const t = E((r = a(e)) == null ? void 0 : r.visible);
function Ze(e) {
var a;
const t = x((a = r(e)) == null ? void 0 : a.visible);
function n() {
var i;
t.value = (i = a(e)) == null ? void 0 : i.visible;
t.value = (i = r(e)) == null ? void 0 : i.visible;
}
return m((i) => {
const o = a(e);
return C((i) => {
const o = r(e);
if (o) {

@@ -575,11 +641,11 @@ const s = o.onDidChangeVisibility(n);

}
}), m(n), f(() => !!t.value);
}), C(n), v(() => !!t.value);
}
const Xe = h(() => {
const e = l(c.visibleNotebookEditors);
const _e = m(() => {
const e = d(c.visibleNotebookEditors);
return u(c.onDidChangeVisibleNotebookEditors((t) => {
e.value = t;
})), e;
}), Ze = h(() => {
const e = l(c.visibleTextEditors);
}), et = m(() => {
const e = d(c.visibleTextEditors);
return u(c.onDidChangeVisibleTextEditors((t) => {

@@ -589,16 +655,16 @@ e.value = t;

});
function _e(e, t, n = !0) {
const r = Y(t) ? t : typeof t == "function" ? f(t) : E(t);
return m(() => {
a(n) && k.executeCommand("setContext", e, r.value);
}), r;
function tt(e, t, n = !0) {
const a = Y(t) ? t : typeof t == "function" ? v(t) : x(t);
return C(() => {
r(n) && y.executeCommand("setContext", e, a.value);
}), a;
}
const et = O(
const nt = W(
(e, t, n) => {
const r = l(), i = l();
const a = d(), i = d();
u(c.registerWebviewViewProvider(
e,
{
resolveWebviewView(v, g) {
r.value = v, i.value = g, n != null && n.onDidReceiveMessage && v.webview.onDidReceiveMessage(n.onDidReceiveMessage);
resolveWebviewView(f, h) {
a.value = f, i.value = h, n != null && n.onDidReceiveMessage && f.webview.onDidReceiveMessage(n.onDidReceiveMessage);
}

@@ -612,105 +678,107 @@ },

));
const o = E(0);
const o = x(0);
function s() {
o.value++;
}
if (m(() => {
r.value && (r.value.webview.html = `${a(t)}<!--${o.value}-->`);
if (C(() => {
a.value && (a.value.webview.html = `${r(t)}<!--${o.value}-->`);
}), n != null && n.webviewOptions) {
const v = n.webviewOptions;
m(() => {
r.value && (r.value.webview.options = a(v));
const f = n.webviewOptions;
C(() => {
a.value && (a.value.webview.options = r(f));
});
}
n != null && n.title && B(r, n.title), n != null && n.badge && j(r, n.badge);
function d(v) {
var g;
return (g = r.value) == null ? void 0 : g.webview.postMessage(v);
n != null && n.title && q(a, n.title), n != null && n.badge && H(a, n.badge);
function l(f) {
var h;
return (h = a.value) == null ? void 0 : h.webview.postMessage(f);
}
return { view: r, context: i, postMessage: d, forceRefresh: s };
return { view: a, context: i, postMessage: l, forceRefresh: s };
},
(e) => e
), tt = h(() => {
const e = l(c.state);
), at = m(() => {
const e = d(c.state);
return u(c.onDidChangeWindowState((t) => {
e.value = t;
})), {
focused: f(() => e.value.focused),
active: f(() => e.value.active)
focused: v(() => e.value.focused),
active: v(() => e.value.active)
};
}), nt = h(() => {
const e = l(C.workspaceFolders);
return u(C.onDidChangeWorkspaceFolders(() => {
e.value = C.workspaceFolders;
})), f(() => e.value);
}), it = m(() => {
const e = d(w.workspaceFolders);
return u(w.onDidChangeWorkspaceFolders(() => {
e.value = w.workspaceFolders;
})), v(() => e.value);
});
export {
I as activateCbs,
O as createKeyedComposable,
h as createSingletonComposable,
M as activateCbs,
W as createKeyedComposable,
m as createSingletonComposable,
$ as deactivateCbs,
me as defineConfigObject,
_ as defineConfigs,
ee as defineConfigs,
he as defineExtension,
Ce as defineLogger,
be as executeCommand,
x as extensionContext,
y as extensionScope,
Pe as getDefaultLoggerPrefix,
P as onActivate,
E as extensionContext,
A as extensionScope,
$e as getDefaultLoggerPrefix,
j as onActivate,
ge as onDeactivate,
Z as tryOnScopeDispose,
_ as tryOnScopeDispose,
we as useAbsolutePath,
te as useActiveColorTheme,
Te as useActiveDebugSession,
De as useActiveEditorDecorations,
ne as useActiveColorTheme,
De as useActiveDebugSession,
Te as useActiveEditorDecorations,
Se as useActiveNotebookEditor,
pe as useActiveTerminal,
ne as useActiveTextEditor,
xe as useAllExtensions,
ie as useCommand,
Ee as useCommands,
ae as useActiveTextEditor,
Ee as useAllExtensions,
re as useCommand,
xe as useCommands,
ke as useCommentController,
Re as useControlledTerminal,
ye as useDefaultShell,
ye as useControlledTerminal,
Re as useDefaultShell,
u as useDisposable,
Ve as useDocumentText,
re as useEditorDecorations,
p as useEvent,
ae as useEventEmitter,
Ae as useFetchTasks,
Ne as useFileUri,
Le as useFoldingRangeProvider,
We as useFsWatcher,
Ae as useDocumentText,
ie as useEditorDecorations,
T as useEvent,
k as useEventEmitter,
Ve as useExtensionSecret,
Ie as useFetchTasks,
Pe as useFileUri,
Ne as useFoldingRangeProvider,
Oe as useFsWatcher,
Fe as useIsDarkTheme,
Oe as useIsTelemetryEnabled,
$e as useL10nText,
Ie as useLogLevel,
se as useLogger,
Me as useNotebookEditorSelection,
Le as useIsTelemetryEnabled,
We as useL10nText,
Me as useLogLevel,
ue as useLogger,
je as useNotebookEditorSelection,
ce as useNotebookEditorSelections,
je as useNotebookEditorVisibleRanges,
Be as useOpenedTerminals,
ue as useOutputChannel,
He as useStatusBarItem,
Ue as useTaskExecutions,
qe as useTerminal,
M as useTerminalState,
Be as useNotebookEditorVisibleRanges,
He as useOpenedTerminals,
se as useOutputChannel,
qe as useQuickPick,
Ue as useStatusBarItem,
Je as useTaskExecutions,
Ke as useTerminal,
B as useTerminalState,
le as useTextEditorCommand,
Je as useTextEditorCommands,
Ke as useTextEditorSelection,
Qe as useTextEditorCommands,
ze as useTextEditorSelection,
de as useTextEditorSelections,
ze as useTextEditorViewColumn,
Ye as useTextEditorVisibleRanges,
Ge as useTreeView,
Ye as useTextEditorViewColumn,
Ge as useTextEditorVisibleRanges,
Xe as useTreeView,
oe as useUri,
j as useViewBadge,
B as useViewTitle,
Qe as useViewVisibility,
Xe as useVisibleNotebookEditors,
Ze as useVisibleTextEditors,
_e as useVscodeContext,
et as useWebviewView,
tt as useWindowState,
nt as useWorkspaceFolders
H as useViewBadge,
q as useViewTitle,
Ze as useViewVisibility,
_e as useVisibleNotebookEditors,
et as useVisibleTextEditors,
tt as useVscodeContext,
nt as useWebviewView,
at as useWindowState,
it as useWorkspaceFolders
};
{
"name": "reactive-vscode",
"type": "module",
"version": "0.2.0-beta.7",
"version": "0.2.0-beta.8",
"description": "Develop VSCode extension with Vue Reactivity API",

@@ -40,3 +40,3 @@ "author": "_Kerman <kermanx@qq.com>",

"dependencies": {
"@reactive-vscode/reactivity": "0.2.0-beta.7"
"@reactive-vscode/reactivity": "0.2.0-beta.8"
},

@@ -43,0 +43,0 @@ "devDependencies": {

@@ -15,2 +15,13 @@ # reactive-vscode

### Project Status
Currently, most of the VSCode APIs are covered, and this project has been used in:
- [Slidev for VSCode <sub><sub>![downloads](https://img.shields.io/visual-studio-marketplace/d/antfu.slidev.svg)</sub></sub>](https://github.com/slidevjs/slidev/tree/main/packages/vscode)
- [Iconify IntelliSense <sub><sub>![downloads](https://img.shields.io/visual-studio-marketplace/d/antfu.iconify.svg)</sub></sub>](https://github.com/antfu/vscode-iconify)
The [documentation](https://kermanx.github.io/reactive-vscode/) is complete, and the [VueUse integration](https://kermanx.github.io/reactive-vscode/guide/vueuse.html) is also available.
However, the project is still in beta and may have minor API changes. If you encounter any problems, please feel free to [open an issue](https://github.com/KermanX/reactive-vscode/issues/new).
### Counter Example

@@ -74,3 +85,3 @@

## License
### License

@@ -81,2 +92,4 @@ [MIT](./LICENSE) License © 2024-PRESENT [_Kerman](https://github.com/KermanX)

Source code in [the `./packages/mock` directory](https://github.com/KermanX/reactive-vscode/blob/main/packages/core/src/mock) references the implementation of [`VSCode`](https://github.com/microsoft/vscode). Licensed under a [MIT License](https://github.com/microsoft/vscode/blob/main/LICENSE.txt).
The logo <img src="https://kermanx.github.io/reactive-vscode/logo.svg" width="14"> is modified from [Vue Reactity Artworks](https://github.com/vue-reactivity/art). Licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/).

@@ -83,0 +96,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc