Skip to content

Commit ffcd1b5

Browse files
committed
better error handling and token caching
1 parent 8d16fcf commit ffcd1b5

3 files changed

Lines changed: 33 additions & 2 deletions

File tree

auth.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import {
1010
retryLink,
1111
splitLink,
1212
TRPCClientError,
13+
type TRPCLink,
1314
} from "@trpc/client";
15+
import { observable } from "@trpc/server/observable";
1416
import { Spinner } from "@std/cli/unstable-spinner";
1517
import { error } from "./util.ts";
1618
import token_storage from "./token_storage.ts";
@@ -19,6 +21,25 @@ import { EventSourcePolyfill } from "event-source-polyfill";
1921
export function createTrpcClient(deployUrl: string) {
2022
let storedAuth = token_storage.get();
2123

24+
// deno-lint-ignore no-explicit-any
25+
const errorLink: TRPCLink<any> = () => {
26+
return ({ next, op }) => {
27+
return observable((observer) => {
28+
return next(op).subscribe({
29+
next(value) {
30+
observer.next(value);
31+
},
32+
error(err) {
33+
error(err.message);
34+
},
35+
complete() {
36+
observer.complete();
37+
},
38+
});
39+
});
40+
};
41+
};
42+
2243
const transformer: TRPCCombinedDataTransformer = {
2344
input: {
2445
serialize,
@@ -35,6 +56,7 @@ export function createTrpcClient(deployUrl: string) {
3556
// deno-lint-ignore no-explicit-any
3657
return createTRPCClient<any>({
3758
links: [
59+
errorLink,
3860
retryLink({
3961
retry({ error }) {
4062
if (error.message !== "Unauthorized") {

publish.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ export async function publish(
103103
}
104104
}
105105
hashesSpinner.stop();
106-
console.log(`${green("✔")} Generated hashes`);
107106

108107
const trpcClient = createTrpcClient(deployUrl);
109108

@@ -116,6 +115,9 @@ export async function publish(
116115
manifest,
117116
});
118117

118+
// doing this after we initiate the cli revision in case it fails (ie app not existing).
119+
console.log(`${green("✔")} Generated hashes`);
120+
119121
console.log(
120122
`You can view your application overview here:\n ${deployUrl}/${org}/${app}`,
121123
);
@@ -251,6 +253,9 @@ export async function publish(
251253
} else {
252254
console.log("No files were changed, so there is nothing to upload.");
253255
}
256+
console.log(
257+
"You may now cancel this command, or wait until your domains are printed out.",
258+
);
254259

255260
const completionSpinner = new Spinner({
256261
message: "Awaiting revision to complete...",

token_storage.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
1+
let cachedToken: string | null = null;
2+
13
export default {
24
get(): string | null {
35
// @ts-ignore deno internals
4-
return Deno[Deno.internal].core.ops.op_deploy_token_get();
6+
return cachedToken ??= Deno[Deno.internal].core.ops.op_deploy_token_get();
57
},
68
set(token: string) {
79
// @ts-ignore deno internals
810
Deno[Deno.internal].core.ops.op_deploy_token_set(token);
11+
cachedToken = token;
912
},
1013
remove() {
1114
// @ts-ignore deno internals
1215
Deno[Deno.internal].core.ops.op_deploy_token_delete();
16+
cachedToken = null;
1317
},
1418
};

0 commit comments

Comments
 (0)