@athrio/loom 0.0.12 → 0.0.14

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.
Files changed (31) hide show
  1. package/dist/{LanguageLoader-BzlRnQhO.js → LanguageLoader-BAPSmTv0.js} +19 -11
  2. package/dist/{LanguageLoader-BzlRnQhO.js.map → LanguageLoader-BAPSmTv0.js.map} +1 -1
  3. package/dist/LanguageLoader-BF5irHbe.js +3 -0
  4. package/dist/{LanguageService-BTCvgdWm.js → LanguageService-C3_9lh8E.js} +2 -2
  5. package/dist/{LanguageService-BTCvgdWm.js.map → LanguageService-C3_9lh8E.js.map} +1 -1
  6. package/dist/{LoomFormatter-Bu8L8cdR.js → LoomFormatter-CcAXsbSL.js} +13 -5
  7. package/dist/{LoomFormatter-Bu8L8cdR.js.map → LoomFormatter-CcAXsbSL.js.map} +1 -1
  8. package/dist/{LoomServer-DXIree_1.js → LoomServer-DpleSkxj.js} +28 -12
  9. package/dist/{LoomServer-DXIree_1.js.map → LoomServer-DpleSkxj.js.map} +1 -1
  10. package/dist/{LoomStore-pA-ohGNX.js → LoomStore-Bcx6V9HH.js} +106 -22
  11. package/dist/LoomStore-Bcx6V9HH.js.map +1 -0
  12. package/dist/{Runtime-XT-nb-2w.js → Runtime-B-1DeuX_.js} +1 -1
  13. package/dist/{Runtime-Byw6clui.js → Runtime-CE2kCsKX.js} +3 -3
  14. package/dist/{Runtime-Byw6clui.js.map → Runtime-CE2kCsKX.js.map} +1 -1
  15. package/dist/_virtual_tree-sitter-loom-CFLf84Ng.js +15 -0
  16. package/dist/{dist-D3YSXNOO.js → dist-NXZtp5_0.js} +2 -2
  17. package/dist/{dist-D3YSXNOO.js.map → dist-NXZtp5_0.js.map} +1 -1
  18. package/dist/main.js +375 -52
  19. package/dist/main.js.map +1 -1
  20. package/package.json +3 -1
  21. package/dist/LanguageLoader-DJZBFaqF.js +0 -3
  22. package/dist/LoomStore-pA-ohGNX.js.map +0 -1
  23. package/dist/tree-sitter-loom/editors/helix/queries/loom/highlights.scm +0 -120
  24. package/dist/tree-sitter-loom/editors/helix/queries/loom/injections.scm +0 -413
  25. package/dist/tree-sitter-loom/queries/highlights.scm +0 -120
  26. package/dist/tree-sitter-loom/queries/injections.scm +0 -85
  27. package/dist/tree-sitter-loom/src/parser.c +0 -4689
  28. package/dist/tree-sitter-loom/src/scanner.c +0 -293
  29. package/dist/tree-sitter-loom/src/tree_sitter/alloc.h +0 -54
  30. package/dist/tree-sitter-loom/src/tree_sitter/array.h +0 -330
  31. package/dist/tree-sitter-loom/src/tree_sitter/parser.h +0 -286
@@ -1,8 +1,9 @@
1
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";
2
+ import { An as forEach, Bi as getOrElse, Bt as Struct, Gt as Unknown, Hn as mapError, Ii as flatMap$1, Ji as match, Ki as liftThrowable, Kr as findFirst, Kt as decodeUnknownEffect, Ni as contains, Nr as TaggedError, On as flatMap$2, Pn as gen, Pr as taggedEnum, Pt as Literals, Qi as toArray, Qt as optional, Ri as fromNullishOr, Rt as Record, Tn as fail, Xr as flatMap, Yi as none, Zi as some, _ as orElse, ar as sync, b as when, cr as tryPromise, g as exhaustive, lr as try_, qi as map$1, qt as decodeUnknownOption, rr as succeed, ui as map, y as value, ya as pipe, zt as String$1 } from "./dist-NXZtp5_0.js";
3
3
  import { execFile } from "node:child_process";
