@delance/runtime 2024.2.1 → 2024.2.3

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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('./v2024.2.3-14498dd2464a2e803040de7cff27132ebb1104c49a70cfc4b124bba27555cd38/server.bundle.js');
package/install.mjs CHANGED
@@ -4,6 +4,7 @@ import assert, {AssertionError} from 'node:assert';
4
4
  import {subtle} from 'node:crypto';
5
5
  import fs from 'node:fs/promises';
6
6
  import path from 'node:path';
7
+ import process from 'node:process';
7
8
  import delance from '@delance/builder';
8
9
  import {BlobReader, BlobWriter, TextWriter, ZipReader} from '@zip.js/zip.js';
9
10
  import pMap from 'p-map';
@@ -18,81 +19,106 @@ function reverse(string) {
18
19
  return [...string].reverse().join('');
19
20
  }
20
21
 
21
- const output = path.resolve('out/');
22
+ const output = path.resolve(`dist/v${pkg.version}-${pkg.delance.sha256}`);
22
23
 
24
+ await fs.mkdir(output, {recursive: true});
25
+
26
+ let processed = true;
23
27
  try {
24
- await fs.mkdir(output);
28
+ await fs.access(path.join(output, 'server.bundle.js'));
25
29
  } catch {
26
- let processed = true;
27
- try {
28
- await fs.access(path.join(output, 'server.bundle.js'));
29
- } catch {
30
- processed = false;
31
- }
32
-
33
- if (processed) {
34
- process.exit();
35
- }
30
+ processed = false;
36
31
  }
37
32
 
38
- const baseURL = new URL(reverse('/moc.oidutslausiv.ecalptekram//:sptth'));
39
- const publisher = reverse('nohtyp-sm');
40
- const extension = reverse('ecnalyp-edocsv');
41
-
42
- const items = new URL(`/items?itemName=${publisher}.${extension}`, baseURL);
43
- const download = new URL(
44
- `/_apis/public/gallery/publishers/${publisher}/vsextensions/${extension}/${pkg.version}/vspackage`,
45
- baseURL,
46
- );
33
+ if (processed) {
34
+ process.exit();
35
+ }
47
36
 
48
- await fetch(items);
37
+ /** @type {Blob?} */
38
+ let vsix = null;
49
39
 
