@vltpkg/cli-js 1.0.0-rc.27 → 1.0.0-rc.28

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 (85) hide show
  1. package/access-6HRR4HXE.js +293 -0
  2. package/{bugs-CS34LDPD.js → bugs-2CAZQ32S.js} +19 -22
  3. package/{build-XHEFAWMN.js → build-OAWTNBMS.js} +10 -13
  4. package/{cache-LII2V5IM.js → cache-ZR7VPPVQ.js} +14 -15
  5. package/cache-unzip-src-unzip.js +606 -575
  6. package/chunk-2FIRKA7R.js +73 -0
  7. package/{chunk-D27QPHKI.js → chunk-2V4AQPBR.js} +67 -20
  8. package/{chunk-JQHMLTO5.js → chunk-3MWZTKGK.js} +419 -328
  9. package/chunk-5TSPKXO4.js +116 -0
  10. package/{chunk-DJBBJDHI.js → chunk-7RZL7BZI.js} +159 -74
  11. package/{chunk-LAG2R3YJ.js → chunk-BW6C3YUV.js} +6 -6
  12. package/{chunk-DYL7AFY7.js → chunk-CPM47YUH.js} +5 -3
  13. package/{chunk-5E5GX4G6.js → chunk-FBTBHRPG.js} +1 -1
  14. package/{chunk-AZLX27EM.js → chunk-FXDRM4ZO.js} +296 -258
  15. package/{chunk-6YTJVEK2.js → chunk-HAG4VBEA.js} +11 -11
  16. package/{chunk-INXSTZAX.js → chunk-HAGUS4HI.js} +21 -21
  17. package/{chunk-FI5TUER7.js → chunk-HQ4US6G3.js} +681 -687
  18. package/chunk-IEISSXS4.js +711 -0
  19. package/{chunk-TRXTSZFT.js → chunk-IYO5QKUW.js} +1 -1
  20. package/{chunk-XSUIV5NF.js → chunk-M7HPHM7B.js} +14 -12
  21. package/{chunk-BIUCOMBH.js → chunk-MAIQR5GM.js} +5 -5
  22. package/{chunk-TDTJOKF2.js → chunk-NLFBANVO.js} +8 -1
  23. package/{chunk-QWWYZ3TT.js → chunk-OUUIOZ2I.js} +1 -1
  24. package/{chunk-XWF3GJKE.js → chunk-Q3DNNTPG.js} +27 -1
  25. package/{chunk-VCSVHRCS.js → chunk-R44FR7BY.js} +1269 -590
  26. package/{chunk-P2HZ4ISK.js → chunk-RK2PISOZ.js} +54 -6
  27. package/{chunk-QDGZZ5FZ.js → chunk-TYV4N3S3.js} +6 -692
  28. package/{chunk-LKFTVDWS.js → chunk-VPKJNCKL.js} +26 -13
  29. package/{chunk-VTZZIXYW.js → chunk-VRIS5HAW.js} +3 -3
  30. package/{chunk-S5I2UOBT.js → chunk-WX2DCAG2.js} +7 -7
  31. package/{chunk-YR47M5L7.js → chunk-XYCCQT7N.js} +34 -39
  32. package/{chunk-D7U7KDEM.js → chunk-YCQTLBWF.js} +1 -1
  33. package/{chunk-SR66HWMM.js → chunk-ZINDEKAU.js} +144 -93
  34. package/{chunk-DJBVQKBB.js → chunk-ZS2RCG25.js} +5 -5
  35. package/{ci-EEXNEPKP.js → ci-TOJJVHI4.js} +13 -16
  36. package/cli-package.json +2 -1
  37. package/{config-4ZFJD5AY.js → config-DVAPEE5D.js} +12 -14
  38. package/{config-6MUU2TRJ.js → config-GOV4E2KK.js} +26 -26
  39. package/{create-DEKJKPYX.js → create-CDFZFVHL.js} +24 -26
  40. package/deprecate-WROL4AHK.js +176 -0
  41. package/{devtools-NOLON5YL.js → devtools-TPMVKPB5.js} +80 -77
  42. package/dist-tag-WZXXWXMB.js +204 -0
  43. package/{docs-5EKPZANX.js → docs-YCOZFMZG.js} +19 -22
  44. package/{exec-I4YPE6YW.js → exec-V4K5KJMZ.js} +24 -26
  45. package/{exec-cache-XEWPABLK.js → exec-cache-FHCGIY6J.js} +21 -23
  46. package/{exec-local-OQXG2VPW.js → exec-local-YU6PF7HM.js} +19 -21
  47. package/{help-OG655SE5.js → help-DADL3NOX.js} +4 -5
  48. package/{init-LJH2YTBM.js → init-XNMWYATA.js} +10 -8
  49. package/{install-KP2FGWOR.js → install-FEGZHZRR.js} +28 -17
  50. package/{list-ACZ3ZSIZ.js → list-JWAIDRFZ.js} +19 -21
  51. package/{login-VFTRKZE2.js → login-52SA2DSI.js} +6 -9
  52. package/{logout-Z4AVG64D.js → logout-5YYHNV5W.js} +6 -9
  53. package/{pack-GPJNX7RP.js → pack-B7QZHMYP.js} +14 -17
  54. package/package.json +1 -1
  55. package/{ping-B2YS4SR3.js → ping-PRGDYDRI.js} +6 -9
  56. package/{pkg-WUYJDFSH.js → pkg-UEIQIVVD.js} +15 -19
  57. package/profile-46FKVQEL.js +129 -0
  58. package/{publish-WTMGC4ET.js → publish-HBYHOSKH.js} +17 -20
  59. package/{query-UCM35VVC.js → query-UJ2LXHJ5.js} +19 -21
  60. package/registry-client-package.json +1 -1
  61. package/registry-client-src-revalidate.js +1157 -1032
  62. package/{repo-MZCPTQZU.js → repo-I6X66PHD.js} +19 -22
  63. package/{reporter-XRZ37LFK.js → reporter-NUXJTV4G.js} +2 -3
  64. package/{run-CAX4Z2SC.js → run-4VSEFXVM.js} +19 -21
  65. package/{run-exec-SM42FE7W.js → run-exec-5JVZDUZD.js} +19 -21
  66. package/security-archive-src-update-expired.js +8 -7
  67. package/{src-SDJWTPCU.js → src-GIDTI3OJ.js} +20 -22
  68. package/token-YK6L74PA.js +206 -0
  69. package/{uninstall-YYPPXM2O.js → uninstall-UBUZBV7E.js} +14 -17
  70. package/unpublish-ZHJEKT7A.js +224 -0
  71. package/{update-YFUTH33A.js → update-WO4BHJF4.js} +13 -16
  72. package/{version-SK256WED.js → version-RLESYHML.js} +13 -16
  73. package/{view-CBYGJ76J.js → view-UA5HXFXG.js} +16 -17
  74. package/vlr.js +1 -1
  75. package/vlrx.js +1 -1
  76. package/vlt.js +1 -1
  77. package/vlx.js +1 -1
  78. package/vlxl.js +1 -1
  79. package/{whoami-ZT4ZEN2C.js → whoami-7H3FPR2O.js} +6 -9
  80. package/chunk-52LBC3AX.js +0 -75
  81. package/chunk-BGQCUUCA.js +0 -667
  82. package/chunk-E74WGW5C.js +0 -49
  83. package/chunk-JLJKOF75.js +0 -40
  84. package/chunk-YP4YNE5Y.js +0 -68
  85. package/token-YCURCCNR.js +0 -103
