@gitpod/gitpod-protocol 0.1.5-tar-sh-active-users.37 → 0.1.5-tar-sh-active-users-new.2

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 (76) hide show
  1. package/data/gitpod-schema.json +8 -0
  2. package/lib/attribution.d.ts +4 -0
  3. package/lib/attribution.d.ts.map +1 -1
  4. package/lib/attribution.js +14 -0
  5. package/lib/attribution.js.map +1 -1
  6. package/lib/billing-mode.d.ts +2 -0
  7. package/lib/billing-mode.d.ts.map +1 -1
  8. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  9. package/lib/encryption/encryption-engine.js +3 -3
  10. package/lib/encryption/encryption-engine.js.map +1 -1
  11. package/lib/encryption/encryption-engine.spec.js +1 -1
  12. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  13. package/lib/encryption/key-provider.js +1 -1
  14. package/lib/encryption/key-provider.js.map +1 -1
  15. package/lib/experiments/configcat.d.ts +1 -2
  16. package/lib/experiments/configcat.d.ts.map +1 -1
  17. package/lib/experiments/configcat.js +4 -6
  18. package/lib/experiments/configcat.js.map +1 -1
  19. package/lib/experiments/types.d.ts +2 -3
  20. package/lib/experiments/types.d.ts.map +1 -1
  21. package/lib/experiments/types.js.map +1 -1
  22. package/lib/gitpod-service.d.ts +3 -12
  23. package/lib/gitpod-service.d.ts.map +1 -1
  24. package/lib/gitpod-service.js.map +1 -1
  25. package/lib/index.d.ts +0 -1
  26. package/lib/index.d.ts.map +1 -1
  27. package/lib/index.js +0 -1
  28. package/lib/index.js.map +1 -1
  29. package/lib/messaging/error.d.ts +1 -0
  30. package/lib/messaging/error.d.ts.map +1 -1
  31. package/lib/messaging/error.js +2 -0
  32. package/lib/messaging/error.js.map +1 -1
  33. package/lib/plans.js +2 -2
  34. package/lib/plans.js.map +1 -1
  35. package/lib/protocol.d.ts +26 -17
  36. package/lib/protocol.d.ts.map +1 -1
  37. package/lib/protocol.js +11 -8
  38. package/lib/protocol.js.map +1 -1
  39. package/lib/teams-projects-protocol.d.ts +1 -0
  40. package/lib/teams-projects-protocol.d.ts.map +1 -1
  41. package/lib/teams-projects-protocol.js.map +1 -1
  42. package/lib/util/nice-grpc.d.ts +9 -0
  43. package/lib/util/nice-grpc.d.ts.map +1 -0
  44. package/lib/util/nice-grpc.js +119 -0
  45. package/lib/util/nice-grpc.js.map +1 -0
  46. package/lib/workspace-cluster.d.ts +6 -5
  47. package/lib/workspace-cluster.d.ts.map +1 -1
  48. package/lib/workspace-cluster.js.map +1 -1
  49. package/lib/wsready.d.ts +3 -3
  50. package/lib/wsready.d.ts.map +1 -1
  51. package/lib/wsready.js +2 -0
  52. package/lib/wsready.js.map +1 -1
  53. package/package.json +3 -1
  54. package/pkg-yarn.lock +3 -1
  55. package/provenance-bundle.jsonl +1 -1
  56. package/src/attribution.ts +15 -0
  57. package/src/billing-mode.ts +4 -0
  58. package/src/encryption/encryption-engine.spec.ts +1 -1
  59. package/src/encryption/encryption-engine.ts +7 -3
  60. package/src/encryption/key-provider.ts +1 -1
  61. package/src/experiments/configcat.ts +3 -5
  62. package/src/experiments/types.ts +4 -5
  63. package/src/gitpod-service.ts +3 -14
  64. package/src/index.ts +0 -1
  65. package/src/messaging/error.ts +3 -0
  66. package/src/plans.ts +2 -2
  67. package/src/protocol.ts +31 -23
  68. package/src/teams-projects-protocol.ts +1 -0
  69. package/src/util/nice-grpc.ts +93 -0
  70. package/src/workspace-cluster.ts +11 -6
  71. package/src/wsready.ts +4 -5
  72. package/lib/email-protocol.d.ts +0 -49
  73. package/lib/email-protocol.d.ts.map +0 -1
  74. package/lib/email-protocol.js +0 -28
  75. package/lib/email-protocol.js.map +0 -1
  76. package/src/email-protocol.ts +0 -65
