@pb33f/cowboy-components 0.7.5 → 0.7.7

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 (64) hide show
  1. package/dist/components/auth/login-button.d.ts +3 -0
  2. package/dist/components/auth/login-button.js +29 -8
  3. package/dist/components/auth/login-panel.d.ts +2 -1
  4. package/dist/components/auth/login-panel.js +3 -2
  5. package/dist/components/auth/oauth-login.d.ts +1 -0
  6. package/dist/components/auth/oauth-login.js +11 -5
  7. package/dist/components/editor/editor-breadcrumb.css.js +1 -1
  8. package/dist/components/model-renderer/rendered-node.d.ts +2 -0
  9. package/dist/components/model-renderer/rendered-node.js +18 -0
  10. package/dist/components/model-renderer/responses.d.ts +11 -0
  11. package/dist/components/model-renderer/responses.js +46 -0
  12. package/dist/components/model-tree/tree.js +1 -1
  13. package/dist/components/paginator/paginator.css.js +1 -1
  14. package/dist/components/paginator/paginator.d.ts +2 -0
  15. package/dist/components/paginator/paginator.js +6 -6
  16. package/dist/components/problems-overview/problems-overview.js +6 -0
  17. package/dist/components/rodeo/rodeo.js +1 -1
  18. package/dist/components/the-doctor/sparks.d.ts +1 -0
  19. package/dist/components/the-doctor/sparks.js +36 -21
  20. package/dist/components/the-doctor/status-bar.css.js +10 -8
  21. package/dist/components/the-doctor/status-bar.d.ts +2 -0
  22. package/dist/components/the-doctor/status-bar.js +18 -8
  23. package/dist/components/the-doctor/the-doctor.css.js +1 -1
  24. package/dist/components/the-doctor/the-doctor.d.ts +113 -120
  25. package/dist/components/the-doctor/the-doctor.js +141 -1735
  26. package/dist/components/the-doctor/upload-archive.d.ts +1 -0
  27. package/dist/components/the-doctor/upload-archive.js +29 -12
  28. package/dist/controllers/{auth.d.ts → auth-controller.d.ts} +11 -6
  29. package/dist/controllers/auth-controller.js +165 -0
  30. package/dist/controllers/broker-controller.d.ts +22 -0
  31. package/dist/controllers/broker-controller.js +107 -0
  32. package/dist/controllers/diagnostic-controller.d.ts +6 -0
  33. package/dist/controllers/diagnostic-controller.js +262 -0
  34. package/dist/controllers/docs-controller.d.ts +8 -0
  35. package/dist/controllers/docs-controller.js +144 -0
  36. package/dist/controllers/model-controller.d.ts +8 -0
  37. package/dist/controllers/model-controller.js +87 -0
  38. package/dist/controllers/node-clicker-controller.d.ts +11 -0
  39. package/dist/controllers/node-clicker-controller.js +362 -0
  40. package/dist/controllers/problem-controller.d.ts +7 -0
  41. package/dist/controllers/problem-controller.js +46 -0
  42. package/dist/controllers/rolodex-controller.d.ts +10 -0
  43. package/dist/controllers/rolodex-controller.js +126 -0
  44. package/dist/controllers/rule-controller.d.ts +19 -0
  45. package/dist/controllers/rule-controller.js +264 -0
  46. package/dist/controllers/spec-controller.d.ts +8 -0
  47. package/dist/controllers/spec-controller.js +78 -0
  48. package/dist/controllers/state-controller.d.ts +9 -0
  49. package/dist/controllers/state-controller.js +279 -0
  50. package/dist/cowboy-components.umd.cjs +768 -736
  51. package/dist/css/pb33f-theme.css +1 -0
  52. package/dist/css/shared.css.js +5 -0
  53. package/dist/events/doctor.d.ts +12 -0
  54. package/dist/events/doctor.js +4 -0
  55. package/dist/model/api-response.d.ts +7 -0
  56. package/dist/model/api-response.js +2 -0
  57. package/dist/services/auth-service.d.ts +1 -0
  58. package/dist/services/auth-service.js +28 -0
  59. package/dist/services/linting-service.js +11 -2
  60. package/dist/services/model-service.d.ts +2 -1
  61. package/dist/services/model-service.js +31 -5
  62. package/dist/style.css +1 -1
  63. package/package.json +1 -1
  64. package/dist/controllers/auth.js +0 -101
