@athrio/loom 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/LanguageLoader-BzlRnQhO.js +5904 -0
- package/dist/LanguageLoader-BzlRnQhO.js.map +1 -0
- package/dist/LanguageLoader-DJZBFaqF.js +3 -0
- package/dist/LanguageService-BTCvgdWm.js +37 -0
- package/dist/LanguageService-BTCvgdWm.js.map +1 -0
- package/dist/LoomFormatter-Bu8L8cdR.js +9385 -0
- package/dist/LoomFormatter-Bu8L8cdR.js.map +1 -0
- package/dist/{LoomServer-mL8VcuCS.js → LoomServer-DXIree_1.js} +185 -6036
- package/dist/LoomServer-DXIree_1.js.map +1 -0
- package/dist/LoomStore-pA-ohGNX.js +163 -0
- package/dist/LoomStore-pA-ohGNX.js.map +1 -0
- package/dist/Runtime-Byw6clui.js +25 -0
- package/dist/Runtime-Byw6clui.js.map +1 -0
- package/dist/Runtime-XT-nb-2w.js +3 -0
- package/dist/{LoomStore-DTpgIJ9l.js → dist-D3YSXNOO.js} +86252 -90655
- package/dist/dist-D3YSXNOO.js.map +1 -0
- package/dist/{main-mXrU4uag.js → main-DIsWd5jt.js} +3 -429
- package/dist/main-DIsWd5jt.js.map +1 -0
- package/dist/main.js +4965 -6608
- package/dist/main.js.map +1 -1
- package/dist/tree-sitter-loom/editors/helix/queries/loom/highlights.scm +120 -0
- package/dist/tree-sitter-loom/editors/helix/queries/loom/injections.scm +413 -0
- package/dist/tree-sitter-loom/queries/highlights.scm +120 -0
- package/dist/tree-sitter-loom/queries/injections.scm +85 -0
- package/dist/tree-sitter-loom/src/parser.c +4689 -0
- package/dist/tree-sitter-loom/src/scanner.c +293 -0
- package/dist/tree-sitter-loom/src/tree_sitter/alloc.h +54 -0
- package/dist/tree-sitter-loom/src/tree_sitter/array.h +330 -0
- package/dist/tree-sitter-loom/src/tree_sitter/parser.h +286 -0
- package/dist/umd-BiUxa7B7.js +432 -0
- package/dist/umd-BiUxa7B7.js.map +1 -0
- package/dist/{volar-service-markdown-C0HvK7Au.js → volar-service-markdown-DeNtSNeO.js} +3 -2
- package/dist/{volar-service-markdown-C0HvK7Au.js.map → volar-service-markdown-DeNtSNeO.js.map} +1 -1
- package/package.json +4 -3
- package/dist/LoomServer-mL8VcuCS.js.map +0 -1
- package/dist/LoomStore-DTpgIJ9l.js.map +0 -1
- package/dist/main-mXrU4uag.js.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Ar as TaggedError, Gi as none, Hi as liftThrowable, Hr as findFirst, Ii as getOrElse, Ji as toArray, Kr as flatMap, Mi as flatMap$1, Nn as gen, Pi as fromNullishOr, Pt as Literals, Ui as map$1, Wi as match, _ as orElse, ar as tryPromise, b as when, fa as pipe, g as exhaustive, jr as taggedEnum, ki as contains, oi as map, qi as some, rr as sync, y as value } from "./dist-D3YSXNOO.js";
|
|
3
|
+
import { execFile } from "node:child_process";
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
5
|
+
import { dirname, join } from "node:path";
|
|
6
|
+
import { promisify } from "node:util";
|
|
7
|
+
Literals([
|
|
8
|
+
"headingTitle",
|
|
9
|
+
"sectionAnchor",
|
|
10
|
+
"warpAnchor",
|
|
11
|
+
"warpDef",
|
|
12
|
+
"specifier",
|
|
13
|
+
"sink",
|
|
14
|
+
"arrow",
|
|
15
|
+
"tilde",
|
|
16
|
+
"prose",
|
|
17
|
+
"frontmatterMembership",
|
|
18
|
+
"frontmatterValue",
|
|
19
|
+
"frontmatterTitle",
|
|
20
|
+
"frontmatterPart",
|
|
21
|
+
"frontmatterPartName",
|
|
22
|
+
"tocPart",
|
|
23
|
+
"tocEntry"
|
|
24
|
+
]);
|
|
25
|
+
var SemanticTokenSchema = Literals([
|
|
26
|
+
"namespace",
|
|
27
|
+
"variable",
|
|
28
|
+
"keyword",
|
|
29
|
+
"string",
|
|
30
|
+
"operator"
|
|
31
|
+
]);
|
|
32
|
+
var profile = (semantic, features) => ({
|
|
33
|
+
semantic,
|
|
34
|
+
features
|
|
35
|
+
});
|
|
36
|
+
var profileOf = (kind) => value(kind).pipe(when("headingTitle", () => profile(some("namespace"), {
|
|
37
|
+
navigation: true,
|
|
38
|
+
structure: true
|
|
39
|
+
})), when("sectionAnchor", () => profile(some("namespace"), {
|
|
40
|
+
navigation: true,
|
|
41
|
+
structure: true,
|
|
42
|
+
verification: true
|
|
43
|
+
})), when("warpAnchor", () => profile(some("variable"), {
|
|
44
|
+
navigation: true,
|
|
45
|
+
verification: true
|
|
46
|
+
})), when("warpDef", () => profile(some("variable"), { navigation: true })), when("specifier", () => profile(some("keyword"), { verification: true })), when("sink", () => profile(some("string"), { verification: true })), when("arrow", () => profile(some("operator"), {})), when("tilde", () => profile(some("operator"), {})), when("prose", () => profile(none(), { structure: true })), when("frontmatterMembership", () => profile(some("namespace"), { structure: true })), when("frontmatterValue", () => profile(some("string"), { structure: true })), when("frontmatterTitle", () => profile(some("namespace"), {
|
|
47
|
+
navigation: true,
|
|
48
|
+
structure: true
|
|
49
|
+
})), when("frontmatterPart", () => profile(some("namespace"), {
|
|
50
|
+
navigation: true,
|
|
51
|
+
structure: true
|
|
52
|
+
})), when("frontmatterPartName", () => profile(some("namespace"), {
|
|
53
|
+
navigation: true,
|
|
54
|
+
structure: true
|
|
55
|
+
})), when("tocPart", () => profile(some("namespace"), {
|
|
56
|
+
navigation: true,
|
|
57
|
+
structure: true
|
|
58
|
+
})), when("tocEntry", () => profile(some("namespace"), {
|
|
59
|
+
navigation: true,
|
|
60
|
+
structure: true,
|
|
61
|
+
verification: true
|
|
62
|
+
})), exhaustive);
|
|
63
|
+
var anchorKind = (warpsInScope, anchor) => warpsInScope.has(anchor.name.value) ? "warpAnchor" : "sectionAnchor";
|
|
64
|
+
var namesOf = (warps) => map(warps, (warp) => warp.name.value);
|
|
65
|
+
var at = (kind, position) => ({
|
|
66
|
+
kind,
|
|
67
|
+
position
|
|
68
|
+
});
|
|
69
|
+
var optSymbol = (kind, token) => toArray(map$1(fromNullishOr(token), (t) => at(kind, t.position)));
|
|
70
|
+
var frontmatterSymbols = (fm) => [
|
|
71
|
+
...optSymbol("frontmatterPart", fm.part),
|
|
72
|
+
...optSymbol("frontmatterPartName", fm.partName),
|
|
73
|
+
...optSymbol("frontmatterMembership", fm.chapter),
|
|
74
|
+
...optSymbol("frontmatterTitle", fm.title),
|
|
75
|
+
...optSymbol("frontmatterValue", fm.package),
|
|
76
|
+
...optSymbol("frontmatterValue", fm.language)
|
|
77
|
+
];
|
|
78
|
+
var tocSymbols = (weft) => [...optSymbol("tocPart", weft.part), ...optSymbol("tocEntry", weft.title)];
|
|
79
|
+
var headingSymbols = (heading) => [
|
|
80
|
+
...toArray(map$1(fromNullishOr(heading.title), (t) => at("headingTitle", t.position))),
|
|
81
|
+
...toArray(map$1(fromNullishOr(heading.specifier), (s) => at("specifier", s.label.position))),
|
|
82
|
+
...toArray(map$1(fromNullishOr(heading.sink), (s) => at("sink", s.position)))
|
|
83
|
+
];
|
|
84
|
+
var delimiterOf = (weft) => value(weft).pipe(when({ type: "ArrowWeft" }, (w) => [at("arrow", w.arrow.position)]), when({ type: "TildeWeft" }, (w) => [at("tilde", w.tilde.position)]), orElse(() => []));
|
|
85
|
+
var sectionSymbols = (section, documentWarps) => {
|
|
86
|
+
const warps = flatMap(section.preamble, (weft) => weft.warps);
|
|
87
|
+
const scope = /* @__PURE__ */ new Set([...documentWarps, ...namesOf(warps)]);
|
|
88
|
+
const anchors = [...flatMap(section.preamble, (weft) => weft.anchors), ...flatMap(section.code, (weft) => weft.anchors)];
|
|
89
|
+
return [
|
|
90
|
+
...headingSymbols(section.heading),
|
|
91
|
+
...map(warps, (warp) => at("warpDef", warp.name.position)),
|
|
92
|
+
...map(anchors, (anchor) => at(anchorKind(scope, anchor), anchor.name.position)),
|
|
93
|
+
...flatMap(section.code, delimiterOf),
|
|
94
|
+
...flatMap(section.entries ?? [], tocSymbols)
|
|
95
|
+
];
|
|
96
|
+
};
|
|
97
|
+
var symbolsOf = (doc) => {
|
|
98
|
+
const warps = flatMap(doc.preamble, (weft) => weft.warps);
|
|
99
|
+
const scope = new Set(namesOf(warps));
|
|
100
|
+
return [
|
|
101
|
+
...flatMap(toArray(fromNullishOr(doc.frontmatter)), frontmatterSymbols),
|
|
102
|
+
...map(warps, (warp) => at("warpDef", warp.name.position)),
|
|
103
|
+
...map(flatMap(doc.preamble, (weft) => weft.anchors), (anchor) => at(anchorKind(scope, anchor), anchor.name.position)),
|
|
104
|
+
...flatMap(doc.sections, (section) => sectionSymbols(section, namesOf(warps)))
|
|
105
|
+
];
|
|
106
|
+
};
|
|
107
|
+
var symbolAt = (doc, offset) => findFirst(symbolsOf(doc), (symbol) => symbol.position.start.offset <= offset && offset <= symbol.position.end.offset);
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region ../loom-lang-services/src/LoomStore.ts
|
|
110
|
+
var run = promisify(execFile);
|
|
111
|
+
var servicePackage = (id) => `@athrio/loom-service-${id}`;
|
|
112
|
+
var workspaceOf = (dir) => {
|
|
113
|
+
if (existsSync(join(dir, ".loom"))) return some(dir);
|
|
114
|
+
const parent = dirname(dir);
|
|
115
|
+
return parent === dir ? none() : workspaceOf(parent);
|
|
116
|
+
};
|
|
117
|
+
var workspaceRoot = (dir) => getOrElse(workspaceOf(dir), () => dir);
|
|
118
|
+
var storeDir = (dir) => process.env.LOOM_HOME === void 0 ? join(workspaceRoot(dir), ".loom", "services") : join(process.env.LOOM_HOME, "services");
|
|
119
|
+
var serviceVersion = "0.0.12";
|
|
120
|
+
var installedVersion = (id, dir) => pipe(liftThrowable(() => readFileSync(join(storeDir(dir), "node_modules", servicePackage(id), "package.json"), "utf8"))(), flatMap$1(liftThrowable((text) => JSON.parse(text))), flatMap$1((manifest) => typeof manifest.version === "string" ? some(manifest.version) : none()));
|
|
121
|
+
var StoreError = class extends TaggedError("StoreError") {};
|
|
122
|
+
var prepareStore = (store) => {
|
|
123
|
+
mkdirSync(store, { recursive: true });
|
|
124
|
+
const manifest = join(store, "package.json");
|
|
125
|
+
if (!existsSync(manifest)) writeFileSync(manifest, `${JSON.stringify({
|
|
126
|
+
name: "loom-services",
|
|
127
|
+
private: true
|
|
128
|
+
}, null, 2)}\n`);
|
|
129
|
+
};
|
|
130
|
+
var ServiceInstall = taggedEnum();
|
|
131
|
+
var addService = (id, dir) => gen(function* () {
|
|
132
|
+
const store = storeDir(dir);
|
|
133
|
+
const installed = installedVersion(id, dir);
|
|
134
|
+
if (contains(installed, "0.0.12")) return ServiceInstall.Current();
|
|
135
|
+
yield* sync(() => prepareStore(store));
|
|
136
|
+
yield* tryPromise({
|
|
137
|
+
try: () => run("npm", [
|
|
138
|
+
"install",
|
|
139
|
+
`${servicePackage(id)}@${serviceVersion}`,
|
|
140
|
+
"--prefix",
|
|
141
|
+
store,
|
|
142
|
+
"--omit=peer",
|
|
143
|
+
"--no-audit",
|
|
144
|
+
"--no-fund"
|
|
145
|
+
]),
|
|
146
|
+
catch: (cause) => new StoreError({
|
|
147
|
+
id,
|
|
148
|
+
cause
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
return match(installed, {
|
|
152
|
+
onNone: () => ServiceInstall.Installed(),
|
|
153
|
+
onSome: (from) => ServiceInstall.Updated({ from })
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
var removeService = (id, dir) => sync(() => rmSync(join(storeDir(dir), "node_modules", servicePackage(id)), {
|
|
157
|
+
recursive: true,
|
|
158
|
+
force: true
|
|
159
|
+
}));
|
|
160
|
+
//#endregion
|
|
161
|
+
export { servicePackage as a, workspaceOf as c, profileOf as d, symbolAt as f, removeService as i, workspaceRoot as l, addService as n, serviceVersion as o, symbolsOf as p, installedVersion as r, storeDir as s, ServiceInstall as t, SemanticTokenSchema as u };
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=LoomStore-pA-ohGNX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoomStore-pA-ohGNX.js","names":[],"sources":["../../loom-ast/src/ast/LoomSymbol.ts","../../loom-lang-services/src/LoomStore.ts"],"sourcesContent":["import { Array, Match, Option, Schema } from 'effect'\nimport { type Position } from '#ast/LoomNode'\nimport {\n type LoomDocument,\n type LoomFrontmatter,\n type LoomHeading,\n type LoomSection,\n} from '#ast/LoomAst'\nimport { type SectionBodyWeft, type TocWeft } from '#ast/Weft'\nimport { type WarpAnchorToken, type WarpToken } from '#ast/LoomTokens'\n\nexport const SymbolKindSchema = Schema.Literals([\n 'headingTitle',\n 'sectionAnchor',\n 'warpAnchor',\n 'warpDef',\n 'specifier',\n 'sink',\n 'arrow',\n 'tilde',\n 'prose',\n 'frontmatterMembership',\n 'frontmatterValue',\n 'frontmatterTitle',\n 'frontmatterPart',\n 'frontmatterPartName',\n 'tocPart',\n 'tocEntry',\n])\nexport type SymbolKind = typeof SymbolKindSchema.Type\n\nexport interface SpanFeatures {\n readonly navigation?: boolean\n readonly semantic?: boolean\n readonly structure?: boolean\n readonly verification?: boolean\n readonly completion?: boolean\n}\n\nexport const SemanticTokenSchema = Schema.Literals([\n 'namespace',\n 'variable',\n 'keyword',\n 'string',\n 'operator',\n])\nexport type SemanticToken = typeof SemanticTokenSchema.Type\n\nexport interface SymbolProfile {\n readonly semantic: Option.Option<SemanticToken>\n readonly features: SpanFeatures\n}\n\nconst profile = (\n semantic: Option.Option<SemanticToken>,\n features: SpanFeatures,\n): SymbolProfile => ({ semantic, features })\n\nexport const profileOf = (kind: SymbolKind): SymbolProfile =>\n Match.value(kind).pipe(\n Match.when('headingTitle', () =>\n profile(Option.some('namespace'), { navigation: true, structure: true }),\n ),\n Match.when('sectionAnchor', () =>\n profile(Option.some('namespace'), {\n navigation: true,\n structure: true,\n verification: true,\n }),\n ),\n Match.when('warpAnchor', () =>\n profile(Option.some('variable'), { navigation: true, verification: true }),\n ),\n Match.when('warpDef', () => profile(Option.some('variable'), { navigation: true })),\n Match.when('specifier', () => profile(Option.some('keyword'), { verification: true })),\n Match.when('sink', () => profile(Option.some('string'), { verification: true })),\n Match.when('arrow', () => profile(Option.some('operator'), {})),\n Match.when('tilde', () => profile(Option.some('operator'), {})),\n Match.when('prose', () => profile(Option.none(), { structure: true })),\n Match.when('frontmatterMembership', () =>\n profile(Option.some('namespace'), { structure: true }),\n ),\n Match.when('frontmatterValue', () => profile(Option.some('string'), { structure: true })),\n Match.when('frontmatterTitle', () =>\n profile(Option.some('namespace'), { navigation: true, structure: true }),\n ),\n Match.when('frontmatterPart', () =>\n profile(Option.some('namespace'), { navigation: true, structure: true }),\n ),\n Match.when('frontmatterPartName', () =>\n profile(Option.some('namespace'), { navigation: true, structure: true }),\n ),\n Match.when('tocPart', () =>\n profile(Option.some('namespace'), { navigation: true, structure: true }),\n ),\n Match.when('tocEntry', () =>\n profile(Option.some('namespace'), {\n navigation: true,\n structure: true,\n verification: true,\n }),\n ),\n Match.exhaustive,\n )\n\nexport interface Symbol {\n readonly kind: SymbolKind\n readonly position: Position\n}\n\nconst anchorKind = (warpsInScope: ReadonlySet<string>, anchor: WarpAnchorToken): SymbolKind =>\n warpsInScope.has(anchor.name.value) ? 'warpAnchor' : 'sectionAnchor'\n\nconst namesOf = (warps: ReadonlyArray<WarpToken>): ReadonlyArray<string> =>\n Array.map(warps, (warp) => warp.name.value)\n\nconst at = (kind: SymbolKind, position: Position): Symbol => ({ kind, position })\n\nconst optSymbol = (\n kind: SymbolKind,\n token: { readonly position: Position } | undefined,\n): ReadonlyArray<Symbol> =>\n Option.toArray(Option.map(Option.fromNullishOr(token), (t) => at(kind, t.position)))\n\nconst frontmatterSymbols = (fm: LoomFrontmatter): ReadonlyArray<Symbol> => [\n ...optSymbol('frontmatterPart', fm.part),\n ...optSymbol('frontmatterPartName', fm.partName),\n ...optSymbol('frontmatterMembership', fm.chapter),\n ...optSymbol('frontmatterTitle', fm.title),\n ...optSymbol('frontmatterValue', fm.package),\n ...optSymbol('frontmatterValue', fm.language),\n]\n\nconst tocSymbols = (weft: TocWeft): ReadonlyArray<Symbol> => [\n ...optSymbol('tocPart', weft.part),\n ...optSymbol('tocEntry', weft.title),\n]\n\nconst headingSymbols = (heading: LoomHeading): ReadonlyArray<Symbol> => [\n ...Option.toArray(\n Option.map(Option.fromNullishOr(heading.title), (t) => at('headingTitle', t.position)),\n ),\n ...Option.toArray(\n Option.map(Option.fromNullishOr(heading.specifier), (s) => at('specifier', s.label.position)),\n ),\n ...Option.toArray(Option.map(Option.fromNullishOr(heading.sink), (s) => at('sink', s.position))),\n]\n\nconst delimiterOf = (weft: SectionBodyWeft): ReadonlyArray<Symbol> =>\n Match.value(weft).pipe(\n Match.when({ type: 'ArrowWeft' }, (w) => [at('arrow', w.arrow.position)]),\n Match.when({ type: 'TildeWeft' }, (w) => [at('tilde', w.tilde.position)]),\n Match.orElse(() => []),\n )\n\nconst sectionSymbols = (\n section: LoomSection,\n documentWarps: ReadonlyArray<string>,\n): ReadonlyArray<Symbol> => {\n const warps = Array.flatMap(section.preamble, (weft) => weft.warps)\n const scope = new Set([...documentWarps, ...namesOf(warps)])\n const anchors = [\n ...Array.flatMap(section.preamble, (weft) => weft.anchors),\n ...Array.flatMap(section.code, (weft) => weft.anchors),\n ]\n return [\n ...headingSymbols(section.heading),\n ...Array.map(warps, (warp) => at('warpDef', warp.name.position)),\n ...Array.map(anchors, (anchor) => at(anchorKind(scope, anchor), anchor.name.position)),\n ...Array.flatMap(section.code, delimiterOf),\n ...Array.flatMap(section.entries ?? [], tocSymbols),\n ]\n}\n\nexport const symbolsOf = (doc: LoomDocument): ReadonlyArray<Symbol> => {\n const warps = Array.flatMap(doc.preamble, (weft) => weft.warps)\n const scope = new Set(namesOf(warps))\n return [\n ...Array.flatMap(Option.toArray(Option.fromNullishOr(doc.frontmatter)), frontmatterSymbols),\n ...Array.map(warps, (warp) => at('warpDef', warp.name.position)),\n ...Array.map(\n Array.flatMap(doc.preamble, (weft) => weft.anchors),\n (anchor) => at(anchorKind(scope, anchor), anchor.name.position),\n ),\n ...Array.flatMap(doc.sections, (section) => sectionSymbols(section, namesOf(warps))),\n ]\n}\n\nexport const symbolAt = (doc: LoomDocument, offset: number): Option.Option<Symbol> =>\n Array.findFirst(\n symbolsOf(doc),\n (symbol) => symbol.position.start.offset <= offset && offset <= symbol.position.end.offset,\n )\n","import { Data, Effect, Option, pipe } from 'effect'\nimport { execFile } from 'node:child_process'\nimport { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'\nimport { dirname, join } from 'node:path'\nimport { promisify } from 'node:util'\n\nconst run = promisify(execFile)\n\nexport const servicePackage = (id: string): string => `@athrio/loom-service-${id}`\n\nexport const workspaceOf = (dir: string): Option.Option<string> => {\n if (existsSync(join(dir, '.loom'))) return Option.some(dir)\n const parent = dirname(dir)\n return parent === dir ? Option.none() : workspaceOf(parent)\n}\n\nexport const workspaceRoot = (dir: string): string => Option.getOrElse(workspaceOf(dir), () => dir)\n\nexport const storeDir = (dir: string): string =>\n process.env.LOOM_HOME === undefined\n ? join(workspaceRoot(dir), '.loom', 'services')\n : join(process.env.LOOM_HOME, 'services')\n\nconst servicePrefix = 'loom-service-'\n\nexport const installedServices = (dir: string): Effect.Effect<ReadonlyArray<string>> =>\n Effect.sync(() => {\n const scope = join(storeDir(dir), 'node_modules', '@athrio')\n if (!existsSync(scope)) return []\n return readdirSync(scope)\n .filter((name) => name.startsWith(servicePrefix))\n .map((name) => name.slice(servicePrefix.length))\n })\n\nexport const serviceVersion = '0.0.12'\n\nexport const installedVersion = (id: string, dir: string): Option.Option<string> =>\n pipe(\n Option.liftThrowable(() =>\n readFileSync(join(storeDir(dir), 'node_modules', servicePackage(id), 'package.json'), 'utf8'),\n )(),\n Option.flatMap(\n Option.liftThrowable((text: string) => JSON.parse(text) as { readonly version?: unknown }),\n ),\n Option.flatMap((manifest) =>\n typeof manifest.version === 'string' ? Option.some(manifest.version) : Option.none(),\n ),\n )\n\nexport class StoreError extends Data.TaggedError('StoreError')<{\n readonly id: string\n readonly cause: unknown\n}> {}\n\nconst prepareStore = (store: string): void => {\n mkdirSync(store, { recursive: true })\n const manifest = join(store, 'package.json')\n if (!existsSync(manifest))\n writeFileSync(\n manifest,\n `${JSON.stringify({ name: 'loom-services', private: true }, null, 2)}\\n`,\n )\n}\n\nexport type ServiceInstall = Data.TaggedEnum<{\n Current: {}\n Installed: {}\n Updated: { readonly from: string }\n}>\nexport const ServiceInstall = Data.taggedEnum<ServiceInstall>()\n\nexport const addService = (id: string, dir: string): Effect.Effect<ServiceInstall, StoreError> =>\n Effect.gen(function* () {\n const store = storeDir(dir)\n const installed = installedVersion(id, dir)\n if (Option.contains(installed, serviceVersion)) return ServiceInstall.Current()\n yield* Effect.sync(() => prepareStore(store))\n yield* Effect.tryPromise({\n try: () =>\n run('npm', [\n 'install',\n `${servicePackage(id)}@${serviceVersion}`,\n '--prefix',\n store,\n '--omit=peer',\n '--no-audit',\n '--no-fund',\n ]),\n catch: (cause) => new StoreError({ id, cause }),\n })\n return Option.match(installed, {\n onNone: () => ServiceInstall.Installed(),\n onSome: (from) => ServiceInstall.Updated({ from }),\n })\n })\n\nexport const removeService = (id: string, dir: string): Effect.Effect<void> =>\n Effect.sync(() =>\n rmSync(join(storeDir(dir), 'node_modules', servicePackage(id)), {\n recursive: true,\n force: true,\n }),\n )\n"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { t as dist_exports } from "./dist-D3YSXNOO.js";
|
|
3
|
+
import { r as LanguageService_exports } from "./LanguageService-BTCvgdWm.js";
|
|
4
|
+
//#region ../loom-lang-services/src/Runtime.ts
|
|
5
|
+
var runtimeKey = "__loomRuntime";
|
|
6
|
+
var runtimeVersion = "1";
|
|
7
|
+
var runtimeSpecifiers = [
|
|
8
|
+
"effect",
|
|
9
|
+
"@athrio/loom-lang-services/LanguageService",
|
|
10
|
+
"typescript"
|
|
11
|
+
];
|
|
12
|
+
var installHostRuntime = (tsdk) => {
|
|
13
|
+
globalThis[runtimeKey] = {
|
|
14
|
+
version: "1",
|
|
15
|
+
modules: {
|
|
16
|
+
effect: dist_exports,
|
|
17
|
+
"@athrio/loom-lang-services/LanguageService": LanguageService_exports,
|
|
18
|
+
typescript: tsdk
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { runtimeVersion as i, runtimeKey as n, runtimeSpecifiers as r, installHostRuntime as t };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=Runtime-Byw6clui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Runtime-Byw6clui.js","names":[],"sources":["../../loom-lang-services/src/Runtime.ts"],"sourcesContent":["export const runtimeKey = '__loomRuntime'\n\nexport const runtimeVersion = '1'\n\nexport const runtimeSpecifiers: ReadonlyArray<string> = [\n 'effect',\n '@athrio/loom-lang-services/LanguageService',\n 'typescript',\n]\n\nimport * as EffectNS from 'effect'\nimport * as LanguageServiceNS from './LanguageService'\n\ninterface HostRuntime {\n readonly version: string\n readonly modules: Record<string, unknown>\n}\n\nexport const installHostRuntime = (tsdk: typeof import('typescript')): void => {\n ;(globalThis as Record<string, unknown>)[runtimeKey] = {\n version: runtimeVersion,\n modules: {\n effect: EffectNS,\n '@athrio/loom-lang-services/LanguageService': LanguageServiceNS,\n typescript: tsdk,\n },\n } satisfies HostRuntime\n}\n"],"mappings":";;;;AAAA,IAAa,aAAa;AAE1B,IAAa,iBAAiB;AAE9B,IAAa,oBAA2C;CACtD;CACA;CACA;AACF;AAUA,IAAa,sBAAsB,SAA4C;CAC5E,WAAwC,cAAc;EACrD,SAAA;EACA,SAAS;GACP,QAAQ;GACR,8CAA8C;GAC9C,YAAY;EACd;CACF;AACF"}
|