@@ -227,16 +227,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
227
227
  */
228
228
  getSnapshots(workspaceID: string): Promise<string[]>;
229
229
 
230
- /**
231
- * stores/updates layout information for the given workspace
232
- */
233
- storeLayout(workspaceId: string, layoutData: string): Promise<void>;
234
-
235
- /**
236
- * retrieves layout information for the given workspace
237
- */
238
- getLayout(workspaceId: string): Promise<string | undefined>;
239
-
240
230
  guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
241
231
 
242
232
  /**
@@ -287,9 +277,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
287
277
  getStripePublishableKey(): Promise<string>;
288
278
  getStripeSetupIntentClientSecret(): Promise<string>;
289
279
  findStripeSubscriptionId(attributionId: string): Promise<string | undefined>;
290
- createOrUpdateStripeCustomerForTeam(teamId: string, currency: string): Promise<void>;
291
- createOrUpdateStripeCustomerForUser(currency: string): Promise<void>;
292
- subscribeToStripe(attributionId: string, setupIntentId: string): Promise<void>;
280
+ createStripeCustomerIfNeeded(attributionId: string, currency: string): Promise<void>;
281
+ subscribeToStripe(attributionId: string, setupIntentId: string, usageLimit: number): Promise<number | undefined>;
293
282
  getStripePortalUrl(attributionId: string): Promise<string>;
294
283
  getUsageLimit(attributionId: string): Promise<number | undefined>;
295
284
  setUsageLimit(attributionId: string, usageLimit: number): Promise<void>;
@@ -297,6 +286,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
297
286
  listUsage(req: ListUsageRequest): Promise<ListUsageResponse>;
298
287
 
299
288
  setUsageAttribution(usageAttribution: string): Promise<void>;
289
+ listAvailableUsageAttributionIds(): Promise<string[]>;
300
290
 
301
291
  getBillingModeForUser(): Promise<BillingMode>;
302
292
  getBillingModeForTeam(teamId: string): Promise<BillingMode>;
@@ -439,7 +429,6 @@ export namespace GitpodServer {
439
429
  }
440
430
  export interface TakeSnapshotOptions {
441
431
  workspaceId: string;
442
- layoutData?: string;
443
432
  /* this is here to enable backwards-compatibility and untangling rollout between workspace, IDE and meta */
444
433
  dontWait?: boolean;
445
434
  }
package/src/index.ts CHANGED
@@ -13,7 +13,6 @@ export * from "./license-protocol";
13
13
  export * from "./workspace-instance";
14
14
  export * from "./permission";
15
15
  export * from "./admin-protocol";
16
- export * from "./email-protocol";
17
16
  export * from "./headless-workspace-log";
18
17
  export * from "./context-url";
19
18
  export * from "./teams-projects-protocol";
@@ -94,4 +94,7 @@ export namespace ErrorCodes {
94
94
 
95
95
  // 640 Headless logs are not available (yet)
96
96
  export const HEADLESS_LOG_NOT_YET_AVAILABLE = 640;
97
+
98
+ // 650 Invalid Value
99
+ export const INVALID_VALUE = 650;
97
100
  }