@@ -0,0 +1,293 @@
1
+ var global = globalThis;
2
+ import {Buffer} from "node:buffer";
3
+ import {setTimeout as _vlt_setTimeout,clearTimeout as _vlt_clearTimeout,setImmediate as _vlt_setImmediate,clearImmediate as _vlt_clearImmediate,setInterval as _vlt_setInterval,clearInterval as _vlt_clearInterval} from "node:timers";
4
+ globalThis.setTimeout = _vlt_setTimeout;
5
+ globalThis.clearTimeout = _vlt_clearTimeout;
6
+ globalThis.setImmediate = _vlt_setImmediate;
7
+ globalThis.clearImmediate = _vlt_clearImmediate;
8
+ globalThis.setInterval = _vlt_setInterval;
9
+ globalThis.clearInterval = _vlt_clearInterval;
10
+ import {createRequire as _vlt_createRequire} from "node:module";
11
+ var require = _vlt_createRequire(import.meta.filename);
12
+ import {
13
+ commandUsage
14
+ } from "./chunk-FBTBHRPG.js";
15
+ import {
16
+ RegistryClient
17
+ } from "./chunk-3MWZTKGK.js";
18
+ import "./chunk-YCQTLBWF.js";
19
+ import "./chunk-R44FR7BY.js";
20
+ import "./chunk-2V4AQPBR.js";
21
+ import "./chunk-Q3DNNTPG.js";
22
+ import "./chunk-XNLSTHDK.js";
23
+ import {
24
+ error
25
+ } from "./chunk-WZWDS3W4.js";
26
+ import "./chunk-PZLD7RTK.js";
27
+
28
+ // ../../src/cli-sdk/src/commands/access.ts
29
+ var usage = () => commandUsage({
30
+ command: "access",
31
+ usage: "<command> [<args>]",
32
+ description: `Set or get access levels for published packages
33
+ and manage team-based package permissions.`,
34
+ subcommands: {
35
+ "list packages": {
36
+ usage: "[<scope|user|org>]",
37
+ description: "List packages with access info for a scope, user, or org."
38
+ },
39
+ "get status": {
40
+ usage: "<package>",
41
+ description: "Get the access/visibility status of a package."
42
+ },
43
+ "set status": {
44
+ usage: "<package>",
45
+ description: `Set the access/visibility of a package. Use --access to specify the level.`
46
+ },
47
+ grant: {
48
+ usage: "<read-only|read-write> <scope:team> [<package>]",
49
+ description: "Grant access to a scope:team for a package."
50
+ },
51
+ revoke: {
52
+ usage: "<scope:team> [<package>]",
53
+ description: "Revoke access from a scope:team for a package."
54
+ }
55
+ },
56
+ options: {
57
+ registry: {
58
+ value: "<url>",
59
+ description: "Registry URL to manage access on."
60
+ },
61
+ otp: {
62
+ description: "Provide an OTP for access changes.",
63
+ value: "<otp>"
64
+ }
65
+ }
66
+ });
67
+ var views = {
68
+ human: (result) => {
69
+ if ("packages" in result) {
70
+ const entries = Object.entries(result.packages);
71
+ if (entries.length === 0) return "No packages found.";
72
+ return entries.map(([name, access]) => `${name}: ${access}`).join("\n");
73
+ }
74
+ if ("granted" in result) {
75
+ return `Granted ${result.granted.permissions} access to ${result.granted.team}.`;
76
+ }
77
+ if ("revoked" in result) {
78
+ return `Revoked access from ${result.revoked.team}.`;
79
+ }
80
+ return `${result.package}: ${result.access}`;
81
+ },
82
+ json: (r) => r
83
+ };
84
+ var command = async (conf) => {
85
+ const [sub, ...args] = conf.positionals;
86
+ switch (sub) {
87
+ case "list":
88
+ return listPackages(conf, args);
89
+ case "get":
90
+ return getStatus(conf, args);
91
+ case "set":
92
+ return setStatus(conf, args);
93
+ case "grant":
94
+ return grant(conf, args);
95
+ case "revoke":
96
+ return revoke(conf, args);
97
+ default: {
98
+ throw error("Invalid access subcommand", {
99
+ found: sub,
100
+ validOptions: ["list", "get", "set", "grant", "revoke"],
101
+ code: "EUSAGE"
102
+ });
103
+ }
104
+ }
105
+ };
106
+ var encodePkgName = (name) => name.startsWith("@") ? `@${encodeURIComponent(name.slice(1))}` : encodeURIComponent(name);
107
+ var listPackages = async (conf, args) => {
108
+ const [keyword, entity] = args;
109
+ if (keyword !== "packages") {
110
+ throw error("Expected `list packages [<scope|user|org>]`", {
111
+ found: keyword,
112
+ code: "EUSAGE"
113
+ });
114
+ }
115
+ const rc = new RegistryClient(conf.options);
116
+ const registryUrl = new URL(conf.options.registry);
117
+ const scope = entity ?? getDefaultScope(conf);
118
+ const url = new URL(
119
+ `-/org/${encodeURIComponent(scope)}/package`,
120
+ registryUrl
121
+ );
122
+ const response = await rc.request(url, { useCache: false });
123
+ const data = response.json();
124
+ return { packages: data };
125
+ };
126
+ var getStatus = async (conf, args) => {
127
+ const [keyword, pkg] = args;
128
+ if (keyword !== "status") {
129
+ throw error("Expected `get status <package>`", {
130
+ found: keyword,
131
+ code: "EUSAGE"
132
+ });
133
+ }
134
+ if (!pkg) {
135
+ throw error("Package name is required for `get status`", {
136
+ code: "EUSAGE"
137
+ });
138
+ }
139
+ const rc = new RegistryClient(conf.options);
140
+ const registryUrl = new URL(conf.options.registry);
141
+ const url = new URL(
142
+ `-/package/${encodePkgName(pkg)}/access`,
143
+ registryUrl
144
+ );
145
+ const response = await rc.request(url, { useCache: false });
146
+ const data = response.json();
147
+ return { package: pkg, access: data.access };
148
+ };
149
+ var setStatus = async (conf, args) => {
150
+ const [statusArg, pkg] = args;
151
+ if (!statusArg?.startsWith("status=")) {
152
+ throw error(
153
+ "Expected `set status=<public|restricted> <package>`",
154
+ { found: statusArg, code: "EUSAGE" }
155
+ );
156
+ }
157
+ const accessLevel = statusArg.slice("status=".length);
158
+ if (accessLevel !== "public" && accessLevel !== "restricted") {
159
+ throw error("Access level must be `public` or `restricted`", {
160
+ found: accessLevel,
161
+ validOptions: ["public", "restricted"],
162
+ code: "EUSAGE"
163
+ });
164
+ }
165
+ if (!pkg) {
166
+ throw error("Package name is required for `set status`", {
167
+ code: "EUSAGE"
168
+ });
169
+ }
170
+ const rc = new RegistryClient(conf.options);
171
+ const registryUrl = new URL(conf.options.registry);
172
+ const url = new URL(
173
+ `-/package/${encodePkgName(pkg)}/access`,
174
+ registryUrl
175
+ );
176
+ await rc.request(url, {
177
+ method: "PUT",
178
+ headers: { "content-type": "application/json" },
179
+ body: JSON.stringify({ access: accessLevel }),
180
+ otp: conf.options.otp,
181
+ useCache: false
182
+ });
183
+ return { package: pkg, access: accessLevel };
184
+ };
185
+ var grant = async (conf, args) => {
186
+ const [permissions, scopeTeam, pkg] = args;
187
+ if (permissions !== "read-only" && permissions !== "read-write") {
188
+ throw error("Permissions must be `read-only` or `read-write`", {
189
+ found: permissions,
190
+ validOptions: ["read-only", "read-write"],
191
+ code: "EUSAGE"
192
+ });
193
+ }
194
+ if (!scopeTeam?.includes(":")) {
195
+ throw error("Team must be in the format `<scope>:<team>`", {
196
+ found: scopeTeam,
197
+ code: "EUSAGE"
198
+ });
199
+ }
200
+ const [scope, team] = scopeTeam.split(":");
201
+ if (!scope || !team) {
202
+ throw error("Team must be in the format `<scope>:<team>`", {
203
+ found: scopeTeam,
204
+ code: "EUSAGE"
205
+ });
206
+ }
207
+ const pkgName = pkg ?? getDefaultPkgName(conf);
208
+ const rc = new RegistryClient(conf.options);
209
+ const registryUrl = new URL(conf.options.registry);
210
+ const url = new URL(
211
+ `-/team/${encodeURIComponent(scope)}/${encodeURIComponent(team)}/package`,
212
+ registryUrl
213
+ );
214
+ await rc.request(url, {
215
+ method: "PUT",
216
+ headers: { "content-type": "application/json" },
217
+ body: JSON.stringify({
218
+ package: pkgName,
219
+ permissions
220
+ }),
221
+ otp: conf.options.otp,
222
+ useCache: false
223
+ });
224
+ return {
225
+ granted: {
226
+ team: `${scope}:${team}`,
227
+ permissions
228
+ }
229
+ };
230
+ };
231
+ var revoke = async (conf, args) => {
232
+ const [scopeTeam, pkg] = args;
233
+ if (!scopeTeam?.includes(":")) {
234
+ throw error("Team must be in the format `<scope>:<team>`", {
235
+ found: scopeTeam,
236
+ code: "EUSAGE"
237
+ });
238
+ }
239
+ const [scope, team] = scopeTeam.split(":");
240
+ if (!scope || !team) {
241
+ throw error("Team must be in the format `<scope>:<team>`", {
242
+ found: scopeTeam,
243
+ code: "EUSAGE"
244
+ });
245
+ }
246
+ const pkgName = pkg ?? getDefaultPkgName(conf);
247
+ const rc = new RegistryClient(conf.options);
248
+ const registryUrl = new URL(conf.options.registry);
249
+ const url = new URL(
250
+ `-/team/${encodeURIComponent(scope)}/${encodeURIComponent(team)}/package`,
251
+ registryUrl
252
+ );
253
+ await rc.request(url, {
254
+ method: "DELETE",
255
+ headers: { "content-type": "application/json" },
256
+ body: JSON.stringify({ package: pkgName }),
257
+ otp: conf.options.otp,
258
+ useCache: false
259
+ });
260
+ return {
261
+ revoked: {
262
+ team: `${scope}:${team}`
263
+ }
264
+ };
265
+ };
266
+ var getDefaultScope = (conf) => {
267
+ const name = conf.options.packageJson.maybeRead(
268
+ conf.projectRoot
269
+ )?.name;
270
+ if (name?.startsWith("@")) {
271
+ const scope = name.split("/")[0];
272
+ if (scope) return scope;
273
+ }
274
+ throw error(
275
+ "Could not determine scope. Provide a scope, user, or org.",
276
+ { code: "EUSAGE" }
277
+ );
278
+ };
279
+ var getDefaultPkgName = (conf) => {
280
+ const name = conf.options.packageJson.maybeRead(
281
+ conf.projectRoot
282
+ )?.name;
283
+ if (name) return name;
284
+ throw error(
285
+ "Could not determine package name. Provide a package name or run from a package directory.",
286
+ { code: "EUSAGE" }
287
+ );
288
+ };
289
+ export {
290
+ command,
291
+ usage,
292
+ views
293
+ };
@@ -11,40 +11,37 @@ import {createRequire as _vlt_createRequire} from "node:module";
11
11
  var require = _vlt_createRequire(import.meta.filename);
