@dev-crew-berlin/enter-js-utils 0.38.0 → 0.40.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.
@@ -1,8 +1,7 @@
1
1
  import { APIResult } from '../lib';
2
- import { AccessToken } from '../models/access-token';
3
2
  import { paths } from '../generated/api-schema';
4
3
  export interface APICredentials {
5
- accessToken: AccessToken;
4
+ accessToken: string;
6
5
  url: string;
7
6
  }
8
7
  declare type HTTPMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';
@@ -27,19 +26,12 @@ export default class APIBase {
27
26
  onLogout: (reason?: string) => void;
28
27
  });
29
28
  private static fetchResult;
30
- static fetchAccessToken(args: {
31
- url: string;
32
- user: string;
33
- password: string;
34
- deviceName: string;
35
- }): Promise<APIResult<AccessToken>>;
36
29
  private fetchFromEnter;
37
30
  protected get<Path extends keyof paths>(endpoint: Path): Promise<APIResult<ResponseType<Path, 'get'>>>;
38
31
  protected post<Path extends keyof paths>(endpoint: Path, data: RequestBody<Path, 'post'>): Promise<APIResult<ResponseType<Path, 'post'>>>;
39
32
  protected put<Path extends keyof paths>(endpoint: Path, data: RequestBody<Path, 'put'>): Promise<APIResult<ResponseType<Path, 'put'>>>;
40
33
  protected patch<Path extends keyof paths>(endpoint: Path, data: RequestBody<Path, 'patch'>): Promise<APIResult<ResponseType<Path, 'patch'>>>;
41
34
  protected delete<Path extends keyof paths>(endpoint: Path): Promise<APIResult<ResponseType<Path, 'delete'>>>;
42
- refreshToken(): Promise<APIResult<AccessToken>>;
43
35
  logout(): Promise<void>;
44
36
  }
45
37
  export {};
@@ -13,52 +13,10 @@ export default class APIBase {
13
13
  return failure(e);
14
14
  }
15
15
  }
