@manuscripts/article-editor 3.1.48-datasource-cleanup.0 → 3.1.48

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 (120) hide show
  1. package/dist/cjs/EditorApp.js +7 -15
  2. package/dist/cjs/EditorApp.js.map +1 -1
  3. package/dist/cjs/components/inspector/SnapshotsDropdown.js +57 -33
  4. package/dist/cjs/components/inspector/SnapshotsDropdown.js.map +1 -1
  5. package/dist/cjs/components/projects/ManuscriptPageContainer.js +1 -0
  6. package/dist/cjs/components/projects/ManuscriptPageContainer.js.map +1 -1
  7. package/dist/cjs/hooks/use-connect-editor.js +1 -1
  8. package/dist/cjs/hooks/use-connect-editor.js.map +1 -1
  9. package/dist/cjs/hooks/use-create-editor.js +14 -3
  10. package/dist/cjs/hooks/use-create-editor.js.map +1 -1
  11. package/dist/cjs/hooks/use-handle-snapshot.js +2 -2
  12. package/dist/cjs/hooks/use-handle-snapshot.js.map +1 -1
  13. package/dist/cjs/lib/api/collaboration.js +25 -0
  14. package/dist/cjs/lib/api/collaboration.js.map +1 -0
  15. package/dist/cjs/lib/api/index.js +29 -0
  16. package/dist/cjs/lib/api/index.js.map +1 -0
  17. package/dist/cjs/postgres-data/Api.js +83 -0
  18. package/dist/cjs/postgres-data/Api.js.map +1 -0
  19. package/dist/cjs/{api/ApiSource.js → postgres-data/PsSource.js} +32 -17
  20. package/dist/cjs/postgres-data/PsSource.js.map +1 -0
  21. package/dist/cjs/{api → postgres-data}/buildData.js +7 -29
  22. package/dist/cjs/postgres-data/buildData.js.map +1 -0
  23. package/dist/cjs/{api → postgres-data}/buildUtilities.js +6 -5
  24. package/dist/cjs/postgres-data/buildUtilities.js.map +1 -0
  25. package/dist/cjs/postgres-data/savingUtilities.js.map +1 -0
  26. package/dist/cjs/quarterback/QuarterbackStepsExchanger.js +145 -0
  27. package/dist/cjs/quarterback/QuarterbackStepsExchanger.js.map +1 -0
  28. package/dist/cjs/quarterback/api/document.js +43 -0
  29. package/dist/cjs/quarterback/api/document.js.map +1 -0
  30. package/dist/cjs/quarterback/api/loadDoc.js +108 -0
  31. package/dist/cjs/quarterback/api/loadDoc.js.map +1 -0
  32. package/dist/cjs/quarterback/api/methods.js +147 -0
  33. package/dist/cjs/quarterback/api/methods.js.map +1 -0
  34. package/dist/cjs/{lib/doc.js → quarterback/getDocWithoutTrackContent.js} +8 -7
  35. package/dist/cjs/quarterback/getDocWithoutTrackContent.js.map +1 -0
  36. package/dist/cjs/quarterback/types.js +3 -0
  37. package/dist/cjs/quarterback/types.js.map +1 -0
  38. package/dist/cjs/store/DataSourceStrategy.js +11 -3
  39. package/dist/cjs/store/DataSourceStrategy.js.map +1 -1
  40. package/dist/cjs/store/Store.js.map +1 -1
  41. package/dist/es/EditorApp.js +7 -15
  42. package/dist/es/EditorApp.js.map +1 -1
  43. package/dist/es/components/inspector/SnapshotsDropdown.js +59 -35
  44. package/dist/es/components/inspector/SnapshotsDropdown.js.map +1 -1
  45. package/dist/es/components/projects/ManuscriptPageContainer.js +1 -0
  46. package/dist/es/components/projects/ManuscriptPageContainer.js.map +1 -1
  47. package/dist/es/hooks/use-connect-editor.js +1 -1
  48. package/dist/es/hooks/use-connect-editor.js.map +1 -1
  49. package/dist/es/hooks/use-create-editor.js +14 -3
  50. package/dist/es/hooks/use-create-editor.js.map +1 -1
  51. package/dist/es/hooks/use-handle-snapshot.js +1 -1
  52. package/dist/es/hooks/use-handle-snapshot.js.map +1 -1
  53. package/dist/es/lib/api/collaboration.js +18 -0
  54. package/dist/es/lib/api/collaboration.js.map +1 -0
  55. package/dist/{cjs/api/types.js → es/lib/api/index.js} +3 -4
  56. package/dist/es/lib/api/index.js.map +1 -0
  57. package/dist/es/postgres-data/Api.js +77 -0
  58. package/dist/es/postgres-data/Api.js.map +1 -0
  59. package/dist/es/{api/ApiSource.js → postgres-data/PsSource.js} +31 -15
  60. package/dist/es/postgres-data/PsSource.js.map +1 -0
  61. package/dist/es/{api → postgres-data}/buildData.js +7 -29
  62. package/dist/es/postgres-data/buildData.js.map +1 -0
  63. package/dist/es/{api → postgres-data}/buildUtilities.js +6 -5
  64. package/dist/es/postgres-data/buildUtilities.js.map +1 -0
  65. package/dist/es/postgres-data/savingUtilities.js.map +1 -0
  66. package/dist/es/quarterback/QuarterbackStepsExchanger.js +118 -0
  67. package/dist/es/quarterback/QuarterbackStepsExchanger.js.map +1 -0
  68. package/dist/es/quarterback/api/document.js +32 -0
  69. package/dist/es/quarterback/api/document.js.map +1 -0
  70. package/dist/es/quarterback/api/loadDoc.js +81 -0
  71. package/dist/es/quarterback/api/loadDoc.js.map +1 -0
  72. package/dist/es/quarterback/api/methods.js +137 -0
  73. package/dist/es/quarterback/api/methods.js.map +1 -0
  74. package/dist/es/{lib/doc.js → quarterback/getDocWithoutTrackContent.js} +6 -6
  75. package/dist/es/quarterback/getDocWithoutTrackContent.js.map +1 -0
  76. package/dist/es/quarterback/types.js +2 -0
  77. package/dist/es/quarterback/types.js.map +1 -0
  78. package/dist/es/store/DataSourceStrategy.js +11 -3
  79. package/dist/es/store/DataSourceStrategy.js.map +1 -1
  80. package/dist/es/store/Store.js.map +1 -1
  81. package/dist/types/lib/api/collaboration.d.ts +17 -0
  82. package/dist/{es/api/types.js → types/lib/api/index.d.ts} +2 -3
  83. package/dist/types/{api → postgres-data}/Api.d.ts +5 -13
  84. package/dist/types/{api/ApiSource.d.ts → postgres-data/PsSource.d.ts} +4 -3
  85. package/dist/types/postgres-data/buildData.d.ts +3 -0
  86. package/dist/types/{api → postgres-data}/buildUtilities.d.ts +1 -1
  87. package/dist/types/{api/StepsExchanger.d.ts → quarterback/QuarterbackStepsExchanger.d.ts} +21 -18
  88. package/dist/types/quarterback/api/document.d.ts +20 -0
  89. package/dist/types/quarterback/api/loadDoc.d.ts +18 -0
  90. package/dist/types/quarterback/api/methods.d.ts +38 -0
  91. package/dist/types/quarterback/getDocWithoutTrackContent.d.ts +3 -0
  92. package/dist/types/{api → quarterback}/types.d.ts +48 -9
  93. package/dist/types/store/DataSourceStrategy.d.ts +5 -2
  94. package/dist/types/store/Store.d.ts +5 -4
  95. package/package.json +4 -3
  96. package/dist/cjs/api/Api.js +0 -137
  97. package/dist/cjs/api/Api.js.map +0 -1
  98. package/dist/cjs/api/ApiSource.js.map +0 -1
  99. package/dist/cjs/api/StepsExchanger.js +0 -95
  100. package/dist/cjs/api/StepsExchanger.js.map +0 -1
  101. package/dist/cjs/api/buildData.js.map +0 -1
  102. package/dist/cjs/api/buildUtilities.js.map +0 -1
  103. package/dist/cjs/api/savingUtilities.js.map +0 -1
  104. package/dist/cjs/api/types.js.map +0 -1
  105. package/dist/cjs/lib/doc.js.map +0 -1
  106. package/dist/es/api/Api.js +0 -131
  107. package/dist/es/api/Api.js.map +0 -1
  108. package/dist/es/api/ApiSource.js.map +0 -1
  109. package/dist/es/api/StepsExchanger.js +0 -90
  110. package/dist/es/api/StepsExchanger.js.map +0 -1
  111. package/dist/es/api/buildData.js.map +0 -1
  112. package/dist/es/api/buildUtilities.js.map +0 -1
  113. package/dist/es/api/savingUtilities.js.map +0 -1
  114. package/dist/es/api/types.js.map +0 -1
  115. package/dist/es/lib/doc.js.map +0 -1
  116. package/dist/types/api/buildData.d.ts +0 -3
  117. package/dist/types/lib/doc.d.ts +0 -17
  118. /package/dist/cjs/{api → postgres-data}/savingUtilities.js +0 -0
  119. /package/dist/es/{api → postgres-data}/savingUtilities.js +0 -0
  120. /package/dist/types/{api → postgres-data}/savingUtilities.d.ts +0 -0
