alchemy 0.46.0 → 0.47.0
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/bin/alchemy.mjs +713 -255
- package/bin/commands/login.ts +2 -5
- package/lib/build-date.d.ts +1 -1
- package/lib/build-date.js +1 -1
- package/lib/cloudflare/api.d.ts +9 -5
- package/lib/cloudflare/api.d.ts.map +1 -1
- package/lib/cloudflare/api.js +6 -46
- package/lib/cloudflare/api.js.map +1 -1
- package/lib/cloudflare/auth.d.ts +16 -35
- package/lib/cloudflare/auth.d.ts.map +1 -1
- package/lib/cloudflare/auth.js +54 -24
- package/lib/cloudflare/auth.js.map +1 -1
- package/lib/cloudflare/{auth-wrangler.d.ts → oauth.d.ts} +11 -14
- package/lib/cloudflare/oauth.d.ts.map +1 -0
- package/lib/cloudflare/{auth-wrangler.js → oauth.js} +101 -111
- package/lib/cloudflare/oauth.js.map +1 -0
- package/lib/cloudflare/user.d.ts +1 -1
- package/lib/cloudflare/user.d.ts.map +1 -1
- package/lib/cloudflare/user.js +20 -29
- package/lib/cloudflare/user.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts +6 -0
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +1 -0
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +27 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +8 -3
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/zone.d.ts +1 -1
- package/lib/cloudflare/zone.d.ts.map +1 -1
- package/lib/cloudflare/zone.js +38 -56
- package/lib/cloudflare/zone.js.map +1 -1
- package/lib/util/memoize.d.ts +0 -1
- package/lib/util/memoize.d.ts.map +1 -1
- package/lib/util/memoize.js +0 -13
- package/lib/util/memoize.js.map +1 -1
- package/lib/util/neverthrow.d.ts +7 -0
- package/lib/util/neverthrow.d.ts.map +1 -1
- package/lib/util/neverthrow.js +17 -0
- package/lib/util/neverthrow.js.map +1 -1
- package/lib/util/telemetry/constants.js +2 -2
- package/lib/util/telemetry/constants.js.map +1 -1
- package/package.json +2 -1
- package/src/build-date.ts +1 -1
- package/src/cloudflare/api.ts +18 -57
- package/src/cloudflare/auth.ts +84 -68
- package/src/cloudflare/{auth-wrangler.ts → oauth.ts} +156 -169
- package/src/cloudflare/user.ts +33 -51
- package/src/cloudflare/worker-metadata.ts +7 -0
- package/src/cloudflare/worker.ts +40 -4
- package/src/cloudflare/zone.ts +50 -70
- package/src/util/memoize.ts +0 -17
- package/src/util/neverthrow.ts +28 -0
- package/src/util/telemetry/constants.ts +2 -2
- package/lib/cloudflare/auth-wrangler.d.ts.map +0 -1
- package/lib/cloudflare/auth-wrangler.js.map +0 -1
- package/lib/util/xdg-paths.d.ts +0 -9
- package/lib/util/xdg-paths.d.ts.map +0 -1
- package/lib/util/xdg-paths.js +0 -41
- package/lib/util/xdg-paths.js.map +0 -1
- package/src/util/xdg-paths.ts +0 -48
package/src/cloudflare/zone.ts
CHANGED
|
@@ -74,7 +74,7 @@ export interface ZoneProps extends CloudflareApiOptions {
|
|
|
74
74
|
/**
|
|
75
75
|
* Enable Always Use HTTPS
|
|
76
76
|
* Redirects all HTTP traffic to HTTPS
|
|
77
|
-
* @default "off"
|
|
77
|
+
* @default "on" (unless explicitly set to "off")
|
|
78
78
|
*/
|
|
79
79
|
alwaysUseHttps?: AlwaysUseHTTPSValue;
|
|
80
80
|
|
|
@@ -339,6 +339,7 @@ export const Zone = Resource(
|
|
|
339
339
|
return this.destroy();
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
+
let zoneData: CloudflareZone;
|
|
342
343
|
if (this.phase === "update" && this.output?.id) {
|
|
343
344
|
// Get zone details to verify it exists
|
|
344
345
|
const response = await api.get(`/zones/${this.output.id}`);
|
|
@@ -349,84 +350,63 @@ export const Zone = Resource(
|
|
|
349
350
|
);
|
|
350
351
|
}
|
|
351
352
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
return this({
|
|
363
|
-
id: zoneData.id,
|
|
364
|
-
name: zoneData.name,
|
|
365
|
-
type: zoneData.type,
|
|
366
|
-
status: zoneData.status,
|
|
367
|
-
paused: zoneData.paused,
|
|
368
|
-
accountId: zoneData.account.id,
|
|
369
|
-
nameservers: zoneData.name_servers,
|
|
370
|
-
originalNameservers: zoneData.original_name_servers,
|
|
371
|
-
createdAt: new Date(zoneData.created_on).getTime(),
|
|
372
|
-
modifiedAt: new Date(zoneData.modified_on).getTime(),
|
|
373
|
-
activatedAt: zoneData.activated_on
|
|
374
|
-
? new Date(zoneData.activated_on).getTime()
|
|
375
|
-
: null,
|
|
376
|
-
settings: await getZoneSettings(api, zoneData.id),
|
|
353
|
+
zoneData = ((await response.json()) as { result: CloudflareZone }).result;
|
|
354
|
+
} else {
|
|
355
|
+
const response = await api.post("/zones", {
|
|
356
|
+
name: props.name,
|
|
357
|
+
type: props.type || "full",
|
|
358
|
+
jump_start: props.jumpStart !== false,
|
|
359
|
+
account: {
|
|
360
|
+
id: api.accountId,
|
|
361
|
+
},
|
|
377
362
|
});
|
|
378
|
-
}
|
|
379
|
-
// Create new zone
|
|
380
|
-
|
|
381
|
-
const response = await api.post("/zones", {
|
|
382
|
-
name: props.name,
|
|
383
|
-
type: props.type || "full",
|
|
384
|
-
jump_start: props.jumpStart !== false,
|
|
385
|
-
account: {
|
|
386
|
-
id: api.accountId,
|
|
387
|
-
},
|
|
388
|
-
});
|
|
389
|
-
|
|
390
|
-
const body = await response.text();
|
|
391
|
-
let zoneData;
|
|
392
|
-
if (!response.ok) {
|
|
393
|
-
if (response.status === 400 && body.includes("already exists")) {
|
|
394
|
-
// Zone already exists, fetch it instead
|
|
395
|
-
logger.warn(
|
|
396
|
-
`Zone '${props.name}' already exists during Zone create, adopting it...`,
|
|
397
|
-
);
|
|
398
|
-
const getResponse = await api.get(`/zones?name=${props.name}`);
|
|
399
363
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
364
|
+
const body = await response.text();
|
|
365
|
+
if (!response.ok) {
|
|
366
|
+
if (response.status === 400 && body.includes("already exists")) {
|
|
367
|
+
// Zone already exists, fetch it instead
|
|
368
|
+
logger.warn(
|
|
369
|
+
`Zone '${props.name}' already exists during Zone create, adopting it...`,
|
|
403
370
|
);
|
|
404
|
-
|
|
371
|
+
const getResponse = await api.get(`/zones?name=${props.name}`);
|
|
405
372
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
373
|
+
if (!getResponse.ok) {
|
|
374
|
+
throw new Error(
|
|
375
|
+
`Error fetching existing zone '${props.name}': ${getResponse.statusText}`,
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
const zones = (
|
|
380
|
+
(await getResponse.json()) as { result: CloudflareZone[] }
|
|
381
|
+
).result;
|
|
382
|
+
if (zones.length === 0) {
|
|
383
|
+
throw new Error(
|
|
384
|
+
`Zone '${props.name}' does not exist, but the name is reserved for another user.`,
|
|
385
|
+
);
|
|
386
|
+
}
|
|
387
|
+
zoneData = zones[0];
|
|
388
|
+
} else {
|
|
410
389
|
throw new Error(
|
|
411
|
-
`
|
|
390
|
+
`Error creating zone '${props.name}': ${response.statusText}\n${body}`,
|
|
412
391
|
);
|
|
413
392
|
}
|
|
414
|
-
zoneData = zones[0];
|
|
415
393
|
} else {
|
|
416
|
-
|
|
417
|
-
`Error creating zone '${props.name}': ${response.statusText}\n${body}`,
|
|
418
|
-
);
|
|
394
|
+
zoneData = (JSON.parse(body) as { result: CloudflareZone }).result;
|
|
419
395
|
}
|
|
420
|
-
} else {
|
|
421
|
-
zoneData = (JSON.parse(body) as { result: CloudflareZone }).result;
|
|
422
396
|
}
|
|
423
397
|
|
|
424
|
-
//
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
398
|
+
// Apply defaults to settings
|
|
399
|
+
const settingsToApply = {
|
|
400
|
+
...props.settings,
|
|
401
|
+
alwaysUseHttps: props.settings?.alwaysUseHttps ?? "on",
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
await updateZoneSettings(api, zoneData.id, settingsToApply);
|
|
405
|
+
|
|
406
|
+
// Add a small delay to ensure settings are propagated
|
|
407
|
+
// TODO(michael): do we need this?
|
|
408
|
+
// https://github.com/sam-goodwin/alchemy/issues/681
|
|
409
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
430
410
|
|
|
431
411
|
return this({
|
|
432
412
|
id: zoneData.id,
|
|
@@ -451,7 +431,7 @@ export const Zone = Resource(
|
|
|
451
431
|
* Helper function to update zone settings
|
|
452
432
|
*/
|
|
453
433
|
async function updateZoneSettings(
|
|
454
|
-
api:
|
|
434
|
+
api: CloudflareApi,
|
|
455
435
|
zoneId: string,
|
|
456
436
|
settings: ZoneProps["settings"],
|
|
457
437
|
): Promise<void> {
|
|
@@ -508,7 +488,7 @@ async function updateZoneSettings(
|
|
|
508
488
|
* Helper function to get current zone settings
|
|
509
489
|
*/
|
|
510
490
|
async function getZoneSettings(
|
|
511
|
-
api:
|
|
491
|
+
api: CloudflareApi,
|
|
512
492
|
zoneId: string,
|
|
513
493
|
): Promise<Zone["settings"]> {
|
|
514
494
|
const settingsResponse = await api.get(`/zones/${zoneId}/settings`);
|
package/src/util/memoize.ts
CHANGED
|
@@ -24,23 +24,6 @@ export function memoize<F extends (...args: any[]) => Promise<any>>(
|
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export function memoizeSync<F extends (...args: any[]) => any>(
|
|
28
|
-
fn: F,
|
|
29
|
-
keyFn: (...args: Parameters<F>) => string = defaultKeyFn,
|
|
30
|
-
) {
|
|
31
|
-
const cache = new Map<string, ReturnType<F>>();
|
|
32
|
-
return (...args: Parameters<F>): ReturnType<F> => {
|
|
33
|
-
const key = keyFn(...args);
|
|
34
|
-
const cached = cache.get(key);
|
|
35
|
-
if (cached) {
|
|
36
|
-
return cached;
|
|
37
|
-
}
|
|
38
|
-
const result = fn(...args);
|
|
39
|
-
cache.set(key, result);
|
|
40
|
-
return result;
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
27
|
export const defaultKeyFn = (...args: any[]) => {
|
|
45
28
|
return createHash("sha256").update(JSON.stringify(args)).digest("hex");
|
|
46
29
|
};
|
package/src/util/neverthrow.ts
CHANGED
|
@@ -34,3 +34,31 @@ export const singleFlight = <Args extends any[], Value, Error>(
|
|
|
34
34
|
});
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
+
|
|
38
|
+
export class HTTPError extends Error {
|
|
39
|
+
constructor(
|
|
40
|
+
message: string,
|
|
41
|
+
public readonly status: number,
|
|
42
|
+
) {
|
|
43
|
+
super(message);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// TODO: merge this with safe-fetch?
|
|
48
|
+
export const fetchResult = (url: string, init: RequestInit = {}) => {
|
|
49
|
+
return ResultAsync.fromPromise(
|
|
50
|
+
fetch(url, init),
|
|
51
|
+
() => new HTTPError(`Failed to ${init.method ?? "GET"} ${url}`, 0),
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const fetchJSON = <T, E>(url: string, init: RequestInit = {}) => {
|
|
56
|
+
return fetchResult(url, init).andThen(decodeJSON<T, E>);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const decodeJSON = <T, E>(response: Response) => {
|
|
60
|
+
return ResultAsync.fromPromise(
|
|
61
|
+
response.json(),
|
|
62
|
+
() => new HTTPError("Failed to decode JSON", response.status),
|
|
63
|
+
).andThen((json) => (response.ok ? ok(json as T) : err(json as E)));
|
|
64
|
+
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-wrangler.d.ts","sourceRoot":"","sources":["../../src/cloudflare/auth-wrangler.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,WAAW,EAAE,MAAM,YAAY,CAAC;AAclD,eAAO,MAAM,cAAc,UAkB1B,CAAC;AAEF,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAyHD,eAAO,MAAM,0BAA0B,sDA0BtC,CAAC;AA0BF,cAAM,UAAW,SAAQ,KAAK;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBACjB,MAAM,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB;CAQF;AAED,eAAO,MAAM,aAAa,GACxB,SAAQ,MAAM,EAAmB,EACjC,MAAK,CAAC,OAAO,EAAE,MAAM,KAAK,IAAkB,4CA6E7C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-wrangler.js","sourceRoot":"","sources":["../../src/cloudflare/auth-wrangler.ts"],"names":[],"mappings":"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"}
|
package/lib/util/xdg-paths.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vendored XDG Base Directory Specification implementation
|
|
3
|
-
* Provides cross-platform directory paths for config and state
|
|
4
|
-
*/
|
|
5
|
-
export declare function createXdgAppPaths(appName: string): {
|
|
6
|
-
config: () => string;
|
|
7
|
-
state: () => string;
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=xdg-paths.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xdg-paths.d.ts","sourceRoot":"","sources":["../../src/util/xdg-paths.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM;kBAI5B,MAAM;iBAgBP,MAAM;EAoBzB"}
|
package/lib/util/xdg-paths.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
/**
|
|
4
|
-
* Vendored XDG Base Directory Specification implementation
|
|
5
|
-
* Provides cross-platform directory paths for config and state
|
|
6
|
-
*/
|
|
7
|
-
export function createXdgAppPaths(appName) {
|
|
8
|
-
const platform = process.platform;
|
|
9
|
-
const home = homedir();
|
|
10
|
-
function config() {
|
|
11
|
-
if (platform === "win32") {
|
|
12
|
-
return join(process.env.LOCALAPPDATA || join(home, "AppData", "Local"), appName);
|
|
13
|
-
}
|
|
14
|
-
else if (platform === "darwin") {
|
|
15
|
-
return join(home, "Library", "Preferences", appName);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
// Linux/Unix - follow XDG Base Directory Specification
|
|
19
|
-
const xdgConfigHome = process.env.XDG_CONFIG_HOME || join(home, ".config");
|
|
20
|
-
return join(xdgConfigHome, appName);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function state() {
|
|
24
|
-
if (platform === "win32") {
|
|
25
|
-
return join(process.env.LOCALAPPDATA || join(home, "AppData", "Local"), appName);
|
|
26
|
-
}
|
|
27
|
-
else if (platform === "darwin") {
|
|
28
|
-
return join(home, "Library", "Application Support", appName);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
// Linux/Unix - follow XDG Base Directory Specification
|
|
32
|
-
const xdgStateHome = process.env.XDG_STATE_HOME || join(home, ".local", "state");
|
|
33
|
-
return join(xdgStateHome, appName);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
config,
|
|
38
|
-
state,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=xdg-paths.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xdg-paths.js","sourceRoot":"","sources":["../../src/util/xdg-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,SAAS,MAAM;QACb,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,CACT,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAC1D,OAAO,CACR,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,SAAS,KAAK;QACZ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,CACT,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAC1D,OAAO,CACR,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,KAAK;KACN,CAAC;AACJ,CAAC"}
|
package/src/util/xdg-paths.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Vendored XDG Base Directory Specification implementation
|
|
6
|
-
* Provides cross-platform directory paths for config and state
|
|
7
|
-
*/
|
|
8
|
-
export function createXdgAppPaths(appName: string) {
|
|
9
|
-
const platform = process.platform;
|
|
10
|
-
const home = homedir();
|
|
11
|
-
|
|
12
|
-
function config(): string {
|
|
13
|
-
if (platform === "win32") {
|
|
14
|
-
return join(
|
|
15
|
-
process.env.LOCALAPPDATA || join(home, "AppData", "Local"),
|
|
16
|
-
appName,
|
|
17
|
-
);
|
|
18
|
-
} else if (platform === "darwin") {
|
|
19
|
-
return join(home, "Library", "Preferences", appName);
|
|
20
|
-
} else {
|
|
21
|
-
// Linux/Unix - follow XDG Base Directory Specification
|
|
22
|
-
const xdgConfigHome =
|
|
23
|
-
process.env.XDG_CONFIG_HOME || join(home, ".config");
|
|
24
|
-
return join(xdgConfigHome, appName);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function state(): string {
|
|
29
|
-
if (platform === "win32") {
|
|
30
|
-
return join(
|
|
31
|
-
process.env.LOCALAPPDATA || join(home, "AppData", "Local"),
|
|
32
|
-
appName,
|
|
33
|
-
);
|
|
34
|
-
} else if (platform === "darwin") {
|
|
35
|
-
return join(home, "Library", "Application Support", appName);
|
|
36
|
-
} else {
|
|
37
|
-
// Linux/Unix - follow XDG Base Directory Specification
|
|
38
|
-
const xdgStateHome =
|
|
39
|
-
process.env.XDG_STATE_HOME || join(home, ".local", "state");
|
|
40
|
-
return join(xdgStateHome, appName);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return {
|
|
45
|
-
config,
|
|
46
|
-
state,
|
|
47
|
-
};
|
|
48
|
-
}
|