50
- const vsix = await pRetry(async () => {
51
- const response = await fetch(download, {
52
- headers: {
53
- 'User-Agent': 'Mozilla/5.0 (Delance) Gecko/20100101 Firefox/120.0',
54
- },
55
- credentials: 'include',
56
- redirect: 'follow',
57
- referrer: items.href,
58
- });
40
+ if (process.env.DELANCE_VSIX) {
41
+ try {
42
+ vsix = new Blob([await fs.readFile(process.env.DELANCE_VSIX)]);
43
+ const hash = Array.from(
44
+ new Uint8Array(
45
+ await subtle.digest('SHA-256', await vsix.arrayBuffer()),
46
+ ),
47
+ )
48
+ .map((b) => b.toString(16).padStart(2, '0'))
49
+ .join('');
59
50
 
60
- if (response.status === 429) {
61
- const delay = response.headers.get('retry-after');
62
- if (delay) {
63
- throw new Error('Rate limited');
51
+ assert.equal(hash, pkg.delance.sha256, 'sha256 mismatch');
52
+ } catch (e) {
53
+ if (/** @type {Error & {syscall: string}} */ (e)?.syscall === 'open') {
54
+ console.error(e);
55
+ } else {
56
+ throw e;
64
57
  }
65
58
  }
59
+ }
66
60
 
67
- if (!response.ok) {
68
- throw new AbortError(response.statusText);
69
- }
61
+ if (!vsix) {
62
+ const baseURL = new URL(reverse('/moc.oidutslausiv.ecalptekram//:sptth'));
63
+ const publisher = reverse('nohtyp-sm');
64
+ const extension = reverse('ecnalyp-edocsv');
65
+
66
+ const items = new URL(`/items?itemName=${publisher}.${extension}`, baseURL);
67
+ const download = new URL(
68
+ `/_apis/public/gallery/publishers/${publisher}/vsextensions/${extension}/${pkg.version}/vspackage`,
69
+ baseURL,
70
+ );
71
+
72
+ await fetch(items);
73
+
74
+ vsix = await pRetry(async () => {
75
+ const response = await fetch(download, {
76
+ headers: {
77
+ 'User-Agent':
78
+ 'Mozilla/5.0 (Delance) Gecko/20100101 Firefox/120.0',
79
+ },
80
+ credentials: 'include',
81
+ redirect: 'follow',
82
+ referrer: items.href,
83
+ });
70
84
 
71
- const vsix = await response.blob();
85
+ if (response.status === 429) {
86
+ const delay = response.headers.get('retry-after');
87
+ if (delay) {
88
+ throw new Error('Rate limited');
89
+ }
90
+ }
72
91
 
73
- const hash = Array.from(
74
- new Uint8Array(
75
- await subtle.digest('SHA-256', await vsix.arrayBuffer()),
76
- ),
77
- )
78
- .map((b) => b.toString(16).padStart(2, '0'))
79
- .join('');
92
+ if (!response.ok) {
93
+ throw new AbortError(response.statusText);
94
+ }
80
95
 
81
- try {
82
- assert.equal(hash, pkg.delance.sha256, 'sha256 mismatch');
83
- } catch (error) {
84
- if (error instanceof AssertionError) {
85
- throw new AbortError(error);
96
+ const vsix = await response.blob();
97
+
98
+ const hash = Array.from(
99
+ new Uint8Array(
100
+ await subtle.digest('SHA-256', await vsix.arrayBuffer()),
101
+ ),
102
+ )
103
+ .map((b) => b.toString(16).padStart(2, '0'))
104
+ .join('');
105
+
106
+ try {
107
+ assert.equal(hash, pkg.delance.sha256, 'sha256 mismatch');
108
+ } catch (error) {
109
+ if (error instanceof AssertionError) {
110
+ throw new AbortError(error);
111
+ }
112
+ throw error;
86
113
  }
87
- throw error;
88
- }
89
114
 
90
- return vsix;
91
- });
115
+ return vsix;
116
+ });
117
+ }
92
118
 
93
119
  const zip = new ZipReader(new BlobReader(vsix));
94
120
 
95
- const prefix = 'extension/dist/';
121
+ const prefix = path.normalize('extension/dist/');
96
122
 
97
123
  await pMap(
98
124
  await zip.getEntries(),
@@ -139,3 +165,10 @@ await pMap(
139
165
  },
140
166
  {concurrency: 4},
141
167
  );
168
+
169
+ await fs.writeFile(
170
+ 'dist/langserver.cjs',
171
+ `#!/usr/bin/env node
172
+
173
+ require('./v${pkg.version}-${pkg.delance.sha256}/server.bundle.js');`,
174
+ );
package/langserver.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- require('./out/server.bundle.js');
3
+ require('./dist/langserver.cjs');
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@delance/runtime",
3
- "version": "2024.2.1",
3
+ "version": "2024.2.3",
4
4
  "description": "Runtime and entrypoint for the lance",
5
5
  "license": "0BSD",
6
6
  "bin": {
7
- "delance-langserver": "langserver.cjs"
7
+ "delance-langserver": "dist/langserver.cjs"
8
8
  },
9
9
  "delance": {
10
- "sha256": "2257f137a51f8b960a219aec8730920797b68add0108646eaa63adadda33ada8"
10
+ "sha256": "14498dd2464a2e803040de7cff27132ebb1104c49a70cfc4b124bba27555cd38"
11
11
  },
12
12
  "files": [
13
13
  "langserver.cjs",