12
12
  import {
13
13
  require_lib
14
- } from "./chunk-AZLX27EM.js";
14
+ } from "./chunk-FXDRM4ZO.js";
15
15
  import {
16
16
  createHostContextsMap
17
- } from "./chunk-VTZZIXYW.js";
17
+ } from "./chunk-VRIS5HAW.js";
18
18
  import {
19
19
  Query,
20
20
  actual
21
- } from "./chunk-DJBBJDHI.js";
21
+ } from "./chunk-7RZL7BZI.js";
22
22
  import {
23
23
  SecurityArchive
24
- } from "./chunk-BIUCOMBH.js";
25
- import "./chunk-52LBC3AX.js";
26
- import {
27
- commandUsage
28
- } from "./chunk-5E5GX4G6.js";
24
+ } from "./chunk-MAIQR5GM.js";
29
25
  import {
30
26
  PackageInfoClient
31
- } from "./chunk-INXSTZAX.js";
32
- import "./chunk-FI5TUER7.js";
33
- import "./chunk-JQHMLTO5.js";
34
- import {
35
- urlOpen
36
- } from "./chunk-D7U7KDEM.js";
37
- import "./chunk-YR47M5L7.js";
38
- import "./chunk-BGQCUUCA.js";
39
- import "./chunk-E74WGW5C.js";
27
+ } from "./chunk-HAGUS4HI.js";
28
+ import "./chunk-HQ4US6G3.js";
29
+ import "./chunk-XYCCQT7N.js";
30
+ import "./chunk-TYV4N3S3.js";
40
31
  import {
41
32
  Spec2 as Spec
42
- } from "./chunk-QDGZZ5FZ.js";
43
- import "./chunk-VCSVHRCS.js";
44
- import "./chunk-D27QPHKI.js";
45
- import "./chunk-JLJKOF75.js";
46
- import "./chunk-XWF3GJKE.js";
33
+ } from "./chunk-IEISSXS4.js";
47
34
  import "./chunk-HTOTG4TS.js";