16
- static async fetchAccessToken(args) {
17
- const body = {
18
- username: args.user,
19
- password: args.password,
20
- scope: '',
21
- client_id: args.deviceName
22
- };
23
- const res = await APIBase.fetchResult(`${args.url}/authenticate`, {
24
- method: 'POST',
25
- headers: {
26
- 'Content-Type': 'application/x-www-form-urlencoded'
27
- },
28
- body: new URLSearchParams(body)
29
- });
30
- if (!res.success) {
31
- return failure([{
32
- type: 'network-error',
33
- message: res.error.message,
34
- endpoint: 'authenticate'
35
- }]);
36
- }
37
- if (res.data.status >= 300) {
38
- try {
39
- const error = await res.data.json();
40
- return failure([{
41
- type: 'http-error',
42
- statusCode: res.data.status,
43
- message: error.error,
44
- endpoint: 'authenticate'
45
- }]);
46
- } catch (e) {
47
- return failure([{
48
- type: 'http-error',
49
- statusCode: res.data.status,
50
- message: 'Could not authenticate',
51
- endpoint: 'authenticate'
52
- }]);
53
- }
54
- }
55
- const payload = await res.data.json();
56
- return success(payload);
57
- }
58
16
  async fetchFromEnter(endpoint, method, data) {
59
17
  const body = data !== null ? JSON.stringify(data) : null;
60
18
  const headers = {
61
- Authorization: `bearer ${this.credentials.accessToken.access_token}`,
19
+ Authorization: `bearer ${this.credentials.accessToken}`,
62
20
  'Content-Type': 'application/json'
63
21
  };
64
22
  const res = await APIBase.fetchResult(`${this.credentials.url}${endpoint}`, {
@@ -131,17 +89,8 @@ export default class APIBase {
131
89
  if (!rawResponse.success) return rawResponse;
132
90
  return success(rawResponse.data);
133
91
  }
134
- async refreshToken() {
135
- return this.post('/authenticate/refresh', null);
136
- }
137
92
  async logout() {
138
93
  this.isLoggedIn = false;
139
94
  this.onLogout();
140
- try {
141
- // delete token at api backend so it becomes invalid
142
- await this.fetchFromEnter('/authenticate', 'delete', undefined);
143
- } catch (e) {
144
- console.warn('error deleting the token in the backend, so it is still valid', e);
145
- }
146
95
  }
147
96
  }
@@ -7,12 +7,6 @@ export declare type paths = {
7
7
  /** healthcheck to see if api server is running */
8
8
  get: operations["healthcheck_health_get"];
9
9
  };
10
- "/authenticate": {
11
- post: operations["login_authenticate_post"];
12
- };
13
- "/authenticate/refresh": {
14
- post: operations["refresh_token_authenticate_refresh_post"];
15
- };
16
10
  "/instances/{instance_name}/checkin_counts": {
17
11
  get: operations["checkin_counts_instances__instance_name__checkin_counts_get"];
18
12
  };
@@ -234,39 +228,6 @@ export declare type components = {
234
228
  /** Value */
235
229
  value?: string;
236
230
  };
237
- /** AuthResponse */
238
- AuthResponse: {
239
- /**
240
- * Token Type
241
- * @enum {string}
242
- */
243
- token_type: "bearer";
244
- /** Access Token */
245
- access_token: string;
246
- /**
247
- * Expires
248
- * Format: date-time
249
- */
250
- expires: string;
251
- };
252
- /** Body_login_authenticate_post */
253
- Body_login_authenticate_post: {
254
- /** Grant Type */
255
- grant_type?: string;
256
- /** Username */
257
- username: string;
258
- /** Password */
259
- password: string;
260
- /**
261
- * Scope
262
- * @default
263
- */
264
- scope: string;
265
- /** Client Id */
266
- client_id?: string;
267
- /** Client Secret */
268
- client_secret?: string;
269
- };
270
231
  /** CheckboxField */
271
232
  CheckboxField: {
272
233
  /**
@@ -638,8 +599,34 @@ export declare type components = {
638
599
  /** Max */
639
600
  max?: number;
640
601
  };
602
+ /**
603
+ * EmailUnsubscribedEvent
604
+ * @description Attendee unsubscribed from email list.
605
+ *
606
+ * This will add the email_address to a blacklist for all mailings from the domain
607
+ * associated to the instance.
608
+ */
609
+ EmailUnsubscribedEvent: {
610
+ /**
611
+ * Id
612
+ * Format: uuid
613
+ */
614
+ id?: string;
615
+ /**
616
+ * Event
617
+ * @default email-unsubscribed
618
+ * @enum {string}
619
+ */
620
+ event: "email-unsubscribed";
621
+ /** Instancename */
622
+ instanceName: string;
623
+ /** Emailaddress */
624
+ emailAddress: string;
625
+ /** Signature */
626
+ signature: string;
627
+ };
641
628
  /** EventList */
642
- EventList: (components["schemas"]["AttendeeCreatedEvent"] | components["schemas"]["AttendeeUpdatedEvent"] | components["schemas"]["AttendeeRespondedEvent"] | components["schemas"]["AttendeeDeletedEvent"] | components["schemas"]["CheckinCreatedEvent"] | components["schemas"]["CheckinDeletedEvent"] | components["schemas"]["PaymentPaidEvent"])[];
629
+ EventList: (components["schemas"]["AttendeeCreatedEvent"] | components["schemas"]["AttendeeUpdatedEvent"] | components["schemas"]["AttendeeRespondedEvent"] | components["schemas"]["EmailUnsubscribedEvent"] | components["schemas"]["AttendeeDeletedEvent"] | components["schemas"]["CheckinCreatedEvent"] | components["schemas"]["CheckinDeletedEvent"] | components["schemas"]["PaymentPaidEvent"])[];
643
630
  /** FieldGroup */
644
631
  FieldGroup: {
645
632
  /** Questions */
@@ -1037,7 +1024,7 @@ export declare type components = {
1037
1024
  };
1038
1025
  /** Permissions */
1039
1026
  permissions: {
1040
- [key: string]: ("attendees" | "add" | "email" | "invites" | "generate" | "edit" | "filter" | "export" | "export-pdf" | "delete" | "delete-final" | "payment" | "checkin" | "api" | "changes" | "private" | "files" | "import" | "bulk" | "email-bulk" | "questions" | "pages" | "templates" | "emails" | "pdfs" | "regflow" | "reg-scripts" | "export-custom" | "regdata" | "setup" | "read-stats" | "write-stats" | "backup" | "read-variables" | "write-variables" | "webhooks")[];
1027
+ [key: string]: ("attendees:read" | "attendees:create" | "attendees:write" | "attendees:write:bulk" | "attendees:import" | "attendees:export" | "attendees:delete:soft" | "attendees:delete:final" | "emails:send" | "emails:send:bulk" | "email-config:write" | "pdfs:write" | "pdfs:export" | "payment:write" | "checkins:write" | "changes:write" | "files:write" | "fields:write" | "fields:read" | "templates:write" | "register-flow:write" | "export-scripts:write" | "registration-code:write" | "settings:read" | "settings:write" | "stats:read" | "stats:write" | "backup:write" | "variables:read" | "variables:write" | "webhooks:read" | "webhooks:write")[];
1041
1028
  };
1042
1029
  };
1043
1030
  /** RadioButtonField */
@@ -1283,8 +1270,8 @@ export declare type components = {
1283
1270
  /** Rootpath */
1284
1271
  rootPath: string;
1285
1272
  };
1286
- /** UserUpdate */
1287
- UserUpdate: {
1273
+ /** UserPreferencesUpdate */
1274
+ UserPreferencesUpdate: {
1288
1275
  /** Userdata */
1289
1276
  userdata: {
1290
1277
  [key: string]: unknown;
@@ -1348,37 +1335,6 @@ export declare type operations = {
1348
1335
  };
1349
1336
  };
1350
1337
  };
1351
- login_authenticate_post: {
1352
- responses: {
1353
- /** Successful Response */
1354
- 200: {
1355
- content: {
1356
- "application/json": components["schemas"]["AuthResponse"];
1357
- };
1358
- };
1359
- /** Validation Error */
1360
- 422: {
1361
- content: {
1362
- "application/json": components["schemas"]["HTTPValidationError"];
1363
- };
1364
- };
1365
- };
1366
- requestBody: {
1367
- content: {
1368
- "application/x-www-form-urlencoded": components["schemas"]["Body_login_authenticate_post"];
1369
- };
1370
- };
1371
- };
1372
- refresh_token_authenticate_refresh_post: {
1373
- responses: {
1374
- /** Successful Response */
1375
- 200: {
1376
- content: {
1377
- "application/json": components["schemas"]["AuthResponse"];
1378
- };
1379
- };
1380
- };
1381
- };
1382
1338
  checkin_counts_instances__instance_name__checkin_counts_get: {
1383
1339
  parameters: {
1384
1340
  path: {
@@ -1476,7 +1432,7 @@ export declare type operations = {
1476
1432
  };
1477
1433
  requestBody: {
1478
1434
  content: {
1479
- "application/json": components["schemas"]["UserUpdate"];
1435
+ "application/json": components["schemas"]["UserPreferencesUpdate"];
1480
1436
  };
1481
1437
  };
1482
1438
  };
@@ -1,4 +1,3 @@
1
- export type { AccessToken } from './access-token';
2
1
  export { Attendee } from './attendee';
3
2
  export type { AttendeeJSON } from './attendee';
4
3
  export type { CheckinCounts } from './checkin-counts';
@@ -3,6 +3,8 @@ declare type Props = {
3
3
  checkinCount: number;
4
4
  rsvp: number;
5
5
  children?: ReactNode;
6
+ leftLabel?: string;
7
+ rightLabel?: string;
6
8
  };
7
9
  export declare const CheckinProgressBar: FunctionComponent<Props>;
8
10
  export {};
@@ -14,13 +14,13 @@ export const CheckinProgressBar = props => {
14
14
  className: _JSXStyle.dynamic([["818622950", [theme.colors.enterDarkGrey, theme.colors.enterBackground, theme.fonts.primary, theme.colors.enterGreen, theme.fonts.secondary]]]) + " " + 'number checkin-count'
15
15
  }, props.checkinCount, /*#__PURE__*/React.createElement("label", {
16
16
  className: _JSXStyle.dynamic([["818622950", [theme.colors.enterDarkGrey, theme.colors.enterBackground, theme.fonts.primary, theme.colors.enterGreen, theme.fonts.secondary]]])
17
- }, "Checkins")), /*#__PURE__*/React.createElement("div", {
17
+ }, props.leftLabel || 'Checkins')), /*#__PURE__*/React.createElement("div", {
18
18
  className: _JSXStyle.dynamic([["818622950", [theme.colors.enterDarkGrey, theme.colors.enterBackground, theme.fonts.primary, theme.colors.enterGreen, theme.fonts.secondary]]]) + " " + 'checkin-tag-display'
19
19
  }, props.children), /*#__PURE__*/React.createElement("div", {
20
20
  className: _JSXStyle.dynamic([["818622950", [theme.colors.enterDarkGrey, theme.colors.enterBackground, theme.fonts.primary, theme.colors.enterGreen, theme.fonts.secondary]]]) + " " + 'number confirmations'
21
21
  }, props.rsvp, /*#__PURE__*/React.createElement("label", {
22
22
  className: _JSXStyle.dynamic([["818622950", [theme.colors.enterDarkGrey, theme.colors.enterBackground, theme.fonts.primary, theme.colors.enterGreen, theme.fonts.secondary]]])
23
- }, "Confirmations")), /*#__PURE__*/React.createElement(_JSXStyle, {
23
+ }, props.rightLabel || 'Confirmations')), /*#__PURE__*/React.createElement(_JSXStyle, {
24
24
  id: "818622950",
25
25
  dynamic: [theme.colors.enterDarkGrey, theme.colors.enterBackground, theme.fonts.primary, theme.colors.enterGreen, theme.fonts.secondary]
26
26
  }, `.checkin-progress-bar.__jsx-style-dynamic-selector{position:relative;padding:0.5em 1em 0.7em;background-color:${theme.colors.enterDarkGrey};border:1px solid ${theme.colors.enterBackground};font-family:${theme.fonts.primary};color:white;display:grid;grid-template-columns:1fr auto 1fr;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;overflow:hidden;cursor:pointer;}.progress.__jsx-style-dynamic-selector{z-index:0;top:0;margin:0;padding:0;position:absolute;height:100%;background-color:${theme.colors.enterGreen};}.number.__jsx-style-dynamic-selector{z-index:1;font-weight:200;font-size:1.4em;}.checkin-count.__jsx-style-dynamic-selector{text-align:left;}.confirmations.__jsx-style-dynamic-selector{text-align:right;}.number.__jsx-style-dynamic-selector label.__jsx-style-dynamic-selector{display:block;font-family:${theme.fonts.secondary};font-size:0.6rem;-webkit-letter-spacing:0.05em;-moz-letter-spacing:0.05em;-ms-letter-spacing:0.05em;letter-spacing:0.05em;text-transform:uppercase;font-weight:normal;}.checkin-tag-display.__jsx-style-dynamic-selector{z-index:1;font-size:1.3em;}`));
@@ -4,35 +4,56 @@ declare const _default: ComponentMeta<React.FunctionComponent<{
4
4
  checkinCount: number;
5
5
  rsvp: number;
6
6
  children?: React.ReactNode;
7
+ leftLabel?: string | undefined;
8
+ rightLabel?: string | undefined;
7
9
  }>>;
8
10
  export default _default;
9
11
  export declare const Basic: ComponentStory<React.FunctionComponent<{
10
12
  checkinCount: number;
11
13
  rsvp: number;
12
14
  children?: React.ReactNode;
15
+ leftLabel?: string | undefined;
16
+ rightLabel?: string | undefined;
13
17
  }>>;
14
18
  export declare const WithoutTagName: ComponentStory<React.FunctionComponent<{
15
19
  checkinCount: number;
16
20
  rsvp: number;
17
21
  children?: React.ReactNode;
22
+ leftLabel?: string | undefined;
23
+ rightLabel?: string | undefined;
18
24
  }>>;
19
25
  export declare const NoCheckins: ComponentStory<React.FunctionComponent<{
20
26
  checkinCount: number;
21
27
  rsvp: number;
22
28
  children?: React.ReactNode;
29
+ leftLabel?: string | undefined;
30
+ rightLabel?: string | undefined;
23
31
  }>>;
24
32
  export declare const AllCheckinsComplete: ComponentStory<React.FunctionComponent<{
25
33
  checkinCount: number;
26
34
  rsvp: number;
27
35
  children?: React.ReactNode;
36
+ leftLabel?: string | undefined;
37
+ rightLabel?: string | undefined;
28
38
  }>>;
29
39
  export declare const MoreCheckinsThanExpected: ComponentStory<React.FunctionComponent<{
30
40
  checkinCount: number;
31
41
  rsvp: number;
32
42
  children?: React.ReactNode;
43
+ leftLabel?: string | undefined;
44
+ rightLabel?: string | undefined;
33
45
  }>>;
34
46
  export declare const NoRSVP: ComponentStory<React.FunctionComponent<{
35
47
  checkinCount: number;
36
48
  rsvp: number;
37
49
  children?: React.ReactNode;
50
+ leftLabel?: string | undefined;
51
+ rightLabel?: string | undefined;
52
+ }>>;
53
+ export declare const CustomLabels: ComponentStory<React.FunctionComponent<{
54
+ checkinCount: number;
55
+ rsvp: number;
56
+ children?: React.ReactNode;
57
+ leftLabel?: string | undefined;
58
+ rightLabel?: string | undefined;
38
59
  }>>;
@@ -39,4 +39,12 @@ NoRSVP.args = {
39
39
  rsvp: 0,
40
40
  checkinCount: 200,
41
41
  children: 'Dinner'
42
+ };
43
+ export const CustomLabels = Template.bind({});
44
+ CustomLabels.args = {
45
+ rsvp: 200,
46
+ checkinCount: 125,
47
+ children: 'Dinner',
48
+ leftLabel: 'Present',
49
+ rightLabel: 'Guests'
42
50
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev-crew-berlin/enter-js-utils",
3
- "version": "0.38.0",
3
+ "version": "0.40.0",
4
4
  "description": "utils such as vaildation and other helpers to work with data from the enter app",
5
5
  "files": [
6
6
  "dist",
@@ -53,9 +53,9 @@
53
53
  "@storybook/react": "^6.5.15",
54
54
  "@storybook/testing-library": "^0.0.13",
55
55
  "@types/node": "^17.0.38",
56
- "@types/uuid": "^8.3.4",
57
56
  "@types/react": "^18.0.10",
58
57
  "@types/react-dom": "^18.0.5",
58
+ "@types/uuid": "^8.3.4",
59
59
  "@typescript-eslint/eslint-plugin": "^5.27.0",
60
60
  "@typescript-eslint/parser": "^5.27.0",
61
61
  "eslint": "^8.16.0",
@@ -1,2 +0,0 @@
1
- import { components } from '../generated/api-schema';
2
- export declare type AccessToken = components['schemas']['AuthResponse'];
@@ -1 +0,0 @@
1
- export {};