@matdata/yasgui 5.10.0 → 5.11.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.
Files changed (133) hide show
  1. package/README.md +6 -2
  2. package/build/ts/src/PersistentConfig.d.ts +10 -0
  3. package/build/ts/src/PersistentConfig.js +40 -0
  4. package/build/ts/src/PersistentConfig.js.map +1 -1
  5. package/build/ts/src/Tab.d.ts +17 -0
  6. package/build/ts/src/Tab.js +372 -15
  7. package/build/ts/src/Tab.js.map +1 -1
  8. package/build/ts/src/TabContextMenu.d.ts +1 -0
  9. package/build/ts/src/TabContextMenu.js +17 -0
  10. package/build/ts/src/TabContextMenu.js.map +1 -1
  11. package/build/ts/src/TabElements.d.ts +3 -0
  12. package/build/ts/src/TabElements.js +97 -28
  13. package/build/ts/src/TabElements.js.map +1 -1
  14. package/build/ts/src/TabSettingsModal.d.ts +2 -0
  15. package/build/ts/src/TabSettingsModal.js +44 -19
  16. package/build/ts/src/TabSettingsModal.js.map +1 -1
  17. package/build/ts/src/index.d.ts +3 -0
  18. package/build/ts/src/index.js +4 -0
  19. package/build/ts/src/index.js.map +1 -1
  20. package/build/ts/src/queryManagement/QueryBrowser.d.ts +64 -0
  21. package/build/ts/src/queryManagement/QueryBrowser.js +914 -0
  22. package/build/ts/src/queryManagement/QueryBrowser.js.map +1 -0
  23. package/build/ts/src/queryManagement/SaveManagedQueryModal.d.ts +55 -0
  24. package/build/ts/src/queryManagement/SaveManagedQueryModal.js +451 -0
  25. package/build/ts/src/queryManagement/SaveManagedQueryModal.js.map +1 -0
  26. package/build/ts/src/queryManagement/WorkspaceSettingsForm.d.ts +16 -0
  27. package/build/ts/src/queryManagement/WorkspaceSettingsForm.js +452 -0
  28. package/build/ts/src/queryManagement/WorkspaceSettingsForm.js.map +1 -0
  29. package/build/ts/src/queryManagement/backends/BaseGitProviderClient.d.ts +19 -0
  30. package/build/ts/src/queryManagement/backends/BaseGitProviderClient.js +77 -0
  31. package/build/ts/src/queryManagement/backends/BaseGitProviderClient.js.map +1 -0
  32. package/build/ts/src/queryManagement/backends/BitbucketProviderClient.d.ts +16 -0
  33. package/build/ts/src/queryManagement/backends/BitbucketProviderClient.js +269 -0
  34. package/build/ts/src/queryManagement/backends/BitbucketProviderClient.js.map +1 -0
  35. package/build/ts/src/queryManagement/backends/GitWorkspaceBackend.d.ts +26 -0
  36. package/build/ts/src/queryManagement/backends/GitWorkspaceBackend.js +93 -0
  37. package/build/ts/src/queryManagement/backends/GitWorkspaceBackend.js.map +1 -0
  38. package/build/ts/src/queryManagement/backends/GiteaProviderClient.d.ts +14 -0
  39. package/build/ts/src/queryManagement/backends/GiteaProviderClient.js +244 -0
  40. package/build/ts/src/queryManagement/backends/GiteaProviderClient.js.map +1 -0
  41. package/build/ts/src/queryManagement/backends/GithubProviderClient.d.ts +14 -0
  42. package/build/ts/src/queryManagement/backends/GithubProviderClient.js +252 -0
  43. package/build/ts/src/queryManagement/backends/GithubProviderClient.js.map +1 -0
  44. package/build/ts/src/queryManagement/backends/GitlabProviderClient.d.ts +16 -0
  45. package/build/ts/src/queryManagement/backends/GitlabProviderClient.js +246 -0
  46. package/build/ts/src/queryManagement/backends/GitlabProviderClient.js.map +1 -0
  47. package/build/ts/src/queryManagement/backends/InMemoryWorkspaceBackend.d.ts +21 -0
  48. package/build/ts/src/queryManagement/backends/InMemoryWorkspaceBackend.js +175 -0
  49. package/build/ts/src/queryManagement/backends/InMemoryWorkspaceBackend.js.map +1 -0
  50. package/build/ts/src/queryManagement/backends/SparqlWorkspaceBackend.d.ts +28 -0
  51. package/build/ts/src/queryManagement/backends/SparqlWorkspaceBackend.js +687 -0
  52. package/build/ts/src/queryManagement/backends/SparqlWorkspaceBackend.js.map +1 -0
  53. package/build/ts/src/queryManagement/backends/WorkspaceBackend.d.ts +15 -0
  54. package/build/ts/src/queryManagement/backends/WorkspaceBackend.js +2 -0
  55. package/build/ts/src/queryManagement/backends/WorkspaceBackend.js.map +1 -0
  56. package/build/ts/src/queryManagement/backends/errors.d.ts +7 -0
  57. package/build/ts/src/queryManagement/backends/errors.js +18 -0
  58. package/build/ts/src/queryManagement/backends/errors.js.map +1 -0
  59. package/build/ts/src/queryManagement/backends/getWorkspaceBackend.d.ts +8 -0
  60. package/build/ts/src/queryManagement/backends/getWorkspaceBackend.js +114 -0
  61. package/build/ts/src/queryManagement/backends/getWorkspaceBackend.js.map +1 -0
  62. package/build/ts/src/queryManagement/backends/gitRemote.d.ts +5 -0
  63. package/build/ts/src/queryManagement/backends/gitRemote.js +40 -0
  64. package/build/ts/src/queryManagement/backends/gitRemote.js.map +1 -0
  65. package/build/ts/src/queryManagement/browserFilter.d.ts +2 -0
  66. package/build/ts/src/queryManagement/browserFilter.js +7 -0
  67. package/build/ts/src/queryManagement/browserFilter.js.map +1 -0
  68. package/build/ts/src/queryManagement/index.d.ts +13 -0
  69. package/build/ts/src/queryManagement/index.js +14 -0
  70. package/build/ts/src/queryManagement/index.js.map +1 -0
  71. package/build/ts/src/queryManagement/normalizeQueryFilename.d.ts +1 -0
  72. package/build/ts/src/queryManagement/normalizeQueryFilename.js +10 -0
  73. package/build/ts/src/queryManagement/normalizeQueryFilename.js.map +1 -0
  74. package/build/ts/src/queryManagement/openManagedQuery.d.ts +15 -0
  75. package/build/ts/src/queryManagement/openManagedQuery.js +27 -0
  76. package/build/ts/src/queryManagement/openManagedQuery.js.map +1 -0
  77. package/build/ts/src/queryManagement/saveManagedQuery.d.ts +20 -0
  78. package/build/ts/src/queryManagement/saveManagedQuery.js +109 -0
  79. package/build/ts/src/queryManagement/saveManagedQuery.js.map +1 -0
  80. package/build/ts/src/queryManagement/textHash.d.ts +2 -0
  81. package/build/ts/src/queryManagement/textHash.js +13 -0
  82. package/build/ts/src/queryManagement/textHash.js.map +1 -0
  83. package/build/ts/src/queryManagement/types.d.ts +76 -0
  84. package/build/ts/src/queryManagement/types.js +2 -0
  85. package/build/ts/src/queryManagement/types.js.map +1 -0
  86. package/build/ts/src/queryManagement/validateWorkspaceConfig.d.ts +6 -0
  87. package/build/ts/src/queryManagement/validateWorkspaceConfig.js +33 -0
  88. package/build/ts/src/queryManagement/validateWorkspaceConfig.js.map +1 -0
  89. package/build/ts/src/version.d.ts +1 -1
  90. package/build/ts/src/version.js +1 -1
  91. package/build/yasgui.min.css +10 -1
  92. package/build/yasgui.min.css.map +3 -3
  93. package/build/yasgui.min.js +398 -172
  94. package/build/yasgui.min.js.map +4 -4
  95. package/package.json +1 -1
  96. package/src/PersistentConfig.ts +61 -0
  97. package/src/Tab.ts +431 -20
  98. package/src/TabContextMenu.ts +10 -0
  99. package/src/TabElements.scss +46 -7
  100. package/src/TabElements.ts +95 -27
  101. package/src/TabSettingsModal.scss +102 -5
  102. package/src/TabSettingsModal.ts +48 -25
  103. package/src/endpointSelect.scss +2 -3
  104. package/src/index.scss +4 -0
  105. package/src/index.ts +7 -0
  106. package/src/queryManagement/QueryBrowser.scss +418 -0
  107. package/src/queryManagement/QueryBrowser.ts +1079 -0
  108. package/src/queryManagement/SaveManagedQueryModal.scss +245 -0
  109. package/src/queryManagement/SaveManagedQueryModal.ts +554 -0
  110. package/src/queryManagement/WorkspaceSettingsForm.ts +546 -0
  111. package/src/queryManagement/backends/BaseGitProviderClient.ts +124 -0
  112. package/src/queryManagement/backends/BitbucketProviderClient.ts +403 -0
  113. package/src/queryManagement/backends/GitWorkspaceBackend.ts +96 -0
  114. package/src/queryManagement/backends/GiteaProviderClient.ts +316 -0
  115. package/src/queryManagement/backends/GithubProviderClient.ts +319 -0
  116. package/src/queryManagement/backends/GitlabProviderClient.ts +327 -0
  117. package/src/queryManagement/backends/InMemoryWorkspaceBackend.ts +175 -0
  118. package/src/queryManagement/backends/SparqlWorkspaceBackend.ts +729 -0
  119. package/src/queryManagement/backends/WorkspaceBackend.ts +41 -0
  120. package/src/queryManagement/backends/errors.ts +28 -0
  121. package/src/queryManagement/backends/getWorkspaceBackend.ts +132 -0
  122. package/src/queryManagement/backends/gitRemote.ts +54 -0
  123. package/src/queryManagement/browserFilter.ts +8 -0
  124. package/src/queryManagement/index.ts +15 -0
  125. package/src/queryManagement/normalizeQueryFilename.ts +8 -0
  126. package/src/queryManagement/openManagedQuery.ts +31 -0
  127. package/src/queryManagement/saveManagedQuery.ts +135 -0
  128. package/src/queryManagement/textHash.ts +15 -0
  129. package/src/queryManagement/types.ts +85 -0
  130. package/src/queryManagement/validateWorkspaceConfig.ts +40 -0
  131. package/src/tab.scss +4 -14
  132. package/src/themes.scss +14 -23
  133. package/src/version.ts +1 -1