35
+ import {
36
+ commandUsage
37
+ } from "./chunk-FBTBHRPG.js";
38
+ import "./chunk-3MWZTKGK.js";
39
+ import {
40
+ urlOpen
41
+ } from "./chunk-YCQTLBWF.js";
42
+ import "./chunk-R44FR7BY.js";
43
+ import "./chunk-2V4AQPBR.js";
44
+ import "./chunk-Q3DNNTPG.js";
48
45
  import "./chunk-XNLSTHDK.js";
49
46
  import {
50
47
  error
@@ -11,23 +11,20 @@ import {createRequire as _vlt_createRequire} from "node:module";
11
11
  var require = _vlt_createRequire(import.meta.filename);
12
12
  import {
13
13
  build
14
- } from "./chunk-DJBBJDHI.js";
15
- import "./chunk-BIUCOMBH.js";
16
- import "./chunk-52LBC3AX.js";
14
+ } from "./chunk-7RZL7BZI.js";
15
+ import "./chunk-MAIQR5GM.js";
16
+ import "./chunk-XYCCQT7N.js";
17
+ import "./chunk-TYV4N3S3.js";
18
+ import "./chunk-IEISSXS4.js";
19
+ import "./chunk-HTOTG4TS.js";
17
20
  import {
18
21
  commandUsage
19
- } from "./chunk-5E5GX4G6.js";
20
- import "./chunk-YR47M5L7.js";
21
- import "./chunk-BGQCUUCA.js";
22
- import "./chunk-E74WGW5C.js";
23
- import "./chunk-QDGZZ5FZ.js";
24
- import "./chunk-VCSVHRCS.js";
25
- import "./chunk-D27QPHKI.js";
26
- import "./chunk-JLJKOF75.js";
22
+ } from "./chunk-FBTBHRPG.js";
23
+ import "./chunk-R44FR7BY.js";
24
+ import "./chunk-2V4AQPBR.js";
27
25
  import {
28
26
  isErrorWithCause
29
- } from "./chunk-XWF3GJKE.js";
30
- import "./chunk-HTOTG4TS.js";
27
+ } from "./chunk-Q3DNNTPG.js";
31
28
  import "./chunk-XNLSTHDK.js";