package/src/plans.ts CHANGED
@@ -131,7 +131,7 @@ export namespace Plans {
131
131
  githubPlanNumber: 1,
132
132
 
133
133
  type: "free",
134
- name: "Open Source",
134
+ name: "Free",
135
135
  currency: "USD",
136
136
  pricePerMonth: 0,
137
137
  hoursPerMonth: 100,
@@ -146,7 +146,7 @@ export namespace Plans {
146
146
  githubPlanNumber: 5,
147
147
 
148
148
  type: "free-50",
149
- name: "Open Source",
149
+ name: "Free",
150
150
  currency: "USD",
151
151
  pricePerMonth: 0,
152
152
  hoursPerMonth: 50,
package/src/protocol.ts CHANGED
@@ -286,6 +286,8 @@ export interface UserFeatureSettings {
286
286
  permanentWSFeatureFlags?: NamedWorkspaceFeatureFlag[];
287
287
  }
288
288
 
289
+ export type BillingTier = "paid" | "free";
290
+
289
291
  /**
290
292
  * The values of this type MUST MATCH enum values in WorkspaceFeatureFlag from ws-manager/client/core_pb.d.ts
291
293
  * If they don't we'll break things during workspace startup.
@@ -296,6 +298,7 @@ export const WorkspaceFeatureFlags = {
296
298
  protected_secrets: undefined,
297
299
  workspace_class_limiting: undefined,
298
300
  workspace_connection_limiting: undefined,
301
+ workspace_psi: undefined,
299
302
  };
300
303
  export type NamedWorkspaceFeatureFlag = keyof typeof WorkspaceFeatureFlags;
301
304
  export namespace NamedWorkspaceFeatureFlag {
@@ -637,6 +640,7 @@ export interface PendingGithubEvent {
637
640
  creationDate: Date;
638
641
  type: string;
639
642
  event: string;
643
+ deleted: boolean;
640
644
  }
641
645
 
642
646
  export interface Snapshot {
@@ -645,7 +649,6 @@ export interface Snapshot {
645
649
  availableTime?: string;
646
650
  originalWorkspaceId: string;
647
651
  bucketId: string;
648
- layoutData?: string;
649
652
  state: SnapshotState;
650
653
  message?: string;
651
654
  }
@@ -659,12 +662,6 @@ export interface VolumeSnapshot {
659
662
 
660
663
  export type SnapshotState = "pending" | "available" | "error";
661
664
 
662
- export interface LayoutData {
663
- workspaceId: string;
664
- lastUpdatedTime: string;
665
- layoutData: string;
666
- }
667
-
668
665
  export interface Workspace {
669
666
  id: string;
670
667
  creationTime: string;
@@ -726,7 +723,7 @@ export interface Workspace {
726
723
 
727
724
  export type WorkspaceSoftDeletion = "user" | "gc";
728
725
 
729
- export type WorkspaceType = "regular" | "prebuild" | "probe"; // TODO(gpl) Removed prove here
726
+ export type WorkspaceType = "regular" | "prebuild";
730
727
 
731
728
  export namespace Workspace {
732
729
  export function getFullRepositoryName(ws: Workspace): string | undefined {
@@ -799,6 +796,8 @@ export interface JetBrainsConfig {
799
796
  goland?: JetBrainsProductConfig;
800
797
  pycharm?: JetBrainsProductConfig;
801
798
  phpstorm?: JetBrainsProductConfig;
799
+ rubymine?: JetBrainsProductConfig;
800
+ webstorm?: JetBrainsProductConfig;
802
801
  }
803
802
  export interface JetBrainsProductConfig {
804
803
  prebuilds?: JetBrainsPrebuilds;
@@ -815,8 +814,8 @@ export interface RepositoryCloneInformation {
815
814
 
816
815
  export interface CoreDumpConfig {
817
816
  enabled?: boolean;
818
- softLimit?: number;
819
- hardLimit?: number;
817
+ softLimit?: number;
818
+ hardLimit?: number;
820
819
  }
821
820
 
822
821
  export interface WorkspaceConfig {
@@ -1113,13 +1112,16 @@ export namespace SnapshotContext {
1113
1112
  }
1114
1113
  }
1115
1114
 
1116
- export interface StartPrebuildContext extends WorkspaceContext {
1117
- actual: WorkspaceContext;
1115
+ export interface WithCommitHistory {
1118
1116
  commitHistory?: string[];
1119
1117
  additionalRepositoryCommitHistories?: {
1120
1118
  cloneUrl: string;
1121
1119
  commitHistory: string[];
1122
1120
  }[];
1121
+ }
1122
+
1123
+ export interface StartPrebuildContext extends WorkspaceContext, WithCommitHistory {
1124
+ actual: WorkspaceContext;
1123
1125
  project?: Project;
1124
1126
  branch?: string;
1125
1127
  }
@@ -1163,17 +1165,6 @@ export namespace WithEnvvarsContext {
1163
1165
  }
1164
1166
  }
1165
1167
 
1166
- export interface WorkspaceProbeContext extends WorkspaceContext {
1167
- responseURL: string;
1168
- responseToken: string;
1169
- }
1170
-
1171
- export namespace WorkspaceProbeContext {
1172
- export function is(context: any): context is WorkspaceProbeContext {
1173
- return context && "responseURL" in context && "responseToken" in context;
1174
- }
1175
- }
1176
-
1177
1168
  export type RefType = "branch" | "tag" | "revision";
1178
1169
  export namespace RefType {
1179
1170
  export const getRefType = (commit: Commit): RefType => {
@@ -1213,6 +1204,16 @@ export namespace AdditionalContentContext {
1213
1204
  }
1214
1205
  }
1215
1206
 
1207
+ export interface OpenPrebuildContext extends WorkspaceContext {
1208
+ openPrebuildID: string;
1209
+ }
1210
+
1211
+ export namespace OpenPrebuildContext {
1212
+ export function is(ctx: any): ctx is OpenPrebuildContext {
1213
+ return "openPrebuildID" in ctx;
1214
+ }
1215
+ }
1216
+
1216
1217
  export interface CommitContext extends WorkspaceContext, GitCheckoutInfo {
1217
1218
  /** @deprecated Moved to .repository.cloneUrl, left here for backwards-compatibility for old workspace contextes in the DB */
1218
1219
  cloneUrl?: string;
@@ -1385,6 +1386,8 @@ export enum CreateWorkspaceMode {
1385
1386
  UsePrebuild = "use-prebuild",
1386
1387
  // SelectIfRunning returns a list of currently running workspaces for the context URL if there are any, otherwise falls back to Default mode
1387
1388
  SelectIfRunning = "select-if-running",
1389
+ // UseLastSuccessfulPrebuild returns ...
1390
+ UseLastSuccessfulPrebuild = "use-last-successful-prebuild",
1388
1391
  }
1389
1392
 
1390
1393
  export namespace WorkspaceCreationResult {
@@ -1520,6 +1523,11 @@ export interface Terms {
1520
1523
  readonly formElements?: object;
1521
1524
  }
1522
1525
 
1526
+ export interface StripeConfig {
1527
+ individualUsagePriceIds: { [currency: string]: string };
1528
+ teamUsagePriceIds: { [currency: string]: string };
1529
+ }
1530
+
1523
1531
  export type BillingStrategy = "other" | "stripe";
1524
1532
  export interface CostCenter {
1525
1533
  readonly id: AttributionId;
@@ -45,6 +45,7 @@ export namespace Project {
45
45
 
46
46
  export interface Overview {
47
47
  branches: BranchDetails[];
48
+ isConsideredInactive?: boolean;
48
49
  }
49
50
 
50
51
  export namespace Overview {
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License-AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import { isAbortError } from "abort-controller-x";
8
+ import {
9
+ CallOptions,
10
+ ClientError,
11
+ ClientMiddleware,
12
+ ClientMiddlewareCall,
13
+ Status,
14
+ MethodDescriptor,
15
+ } from "nice-grpc-common";
16
+ import { GrpcMethodType, IClientCallMetrics } from "./grpc";
17
+
18
+ function getLabels(method: MethodDescriptor) {
19
+ const callType = method.requestStream
20
+ ? method.responseStream
21
+ ? "bidi_stream"
22
+ : "client_stream"
23
+ : method.responseStream
24
+ ? "server_stream"
25
+ : "unary";
26
+ const { path } = method;
27
+ const [serviceName, methodName] = path.split("/").slice(1);
28
+
29
+ return {
30
+ type: callType as GrpcMethodType,
31
+ service: serviceName,
32
+ method: methodName,
33
+ };
34
+ }
35
+
36
+ async function* incrementStreamMessagesCounter<T>(iterable: AsyncIterable<T>, callback: () => void): AsyncIterable<T> {
37
+ for await (const item of iterable) {
38
+ callback();
39
+ yield item;
40
+ }
41
+ }
42
+
43
+ export function prometheusClientMiddleware(metrics: IClientCallMetrics): ClientMiddleware {
44
+ return async function* prometheusClientMiddlewareGenerator<Request, Response>(
45
+ call: ClientMiddlewareCall<Request, Response>,
46
+ options: CallOptions,
47
+ ): AsyncGenerator<Response, Response | void, undefined> {
48
+ const labels = getLabels(call.method);
49
+
50
+ metrics.started(labels);
51
+
52
+ let settled = false;
53
+ let status: Status = Status.OK;
54
+
55
+ try {
56
+ let request;
57
+
58
+ if (!call.requestStream) {
59
+ request = call.request;
60
+ } else {
61
+ request = incrementStreamMessagesCounter(call.request, metrics.sent.bind(metrics, labels));
62
+ }
63
+
64
+ if (!call.responseStream) {
65
+ const response = yield* call.next(request, options);
66
+ settled = true;
67
+ return response;
68
+ } else {
69
+ yield* incrementStreamMessagesCounter(
70
+ call.next(request, options),
71
+ metrics.received.bind(metrics, labels),
72
+ );
73
+ settled = true;
74
+ return;
75
+ }
76
+ } catch (err) {
77
+ settled = true;
78
+ if (err instanceof ClientError) {
79
+ status = err.code;
80
+ } else if (isAbortError(err)) {
81
+ status = Status.CANCELLED;
82
+ } else {
83
+ status = Status.UNKNOWN;
84
+ }
85
+ throw err;
86
+ } finally {
87
+ if (!settled) {
88
+ status = Status.CANCELLED;
89
+ }
90
+ metrics.handled({ ...labels, code: Status[status] });
91
+ }
92
+ };
93
+ }
@@ -15,6 +15,10 @@ export interface WorkspaceCluster {
15
15
  // Must be identical to the installationShortname of the cluster it represents!
16
16
  name: string;
17
17
 
18
+ // The name of the application cluster to which this cluster should be registered.
19
+ // The name can be at most 60 characters.
20
+ applicationCluster: string;
21
+
18
22
  // URL of the cluster's ws-manager API
19
23
  url: string;
20
24
 
@@ -86,20 +90,21 @@ export interface WorkspaceClusterDB {
86
90
  * Deletes the cluster identified by this name, if any.
87
91
  * @param name
88
92
  */
89
- deleteByName(name: string): Promise<void>;
93
+ deleteByName(name: string, applicationCluster: string): Promise<void>;
90
94
 
91
95
  /**
92
96
  * Finds a WorkspaceCluster with the given name. If there is none, `undefined` is returned.
93
97
  * @param name
94
98
  */
95
- findByName(name: string): Promise<WorkspaceCluster | undefined>;
99
+ findByName(name: string, applicationCluster: string): Promise<WorkspaceCluster | undefined>;
96
100
 
97
101
  /**
98
102
  * Lists all WorkspaceClusterWoTls for which the given predicate is true (does not return TLS for size/speed concerns)
99
103
  * @param predicate
100
104
  */
101
- findFiltered(predicate: DeepPartial<WorkspaceClusterFilter>): Promise<WorkspaceClusterWoTLS[]>;
102
- }
103
- export interface WorkspaceClusterFilter extends Pick<WorkspaceCluster, "state" | "govern" | "url"> {
104
- minScore: number;
105
+ findFiltered(predicate: WorkspaceClusterFilter): Promise<WorkspaceClusterWoTLS[]>;
105
106
  }
107
+
108
+ export type WorkspaceClusterFilter = Pick<WorkspaceCluster, "applicationCluster"> &
109
+ DeepPartial<Pick<WorkspaceCluster, "name" | "state" | "govern" | "url">> &
110
+ Partial<{ minScore: number }>;
package/src/wsready.ts CHANGED
@@ -4,15 +4,14 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- // generated using github.com/32leaves/bel on 2022-07-21 07:41:48.081573085 +0000 UTC m=+0.009109470
7
+ // generated using github.com/32leaves/bel on 2022-10-10 21:41:56.018177383 +0000 UTC m=+0.010324839
8
8
  // DO NOT MODIFY
9
9
 
10
- export interface WorkspaceReadyMessage {
11
- source: WorkspaceInitSource;
12
- }
13
-
14
10
  export enum WorkspaceInitSource {
15
11
  WorkspaceInitFromBackup = "from-backup",
16
12
  WorkspaceInitFromPrebuild = "from-prebuild",
17
13
  WorkspaceInitFromOther = "from-other",
18
14
  }
15
+ export interface WorkspaceReadyMessage {
16
+ source: WorkspaceInitSource;
17
+ }
@@ -1,49 +0,0 @@
1
- /**
2
- * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
- * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
5
- */
6
- export declare type EMailState = "scheduledInternal" | "scheduledSendgrid";
7
- export interface EMailStatus {
8
- /** The time the email entry was inserted into the DB */
9
- scheduledInternalTime: string;
10
- /** The time the email state transitioned to "scheduledSendgrid" */
11
- scheduledSendgridTime?: string;
12
- /** In case of any errors during sending with Sendgrid it gets noted here */
13
- error?: string;
14
- }
15
- export declare namespace EMailStatus {
16
- function getState(status: EMailStatus): EMailState;
17
- }
18
- export interface EmailAddress {
19
- name?: string;
20
- email: string;
21
- }
22
- export interface EMailParameters {
23
- /** undefined means default from template */
24
- subject?: string;
25
- /** The sender address */
26
- senderAddress: string | EmailAddress;
27
- /** The replyTo address */
28
- replyToAddress?: string | EmailAddress;
29
- /** The SendGrid template id */
30
- templateId: string;
31
- /** The parameters for the SendGrid template */
32
- templateParams: {};
33
- }
34
- export declare type EMail = {
35
- /** The unique id of this email (uuid/v4 for now) */
36
- uid: string;
37
- /** The id of the user this email was sent to */
38
- userId: string;
39
- /** The address this email was sent to */
40
- recipientAddress: string;
41
- /** Which campaign scheduled this email */
42
- campaignId: string;
43
- /** The parameters this email was sent with (template id, template params, etc) */
44
- params: EMailParameters;
45
- } & EMailStatus;
46
- export declare namespace EMail {
47
- const create: (ts: Omit<EMail, "uid">) => EMail;
48
- }
49
- //# sourceMappingURL=email-protocol.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-protocol.d.ts","sourceRoot":"","sources":["../src/email-protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,oBAAY,UAAU,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAEnE,MAAM,WAAW,WAAW;IACxB,wDAAwD;IACxD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,yBAAiB,WAAW,CAAC;IACzB,SAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAKxD;CACJ;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC5B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,aAAa,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,0BAA0B;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IACvC,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,cAAc,EAAE,EAAE,CAAC;CACtB;AAED,oBAAY,KAAK,GAAG;IAChB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,MAAM,EAAE,eAAe,CAAC;CAC3B,GAAG,WAAW,CAAC;AAEhB,yBAAiB,KAAK,CAAC;IACZ,MAAM,MAAM,OAAQ,KAAK,KAAK,EAAE,KAAK,CAAC,KAAG,KAI/C,CAAC;CACL"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
4
- * Licensed under the GNU Affero General Public License (AGPL).
5
- * See License-AGPL.txt in the project root for license information.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.EMail = exports.EMailStatus = void 0;
9
- const uuid_1 = require("uuid");
10
- var EMailStatus;
11
- (function (EMailStatus) {
12
- function getState(status) {
13
- if (status.scheduledSendgridTime) {
14
- return "scheduledSendgrid";
15
- }
16
- return "scheduledInternal";
17
- }
18
- EMailStatus.getState = getState;
19
- })(EMailStatus = exports.EMailStatus || (exports.EMailStatus = {}));
20
- var EMail;
21
- (function (EMail) {
22
- EMail.create = (ts) => {
23
- const withId = ts;
24
- withId.uid = (0, uuid_1.v4)();
25
- return withId;
26
- };
27
- })(EMail = exports.EMail || (exports.EMail = {}));
28
- //# sourceMappingURL=email-protocol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-protocol.js","sourceRoot":"","sources":["../src/email-protocol.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,+BAAoC;AAYpC,IAAiB,WAAW,CAO3B;AAPD,WAAiB,WAAW;IACxB,SAAgB,QAAQ,CAAC,MAAmB;QACxC,IAAI,MAAM,CAAC,qBAAqB,EAAE;YAC9B,OAAO,mBAAmB,CAAC;SAC9B;QACD,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IALe,oBAAQ,WAKvB,CAAA;AACL,CAAC,EAPgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAO3B;AAiCD,IAAiB,KAAK,CAMrB;AAND,WAAiB,KAAK;IACL,YAAM,GAAG,CAAC,EAAsB,EAAS,EAAE;QACpD,MAAM,MAAM,GAAG,EAAW,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,IAAA,SAAM,GAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,EANgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAMrB"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
- * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
5
- */
6
-
7
- import { v4 as uuidv4 } from "uuid";
8
-
9
- export type EMailState = "scheduledInternal" | "scheduledSendgrid";
10
-
11
- export interface EMailStatus {
12
- /** The time the email entry was inserted into the DB */
13
- scheduledInternalTime: string;
14
- /** The time the email state transitioned to "scheduledSendgrid" */
15
- scheduledSendgridTime?: string;
16
- /** In case of any errors during sending with Sendgrid it gets noted here */
17
- error?: string;
18
- }
19
- export namespace EMailStatus {
20
- export function getState(status: EMailStatus): EMailState {
21
- if (status.scheduledSendgridTime) {
22
- return "scheduledSendgrid";
23
- }
24
- return "scheduledInternal";
25
- }
26
- }
27
-
28
- export interface EmailAddress {
29
- name?: string;
30
- email: string;
31
- }
32
-
33
- export interface EMailParameters {
34
- /** undefined means default from template */
35
- subject?: string;
36
- /** The sender address */
37
- senderAddress: string | EmailAddress;
38
- /** The replyTo address */
39
- replyToAddress?: string | EmailAddress;
40
- /** The SendGrid template id */
41
- templateId: string;
42
- /** The parameters for the SendGrid template */
43
- templateParams: {};
44
- }
45
-
46
- export type EMail = {
47
- /** The unique id of this email (uuid/v4 for now) */
48
- uid: string;
49
- /** The id of the user this email was sent to */
50
- userId: string;
51
- /** The address this email was sent to */
52
- recipientAddress: string;
53
- /** Which campaign scheduled this email */
54
- campaignId: string;
55
- /** The parameters this email was sent with (template id, template params, etc) */
56
- params: EMailParameters;
57
- } & EMailStatus;
58
-
59
- export namespace EMail {
60
- export const create = (ts: Omit<EMail, "uid">): EMail => {
61
- const withId = ts as EMail;
62
- withId.uid = uuidv4();
63
- return withId;
64
- };
65
- }