@@ -0,0 +1,246 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { BaseGitProviderClient } from "./BaseGitProviderClient";
11
+ import { WorkspaceBackendError } from "./errors";
12
+ import { parseGitRemote } from "./gitRemote";
13
+ function inferApiBase(config, host) {
14
+ const configured = config.apiBaseUrl;
15
+ if (configured === null || configured === void 0 ? void 0 : configured.trim())
16
+ return configured.trim().replace(/\/+$/g, "");
17
+ if (host === "gitlab.com")
18
+ return "https://gitlab.com/api/v4";
19
+ return `https://${host}/api/v4`;
20
+ }
21
+ export class GitlabProviderClient extends BaseGitProviderClient {
22
+ static canHandle(config) {
23
+ const provider = config.provider;
24
+ if (provider && provider !== "auto")
25
+ return provider === "gitlab";
26
+ try {
27
+ const { host } = parseGitRemote(config.remoteUrl);
28
+ return host === "gitlab.com" || host.includes("gitlab");
29
+ }
30
+ catch (_a) {
31
+ return false;
32
+ }
33
+ }
34
+ request(apiBase, config, path, init) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ var _a;
37
+ const headers = {
38
+ Accept: "application/json",
39
+ "Content-Type": "application/json",
40
+ };
41
+ const token = (_a = config.auth.token) === null || _a === void 0 ? void 0 : _a.trim();
42
+ if (token)
43
+ headers["PRIVATE-TOKEN"] = token;
44
+ const res = yield fetch(`${apiBase}${path}`, Object.assign(Object.assign({}, init), { cache: "no-store", headers: Object.assign(Object.assign({}, headers), init === null || init === void 0 ? void 0 : init.headers) }));
45
+ const status = res.status;
46
+ const contentType = res.headers.get("content-type") || "";
47
+ if (contentType.includes("application/json")) {
48
+ const text = yield res.text();
49
+ if (text.trim()) {
50
+ try {
51
+ const json = JSON.parse(text);
52
+ return { status, json };
53
+ }
54
+ catch (_b) {
55
+ return { status };
56
+ }
57
+ }
58
+ }
59
+ return { status };
60
+ });
61
+ }
62
+ getProjectId(config) {
63
+ const { repoPath } = parseGitRemote(config.remoteUrl);
64
+ return encodeURIComponent(repoPath);
65
+ }
66
+ getBranch(config, apiBase) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ var _a, _b;
69
+ const configured = (_a = config.branch) === null || _a === void 0 ? void 0 : _a.trim();
70
+ if (configured)
71
+ return configured;
72
+ const projectId = this.getProjectId(config);
73
+ const { status, json } = yield this.request(apiBase, config, `/projects/${projectId}`);
74
+ this.ensureOk(status, "Failed to resolve repository default branch.");
75
+ const branch = (_b = json === null || json === void 0 ? void 0 : json.default_branch) === null || _b === void 0 ? void 0 : _b.trim();
76
+ if (!branch)
77
+ throw new WorkspaceBackendError("UNKNOWN", "Could not determine default branch.");
78
+ return branch;
79
+ });
80
+ }
81
+ validateAccess(config) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ const { host } = parseGitRemote(config.remoteUrl);
84
+ const apiBase = inferApiBase(config, host);
85
+ const projectId = this.getProjectId(config);
86
+ const { status } = yield this.request(apiBase, config, `/projects/${projectId}`);
87
+ this.ensureOk(status, "Could not access GitLab project with the provided token.");
88
+ });
89
+ }
90
+ listFolder(config, folderId) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const { host } = parseGitRemote(config.remoteUrl);
93
+ const apiBase = inferApiBase(config, host);
94
+ const relPath = (folderId === null || folderId === void 0 ? void 0 : folderId.trim()) || "";
95
+ const fullPath = this.joinPath(config.rootPath, relPath);
96
+ const projectId = this.getProjectId(config);
97
+ const branch = yield this.getBranch(config, apiBase);
98
+ const qsBase = new URLSearchParams();
99
+ qsBase.set("ref", branch);
100
+ qsBase.set("per_page", "100");
101
+ if (fullPath)
102
+ qsBase.set("path", fullPath);
103
+ const items = [];
104
+ for (let page = 1; page <= 50; page++) {
105
+ const qs = new URLSearchParams(qsBase);
106
+ qs.set("page", String(page));
107
+ const { status, json } = yield this.request(apiBase, config, `/projects/${projectId}/repository/tree?${qs.toString()}`);
108
+ if (status === 404)
109
+ return [];
110
+ this.ensureOk(status, "Failed to list folder contents.");
111
+ const batch = Array.isArray(json) ? json : [];
112
+ items.push(...batch);
113
+ if (batch.length < 100)
114
+ break;
115
+ }
116
+ const entries = [];
117
+ for (const item of items) {
118
+ if (item.type === "tree") {
119
+ const id = relPath ? this.joinPath(relPath, item.name) : item.name;
120
+ entries.push({ kind: "folder", id, label: item.name, parentId: relPath || undefined });
121
+ continue;
122
+ }
123
+ if (item.type === "blob") {
124
+ if (!/\.sparql$/i.test(item.name))
125
+ continue;
126
+ const id = relPath ? this.joinPath(relPath, item.name) : item.name;
127
+ const label = item.name.replace(/\.sparql$/i, "");
128
+ entries.push({ kind: "query", id, label, parentId: relPath || undefined });
129
+ }
130
+ }
131
+ entries.sort((a, b) => {
132
+ if (a.kind !== b.kind)
133
+ return a.kind === "folder" ? -1 : 1;
134
+ return a.label.toLowerCase().localeCompare(b.label.toLowerCase());
135
+ });
136
+ return entries;
137
+ });
138
+ }
139
+ readFileAtRef(config, apiBase, queryId, ref) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ const projectId = this.getProjectId(config);
142
+ const filePath = this.joinPath(config.rootPath, queryId);
143
+ const branch = ref || (yield this.getBranch(config, apiBase));
144
+ const { status, json } = yield this.request(apiBase, config, `/projects/${projectId}/repository/files/${encodeURIComponent(filePath)}?ref=${encodeURIComponent(branch)}`);
145
+ this.ensureOk(status, "Failed to read query.");
146
+ const content = json === null || json === void 0 ? void 0 : json.content;
147
+ if (!content)
148
+ throw new WorkspaceBackendError("NOT_FOUND", "Query not found");
149
+ const text = (json === null || json === void 0 ? void 0 : json.encoding) === "base64" ? this.base64DecodeUtf8(content) : content;
150
+ return { text, lastCommitId: json === null || json === void 0 ? void 0 : json.last_commit_id };
151
+ });
152
+ }
153
+ readQuery(config, queryId) {
154
+ return __awaiter(this, void 0, void 0, function* () {
155
+ const { host } = parseGitRemote(config.remoteUrl);
156
+ const apiBase = inferApiBase(config, host);
157
+ const { text, lastCommitId } = yield this.readFileAtRef(config, apiBase, queryId);
158
+ return { queryText: text, versionTag: lastCommitId };
159
+ });
160
+ }
161
+ writeQuery(config, queryId, queryText, options) {
162
+ return __awaiter(this, void 0, void 0, function* () {
163
+ const { host } = parseGitRemote(config.remoteUrl);
164
+ const apiBase = inferApiBase(config, host);
165
+ const projectId = this.getProjectId(config);
166
+ const filePath = this.joinPath(config.rootPath, queryId);
167
+ const branch = yield this.getBranch(config, apiBase);
168
+ let exists = true;
169
+ let lastCommitId;
170
+ try {
171
+ const res = yield this.readFileAtRef(config, apiBase, queryId);
172
+ lastCommitId = res.lastCommitId;
173
+ }
174
+ catch (e) {
175
+ const err = e;
176
+ exists = false;
177
+ if ((err === null || err === void 0 ? void 0 : err.code) && err.code !== "NOT_FOUND")
178
+ throw e;
179
+ }
180
+ if ((options === null || options === void 0 ? void 0 : options.expectedVersionTag) && lastCommitId && options.expectedVersionTag !== lastCommitId) {
181
+ throw new WorkspaceBackendError("CONFLICT", "The file changed remotely since it was last opened. Please reload the managed query and try saving again.");
182
+ }
183
+ const message = this.getCommitMessage(queryId, options, !exists);
184
+ const body = {
185
+ branch,
186
+ content: this.base64EncodeUtf8(queryText),
187
+ encoding: "base64",
188
+ commit_message: message,
189
+ };
190
+ const method = exists ? "PUT" : "POST";
191
+ const { status } = yield this.request(apiBase, config, `/projects/${projectId}/repository/files/${encodeURIComponent(filePath)}`, {
192
+ method,
193
+ body: JSON.stringify(body),
194
+ });
195
+ this.ensureOk(status, "Failed to save query to GitLab workspace.");
196
+ });
197
+ }
198
+ listVersions(config, queryId) {
199
+ return __awaiter(this, void 0, void 0, function* () {
200
+ const { host } = parseGitRemote(config.remoteUrl);
201
+ const apiBase = inferApiBase(config, host);
202
+ const projectId = this.getProjectId(config);
203
+ const filePath = this.joinPath(config.rootPath, queryId);
204
+ const branch = yield this.getBranch(config, apiBase);
205
+ const qs = new URLSearchParams();
206
+ qs.set("ref_name", branch);
207
+ qs.set("path", filePath);
208
+ qs.set("per_page", "30");
209
+ const { status, json } = yield this.request(apiBase, config, `/projects/${projectId}/repository/commits?${qs.toString()}`);
210
+ this.ensureOk(status, "Failed to list query versions.");
211
+ const commits = Array.isArray(json) ? json : [];
212
+ return commits
213
+ .map((c) => {
214
+ const createdAt = c.created_at || new Date().toISOString();
215
+ return { id: c.id, createdAt, author: c.author_name, message: c.message };
216
+ })
217
+ .filter((v) => !!v.id);
218
+ });
219
+ }
220
+ readVersion(config, queryId, versionId) {
221
+ return __awaiter(this, void 0, void 0, function* () {
222
+ const { host } = parseGitRemote(config.remoteUrl);
223
+ const apiBase = inferApiBase(config, host);
224
+ const { text, lastCommitId } = yield this.readFileAtRef(config, apiBase, queryId, versionId);
225
+ return { queryText: text, versionTag: lastCommitId };
226
+ });
227
+ }
228
+ deleteQuery(config, queryId) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ const { host } = parseGitRemote(config.remoteUrl);
231
+ const apiBase = inferApiBase(config, host);
232
+ const projectId = this.getProjectId(config);
233
+ const filePath = this.joinPath(config.rootPath, queryId);
234
+ const branch = yield this.getBranch(config, apiBase);
235
+ const body = {
236
+ branch,
237
+ commit_message: this.getDeleteMessage(queryId),
238
+ };
239
+ const { status } = yield this.request(apiBase, config, `/projects/${projectId}/repository/files/${encodeURIComponent(filePath)}`, { method: "DELETE", body: JSON.stringify(body) });
240
+ if (status === 404)
241
+ return;
242
+ this.ensureOk(status, "Failed to delete query from GitLab workspace.");
243
+ });
244
+ }
245
+ }
246
+ //# sourceMappingURL=GitlabProviderClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitlabProviderClient.js","sourceRoot":"","sources":["../../../../../../../packages/yasgui/src/queryManagement/backends/GitlabProviderClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { FolderEntry, ReadResult, VersionInfo, WriteQueryOptions, WorkspaceConfigBase } from "../types";
2
+ import type { WorkspaceBackend } from "./WorkspaceBackend";
3
+ type InMemoryWorkspaceConfig = Pick<WorkspaceConfigBase, "id" | "label"> & {
4
+ type: "memory";
5
+ };
6
+ export default class InMemoryWorkspaceBackend implements WorkspaceBackend {
7
+ private _config?;
8
+ readonly type: "git";
9
+ private versionsByQueryId;
10
+ constructor(_config?: InMemoryWorkspaceConfig);
11
+ validateAccess(): Promise<void>;
12
+ listFolder(folderId?: string): Promise<FolderEntry[]>;
13
+ searchByName(query: string): Promise<FolderEntry[]>;
14
+ readQuery(queryId: string): Promise<ReadResult>;
15
+ writeQuery(queryId: string, queryText: string, options?: WriteQueryOptions): Promise<void>;
16
+ listVersions(queryId: string): Promise<VersionInfo[]>;
17
+ readVersion(queryId: string, versionId: string): Promise<ReadResult>;
18
+ renameQuery(queryId: string, newLabel: string): Promise<void>;
19
+ deleteQuery(queryId: string): Promise<void>;
20
+ }
21
+ export {};
@@ -0,0 +1,175 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { normalizeQueryText } from "../textHash";
11
+ import { WorkspaceBackendError } from "./errors";
12
+ function normalizeFolderId(folderId) {
13
+ if (!folderId)
14
+ return "";
15
+ return folderId.replace(/^\/+|\/+$/g, "");
16
+ }
17
+ function splitPath(path) {
18
+ return path.split("/").filter(Boolean);
19
+ }
20
+ function basename(path) {
21
+ const parts = splitPath(path);
22
+ return parts[parts.length - 1] || "";
23
+ }
24
+ function dirname(path) {
25
+ const parts = splitPath(path);
26
+ parts.pop();
27
+ return parts.join("/");
28
+ }
29
+ function nowIso() {
30
+ return new Date().toISOString();
31
+ }
32
+ export default class InMemoryWorkspaceBackend {
33
+ constructor(_config) {
34
+ this._config = _config;
35
+ this.type = "git";
36
+ this.versionsByQueryId = new Map();
37
+ }
38
+ validateAccess() {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ return;
41
+ });
42
+ }
43
+ listFolder(folderId) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const folder = normalizeFolderId(folderId);
46
+ const folders = new Map();
47
+ const queries = [];
48
+ for (const queryId of this.versionsByQueryId.keys()) {
49
+ const queryDir = dirname(queryId);
50
+ if (folder === "") {
51
+ const top = splitPath(queryDir)[0];
52
+ if (top) {
53
+ folders.set(top, { kind: "folder", id: top, label: top, parentId: undefined });
54
+ continue;
55
+ }
56
+ queries.push({
57
+ kind: "query",
58
+ id: queryId,
59
+ label: basename(queryId).replace(/\.sparql$/i, ""),
60
+ parentId: undefined,
61
+ });
62
+ continue;
63
+ }
64
+ if (queryDir === folder) {
65
+ queries.push({
66
+ kind: "query",
67
+ id: queryId,
68
+ label: basename(queryId).replace(/\.sparql$/i, ""),
69
+ parentId: folder,
70
+ });
71
+ continue;
72
+ }
73
+ if (queryDir.startsWith(folder + "/")) {
74
+ const rest = queryDir.slice(folder.length + 1);
75
+ const child = splitPath(rest)[0];
76
+ if (child) {
77
+ const childId = folder + "/" + child;
78
+ folders.set(childId, { kind: "folder", id: childId, label: child, parentId: folder });
79
+ }
80
+ }
81
+ }
82
+ const out = [...folders.values(), ...queries];
83
+ out.sort((a, b) => a.label.localeCompare(b.label));
84
+ return out;
85
+ });
86
+ }
87
+ searchByName(query) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ const q = query.trim().toLowerCase();
90
+ if (!q)
91
+ return [];
92
+ const hits = [];
93
+ for (const queryId of this.versionsByQueryId.keys()) {
94
+ const label = basename(queryId).replace(/\.sparql$/i, "");
95
+ if (label.toLowerCase().includes(q)) {
96
+ hits.push({ kind: "query", id: queryId, label, parentId: dirname(queryId) || undefined });
97
+ }
98
+ }
99
+ hits.sort((a, b) => a.label.localeCompare(b.label));
100
+ return hits;
101
+ });
102
+ }
103
+ readQuery(queryId) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ const versions = this.versionsByQueryId.get(queryId);
106
+ if (!versions || versions.length === 0)
107
+ throw new WorkspaceBackendError("NOT_FOUND", "Query not found");
108
+ const latest = versions[versions.length - 1];
109
+ return { queryText: latest.queryText, versionTag: latest.id };
110
+ });
111
+ }
112
+ writeQuery(queryId, queryText, options) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ const versions = this.versionsByQueryId.get(queryId) || [];
115
+ const latest = versions[versions.length - 1];
116
+ if ((options === null || options === void 0 ? void 0 : options.expectedVersionTag) && latest && options.expectedVersionTag !== latest.id) {
117
+ throw new WorkspaceBackendError("CONFLICT", "Version tag mismatch");
118
+ }
119
+ if (latest && normalizeQueryText(latest.queryText) === normalizeQueryText(queryText)) {
120
+ this.versionsByQueryId.set(queryId, versions);
121
+ return;
122
+ }
123
+ const nextId = `v${versions.length + 1}`;
124
+ versions.push({ id: nextId, createdAt: nowIso(), queryText });
125
+ this.versionsByQueryId.set(queryId, versions);
126
+ });
127
+ }
128
+ listVersions(queryId) {
129
+ return __awaiter(this, void 0, void 0, function* () {
130
+ const versions = this.versionsByQueryId.get(queryId);
131
+ if (!versions || versions.length === 0)
132
+ return [];
133
+ return [...versions]
134
+ .slice()
135
+ .reverse()
136
+ .map((v) => ({ id: v.id, createdAt: v.createdAt }));
137
+ });
138
+ }
139
+ readVersion(queryId, versionId) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ const versions = this.versionsByQueryId.get(queryId);
142
+ if (!versions || versions.length === 0)
143
+ throw new WorkspaceBackendError("NOT_FOUND", "Query not found");
144
+ const found = versions.find((v) => v.id === versionId);
145
+ if (!found)
146
+ throw new WorkspaceBackendError("NOT_FOUND", "Version not found");
147
+ return { queryText: found.queryText, versionTag: found.id };
148
+ });
149
+ }
150
+ renameQuery(queryId, newLabel) {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ const trimmed = newLabel.trim();
153
+ if (!trimmed)
154
+ throw new WorkspaceBackendError("UNKNOWN", "New name is required");
155
+ const versions = this.versionsByQueryId.get(queryId);
156
+ if (!versions || versions.length === 0)
157
+ throw new WorkspaceBackendError("NOT_FOUND", "Query not found");
158
+ const newId = dirname(queryId) ? `${dirname(queryId)}/${trimmed}.sparql` : `${trimmed}.sparql`;
159
+ if (newId === queryId)
160
+ return;
161
+ if (this.versionsByQueryId.has(newId))
162
+ throw new WorkspaceBackendError("CONFLICT", "A query with this name already exists");
163
+ this.versionsByQueryId.delete(queryId);
164
+ this.versionsByQueryId.set(newId, versions);
165
+ });
166
+ }
167
+ deleteQuery(queryId) {
168
+ return __awaiter(this, void 0, void 0, function* () {
169
+ if (!this.versionsByQueryId.has(queryId))
170
+ throw new WorkspaceBackendError("NOT_FOUND", "Query not found");
171
+ this.versionsByQueryId.delete(queryId);
172
+ });
173
+ }
174
+ }
175
+ //# sourceMappingURL=InMemoryWorkspaceBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryWorkspaceBackend.js","sourceRoot":"","sources":["../../../../../../../packages/yasgui/src/queryManagement/backends/InMemoryWorkspaceBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { SparqlWorkspaceConfig, FolderEntry, ReadResult, VersionInfo, WriteQueryOptions } from "../types";
2
+ import type { WorkspaceBackend } from "./WorkspaceBackend";
3
+ export default class SparqlWorkspaceBackend implements WorkspaceBackend {
4
+ private config;
5
+ private options?;
6
+ readonly type: "sparql";
7
+ constructor(config: SparqlWorkspaceConfig, options?: {
8
+ authHeaders?: Record<string, string>;
9
+ getAuthHeaders?: () => Promise<Record<string, string> | undefined>;
10
+ });
11
+ private resolveAuthHeaders;
12
+ private sparqlQuery;
13
+ private sparqlUpdate;
14
+ private getBindings;
15
+ private folderIriFromId;
16
+ private resolveManagedQueryIri;
17
+ validateAccess(): Promise<void>;
18
+ listFolder(folderId?: string): Promise<FolderEntry[]>;
19
+ searchByName(query: string): Promise<FolderEntry[]>;
20
+ readQuery(queryId: string): Promise<ReadResult>;
21
+ renameQuery(queryId: string, newLabel: string): Promise<void>;
22
+ deleteQuery(queryId: string): Promise<void>;
23
+ renameFolder(folderId: string, newLabel: string): Promise<void>;
24
+ deleteFolder(folderId: string): Promise<void>;
25
+ writeQuery(queryId: string, queryText: string, options?: WriteQueryOptions): Promise<void>;
26
+ listVersions(queryId: string): Promise<VersionInfo[]>;
27
+ readVersion(queryId: string, versionId: string): Promise<ReadResult>;
28
+ }