32
29
  import {
33
30
  error
@@ -15,29 +15,28 @@ import {
15
15
  import {
16
16
  stderr,
17
17
  stdout
18
- } from "./chunk-P2HZ4ISK.js";
19
- import "./chunk-TDTJOKF2.js";
18
+ } from "./chunk-RK2PISOZ.js";
19
+ import "./chunk-5TSPKXO4.js";
20
+ import "./chunk-NLFBANVO.js";
20
21
  import {
21
22
  ViewClass
22
23
  } from "./chunk-RXNA2XCX.js";
23
24
  import "./chunk-WGDTG44V.js";
24
- import "./chunk-TRXTSZFT.js";
25
+ import "./chunk-IYO5QKUW.js";
26
+ import "./chunk-TYV4N3S3.js";
27
+ import {
28
+ Spec2 as Spec
29
+ } from "./chunk-IEISSXS4.js";
25
30
  import {
26
31
  commandUsage
27
- } from "./chunk-5E5GX4G6.js";
32
+ } from "./chunk-FBTBHRPG.js";
28
33
  import {
29
34
  CacheEntry
30
- } from "./chunk-JQHMLTO5.js";
31
- import "./chunk-D7U7KDEM.js";
32
- import "./chunk-BGQCUUCA.js";
33
- import "./chunk-E74WGW5C.js";
34
- import {
35
- Spec2 as Spec
36
- } from "./chunk-QDGZZ5FZ.js";
37
- import "./chunk-VCSVHRCS.js";
38
- import "./chunk-D27QPHKI.js";
39
- import "./chunk-JLJKOF75.js";
40
- import "./chunk-XWF3GJKE.js";
35
+ } from "./chunk-3MWZTKGK.js";
36
+ import "./chunk-YCQTLBWF.js";
37
+ import "./chunk-R44FR7BY.js";
38
+ import "./chunk-2V4AQPBR.js";
39
+ import "./chunk-Q3DNNTPG.js";
41
40
  import "./chunk-XNLSTHDK.js";
42
41
  import {
43
42
  error