@semiont/core 0.2.1 → 0.2.2-build.12
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.
- package/dist/index.d.ts +1367 -27
- package/dist/index.js +1455 -78
- package/dist/index.js.map +1 -1
- package/package.json +18 -8
- package/dist/annotation-history-utils.d.ts +0 -42
- package/dist/annotation-history-utils.d.ts.map +0 -1
- package/dist/annotation-history-utils.js +0 -258
- package/dist/annotation-history-utils.js.map +0 -1
- package/dist/annotation-types.d.ts +0 -15
- package/dist/annotation-types.d.ts.map +0 -1
- package/dist/annotation-types.js +0 -6
- package/dist/annotation-types.js.map +0 -1
- package/dist/annotation-utils.d.ts +0 -18
- package/dist/annotation-utils.d.ts.map +0 -1
- package/dist/annotation-utils.js +0 -70
- package/dist/annotation-utils.js.map +0 -1
- package/dist/auth-types.d.ts +0 -8
- package/dist/auth-types.d.ts.map +0 -1
- package/dist/auth-types.js +0 -6
- package/dist/auth-types.js.map +0 -1
- package/dist/config/config-validator.d.ts +0 -25
- package/dist/config/config-validator.d.ts.map +0 -1
- package/dist/config/config-validator.js +0 -112
- package/dist/config/config-validator.js.map +0 -1
- package/dist/config/config.schema.json +0 -678
- package/dist/config/config.types.d.ts +0 -574
- package/dist/config/config.types.d.ts.map +0 -1
- package/dist/config/config.types.js +0 -4
- package/dist/config/config.types.js.map +0 -1
- package/dist/config/configuration-error.d.ts +0 -17
- package/dist/config/configuration-error.d.ts.map +0 -1
- package/dist/config/configuration-error.js +0 -36
- package/dist/config/configuration-error.js.map +0 -1
- package/dist/config/environment-loader.d.ts +0 -98
- package/dist/config/environment-loader.d.ts.map +0 -1
- package/dist/config/environment-loader.js +0 -229
- package/dist/config/environment-loader.js.map +0 -1
- package/dist/config/environment-validator.d.ts +0 -22
- package/dist/config/environment-validator.d.ts.map +0 -1
- package/dist/config/environment-validator.js +0 -50
- package/dist/config/environment-validator.js.map +0 -1
- package/dist/config/platform-types.d.ts +0 -26
- package/dist/config/platform-types.d.ts.map +0 -1
- package/dist/config/platform-types.js +0 -28
- package/dist/config/platform-types.js.map +0 -1
- package/dist/config/project-discovery.d.ts +0 -35
- package/dist/config/project-discovery.d.ts.map +0 -1
- package/dist/config/project-discovery.js +0 -99
- package/dist/config/project-discovery.js.map +0 -1
- package/dist/creation-methods.d.ts +0 -19
- package/dist/creation-methods.d.ts.map +0 -1
- package/dist/creation-methods.js +0 -18
- package/dist/creation-methods.js.map +0 -1
- package/dist/crypto.d.ts +0 -32
- package/dist/crypto.d.ts.map +0 -1
- package/dist/crypto.js +0 -52
- package/dist/crypto.js.map +0 -1
- package/dist/did-utils.d.ts +0 -51
- package/dist/did-utils.d.ts.map +0 -1
- package/dist/did-utils.js +0 -62
- package/dist/did-utils.js.map +0 -1
- package/dist/errors.d.ts +0 -51
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -89
- package/dist/errors.js.map +0 -1
- package/dist/events.d.ts +0 -223
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -45
- package/dist/events.js.map +0 -1
- package/dist/graph.d.ts +0 -31
- package/dist/graph.d.ts.map +0 -1
- package/dist/graph.js +0 -6
- package/dist/graph.js.map +0 -1
- package/dist/http-client.d.ts +0 -32
- package/dist/http-client.d.ts.map +0 -1
- package/dist/http-client.js +0 -56
- package/dist/http-client.js.map +0 -1
- package/dist/identifiers.d.ts +0 -24
- package/dist/identifiers.d.ts.map +0 -1
- package/dist/identifiers.js +0 -40
- package/dist/identifiers.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/resource-types.d.ts +0 -15
- package/dist/resource-types.d.ts.map +0 -1
- package/dist/resource-types.js +0 -6
- package/dist/resource-types.js.map +0 -1
- package/dist/type-guards.d.ts +0 -44
- package/dist/type-guards.d.ts.map +0 -1
- package/dist/type-guards.js +0 -76
- package/dist/type-guards.js.map +0 -1
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Utility functions for AnnotationHistory component
|
|
4
|
-
* Extracted to reduce component complexity and improve testability
|
|
5
|
-
*
|
|
6
|
-
* NOTE: This file contains UI-specific logic and should eventually move to the frontend package.
|
|
7
|
-
* It has been updated to work with unified annotation events (annotation.added/removed/body.updated)
|
|
8
|
-
* instead of separate highlight/reference/assessment events.
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.formatEventType = formatEventType;
|
|
12
|
-
exports.getEventEmoji = getEventEmoji;
|
|
13
|
-
exports.formatRelativeTime = formatRelativeTime;
|
|
14
|
-
exports.getEventDisplayContent = getEventDisplayContent;
|
|
15
|
-
exports.getEventEntityTypes = getEventEntityTypes;
|
|
16
|
-
exports.getResourceCreationDetails = getResourceCreationDetails;
|
|
17
|
-
exports.getAnnotationIdFromEvent = getAnnotationIdFromEvent;
|
|
18
|
-
exports.isEventRelatedToAnnotation = isEventRelatedToAnnotation;
|
|
19
|
-
const api_client_1 = require("@semiont/api-client");
|
|
20
|
-
// Format event type for display
|
|
21
|
-
function formatEventType(type, t) {
|
|
22
|
-
// Using a switch for exhaustive checking - TypeScript will error if we miss a case
|
|
23
|
-
switch (type) {
|
|
24
|
-
case 'resource.created':
|
|
25
|
-
return t('resourceCreated');
|
|
26
|
-
case 'resource.cloned':
|
|
27
|
-
return t('resourceCloned');
|
|
28
|
-
case 'resource.archived':
|
|
29
|
-
return t('resourceArchived');
|
|
30
|
-
case 'resource.unarchived':
|
|
31
|
-
return t('resourceUnarchived');
|
|
32
|
-
case 'annotation.added':
|
|
33
|
-
return t('annotationAdded');
|
|
34
|
-
case 'annotation.removed':
|
|
35
|
-
return t('annotationRemoved');
|
|
36
|
-
case 'annotation.body.updated':
|
|
37
|
-
return t('annotationBodyUpdated');
|
|
38
|
-
case 'entitytag.added':
|
|
39
|
-
return t('entitytagAdded');
|
|
40
|
-
case 'entitytag.removed':
|
|
41
|
-
return t('entitytagRemoved');
|
|
42
|
-
case 'entitytype.added':
|
|
43
|
-
return t('entitytypeAdded');
|
|
44
|
-
case 'job.started':
|
|
45
|
-
return t('jobStarted');
|
|
46
|
-
case 'job.progress':
|
|
47
|
-
return t('jobProgress');
|
|
48
|
-
case 'job.completed':
|
|
49
|
-
return t('jobCompleted');
|
|
50
|
-
case 'job.failed':
|
|
51
|
-
return t('jobFailed');
|
|
52
|
-
default:
|
|
53
|
-
// Exhaustive check: if we get here, we missed a case
|
|
54
|
-
const _exhaustiveCheck = type;
|
|
55
|
-
return _exhaustiveCheck;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// Get emoji for annotation based on motivation
|
|
59
|
-
function getMotivationEmoji(motivation) {
|
|
60
|
-
switch (motivation) {
|
|
61
|
-
case 'highlighting':
|
|
62
|
-
return '🟡';
|
|
63
|
-
case 'linking':
|
|
64
|
-
return '🔵';
|
|
65
|
-
case 'assessing':
|
|
66
|
-
return '🔴';
|
|
67
|
-
case 'bookmarking':
|
|
68
|
-
return '🔖';
|
|
69
|
-
case 'commenting':
|
|
70
|
-
return '💬';
|
|
71
|
-
case 'tagging':
|
|
72
|
-
return '🏷️';
|
|
73
|
-
default:
|
|
74
|
-
return '📝';
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Get emoji for event type
|
|
78
|
-
function getEventEmoji(type, event) {
|
|
79
|
-
// Using a switch for exhaustive checking - TypeScript will error if we miss a case
|
|
80
|
-
switch (type) {
|
|
81
|
-
case 'resource.created':
|
|
82
|
-
case 'resource.cloned':
|
|
83
|
-
case 'resource.archived':
|
|
84
|
-
case 'resource.unarchived':
|
|
85
|
-
return '📄';
|
|
86
|
-
case 'annotation.added':
|
|
87
|
-
if (event) {
|
|
88
|
-
const payload = event.event.payload;
|
|
89
|
-
return getMotivationEmoji(payload.annotation.motivation);
|
|
90
|
-
}
|
|
91
|
-
return '📝';
|
|
92
|
-
case 'annotation.removed':
|
|
93
|
-
return '🗑️';
|
|
94
|
-
case 'annotation.body.updated':
|
|
95
|
-
return '✏️';
|
|
96
|
-
case 'entitytag.added':
|
|
97
|
-
case 'entitytag.removed':
|
|
98
|
-
return '🏷️';
|
|
99
|
-
case 'entitytype.added':
|
|
100
|
-
return '🏷️'; // Same emoji as entitytag (global entity type collection)
|
|
101
|
-
case 'job.started':
|
|
102
|
-
return '▶️';
|
|
103
|
-
case 'job.progress':
|
|
104
|
-
return '⏳';
|
|
105
|
-
case 'job.completed':
|
|
106
|
-
return '✅';
|
|
107
|
-
case 'job.failed':
|
|
108
|
-
return '❌';
|
|
109
|
-
default:
|
|
110
|
-
// Exhaustive check: if we get here, we missed a case
|
|
111
|
-
const _exhaustiveCheck = type;
|
|
112
|
-
return _exhaustiveCheck;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Format relative time
|
|
116
|
-
function formatRelativeTime(timestamp, t) {
|
|
117
|
-
const date = new Date(timestamp);
|
|
118
|
-
const now = new Date();
|
|
119
|
-
const diffMs = now.getTime() - date.getTime();
|
|
120
|
-
const diffMins = Math.floor(diffMs / 60000);
|
|
121
|
-
const diffHours = Math.floor(diffMs / 3600000);
|
|
122
|
-
const diffDays = Math.floor(diffMs / 86400000);
|
|
123
|
-
if (diffMins < 1)
|
|
124
|
-
return t('justNow');
|
|
125
|
-
if (diffMins < 60)
|
|
126
|
-
return t('minutesAgo', { count: diffMins });
|
|
127
|
-
if (diffHours < 24)
|
|
128
|
-
return t('hoursAgo', { count: diffHours });
|
|
129
|
-
if (diffDays < 7)
|
|
130
|
-
return t('daysAgo', { count: diffDays });
|
|
131
|
-
return date.toLocaleDateString();
|
|
132
|
-
}
|
|
133
|
-
// Helper to truncate text for display
|
|
134
|
-
function truncateText(text, maxLength = 50) {
|
|
135
|
-
const trimmed = text.trim();
|
|
136
|
-
return trimmed.length > maxLength ? trimmed.substring(0, maxLength) + '...' : trimmed;
|
|
137
|
-
}
|
|
138
|
-
// Extract display content from event payload
|
|
139
|
-
function getEventDisplayContent(event, _references, // underscore prefix to indicate intentionally unused for now
|
|
140
|
-
_highlights, // underscore prefix to indicate intentionally unused for now
|
|
141
|
-
allEvents) {
|
|
142
|
-
const eventData = event.event;
|
|
143
|
-
// Use type discriminators instead of runtime typeof checks
|
|
144
|
-
switch (eventData.type) {
|
|
145
|
-
case 'resource.created':
|
|
146
|
-
case 'resource.cloned': {
|
|
147
|
-
const payload = eventData.payload;
|
|
148
|
-
return { exact: payload.name, isQuoted: false, isTag: false };
|
|
149
|
-
}
|
|
150
|
-
case 'annotation.body.updated': {
|
|
151
|
-
const payload = eventData.payload;
|
|
152
|
-
// Find the original annotation.added event to get the text
|
|
153
|
-
const addedEvent = allEvents.find(e => e.event.type === 'annotation.added' &&
|
|
154
|
-
e.event.payload.annotation.id === payload.annotationId);
|
|
155
|
-
if (addedEvent) {
|
|
156
|
-
const addedPayload = addedEvent.event.payload;
|
|
157
|
-
return { exact: truncateText((0, api_client_1.getAnnotationExactText)(addedPayload.annotation)), isQuoted: true, isTag: false };
|
|
158
|
-
}
|
|
159
|
-
return null;
|
|
160
|
-
}
|
|
161
|
-
case 'annotation.removed': {
|
|
162
|
-
const payload = eventData.payload;
|
|
163
|
-
// Find the original annotation.added event
|
|
164
|
-
const addedEvent = allEvents.find(e => e.event.type === 'annotation.added' &&
|
|
165
|
-
e.event.payload.annotation.id === payload.annotationId);
|
|
166
|
-
if (addedEvent) {
|
|
167
|
-
const addedPayload = addedEvent.event.payload;
|
|
168
|
-
return { exact: truncateText((0, api_client_1.getAnnotationExactText)(addedPayload.annotation)), isQuoted: true, isTag: false };
|
|
169
|
-
}
|
|
170
|
-
return null;
|
|
171
|
-
}
|
|
172
|
-
case 'annotation.added': {
|
|
173
|
-
const payload = eventData.payload;
|
|
174
|
-
return { exact: truncateText((0, api_client_1.getAnnotationExactText)(payload.annotation)), isQuoted: true, isTag: false };
|
|
175
|
-
}
|
|
176
|
-
case 'entitytag.added':
|
|
177
|
-
case 'entitytag.removed': {
|
|
178
|
-
const payload = eventData.payload;
|
|
179
|
-
return { exact: payload.entityType, isQuoted: false, isTag: true };
|
|
180
|
-
}
|
|
181
|
-
default:
|
|
182
|
-
return null;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
// Extract entity types from event payload
|
|
186
|
-
function getEventEntityTypes(event) {
|
|
187
|
-
const eventData = event.event;
|
|
188
|
-
if (eventData.type === 'annotation.added') {
|
|
189
|
-
const payload = eventData.payload;
|
|
190
|
-
// Extract entity types from W3C annotation
|
|
191
|
-
return (0, api_client_1.getEntityTypes)(payload.annotation);
|
|
192
|
-
}
|
|
193
|
-
return [];
|
|
194
|
-
}
|
|
195
|
-
// Format user ID for display
|
|
196
|
-
function formatUserId(userId) {
|
|
197
|
-
// If it's a DID format (did:web:org.com:users:alice), format as alice@org.com
|
|
198
|
-
if (userId.startsWith('did:web:')) {
|
|
199
|
-
const parts = userId.split(':');
|
|
200
|
-
// Format: did:web:org.com:users:alice
|
|
201
|
-
// parts: ['did', 'web', 'org.com', 'users', 'alice']
|
|
202
|
-
if (parts.length >= 5) {
|
|
203
|
-
const domain = parts[2]; // org.com
|
|
204
|
-
const username = parts[parts.length - 1]; // alice
|
|
205
|
-
return `${username}@${domain}`;
|
|
206
|
-
}
|
|
207
|
-
// Fallback if format is unexpected
|
|
208
|
-
const username = parts[parts.length - 1];
|
|
209
|
-
return username || userId.substring(0, 8);
|
|
210
|
-
}
|
|
211
|
-
// Otherwise show first 8 characters of UUID
|
|
212
|
-
return userId.substring(0, 8);
|
|
213
|
-
}
|
|
214
|
-
// Extract additional metadata for resource creation events
|
|
215
|
-
function getResourceCreationDetails(event) {
|
|
216
|
-
const eventData = event.event;
|
|
217
|
-
if (eventData.type === 'resource.created') {
|
|
218
|
-
const payload = eventData.payload;
|
|
219
|
-
return {
|
|
220
|
-
type: 'created',
|
|
221
|
-
userId: formatUserId(eventData.userId),
|
|
222
|
-
method: payload.creationMethod,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
if (eventData.type === 'resource.cloned') {
|
|
226
|
-
const payload = eventData.payload;
|
|
227
|
-
return {
|
|
228
|
-
type: 'cloned',
|
|
229
|
-
userId: formatUserId(eventData.userId),
|
|
230
|
-
method: payload.creationMethod,
|
|
231
|
-
sourceDocId: payload.parentResourceId,
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
return null;
|
|
235
|
-
}
|
|
236
|
-
// Extract annotation ID from event payload
|
|
237
|
-
function getAnnotationIdFromEvent(event) {
|
|
238
|
-
const eventData = event.event;
|
|
239
|
-
switch (eventData.type) {
|
|
240
|
-
case 'annotation.added': {
|
|
241
|
-
const payload = eventData.payload;
|
|
242
|
-
return payload.annotation.id;
|
|
243
|
-
}
|
|
244
|
-
case 'annotation.removed':
|
|
245
|
-
case 'annotation.body.updated': {
|
|
246
|
-
const payload = eventData.payload;
|
|
247
|
-
return payload.annotationId;
|
|
248
|
-
}
|
|
249
|
-
default:
|
|
250
|
-
return null;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
// Check if event relates to the hovered annotation
|
|
254
|
-
function isEventRelatedToAnnotation(event, annotationId) {
|
|
255
|
-
const eventAnnotationId = getAnnotationIdFromEvent(event);
|
|
256
|
-
return eventAnnotationId === annotationId;
|
|
257
|
-
}
|
|
258
|
-
//# sourceMappingURL=annotation-history-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotation-history-utils.js","sourceRoot":"","sources":["../src/annotation-history-utils.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAyBH,0CAoCC;AAuBD,sCAoCC;AAGD,gDAcC;AASD,wDA8DC;AAGD,kDAUC;AAwCD,gEAyBC;AAGD,4DAiBC;AAGD,gEAGC;AAzSD,oDAA6E;AAS7E,gCAAgC;AAChC,SAAgB,eAAe,CAAC,IAAuB,EAAE,CAAc;IACrE,mFAAmF;IACnF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB;YACrB,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,iBAAiB;YACpB,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,mBAAmB;YACtB,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,qBAAqB;YACxB,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,kBAAkB;YACrB,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,oBAAoB;YACvB,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,yBAAyB;YAC5B,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC;QACpC,KAAK,iBAAiB;YACpB,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,mBAAmB;YACtB,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,kBAAkB;YACrB,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,cAAc;YACjB,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,eAAe;YAClB,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,YAAY;YACf,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC;QACxB;YACE,qDAAqD;YACrD,MAAM,gBAAgB,GAAU,IAAI,CAAC;YACrC,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,SAAS,kBAAkB,CAAC,UAAsB;IAChD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,WAAW;YACd,OAAO,IAAI,CAAC;QACd,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC;QACd,KAAK,YAAY;YACf,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,2BAA2B;AAC3B,SAAgB,aAAa,CAAC,IAAuB,EAAE,KAAmB;IACxE,mFAAmF;IACnF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB,CAAC;QACxB,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB,CAAC;QACzB,KAAK,qBAAqB;YACxB,OAAO,IAAI,CAAC;QACd,KAAK,kBAAkB;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAA0C,CAAC;gBACvE,OAAO,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,KAAK,oBAAoB;YACvB,OAAO,KAAK,CAAC;QACf,KAAK,yBAAyB;YAC5B,OAAO,IAAI,CAAC;QACd,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB;YACtB,OAAO,KAAK,CAAC;QACf,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAC,CAAE,0DAA0D;QAC3E,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC;QACd,KAAK,cAAc;YACjB,OAAO,GAAG,CAAC;QACb,KAAK,eAAe;YAClB,OAAO,GAAG,CAAC;QACb,KAAK,YAAY;YACf,OAAO,GAAG,CAAC;QACb;YACE,qDAAqD;YACrD,MAAM,gBAAgB,GAAU,IAAI,CAAC;YACrC,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,uBAAuB;AACvB,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,CAAc;IAClE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAE/C,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/D,IAAI,SAAS,GAAG,EAAE;QAAE,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE3D,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACnC,CAAC;AAED,sCAAsC;AACtC,SAAS,YAAY,CAAC,IAAY,EAAE,SAAS,GAAG,EAAE;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACxF,CAAC;AAED,6CAA6C;AAC7C,SAAgB,sBAAsB,CACpC,KAAkB,EAClB,WAAyB,EAAE,6DAA6D;AACxF,WAAyB,EAAE,6DAA6D;AACxF,SAAwB;IAExB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;IAE9B,2DAA2D;IAC3D,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,kBAAkB,CAAC;QACxB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,SAAS,CAAC,OAA2E,CAAC;YACtG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAChE,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAgD,CAAC;YAE3E,2DAA2D;YAC3D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB;gBAClC,CAAC,CAAC,KAAK,CAAC,OAA2C,CAAC,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,YAAY,CAC5F,CAAC;YAEF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,OAA0C,CAAC;gBACjF,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,IAAA,mCAAsB,EAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAChH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,OAA4C,CAAC;YAEvE,2CAA2C;YAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB;gBAClC,CAAC,CAAC,KAAK,CAAC,OAA2C,CAAC,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,YAAY,CAC5F,CAAC;YAEF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,OAA0C,CAAC;gBACjF,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,IAAA,mCAAsB,EAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAChH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,OAAO,GAAG,SAAS,CAAC,OAA0C,CAAC;YACrE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,IAAA,mCAAsB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC3G,CAAC;QAED,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,SAAS,CAAC,OAA4E,CAAC;YACvG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACrE,CAAC;QAED;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,0CAA0C;AAC1C,SAAgB,mBAAmB,CAAC,KAAkB;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;IAE9B,IAAI,SAAS,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,OAA0C,CAAC;QACrE,2CAA2C;QAC3C,OAAO,IAAA,2BAAc,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,6BAA6B;AAC7B,SAAS,YAAY,CAAC,MAAc;IAClC,8EAA8E;IAC9E,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,sCAAsC;QACtC,qDAAqD;QACrD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ;YAClD,OAAO,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;QACjC,CAAC;QACD,mCAAmC;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,4CAA4C;IAC5C,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,CAAC;AAkBD,2DAA2D;AAC3D,SAAgB,0BAA0B,CAAC,KAAkB;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;IAE9B,IAAI,SAAS,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,OAA0C,CAAC;QAErE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;YACtC,MAAM,EAAE,OAAO,CAAC,cAAc;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAyC,CAAC;QAEpE,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;YACtC,MAAM,EAAE,OAAO,CAAC,cAAc;YAC9B,WAAW,EAAE,OAAO,CAAC,gBAAgB;SACtC,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2CAA2C;AAC3C,SAAgB,wBAAwB,CAAC,KAAkB;IACzD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;IAE9B,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,OAAO,GAAG,SAAS,CAAC,OAA0C,CAAC;YACrE,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,CAAC;QACD,KAAK,oBAAoB,CAAC;QAC1B,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAoF,CAAC;YAC/G,OAAO,OAAO,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,mDAAmD;AACnD,SAAgB,0BAA0B,CAAC,KAAkB,EAAE,YAA0B;IACvF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC1D,OAAO,iBAAiB,KAAK,YAAY,CAAC;AAC5C,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Annotation types
|
|
3
|
-
*/
|
|
4
|
-
import type { components } from '@semiont/api-client';
|
|
5
|
-
type Annotation = components['schemas']['Annotation'];
|
|
6
|
-
export type AnnotationCategory = 'highlight' | 'reference';
|
|
7
|
-
export interface CreateAnnotationInternal {
|
|
8
|
-
id: string;
|
|
9
|
-
motivation: Annotation['motivation'];
|
|
10
|
-
target: Annotation['target'];
|
|
11
|
-
body: Annotation['body'];
|
|
12
|
-
creator: components['schemas']['Agent'];
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
15
|
-
//# sourceMappingURL=annotation-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotation-types.d.ts","sourceRoot":"","sources":["../src/annotation-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,KAAK,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;CACzC"}
|
package/dist/annotation-types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotation-types.js","sourceRoot":"","sources":["../src/annotation-types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backend-specific annotation utility functions
|
|
3
|
-
*/
|
|
4
|
-
import type { components } from '@semiont/api-client';
|
|
5
|
-
import type { BodyItem } from './events';
|
|
6
|
-
type Annotation = components['schemas']['Annotation'];
|
|
7
|
-
/**
|
|
8
|
-
* Check if two body items match (for remove/replace operations)
|
|
9
|
-
* Matches by type, value/source, and purpose fields
|
|
10
|
-
*/
|
|
11
|
-
export declare function bodyItemsMatch(item1: BodyItem, item2: BodyItem): boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Find a body item in an array
|
|
14
|
-
* Returns the index of the first matching item, or -1 if not found
|
|
15
|
-
*/
|
|
16
|
-
export declare function findBodyItem(body: Annotation['body'], targetItem: BodyItem): number;
|
|
17
|
-
export {};
|
|
18
|
-
//# sourceMappingURL=annotation-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotation-utils.d.ts","sourceRoot":"","sources":["../src/annotation-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,KAAK,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAsBxE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,GAAG,MAAM,CA0CnF"}
|
package/dist/annotation-utils.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Backend-specific annotation utility functions
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.bodyItemsMatch = bodyItemsMatch;
|
|
7
|
-
exports.findBodyItem = findBodyItem;
|
|
8
|
-
/**
|
|
9
|
-
* Check if two body items match (for remove/replace operations)
|
|
10
|
-
* Matches by type, value/source, and purpose fields
|
|
11
|
-
*/
|
|
12
|
-
function bodyItemsMatch(item1, item2) {
|
|
13
|
-
// Type must match
|
|
14
|
-
if (item1.type !== item2.type) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
// Purpose must match
|
|
18
|
-
if (item1.purpose !== item2.purpose) {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
// For TextualBody, match by value
|
|
22
|
-
if (item1.type === 'TextualBody' && item2.type === 'TextualBody') {
|
|
23
|
-
return item1.value === item2.value;
|
|
24
|
-
}
|
|
25
|
-
// For SpecificResource, match by source
|
|
26
|
-
if (item1.type === 'SpecificResource' && item2.type === 'SpecificResource') {
|
|
27
|
-
return item1.source === item2.source;
|
|
28
|
-
}
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Find a body item in an array
|
|
33
|
-
* Returns the index of the first matching item, or -1 if not found
|
|
34
|
-
*/
|
|
35
|
-
function findBodyItem(body, targetItem) {
|
|
36
|
-
if (!Array.isArray(body)) {
|
|
37
|
-
return -1;
|
|
38
|
-
}
|
|
39
|
-
for (let i = 0; i < body.length; i++) {
|
|
40
|
-
const item = body[i];
|
|
41
|
-
// Check if this is a valid body item that can be matched
|
|
42
|
-
if (typeof item === 'object' &&
|
|
43
|
-
item !== null &&
|
|
44
|
-
'type' in item &&
|
|
45
|
-
'purpose' in item) {
|
|
46
|
-
const itemType = item.type;
|
|
47
|
-
const itemPurpose = item.purpose;
|
|
48
|
-
// Type and purpose must match
|
|
49
|
-
if (itemType !== targetItem.type || itemPurpose !== targetItem.purpose) {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
// For TextualBody, match by value
|
|
53
|
-
if (targetItem.type === 'TextualBody' && 'value' in item) {
|
|
54
|
-
const itemValue = item.value;
|
|
55
|
-
if (itemValue === targetItem.value) {
|
|
56
|
-
return i;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// For SpecificResource, match by source
|
|
60
|
-
if (targetItem.type === 'SpecificResource' && 'source' in item) {
|
|
61
|
-
const itemSource = item.source;
|
|
62
|
-
if (itemSource === targetItem.source) {
|
|
63
|
-
return i;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return -1;
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=annotation-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotation-utils.js","sourceRoot":"","sources":["../src/annotation-utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAWH,wCAsBC;AAMD,oCA0CC;AA1ED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAe,EAAE,KAAe;IAC7D,kBAAkB;IAClB,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;IACrB,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kCAAkC;IAClC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,wCAAwC;IACxC,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAwB,EAAE,UAAoB;IACzE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,yDAAyD;QACzD,IACE,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,KAAK,IAAI;YACb,MAAM,IAAI,IAAI;YACd,SAAS,IAAI,IAAI,EACjB,CAAC;YACD,MAAM,QAAQ,GAAI,IAA0B,CAAC,IAAI,CAAC;YAClD,MAAM,WAAW,GAAI,IAA6B,CAAC,OAAO,CAAC;YAE3D,8BAA8B;YAC9B,IAAI,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,WAAW,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvE,SAAS;YACX,CAAC;YAED,kCAAkC;YAClC,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACzD,MAAM,SAAS,GAAI,IAA2B,CAAC,KAAK,CAAC;gBACrD,IAAI,SAAS,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnC,OAAO,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;YAED,wCAAwC;YACxC,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC/D,MAAM,UAAU,GAAI,IAA4B,CAAC,MAAM,CAAC;gBACxD,IAAI,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;oBACrC,OAAO,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC"}
|
package/dist/auth-types.d.ts
DELETED
package/dist/auth-types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-types.d.ts","sourceRoot":"","sources":["../src/auth-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB"}
|
package/dist/auth-types.js
DELETED
package/dist/auth-types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../src/auth-types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config Schema Validator
|
|
3
|
-
*
|
|
4
|
-
* Validates configuration data against JSON Schema using Ajv (JSON Schema validator).
|
|
5
|
-
* Provides runtime validation for semiont.json and environment config files.
|
|
6
|
-
*/
|
|
7
|
-
import { type ErrorObject } from 'ajv';
|
|
8
|
-
export interface ValidationResult {
|
|
9
|
-
valid: boolean;
|
|
10
|
-
errors: ErrorObject[] | null;
|
|
11
|
-
errorMessage?: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Validate semiont.json config
|
|
15
|
-
*/
|
|
16
|
-
export declare function validateSemiontConfig(data: unknown): ValidationResult;
|
|
17
|
-
/**
|
|
18
|
-
* Validate environment config (environments/*.json)
|
|
19
|
-
*/
|
|
20
|
-
export declare function validateEnvironmentConfig(data: unknown): ValidationResult;
|
|
21
|
-
/**
|
|
22
|
-
* Validate site config
|
|
23
|
-
*/
|
|
24
|
-
export declare function validateSiteConfig(data: unknown): ValidationResult;
|
|
25
|
-
//# sourceMappingURL=config-validator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-validator.d.ts","sourceRoot":"","sources":["../../src/config/config-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAY,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAmB5C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAiBrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAiBzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAiBlE"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Config Schema Validator
|
|
4
|
-
*
|
|
5
|
-
* Validates configuration data against JSON Schema using Ajv (JSON Schema validator).
|
|
6
|
-
* Provides runtime validation for semiont.json and environment config files.
|
|
7
|
-
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.validateSemiontConfig = validateSemiontConfig;
|
|
13
|
-
exports.validateEnvironmentConfig = validateEnvironmentConfig;
|
|
14
|
-
exports.validateSiteConfig = validateSiteConfig;
|
|
15
|
-
const ajv_1 = __importDefault(require("ajv"));
|
|
16
|
-
const ajv_formats_1 = __importDefault(require("ajv-formats"));
|
|
17
|
-
const config_schema_json_1 = __importDefault(require("./config.schema.json"));
|
|
18
|
-
// Initialize Ajv with config-compatible settings
|
|
19
|
-
const ajv = new ajv_1.default({
|
|
20
|
-
allErrors: true, // Return all errors, not just the first one
|
|
21
|
-
coerceTypes: true, // Coerce types (e.g., "123" -> 123)
|
|
22
|
-
removeAdditional: false, // Don't remove additional properties
|
|
23
|
-
useDefaults: true, // Apply default values from schema
|
|
24
|
-
strict: false
|
|
25
|
-
});
|
|
26
|
-
// Add format validators (email, uri, date-time, etc.)
|
|
27
|
-
(0, ajv_formats_1.default)(ajv);
|
|
28
|
-
// Load schema
|
|
29
|
-
ajv.addSchema(config_schema_json_1.default, 'config');
|
|
30
|
-
/**
|
|
31
|
-
* Validate semiont.json config
|
|
32
|
-
*/
|
|
33
|
-
function validateSemiontConfig(data) {
|
|
34
|
-
const validate = ajv.getSchema('config#/definitions/SemiontConfig');
|
|
35
|
-
if (!validate) {
|
|
36
|
-
throw new Error('SemiontConfig schema not found');
|
|
37
|
-
}
|
|
38
|
-
const valid = validate(data);
|
|
39
|
-
if (!valid) {
|
|
40
|
-
return {
|
|
41
|
-
valid: false,
|
|
42
|
-
errors: validate.errors || null,
|
|
43
|
-
errorMessage: formatErrors(validate.errors || [])
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
return { valid: true, errors: null };
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Validate environment config (environments/*.json)
|
|
50
|
-
*/
|
|
51
|
-
function validateEnvironmentConfig(data) {
|
|
52
|
-
const validate = ajv.getSchema('config#/definitions/EnvironmentConfig');
|
|
53
|
-
if (!validate) {
|
|
54
|
-
throw new Error('EnvironmentConfig schema not found');
|
|
55
|
-
}
|
|
56
|
-
const valid = validate(data);
|
|
57
|
-
if (!valid) {
|
|
58
|
-
return {
|
|
59
|
-
valid: false,
|
|
60
|
-
errors: validate.errors || null,
|
|
61
|
-
errorMessage: formatErrors(validate.errors || [])
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
return { valid: true, errors: null };
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Validate site config
|
|
68
|
-
*/
|
|
69
|
-
function validateSiteConfig(data) {
|
|
70
|
-
const validate = ajv.getSchema('config#/definitions/SiteConfig');
|
|
71
|
-
if (!validate) {
|
|
72
|
-
throw new Error('SiteConfig schema not found');
|
|
73
|
-
}
|
|
74
|
-
const valid = validate(data);
|
|
75
|
-
if (!valid) {
|
|
76
|
-
return {
|
|
77
|
-
valid: false,
|
|
78
|
-
errors: validate.errors || null,
|
|
79
|
-
errorMessage: formatErrors(validate.errors || [])
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
return { valid: true, errors: null };
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Format validation errors into human-readable message
|
|
86
|
-
*/
|
|
87
|
-
function formatErrors(errors) {
|
|
88
|
-
if (errors.length === 0)
|
|
89
|
-
return 'Validation failed';
|
|
90
|
-
const messages = errors.map(err => {
|
|
91
|
-
const path = err.instancePath || 'root';
|
|
92
|
-
const message = err.message || 'validation error';
|
|
93
|
-
if (err.keyword === 'required' && 'missingProperty' in err.params) {
|
|
94
|
-
return `Missing required property: ${err.params.missingProperty}`;
|
|
95
|
-
}
|
|
96
|
-
if (err.keyword === 'type' && 'type' in err.params) {
|
|
97
|
-
return `${path}: ${message} (expected ${err.params.type})`;
|
|
98
|
-
}
|
|
99
|
-
if (err.keyword === 'enum' && 'allowedValues' in err.params) {
|
|
100
|
-
return `${path}: must be one of [${err.params.allowedValues.join(', ')}]`;
|
|
101
|
-
}
|
|
102
|
-
if (err.keyword === 'format') {
|
|
103
|
-
return `${path}: invalid format (${message})`;
|
|
104
|
-
}
|
|
105
|
-
if (err.keyword === 'minLength' || err.keyword === 'minItems') {
|
|
106
|
-
return `${path}: ${message}`;
|
|
107
|
-
}
|
|
108
|
-
return `${path}: ${message}`;
|
|
109
|
-
});
|
|
110
|
-
return messages.join('; ');
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=config-validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../src/config/config-validator.ts"],"names":[],"mappings":"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"}
|