@@ -13,9 +13,8 @@ exports.buildData = void 0;
13
13
  * All portions of the code written by Atypon Systems LLC are Copyright (c) 2019 Atypon Systems LLC. All Rights Reserved.
14
14
  */
15
15
  const json_schema_1 = require("@manuscripts/json-schema");
16
- const transform_1 = require("@manuscripts/transform");
17
16
  const roles_1 = require("../lib/roles");
18
- const StepsExchanger_1 = require("./StepsExchanger");
17
+ const TokenData_1 = require("../store/TokenData");
19
18
  const getIdModels = async (api, projectID, manuscriptID) => {
20
19
  const models = await api.getManuscript(projectID, manuscriptID);
21
20
  let project;
@@ -33,24 +32,13 @@ const getIdModels = async (api, projectID, manuscriptID) => {
33
32
  }
34
33
  return [project, manuscript];
35
34
  };
36
- const getDocumentData = async (projectID, manuscriptID, api) => {
37
- const response = await api.getDocument(projectID, manuscriptID);
38
- if (!response) {
39
- throw new Error('Document not found');
40
- }
41
- return {
42
- doc: transform_1.schema.nodeFromJSON(response.doc),
43
- version: response.version,
44
- snapshots: response.snapshots,
45
- };
46
- };
47
- const getManuscriptData = async (templateID, api) => {
35
+ const getManuscriptData = async (api, prototype) => {
48
36
  const data = {};
49
37
  const [sectionCategories, cslLocale, template] = await Promise.all([
50
38
  api.getSectionCategories(),
51
39
  // TODO:: config this!
52
40
  api.getCSLLocale('en-US'),
53
- api.getTemplate(templateID),
41
+ api.getTemplate(prototype),
54
42
  ]);
55
43
  const bundle = await api.getBundle(template);
56
44
  data.sectionCategories = sectionCategories || [];
@@ -73,34 +61,24 @@ const getUserData = async (projectID, user, api) => {
73
61
  collaboratorsById: profilesById,
74
62
  };
75
63
  };
76
- const buildData = async (projectID, manuscriptID, updateState, api) => {
64
+ const buildData = async (projectID, manuscriptID, doc, api) => {
77
65
  const user = await api.getUser();
78
66
  if (!user) {
79
67
  return {};
80
68
  }
81
- const doc = await getDocumentData(projectID, manuscriptID, api);
82
- const state = await getManuscriptData(doc.doc.attrs.prototype, api);
69
+ const manuscriptNode = doc;
70
+ const state = await getManuscriptData(api, manuscriptNode.attrs.prototype);
83
71
  const [project, manuscript] = await getIdModels(api, projectID, manuscriptID);
84
72
  const role = project ? (0, roles_1.getUserRole)(project, user.userID) : null;
85
73
  const users = await getUserData(projectID, user, api);
86
- const stepsExchanger = new StepsExchanger_1.StepsExchanger(projectID, manuscriptID, doc.version, api);
87
- stepsExchanger.isThrottling.onChange((value) => {
88
- updateState({
89
- preventUnload: value,
90
- });
91
- });
92
- api.listenToSteps(projectID, manuscriptID, (version, steps, clientIDs) => stepsExchanger.receiveSteps(version, steps, clientIDs));
93
- const beforeUnload = () => stepsExchanger.flush();
94
74
  return {
95
75
  user,
96
76
  userRole: role,
97
77
  ...users,
98
78
  ...state,
99
- ...doc,
100
- stepsExchanger,
101
79
  project,
102
80
  manuscript,
103
- beforeUnload,
81
+ tokenData: new TokenData_1.TokenData(),
104
82
  };
105
83
  };
106
84
  exports.buildData = buildData;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildData.js","sourceRoot":"","sources":["../../../src/postgres-data/buildData.ts"],"names":[],"mappings":"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"}
@@ -73,13 +73,15 @@ const buildUtilities = (projectID, manuscriptID, getState, updateState, api) =>
73
73
  const createSnapshot = async () => {
74
74
  const state = getState();
75
75
  const snapshots = state.snapshots;
76
- if (!snapshots) {
77
- throw new Error('Missing snapshots');
76
+ const snapshotsMap = state.snapshotsMap;
77
+ if (!snapshots || !snapshotsMap) {
78
+ throw new Error('Unable to create snapshot due to incomplete data');
78
79
  }
79
- const response = await api.createSnapshot(projectID, manuscriptID);
80
- const { snapshot, ...label } = response.snapshot;
80
+ const data = await api.createSnapshot(projectID, manuscriptID);
81
+ const { snapshot, ...label } = data.snapshot;
81
82
  updateState({
82
83
  snapshots: [...snapshots, label],
84
+ snapshotsMap: snapshotsMap.set(label.id, data.snapshot),
83
85
  });
84
86
  };
85
87
  const refreshProject = async () => {
@@ -105,7 +107,6 @@ const buildUtilities = (projectID, manuscriptID, getState, updateState, api) =>
105
107
  saveDoc,
106
108
  createSnapshot,
107
109
  refreshProject,
108
- getSnapshot: api.getSnapshot,
109
110
  };
110
111
  };
111
112
  exports.buildUtilities = buildUtilities;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/buildUtilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"savingUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/savingUtilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,iCAA8B;AAEvB,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,IAAI,OAAe,CAAA;IAEnB,OAAO,CACL,EAAa,EACb,QAAQ,GAAG,IAAI,EACf,KAAK,GAAG,KAAK,EACb,MAAmB,EACnB,EAAE;QACF,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,EAAE,EAAE,CAAA;YACJ,MAAM,IAAI,MAAM,EAAE,CAAA;QACpB,CAAC,CAAA;QACD,IAAI,KAAK,EAAE;YACT,MAAM,EAAE,CAAA;YACR,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,OAAM;SACP;QAED,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,CAAA;QACV,CAAC,EAAE,QAAQ,CAAC,CAAA;QAEZ,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,CAAA;YACR,YAAY,CAAC,OAAO,CAAC,CAAA;QACvB,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AA7BY,QAAA,gBAAgB,oBA6B5B;AAEM,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,IAAA,cAAM,GAAU,CAAA;IAEhC,OAAO,CAAC,EAAa,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE;QACxC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,SAAS,CAAC,OAAO,EAAE,CAAA;YACnB,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;gBACvB,OAAO,IAAI,CAAA;YACb,CAAC,CAAA;YACD,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACvC,SAAS,CAAC,OAAO,EAAE,CAAA;gBACnB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACpC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAA;YACrB,CAAC,EAAE,QAAQ,CAAC,CAAA;SACb;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AAlBY,QAAA,iBAAiB,qBAkB7B"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.stepsExchanger = void 0;
27
+ /*!
28
+ * The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
29
+ *
30
+ * Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
31
+ *
32
+ * The Original Code is manuscripts-frontend.
33
+ *
34
+ * The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
35
+ *
36
+ * All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
37
+ */
38
+ const body_editor_1 = require("@manuscripts/body-editor");
39
+ const transform_1 = require("@manuscripts/transform");
40
+ const prosemirror_transform_1 = require("prosemirror-transform");
41
+ const savingUtilities_1 = require("../postgres-data/savingUtilities");
42
+ const docApi = __importStar(require("./api/document"));
43
+ class QuarterbackStepsExchanger extends body_editor_1.CollabProvider {
44
+ constructor(docId, projectId, startingVersion, applySteps, getStepsSince, listenToSteps, authToken, throttlingControl) {
45
+ if (QuarterbackStepsExchanger._instance) {
46
+ return QuarterbackStepsExchanger._instance;
47
+ }
48
+ super();
49
+ this.reconcileAttempts = 0;
50
+ this.reconcileAttemptsMax = 20;
51
+ QuarterbackStepsExchanger._instance = this;
52
+ this.applySteps = applySteps;
53
+ this.docId = docId;
54
+ this.projectId = projectId;
55
+ this.throttlingControl = throttlingControl;
56
+ this.currentVersion = startingVersion;
57
+ this.debounce = (0, savingUtilities_1.saveWithDebounce)();
58
+ this.getStepsSince = getStepsSince;
59
+ this.sendSteps = this.sendSteps.bind(this);
60
+ this.throttlingControl(false, this.flushOnExit.bind(this));
61
+ listenToSteps(projectId, docId, (version, jsonSteps, clientIDs) => {
62
+ if (!jsonSteps) {
63
+ return;
64
+ }
65
+ const steps = this.hydrateSteps(jsonSteps);
66
+ if (steps.length) {
67
+ this.newStepsListener();
68
+ }
69
+ });
70
+ }
71
+ destroy() {
72
+ QuarterbackStepsExchanger._instance = null;
73
+ }
74
+ hydrateSteps(jsonSteps) {
75
+ return jsonSteps.map((s) => prosemirror_transform_1.Step.fromJSON(transform_1.schema, s));
76
+ }
77
+ async sendSteps(version, steps, clientID, flush = false) {
78
+ // Apply and accumulate new steps
79
+ const stepsJSON = [];
80
+ steps.forEach((step) => {
81
+ stepsJSON.push(step.toJSON());
82
+ });
83
+ this.currentVersion = version;
84
+ this.flushImmediate = this.debounce(async () => {
85
+ const result = await this.applySteps(this.projectId, this.docId, {
86
+ steps: stepsJSON,
87
+ version,
88
+ clientID,
89
+ });
90
+ if (result &&
91
+ 'err' in result &&
92
+ 'code' in result &&
93
+ result.code === 409 &&
94
+ this.reconcileAttempts < this.reconcileAttemptsMax) {
95
+ // debugger
96
+ console.warn('Attempting Reconciliation');
97
+ this.newStepsListener();
98
+ this.reconcileAttempts++;
99
+ }
100
+ else {
101
+ this.reconcileAttempts = 0;
102
+ }
103
+ }, 1200, flush, () => {
104
+ this.throttlingControl(false);
105
+ });
106
+ if (!flush) {
107
+ this.throttlingControl(true);
108
+ }
109
+ return Promise.resolve();
110
+ }
111
+ flushOnExit() {
112
+ this.flushImmediate && this.flushImmediate();
113
+ }
114
+ onNewSteps(listener) {
115
+ this.newStepsListener = listener;
116
+ }
117
+ async stepsSince(version) {
118
+ // retrieve the steps since the number of version given
119
+ const res = await this.getStepsSince(this.projectId, this.docId, version);
120
+ if (res) {
121
+ return {
122
+ steps: this.hydrateSteps(res.steps),
123
+ clientIDs: res.clientIDs,
124
+ version: res.version,
125
+ };
126
+ }
127
+ return;
128
+ }
129
+ }
130
+ const stepsExchanger = (docId, projectId, lastVersion, authToken, throttlingControl, isAuthed = true) => {
131
+ if (!isAuthed) {
132
+ return;
133
+ }
134
+ const applySteps = async (projectId, docId, payload) => docApi.applySteps(projectId, docId, authToken, payload);
135
+ const getStepsSince = async (projectId, docId, version) => {
136
+ const resp = await docApi.stepsSince(projectId, docId, version, authToken);
137
+ if ('data' in resp) {
138
+ return resp.data;
139
+ }
140
+ };
141
+ return new QuarterbackStepsExchanger(docId, projectId, lastVersion, applySteps, getStepsSince, docApi.listenStepUpdates, authToken, throttlingControl);
142
+ };
143
+ exports.stepsExchanger = stepsExchanger;
144
+ exports.default = QuarterbackStepsExchanger;
145
+ //# sourceMappingURL=QuarterbackStepsExchanger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuarterbackStepsExchanger.js","sourceRoot":"","sources":["../../../src/quarterback/QuarterbackStepsExchanger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /*!
3
+ * The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
4
+ *
5
+ * Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
6
+ *
7
+ * The Original Code is manuscripts-frontend.
8
+ *
9
+ * The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
10
+ *
11
+ * All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.listenStepUpdates = exports.stepsSince = exports.applySteps = exports.deleteDocument = exports.updateDocument = exports.getTransformVersion = exports.createDocument = exports.getDocument = void 0;
15
+ const methods_1 = require("./methods");
16
+ const getDocument = (projectID, manuscriptID, authToken) => (0, methods_1.get)(`doc/${projectID}/manuscript/${manuscriptID}`, authToken, 'Fetching document failed');
17
+ exports.getDocument = getDocument;
18
+ const createDocument = (payload, authToken) => (0, methods_1.post)(`doc/${payload.project_model_id}/manuscript/${payload.manuscript_model_id}`, authToken, payload, 'Creating document failed');
19
+ exports.createDocument = createDocument;
20
+ const getTransformVersion = (authToken) => (0, methods_1.get)('doc/version', authToken, 'Fetching transform version failed');
21
+ exports.getTransformVersion = getTransformVersion;
22
+ const updateDocument = (projectID, manuscriptID, authToken, payload) => (0, methods_1.put)(`doc/${projectID}/manuscript/${manuscriptID}`, authToken, payload, 'Updating document failed');
23
+ exports.updateDocument = updateDocument;
24
+ const deleteDocument = (projectID, manuscriptID, authToken) => (0, methods_1.del)(`doc/${projectID}/manuscript/${manuscriptID}`, authToken, 'Deleting document failed');
25
+ exports.deleteDocument = deleteDocument;
26
+ const applySteps = (projectId, docId, authToken, payload) => (0, methods_1.post)(`doc/${projectId}/manuscript/${docId}/steps`, authToken, payload, 'Creating document failed');
27
+ exports.applySteps = applySteps;
28
+ const stepsSince = (projectId, docId, version, authToken) => (0, methods_1.get)(`doc/${projectId}/manuscript/${docId}/version/${version}`, authToken, `Fetching steps since version ${version}`);
29
+ exports.stepsSince = stepsSince;
30
+ const listenStepUpdates = (projectID, manuscriptID, dataListener) => {
31
+ const listener = (event) => {
32
+ const data = JSON.parse(event.data);
33
+ if (typeof data.version != 'undefined' &&
34
+ data.steps &&
35
+ Array.isArray(data.steps) &&
36
+ data.clientIDs) {
37
+ dataListener(data.version, data.steps, data.clientIDs);
38
+ }
39
+ };
40
+ (0, methods_1.listen)(`doc/${projectID}/manuscript/${manuscriptID}/listen`, listener);
41
+ };
42
+ exports.listenStepUpdates = listenStepUpdates;
43
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../src/quarterback/api/document.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAWH,uCAAuD;AAEhD,MAAM,WAAW,GAAG,CACzB,SAAiB,EACjB,YAAoB,EACpB,SAAiB,EACjB,EAAE,CACF,IAAA,aAAG,EACD,OAAO,SAAS,eAAe,YAAY,EAAE,EAC7C,SAAS,EACT,0BAA0B,CAC3B,CAAA;AATU,QAAA,WAAW,eASrB;AAEI,MAAM,cAAc,GAAG,CAAC,OAA0B,EAAE,SAAiB,EAAE,EAAE,CAC9E,IAAA,cAAI,EACF,OAAO,OAAO,CAAC,gBAAgB,eAAe,OAAO,CAAC,mBAAmB,EAAE,EAC3E,SAAS,EACT,OAAO,EACP,0BAA0B,CAC3B,CAAA;AANU,QAAA,cAAc,kBAMxB;AAEI,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,EAAE,CACvD,IAAA,aAAG,EACD,aAAa,EACb,SAAS,EACT,mCAAmC,CACpC,CAAA;AALU,QAAA,mBAAmB,uBAK7B;AAEI,MAAM,cAAc,GAAG,CAC5B,SAAiB,EACjB,YAAoB,EACpB,SAAiB,EACjB,OAA+B,EAC/B,EAAE,CACF,IAAA,aAAG,EACD,OAAO,SAAS,eAAe,YAAY,EAAE,EAC7C,SAAS,EACT,OAAO,EACP,0BAA0B,CAC3B,CAAA;AAXU,QAAA,cAAc,kBAWxB;AAEI,MAAM,cAAc,GAAG,CAC5B,SAAiB,EACjB,YAAoB,EACpB,SAAiB,EACjB,EAAE,CACF,IAAA,aAAG,EACD,OAAO,SAAS,eAAe,YAAY,EAAE,EAC7C,SAAS,EACT,0BAA0B,CAC3B,CAAA;AATU,QAAA,cAAc,kBASxB;AAEI,MAAM,UAAU,GAAG,CACxB,SAAiB,EACjB,KAAa,EACb,SAAiB,EACjB,OAAqB,EACrB,EAAE,CACF,IAAA,cAAI,EACF,OAAO,SAAS,eAAe,KAAK,QAAQ,EAC5C,SAAS,EACT,OAAO,EACP,0BAA0B,CAC3B,CAAA;AAXU,QAAA,UAAU,cAWpB;AAEI,MAAM,UAAU,GAAG,CACxB,SAAiB,EACjB,KAAa,EACb,OAAe,EACf,SAAiB,EACjB,EAAE,CACF,IAAA,aAAG,EACD,OAAO,SAAS,eAAe,KAAK,YAAY,OAAO,EAAE,EACzD,SAAS,EACT,gCAAgC,OAAO,EAAE,CAC1C,CAAA;AAVU,QAAA,UAAU,cAUpB;AAEI,MAAM,iBAAiB,GAAG,CAC/B,SAAiB,EACjB,YAAoB,EACpB,YAA8E,EAC9E,EAAE;IACF,MAAM,QAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnC,IACE,OAAO,IAAI,CAAC,OAAO,IAAI,WAAW;YAClC,IAAI,CAAC,KAAK;YACV,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,SAAS,EACd;YACA,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;SACvD;IACH,CAAC,CAAA;IAED,IAAA,gBAAM,EAAC,OAAO,SAAS,eAAe,YAAY,SAAS,EAAE,QAAQ,CAAC,CAAA;AACxE,CAAC,CAAA;AAlBY,QAAA,iBAAiB,qBAkB7B"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ /*!
3
+ * The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
4
+ *
5
+ * Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
6
+ *
7
+ * The Original Code is manuscripts-frontend.
8
+ *
9
+ * The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
10
+ *
11
+ * All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.loadDoc = void 0;
38
+ const transform_1 = require("@manuscripts/transform");
39
+ const document_1 = require("./document");
40
+ const docApi = __importStar(require("./document"));
41
+ async function loadDoc(manuscriptID, projectID, authToken, existingDoc) {
42
+ const resp = await docApi.getTransformVersion(authToken);
43
+ if ('data' in resp && resp.data.transformVersion !== (0, transform_1.getVersion)()) {
44
+ console.warn(`Warning! Manuscripts-transform (Frontend: ${(0, transform_1.getVersion)()}) version is different on manuscripts-api (${resp.data.transformVersion})`);
45
+ }
46
+ const found = await docApi.getDocument(projectID, manuscriptID, authToken);
47
+ let doc;
48
+ let version = 0;
49
+ let snapshots = [];
50
+ if ('data' in found) {
51
+ let empty = true;
52
+ for (const _ in found.data.doc) {
53
+ empty = false;
54
+ break;
55
+ }
56
+ if (empty) {
57
+ if (!existingDoc) {
58
+ throw new Error('Unable to produce valid doc as neither model based verions nor history have a valid version');
59
+ }
60
+ await docApi.updateDocument(projectID, manuscriptID, authToken, {
61
+ doc: existingDoc.toJSON(),
62
+ schema_version: (0, transform_1.getVersion)(),
63
+ });
64
+ }
65
+ snapshots = found.data.snapshots;
66
+ doc = found.data.doc;
67
+ version = found.data.version;
68
+ }
69
+ else if ('err' in found && found.code === 404) {
70
+ // Create an empty doc that will be replaced with whatever document is currently being edited
71
+ const res = await docApi.createDocument({
72
+ manuscript_model_id: manuscriptID,
73
+ project_model_id: projectID,
74
+ doc: {},
75
+ schema_version: (0, transform_1.getVersion)(),
76
+ }, authToken);
77
+ if ('data' in res) {
78
+ doc = res.data.doc;
79
+ version = res.data.version;
80
+ snapshots = res.data.snapshots;
81
+ }
82
+ if ('err' in res) {
83
+ console.error('Unable to create new document: ' + res.err);
84
+ }
85
+ const update = await (0, document_1.updateDocument)(projectID, manuscriptID, authToken, {
86
+ doc: existingDoc?.toJSON(),
87
+ schema_version: (0, transform_1.getVersion)(),
88
+ });
89
+ if ('err' in update) {
90
+ console.error('Unable to create new document: ' + update.err);
91
+ }
92
+ else {
93
+ const found = await docApi.getDocument(projectID, manuscriptID, authToken);
94
+ if ('data' in found && found.data.doc && found.data.version >= 0) {
95
+ doc = found.data.doc;
96
+ version = found.data.version;
97
+ }
98
+ }
99
+ }
100
+ if (doc !== null &&
101
+ typeof doc === 'object' &&
102
+ Object.keys(doc).length !== 0) {
103
+ return { doc: transform_1.schema.nodeFromJSON(doc), version, snapshots };
104
+ }
105
+ return undefined;
106
+ }
107
+ exports.loadDoc = loadDoc;
108
+ //# sourceMappingURL=loadDoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadDoc.js","sourceRoot":"","sources":["../../../../src/quarterback/api/loadDoc.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sDAA2E;AAG3E,yCAA2C;AAC3C,mDAAoC;AAE7B,KAAK,UAAU,OAAO,CAC3B,YAAoB,EACpB,SAAiB,EACjB,SAAiB,EACjB,WAA4B;IAE5B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACxD,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAA,sBAAU,GAAE,EAAE;QACjE,OAAO,CAAC,IAAI,CACV,6CAA6C,IAAA,sBAAU,GAAE,8CACvD,IAAI,CAAC,IAAI,CAAC,gBACZ,GAAG,CACJ,CAAA;KACF;IACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;IAC1E,IAAI,GAAG,CAAA;IACP,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,SAAS,GAAoB,EAAE,CAAA;IACnC,IAAI,MAAM,IAAI,KAAK,EAAE;QACnB,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAa,EAAE;YACxC,KAAK,GAAG,KAAK,CAAA;YACb,MAAK;SACN;QAED,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAA;aACF;YACD,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;gBAC9D,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE;gBACzB,cAAc,EAAE,IAAA,sBAAU,GAAE;aAC7B,CAAC,CAAA;SACH;QAED,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAA;QAChC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA;QACpB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAA;KAC7B;SAAM,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;QAC/C,6FAA6F;QAC7F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CACrC;YACE,mBAAmB,EAAE,YAAY;YACjC,gBAAgB,EAAE,SAAS;YAC3B,GAAG,EAAE,EAAE;YACP,cAAc,EAAE,IAAA,sBAAU,GAAE;SAC7B,EACD,SAAS,CACV,CAAA;QACD,IAAI,MAAM,IAAI,GAAG,EAAE;YACjB,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAA;YAClB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;YAC1B,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAA;SAC/B;QACD,IAAI,KAAK,IAAI,GAAG,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;SAC3D;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAc,EAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACtE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE;YAC1B,cAAc,EAAE,IAAA,sBAAU,GAAE;SAC7B,CAAC,CAAA;QACF,IAAI,KAAK,IAAI,MAAM,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;SAC9D;aAAM;YACL,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;YAC1E,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;gBAChE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA;gBACpB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAA;aAC7B;SACF;KACF;IACD,IACE,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAC7B;QACA,OAAO,EAAE,GAAG,EAAE,kBAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;KAC7D;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAlFD,0BAkFC"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ /*!
3
+ * The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
4
+ *
5
+ * Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
6
+ *
7
+ * The Original Code is manuscripts-frontend.
8
+ *
9
+ * The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
10
+ *
11
+ * All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.listen = exports.del = exports.put = exports.post = exports.get = exports.wrappedFetch = exports.getAuthHeader = exports.DEFAULT_HEADERS = void 0;
15
+ const config_1 = require("../../config");
16
+ exports.DEFAULT_HEADERS = {
17
+ Accept: 'application/json',
18
+ 'Content-Type': 'application/json',
19
+ };
20
+ function getAuthHeader(authToken) {
21
+ return authToken && { Authorization: `Bearer ${authToken}` };
22
+ }
23
+ exports.getAuthHeader = getAuthHeader;
24
+ async function wrappedFetch(path, options, defaultError = 'Request failed') {
25
+ let resp;
26
+ const config = (0, config_1.getConfig)();
27
+ try {
28
+ resp = await fetch(`${config.api.url}/${path}`, options);
29
+ }
30
+ catch (err) {
31
+ // Must be a connection error (?)
32
+ console.error(err);
33
+ return { err: 'Connection error', code: 550 };
34
+ }
35
+ let data;
36
+ const contentType = resp.headers.get('Content-Type');
37
+ if (!contentType || contentType.includes('application/json')) {
38
+ data = await resp.json();
39
+ }
40
+ else if (contentType.includes('application/octet-stream')) {
41
+ data = await resp.arrayBuffer();
42
+ }
43
+ if (!resp.ok) {
44
+ console.error(data?.message || defaultError);
45
+ return {
46
+ err: data?.message || defaultError,
47
+ code: resp.status,
48
+ };
49
+ }
50
+ return { data };
51
+ }
52
+ exports.wrappedFetch = wrappedFetch;
53
+ function get(path, authToken, defaultError, headers = {
54
+ ...exports.DEFAULT_HEADERS,
55
+ ...getAuthHeader(authToken),
56
+ }) {
57
+ return wrappedFetch(path, {
58
+ method: 'GET',
59
+ headers,
60
+ }, defaultError);
61
+ }
62
+ exports.get = get;
63
+ function post(path, authToken, payload, defaultError, headers = {
64
+ ...exports.DEFAULT_HEADERS,
65
+ ...getAuthHeader(authToken),
66
+ }) {
67
+ return wrappedFetch(path, {
68
+ method: 'POST',
69
+ headers,
70
+ body: JSON.stringify(payload),
71
+ }, defaultError);
72
+ }
73
+ exports.post = post;
74
+ function put(path, authToken, payload, defaultError, headers = {
75
+ ...exports.DEFAULT_HEADERS,
76
+ ...getAuthHeader(authToken),
77
+ }) {
78
+ return wrappedFetch(path, {
79
+ method: 'PUT',
80
+ headers,
81
+ body: JSON.stringify(payload),
82
+ }, defaultError);
83
+ }
84
+ exports.put = put;
85
+ function del(path, authToken, defaultError, headers = {
86
+ ...exports.DEFAULT_HEADERS,
87
+ ...getAuthHeader(authToken),
88
+ }) {
89
+ return wrappedFetch(path, {
90
+ method: 'DELETE',
91
+ headers,
92
+ }, defaultError);
93
+ }
94
+ exports.del = del;
95
+ async function listen(path, listener) {
96
+ const config = (0, config_1.getConfig)();
97
+ let ws;
98
+ const reconnectDelay = 1500;
99
+ const onOpen = async () => {
100
+ console.log('WebSocket Connection Opened Ok');
101
+ };
102
+ const onClose = (event) => {
103
+ console.warn('WebSocket closed, reconnecting:', event.code, event.reason);
104
+ closeWebSocket();
105
+ rejoin();
106
+ };
107
+ const onError = (event) => {
108
+ console.error('WebSocket error, reconnecting:', event);
109
+ closeWebSocket();
110
+ rejoin();
111
+ };
112
+ const closeWebSocket = () => {
113
+ try {
114
+ ws.removeEventListener('open', onOpen);
115
+ ws.removeEventListener('message', listener);
116
+ ws.removeEventListener('close', onClose);
117
+ ws.removeEventListener('error', onError);
118
+ ws.close();
119
+ }
120
+ catch (error) {
121
+ console.error('Error closing websocket', error);
122
+ }
123
+ };
124
+ const rejoin = () => {
125
+ if (ws) {
126
+ closeWebSocket();
127
+ }
128
+ setTimeout(join, reconnectDelay);
129
+ };
130
+ const join = () => {
131
+ const wsUrl = `${config.api.url.replace('http', 'ws')}/${path}`;
132
+ try {
133
+ ws = new WebSocket(wsUrl);
134
+ ws.addEventListener('open', onOpen);
135
+ ws.addEventListener('message', listener);
136
+ ws.addEventListener('close', onClose);
137
+ ws.addEventListener('error', onError);
138
+ }
139
+ catch (error) {
140
+ rejoin();
141
+ }
142
+ };
143
+ window.addEventListener('beforeunload', closeWebSocket);
144
+ join();
145
+ }
146
+ exports.listen = listen;
147
+ //# sourceMappingURL=methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../src/quarterback/api/methods.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDocWithoutTrackContent = void 0;
4
- const filterUnchangedContent = (node) => {
3
+ exports.getDocWithoutTrackContent = exports.filterUnchangedContent = void 0;
4
+ function filterUnchangedContent(node) {
5
5
  const r = [];
6
6
  node.forEach((child) => {
7
7
  const { attrs } = child;
@@ -15,10 +15,11 @@ const filterUnchangedContent = (node) => {
15
15
  }
16
16
  });
17
17
  return r;
18
- };
19
- const getDocWithoutTrackContent = (state) => {
20
- const doc = state.doc;
18
+ }
19
+ exports.filterUnchangedContent = filterUnchangedContent;
20
+ function getDocWithoutTrackContent(state) {
21
+ const { doc } = state;
21
22
  return doc.type.create(doc.attrs, filterUnchangedContent(doc), doc.marks);
22
- };
23
+ }
23
24
  exports.getDocWithoutTrackContent = getDocWithoutTrackContent;
24
- //# sourceMappingURL=doc.js.map
25
+ //# sourceMappingURL=getDocWithoutTrackContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDocWithoutTrackContent.js","sourceRoot":"","sources":["../../../src/quarterback/getDocWithoutTrackContent.ts"],"names":[],"mappings":";;;AAcA,SAAgB,sBAAsB,CAAC,IAAoB;IACzD,MAAM,CAAC,GAAqB,EAAE,CAAA;IAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QACvB,MAAM,EAAE,GAAiC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAA;QACtE,IACE,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,SAAS,EACvE;YACA,CAAC,CAAC,IAAI,CACJ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,KAAK,CAAC,IAAI,IAAI,EAAE,EAChB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAC5D,CACF,CAAA;SACF;aAAM,IAAI,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3C,CAAC,CAAC,IAAI,CACJ,KAAK,CAAC,IAAI,CAAC,MAAM,CACf,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAC/B,sBAAsB,CAAC,KAAK,CAAC,EAC7B,KAAK,CAAC,KAAK,CACZ,CACF,CAAA;SACF;IACH,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,CAAA;AACV,CAAC;AA1BD,wDA0BC;AAED,SAAgB,yBAAyB,CAAC,KAA4B;IACpE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IACrB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3E,CAAC;AAHD,8DAGC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/quarterback/types.ts"],"names":[],"mappings":""}