@@ -146,6 +146,7 @@ html {
146
146
  --error-color: #ff3c74;
147
147
  --error-color-glow: #fd497b;
148
148
  --error-font-color: #ff246b;
149
+ --error-color-dimmed: rgba(255, 60, 116, 0.6);
149
150
  --error-color-lowalpha: rgba(255, 60, 116, 0.4);
150
151
  --error-color-dark: #250911;
151
152
  --error-color-loweralpha: rgba(255, 60, 116, 0.2);
@@ -23,6 +23,11 @@ export default css `
23
23
  margin-top: 10px;
24
24
  }
25
25
 
26
+ .origin-location {
27
+ font-size: 0.8rem;
28
+ }
29
+
30
+
26
31
  .empty-data {
27
32
  text-align: center;
28
33
  padding-top: 20px;
@@ -5,6 +5,7 @@ import { Toast } from "../model/toast.js";
5
5
  import { RuleActionComponent } from "../components/manage-ruleset/rule-action";
6
6
  import { GraphResponse, Node, References, Spacing, Options, Change } from "../model/graph";
7
7
  import { SpecSummary } from "../model/timeline";
8
+ import { AuthenticationState } from "../model/auth";
8
9
  export declare const EditorUpdated: string;
9
10
  export declare const EditorClicked: string;
10
11
  export declare const ProblemClicked: string;
@@ -52,14 +53,25 @@ export declare const DocumentReferenceClicked: string;
52
53
  export declare const LoadRenderedNodeIntoInspector: string;
53
54
  export declare const NukeWorkspaceEvent: string;
54
55
  export declare const AuthenticationGithubRequested = "authenticationGithubRequested";
56
+ export declare const AuthenticationStateChange = "authenticationStateChange";
55
57
  export declare const LogoutRequested = "logoutRequested";
56
58
  export declare const TimelineHistoryRefresh = "timelineHistoryRefresh";
57
59
  export declare const RevisionClicked = "revisionClicked";
58
60
  export declare const ShowTimelineSummary = "showTimelineSummary";
59
61
  export declare const OpenSettings = "openSettings";
62
+ export declare const OpenAuthentication = "openAuthentication";
63
+ export declare const StartSessionFailed = "startSessionFailed";
64
+ export declare const CreditEmpty = "creditEmpty";
60
65
  export interface RevisionClickedEvent {
61
66
  specSummary: SpecSummary;
62
67
  }
68
+ export interface NukeLogout {
69
+ resetFiles: boolean;
70
+ }
71
+ export interface AuthenticationMeta {
72
+ redirectURL?: string;
73
+ state?: AuthenticationState;
74
+ }
63
75
  export interface ArchiveURLRequestedEvent {
64
76
  url: string;
65
77
  }
@@ -45,11 +45,15 @@ export const DocumentReferenceClicked = "documentReferenceClicked";
45
45
  export const LoadRenderedNodeIntoInspector = "loadRenderedNodeIntoInspector";
46
46
  export const NukeWorkspaceEvent = "nukeWorkspace";
47
47
  export const AuthenticationGithubRequested = "authenticationGithubRequested";
48
+ export const AuthenticationStateChange = "authenticationStateChange";
48
49
  export const LogoutRequested = "logoutRequested";
49
50
  export const TimelineHistoryRefresh = "timelineHistoryRefresh";
50
51
  export const RevisionClicked = "revisionClicked";
51
52
  export const ShowTimelineSummary = "showTimelineSummary";
52
53
  export const OpenSettings = "openSettings";
54
+ export const OpenAuthentication = "openAuthentication";
55
+ export const StartSessionFailed = "startSessionFailed";
56
+ export const CreditEmpty = "creditEmpty";
53
57
  export var ActiveView;
54
58
  (function (ActiveView) {
55
59
  ActiveView["Problems"] = "problems";
@@ -4,3 +4,10 @@ export declare class APIResponse<T> {
4
4
  };
5
5
  response?: T;
6
6
  }
7
+ export declare class APIError {
8
+ type: string;
9
+ title: string;
10
+ status: number;
11
+ detail: string;
12
+ instance: string;
13
+ }
@@ -1,2 +1,4 @@
1
1
  export class APIResponse {
2
2
  }
3
+ export class APIError {
4
+ }
@@ -2,4 +2,5 @@ import { AuthenticationState } from "../model/auth.js";
2
2
  export declare class AuthService {
3
3
  static doctorEndpoint: string;
4
4
  static checkAuth(): Promise<AuthenticationState>;
5
+ static logout(redirectUrl?: string): Promise<boolean>;
5
6
  }
@@ -20,5 +20,33 @@ export class AuthService {
20
20
  }
21
21
  });
22
22
  }
23
+ static async logout(redirectUrl) {
24
+ return new Promise(async (resolve, reject) => {
25
+ try {
26
+ let redirect = '';
27
+ {
28
+ if (redirectUrl) {
29
+ redirect = '?redirectUrl=' + redirectUrl;
30
+ }
31
+ }
32
+ const authState = await fetch(AuthService.doctorEndpoint + '/auth/logout' + redirect, {
33
+ method: 'GET',
34
+ credentials: 'include',
35
+ redirect: 'manual'
36
+ });
37
+ let state = await authState.text();
38
+ if (!authState.ok) {
39
+ reject(false);
40
+ }
41
+ resolve(true);
42
+ }
43
+ catch (e) {
44
+ reject({
45
+ tile: "platform error", detail: "cannot logout " +
46
+ "please try again later."
47
+ });
48
+ }
49
+ });
50
+ }
23
51
  }
24
52
  AuthService.doctorEndpoint = 'https://doctor.pb33f.io';
@@ -1,5 +1,6 @@
1
1
  import { Problem } from "../model/problem.js";
2
2
  import { HeaderService } from "./header-service";
3
+ import { AuthController } from "../controllers/auth-controller";
3
4
  export class LintingService {
4
5
  static compareProblems(a, b) {
5
6
  if (a.startLineNumber < b.startLineNumber) {
@@ -131,11 +132,19 @@ export class LintingService {
131
132
  static async bootstrapEditor() {
132
133
  return new Promise(async (resolve, reject) => {
133
134
  try {
134
- const boostrapSpec = await fetch(LintingService.doctorEndpoint + '/bootstrap/train-travel', {
135
+ let bootstrapSpec;
136
+ // check state from the auth service to determine if we're extracting trains, or a workspace.
137
+ const authController = AuthController.getInstance();
138
+ let endpoint = '/bootstrap/train-travel';
139
+ // get the current spec if we're authenticated.
140
+ if (authController && authController.state && authController.authenticated) {
141
+ endpoint = '/model/current-spec';
142
+ }
143
+ bootstrapSpec = await fetch(LintingService.doctorEndpoint + endpoint, {
135
144
  method: 'GET',
136
145
  credentials: 'include',
137
146
  });
138
- const spec = await boostrapSpec.text();
147
+ const spec = await bootstrapSpec.text();
139
148
  resolve(spec);
140
149
  }
141
150
  catch (e) {
@@ -5,7 +5,7 @@ import { ArchiveFileResponse, RolodexResponse } from "../model/rolodex";
5
5
  export declare class ModelService {
6
6
  static doctorEndpoint: string;
7
7
  static fetchLatestGraph(): Promise<GraphResponse>;
8
- static fetchReferenceMap(): Promise<Reference[]>;
8
+ static fetchReferenceMap(currentPath?: string): Promise<Reference[]>;
9
9
  static uploadArchive(formData: FormData): Promise<ArchiveFileResponse>;
10
10
  static selectRootPath(path: string): Promise<Node>;
11
11
  static queryRolodex(id?: string, path?: string): Promise<RolodexResponse>;
@@ -13,4 +13,5 @@ export declare class ModelService {
13
13
  static generateExample(example: ExampleContainer): Promise<ExampleContainer>;
14
14
  static convertJSONToYAML(json?: string): Promise<any>;
15
15
  static resetWorkspace(): Promise<boolean>;
16
+ static getCurrentSpec(): Promise<string>;
16
17
  }
@@ -47,10 +47,14 @@ export class ModelService {
47
47
  }
48
48
  });
49
49
  }
50
- static async fetchReferenceMap() {
50
+ static async fetchReferenceMap(currentPath = '') {
51
51
  return new Promise(async (resolve, reject) => {
52
52
  try {
53
- const refs = await fetch(ModelService.doctorEndpoint + '/model/reference-map', {
53
+ let cp = '';
54
+ if (currentPath !== '') {
55
+ cp = '?path=' + currentPath;
56
+ }
57
+ const refs = await fetch(ModelService.doctorEndpoint + '/model/reference-map' + cp, {
54
58
  method: 'GET',
55
59
  credentials: 'include',
56
60
  headers: {
@@ -75,7 +79,7 @@ export class ModelService {
75
79
  }
76
80
  }
77
81
  catch (e) {
78
- reject({ detail: 'unable fetch refernce map ' + e });
82
+ reject({ detail: 'unable fetch reference map ' + e });
79
83
  }
80
84
  });
81
85
  }
@@ -119,14 +123,14 @@ export class ModelService {
119
123
  reject({ detail: 'unable to fetch archive data' });
120
124
  return;
121
125
  }
122
- if (archiveData?.type && archiveData?.title && archiveData?.status) {
126
+ if (!graph.ok) {
123
127
  reject(archiveData);
124
128
  return;
125
129
  }
126
130
  resolve(await archiveData);
127
131
  }
128
132
  catch (e) {
129
- reject({ detail: 'unable fetch archive data: ' + e });
133
+ reject(e);
130
134
  }
131
135
  });
132
136
  }
@@ -264,5 +268,27 @@ export class ModelService {
264
268
  resolve(true);
265
269
  });
266
270
  }
271
+ static async getCurrentSpec() {
272
+ return new Promise(async (resolve, reject) => {
273
+ try {
274
+ const spec = await fetch(ModelService.doctorEndpoint + '/model/current-spec', {
275
+ method: 'GET',
276
+ credentials: 'include',
277
+ headers: {
278
+ 'Content-Type': 'application/json'
279
+ },
280
+ });
281
+ const latestSpec = await spec.text();
282
+ if (!latestSpec) {
283
+ reject("cannot fetch latest specification from pb33f platform");
284
+ return;
285
+ }
286
+ resolve(latestSpec);
287
+ }
288
+ catch (e) {
289
+ reject("cannot fetch latest specification from pb33f platform: " + e);
290
+ }
291
+ });
292
+ }
267
293
  }
268
294
  ModelService.doctorEndpoint = 'https://doctor.pb33f.io';