4
- import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
4
+ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
5
5
  import { dirname, join } from "node:path";
6
+ import { gunzipSync } from "node:zlib";
6
7
  import { promisify } from "node:util";
7
8
  Literals([
8
9
  "headingTitle",
@@ -109,15 +110,26 @@ var symbolAt = (doc, offset) => findFirst(symbolsOf(doc), (symbol) => symbol.pos
109
110
  //#region ../loom-lang-services/src/LoomStore.ts
110
111
  var run = promisify(execFile);
111
112
  var servicePackage = (id) => `@athrio/loom-service-${id}`;
113
+ var isWorkspace = (dir) => existsSync(join(dir, ".loom", "config.yaml"));
112
114
  var workspaceOf = (dir) => {
113
- if (existsSync(join(dir, ".loom"))) return some(dir);
115
+ if (isWorkspace(dir)) return some(dir);
114
116
  const parent = dirname(dir);
115
117
  return parent === dir ? none() : workspaceOf(parent);
116
118
  };
117
119
  var workspaceRoot = (dir) => getOrElse(workspaceOf(dir), () => dir);
118
120
  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 ServiceManifestSchema = Struct({
122
+ version: optional(String$1),
123
+ main: optional(String$1),
124
+ exports: optional(Unknown)
125
+ });
126
+ var serviceDir = (id, dir) => join(storeDir(dir), "node_modules", servicePackage(id));
127
+ var serviceManifest = (id, dir) => pipe(liftThrowable(() => readFileSync(join(serviceDir(id, dir), "package.json"), "utf8"))(), flatMap$1(liftThrowable((text) => JSON.parse(text))), flatMap$1(decodeUnknownOption(ServiceManifestSchema)));
128
+ var serviceVersion = "0.0.14";
129
+ var installedVersion = (id, dir) => flatMap$1(serviceManifest(id, dir), (manifest) => fromNullishOr(manifest.version));
130
+ var embeddedFiles = globalThis.Bun?.embeddedFiles ?? [];
131
+ var embeddedFile = (name) => findFirst(embeddedFiles, (file) => file.name === name);
132
+ var standalone = embeddedFiles.length > 0 || /(\$|%24)bunfs|(~|%7E)BUN/i.test(String(import.meta.url));
121
133
  var StoreError = class extends TaggedError("StoreError") {};
122
134
  var prepareStore = (store) => {
123
135
  mkdirSync(store, { recursive: true });
@@ -127,37 +139,109 @@ var prepareStore = (store) => {
127
139
  private: true
128
140
  }, null, 2)}\n`);
129
141
  };
130
- var ServiceInstall = taggedEnum();
131
- var addService = (id, dir) => gen(function* () {
142
+ var packageManager = (store, spec) => standalone ? {
143
+ command: process.execPath,
144
+ args: [
145
+ "add",
146
+ spec,
147
+ "--cwd",
148
+ store,
149
+ "--omit",
150
+ "peer"
151
+ ],
152
+ env: {
153
+ ...process.env,
154
+ BUN_BE_BUN: "1"
155
+ }
156
+ } : {
157
+ command: "npm",
158
+ args: [
159
+ "install",
160
+ spec,
161
+ "--prefix",
162
+ store,
163
+ "--omit=peer",
164
+ "--no-audit",
165
+ "--no-fund"
166
+ ],
167
+ env: process.env
168
+ };
169
+ var installPackage = (dir, packageName, range) => gen(function* () {
132
170
  const store = storeDir(dir);
133
- const installed = installedVersion(id, dir);
134
- if (contains(installed, "0.0.12")) return ServiceInstall.Current();
135
171
  yield* sync(() => prepareStore(store));
172
+ const manager = packageManager(store, `${packageName}@${range}`);
136
173
  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
- ]),
174
+ try: () => run(manager.command, [...manager.args], { env: manager.env }),
146
175
  catch: (cause) => new StoreError({
147
- id,
176
+ packageName,
148
177
  cause
149
178
  })
150
179
  });
180
+ });
181
+ var ServiceInstall = taggedEnum();
182
+ var installService = (id, dir) => gen(function* () {
183
+ const installed = installedVersion(id, dir);
184
+ if (contains(installed, "0.0.14")) return ServiceInstall.Current();
185
+ yield* installPackage(dir, servicePackage(id), serviceVersion);
151
186
  return match(installed, {
152
187
  onNone: () => ServiceInstall.Installed(),
153
188
  onSome: (from) => ServiceInstall.Updated({ from })
154
189
  });
155
190
  });
156
- var removeService = (id, dir) => sync(() => rmSync(join(storeDir(dir), "node_modules", servicePackage(id)), {
191
+ var storeTypeScript = (dir) => {
192
+ const file = join(storeDir(dir), "node_modules", "typescript", "lib", "typescript.js");
193
+ return existsSync(file) ? some(file) : none();
194
+ };
195
+ var typeScriptAsset = "typescript.json.gz";
196
+ var PackedTypeScriptSchema = Struct({ files: Record(String$1, String$1) });
197
+ var typeScriptError = (cause) => new StoreError({
198
+ packageName: "typescript",
199
+ cause
200
+ });
201
+ var unpackTypeScript = (dir, packed) => gen(function* () {
202
+ const archive = yield* tryPromise({
203
+ try: async () => new Uint8Array(await packed.arrayBuffer()),
204
+ catch: typeScriptError
205
+ });
206
+ const json = yield* try_({
207
+ try: () => JSON.parse(gunzipSync(archive).toString("utf8")),
208
+ catch: typeScriptError
209
+ });
210
+ const { files } = yield* decodeUnknownEffect(PackedTypeScriptSchema)(json).pipe(mapError(typeScriptError));
211
+ const store = storeDir(dir);
212
+ const modules = join(store, "node_modules");
213
+ const partial = join(modules, `.typescript-${process.pid}`);
214
+ yield* sync(() => prepareStore(store));
215
+ yield* forEach(Object.entries(files), ([path, text]) => try_({
216
+ try: () => {
217
+ mkdirSync(dirname(join(partial, path)), { recursive: true });
218
+ writeFileSync(join(partial, path), text);
219
+ },
220
+ catch: typeScriptError
221
+ }), { discard: true });
222
+ yield* try_({
223
+ try: () => {
224
+ rmSync(join(modules, "typescript"), {
225
+ recursive: true,
226
+ force: true
227
+ });
228
+ renameSync(partial, join(modules, "typescript"));
229
+ },
230
+ catch: typeScriptError
231
+ });
232
+ });
233
+ var installTypeScript = (dir) => match(embeddedFile(typeScriptAsset), {
234
+ onSome: (packed) => unpackTypeScript(dir, packed),
235
+ onNone: () => installPackage(dir, "typescript", "^6")
236
+ }).pipe(flatMap$2(() => match(storeTypeScript(dir), {
237
+ onNone: () => fail(typeScriptError("the store holds no lib/typescript.js")),
238
+ onSome: succeed
239
+ })));
240
+ var removeService = (id, dir) => sync(() => rmSync(serviceDir(id, dir), {
157
241
  recursive: true,
158
242
  force: true
159
243
  }));
160
244
  //#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 };
245
+ export { SemanticTokenSchema as _, installedVersion as a, symbolsOf as b, serviceDir as c, serviceVersion as d, standalone as f, workspaceRoot as g, workspaceOf as h, installTypeScript as i, serviceManifest as l, storeTypeScript as m, embeddedFile as n, isWorkspace as o, storeDir as p, installService as r, removeService as s, ServiceInstall as t, servicePackage as u, profileOf as v, symbolAt as y };
162
246
 
163
- //# sourceMappingURL=LoomStore-pA-ohGNX.js.map
247
+ //# sourceMappingURL=LoomStore-Bcx6V9HH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoomStore-Bcx6V9HH.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 { Array, Data, Effect, Option, Schema, pipe } from 'effect'\nimport { execFile } from 'node:child_process'\nimport {\n existsSync,\n mkdirSync,\n readdirSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from 'node:fs'\nimport { dirname, join } from 'node:path'\nimport { promisify } from 'node:util'\nimport { gunzipSync } from 'node:zlib'\n\nconst run = promisify(execFile)\n\nexport const servicePackage = (id: string): string => `@athrio/loom-service-${id}`\n\nexport const isWorkspace = (dir: string): boolean => existsSync(join(dir, '.loom', 'config.yaml'))\n\nexport const workspaceOf = (dir: string): Option.Option<string> => {\n if (isWorkspace(dir)) 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 ServiceManifestSchema = Schema.Struct({\n version: Schema.optional(Schema.String),\n main: Schema.optional(Schema.String),\n exports: Schema.optional(Schema.Unknown),\n})\n\nexport type ServiceManifest = typeof ServiceManifestSchema.Type\n\nexport const serviceDir = (id: string, dir: string): string =>\n join(storeDir(dir), 'node_modules', servicePackage(id))\n\nexport const serviceManifest = (id: string, dir: string): Option.Option<ServiceManifest> =>\n pipe(\n Option.liftThrowable(() => readFileSync(join(serviceDir(id, dir), 'package.json'), 'utf8'))(),\n Option.flatMap(Option.liftThrowable((text: string): unknown => JSON.parse(text))),\n Option.flatMap(Schema.decodeUnknownOption(ServiceManifestSchema)),\n )\n\nexport const serviceVersion = '0.0.14'\n\nexport const installedVersion = (id: string, dir: string): Option.Option<string> =>\n Option.flatMap(serviceManifest(id, dir), (manifest) => Option.fromNullishOr(manifest.version))\n\ninterface EmbeddedFile extends Blob {\n readonly name?: string\n}\n\nconst embeddedFiles: ReadonlyArray<EmbeddedFile> =\n (globalThis as { readonly Bun?: { readonly embeddedFiles?: ReadonlyArray<EmbeddedFile> } }).Bun\n ?.embeddedFiles ?? []\n\nexport const embeddedFile = (name: string): Option.Option<EmbeddedFile> =>\n Array.findFirst(embeddedFiles, (file) => file.name === name)\n\nexport const standalone: boolean =\n embeddedFiles.length > 0 || /(\\$|%24)bunfs|(~|%7E)BUN/i.test(String(import.meta.url))\n\nexport class StoreError extends Data.TaggedError('StoreError')<{\n readonly packageName: 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\ninterface PackageManager {\n readonly command: string\n readonly args: ReadonlyArray<string>\n readonly env: NodeJS.ProcessEnv\n}\n\nconst packageManager = (store: string, spec: string): PackageManager =>\n standalone\n ? {\n command: process.execPath,\n args: ['add', spec, '--cwd', store, '--omit', 'peer'],\n env: { ...process.env, BUN_BE_BUN: '1' },\n }\n : {\n command: 'npm',\n args: ['install', spec, '--prefix', store, '--omit=peer', '--no-audit', '--no-fund'],\n env: process.env,\n }\n\nconst installPackage = (\n dir: string,\n packageName: string,\n range: string,\n): Effect.Effect<void, StoreError> =>\n Effect.gen(function* () {\n const store = storeDir(dir)\n yield* Effect.sync(() => prepareStore(store))\n const manager = packageManager(store, `${packageName}@${range}`)\n yield* Effect.tryPromise({\n try: () => run(manager.command, [...manager.args], { env: manager.env }),\n catch: (cause) => new StoreError({ packageName, cause }),\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 installService = (id: string, dir: string): Effect.Effect<ServiceInstall, StoreError> =>\n Effect.gen(function* () {\n const installed = installedVersion(id, dir)\n if (Option.contains(installed, serviceVersion)) return ServiceInstall.Current()\n yield* installPackage(dir, servicePackage(id), serviceVersion)\n return Option.match(installed, {\n onNone: () => ServiceInstall.Installed(),\n onSome: (from) => ServiceInstall.Updated({ from }),\n })\n })\n\nexport const typeScriptRange = '^6'\n\nexport const storeTypeScript = (dir: string): Option.Option<string> => {\n const file = join(storeDir(dir), 'node_modules', 'typescript', 'lib', 'typescript.js')\n return existsSync(file) ? Option.some(file) : Option.none()\n}\n\nconst typeScriptAsset = 'typescript.json.gz'\n\nconst PackedTypeScriptSchema = Schema.Struct({\n files: Schema.Record(Schema.String, Schema.String),\n})\n\nconst typeScriptError = (cause: unknown): StoreError =>\n new StoreError({ packageName: 'typescript', cause })\n\nconst unpackTypeScript = (dir: string, packed: Blob): Effect.Effect<void, StoreError> =>\n Effect.gen(function* () {\n const archive = yield* Effect.tryPromise({\n try: async () => new Uint8Array(await packed.arrayBuffer()),\n catch: typeScriptError,\n })\n const json = yield* Effect.try({\n try: (): unknown => JSON.parse(gunzipSync(archive).toString('utf8')),\n catch: typeScriptError,\n })\n const { files } = yield* Schema.decodeUnknownEffect(PackedTypeScriptSchema)(json).pipe(\n Effect.mapError(typeScriptError),\n )\n const store = storeDir(dir)\n const modules = join(store, 'node_modules')\n const partial = join(modules, `.typescript-${process.pid}`)\n yield* Effect.sync(() => prepareStore(store))\n yield* Effect.forEach(\n Object.entries(files),\n ([path, text]) =>\n Effect.try({\n try: () => {\n mkdirSync(dirname(join(partial, path)), { recursive: true })\n writeFileSync(join(partial, path), text)\n },\n catch: typeScriptError,\n }),\n { discard: true },\n )\n yield* Effect.try({\n try: () => {\n rmSync(join(modules, 'typescript'), { recursive: true, force: true })\n renameSync(partial, join(modules, 'typescript'))\n },\n catch: typeScriptError,\n })\n })\n\nexport const installTypeScript = (dir: string): Effect.Effect<string, StoreError> =>\n Option.match(embeddedFile(typeScriptAsset), {\n onSome: (packed) => unpackTypeScript(dir, packed),\n onNone: () => installPackage(dir, 'typescript', typeScriptRange),\n }).pipe(\n Effect.flatMap(() =>\n Option.match(storeTypeScript(dir), {\n onNone: () => Effect.fail(typeScriptError('the store holds no lib/typescript.js')),\n onSome: Effect.succeed,\n }),\n ),\n )\n\nexport const removeService = (id: string, dir: string): Effect.Effect<void> =>\n Effect.sync(() => rmSync(serviceDir(id, dir), { recursive: true, force: true }))\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import { i as runtimeVersion, n as runtimeKey, r as runtimeSpecifiers, t as installHostRuntime } from "./Runtime-Byw6clui.js";
2
+ import { i as runtimeVersion, n as runtimeKey, r as runtimeSpecifiers, t as installHostRuntime } from "./Runtime-CE2kCsKX.js";
3
3
  export { installHostRuntime, runtimeKey, runtimeSpecifiers, runtimeVersion };
@@ -1,6 +1,6 @@
1
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";
2
+ import { t as dist_exports } from "./dist-NXZtp5_0.js";
3
+ import { r as LanguageService_exports } from "./LanguageService-C3_9lh8E.js";
4
4
  //#region ../loom-lang-services/src/Runtime.ts
5
5
  var runtimeKey = "__loomRuntime";
6
6
  var runtimeVersion = "1";
@@ -22,4 +22,4 @@ var installHostRuntime = (tsdk) => {
22
22
  //#endregion
23
23
  export { runtimeVersion as i, runtimeKey as n, runtimeSpecifiers as r, installHostRuntime as t };
24
24
 
25
- //# sourceMappingURL=Runtime-Byw6clui.js.map
25
+ //# sourceMappingURL=Runtime-CE2kCsKX.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"Runtime-CE2kCsKX.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"}