@nymphjs/server 1.0.0-beta.123 → 1.0.0-beta.125

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/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.0.0-beta.125](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.124...v1.0.0-beta.125) (2026-09-24)
7
+
8
+ ### Bug Fixes
9
+
10
+ - client translation errors, pubsub qref translation, entities can contain classes in db now ([2902fe3](https://forge.sciactive.com/sciactive/nymphjs/commits/2902fe3166b456cd0d8012c10991f9a16a4a99bb))
11
+
12
+ # [1.0.0-beta.124](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.123...v1.0.0-beta.124) (2026-09-24)
13
+
14
+ ### Bug Fixes
15
+
16
+ - client class translation in queries and params ([849355c](https://forge.sciactive.com/sciactive/nymphjs/commits/849355c7ad2dfb594415454c2d491b6868508434))
17
+
6
18
  # [1.0.0-beta.123](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.122...v1.0.0-beta.123) (2026-09-23)
7
19
 
8
20
  **Note:** Version bump only for package @nymphjs/server
@@ -1,6 +1,6 @@
1
1
  import express from 'express';
2
2
  import cookieParser from 'cookie-parser';
3
- import { Entity, EntityConflictError, InvalidParametersError, TilmeldAccessLevels, classNamesToEntityConstructors, } from '@nymphjs/nymph';
3
+ import { EntityConflictError, InvalidParametersError, TilmeldAccessLevels, classNamesToEntityConstructors, referencesToEntities, } from '@nymphjs/nymph';
4
4
  import { EntityInvalidDataError } from '@nymphjs/nymph';
5
5
  import { statusDescriptions } from './statusDescriptions.js';
6
6
  const NOT_FOUND_ERROR = 'Entity is not found.';
@@ -102,26 +102,26 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
102
102
  return;
103
103
  }
104
104
  let [options, ...selectors] = data;
105
- let EntityClass;
106
- try {
107
- EntityClass = response.locals.nymph.getEntityClass(data[0].class);
108
- if (!EntityClass.restEnabled) {
109
- httpError(response, 403);
110
- return;
111
- }
112
- }
113
- catch (e) {
114
- httpError(response, 400, e);
115
- return;
116
- }
117
- options.class = EntityClass;
118
105
  options.source = 'client';
119
106
  options.skipAc = false;
120
107
  if (options.return === 'object') {
121
108
  options.return = 'entity';
122
109
  }
123
110
  try {
124
- selectors = classNamesToEntityConstructors(response.locals.nymph, selectors, true);
111
+ options = classNamesToEntityConstructors(response.locals.nymph, options, true);
112
+ }
113
+ catch (e) {
114
+ if (e?.message === 'Not accessible.') {
115
+ httpError(response, 403);
116
+ return;
117
+ }
118
+ else {
119
+ httpError(response, 500, e);
120
+ return;
121
+ }
122
+ }
123
+ try {
124
+ selectors = classNamesToEntityConstructors(response.locals.nymph, referencesToEntities(selectors, response.locals.nymph, false, true), true);
125
125
  }
126
126
  catch (e) {
127
127
  if (e?.message === 'Not accessible.') {
@@ -219,14 +219,16 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
219
219
  }
220
220
  let entity;
221
221
  try {
222
- entity = await loadEntity(entData, response.locals.nymph);
222
+ entity = await loadEntity(classNamesToEntityConstructors(response.locals.nymph, referencesToEntities(entData, response.locals.nymph, false, true), true), response.locals.nymph);
223
223
  }
224
224
  catch (e) {
225
225
  if (e instanceof EntityConflictError) {
226
226
  conflict = true;
227
+ lastException = e;
227
228
  }
228
229
  else if (e instanceof ForbiddenClassError) {
229
230
  forbidden = true;
231
+ lastException = e;
230
232
  }
231
233
  else if (e.message === NOT_FOUND_ERROR) {
232
234
  notfound = true;
@@ -235,6 +237,10 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
235
237
  invalidRequest = true;
236
238
  lastException = e;
237
239
  }
240
+ else if (e.message === 'Not accessible.') {
241
+ forbidden = true;
242
+ lastException = e;
243
+ }
238
244
  else {
239
245
  lastException = e;
240
246
  }
@@ -267,11 +273,11 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
267
273
  return;
268
274
  }
269
275
  else if (conflict) {
270
- httpError(response, 409);
276
+ httpError(response, 409, lastException);
271
277
  return;
272
278
  }
273
279
  else if (forbidden) {
274
- httpError(response, 403);
280
+ httpError(response, 403, lastException);
275
281
  return;
276
282
  }
277
283
  else if (notfound) {
@@ -298,7 +304,7 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
298
304
  return;
299
305
  }
300
306
  try {
301
- const params = referencesToEntities([...data.params], response.locals.nymph);
307
+ const params = classNamesToEntityConstructors(response.locals.nymph, referencesToEntities([...data.params], response.locals.nymph, false, true), true);
302
308
  if (data.static) {
303
309
  let EntityClass;
304
310
  try {
@@ -385,14 +391,14 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
385
391
  else {
386
392
  let entity;
387
393
  try {
388
- entity = await loadEntity(data.entity, response.locals.nymph);
394
+ entity = await loadEntity(classNamesToEntityConstructors(response.locals.nymph, referencesToEntities(data.entity, response.locals.nymph, false, true), true), response.locals.nymph);
389
395
  }
390
396
  catch (e) {
391
397
  if (e instanceof EntityConflictError) {
392
- httpError(response, 409);
398
+ httpError(response, 409, e);
393
399
  }
394
400
  else if (e instanceof ForbiddenClassError) {
395
- httpError(response, 403);
401
+ httpError(response, 403, e);
396
402
  }
397
403
  else if (e.message === NOT_FOUND_ERROR) {
398
404
  httpError(response, 404, e);
@@ -400,6 +406,9 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
400
406
  else if (e instanceof InvalidParametersError) {
401
407
  httpError(response, 400, e);
402
408
  }
409
+ else if (e.message === 'Not accessible.') {
410
+ httpError(response, 403);
411
+ }
403
412
  else {
404
413
  httpError(response, 500, e);
405
414
  }
@@ -441,7 +450,7 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
441
450
  }
442
451
  catch (e) {
443
452
  if (e instanceof ForbiddenClassError) {
444
- httpError(response, 403);
453
+ httpError(response, 403, e);
445
454
  return;
446
455
  }
447
456
  else {
@@ -558,14 +567,16 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
558
567
  }
559
568
  let entity;
560
569
  try {
561
- entity = await loadEntity(entData, response.locals.nymph, patch);
570
+ entity = await loadEntity(classNamesToEntityConstructors(response.locals.nymph, referencesToEntities(entData, response.locals.nymph, false, true), true), response.locals.nymph, patch);
562
571
  }
563
572
  catch (e) {
564
573
  if (e instanceof EntityConflictError) {
565
574
  conflict = true;
575
+ lastException = e;
566
576
  }
567
577
  else if (e instanceof ForbiddenClassError) {
568
578
  forbidden = true;
579
+ lastException = e;
569
580
  }
570
581
  else if (e.message === NOT_FOUND_ERROR) {
571
582
  notfound = true;
@@ -574,6 +585,10 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
574
585
  invalidRequest = true;
575
586
  lastException = e;
576
587
  }
588
+ else if (e.message === 'Not accessible.') {
589
+ forbidden = true;
590
+ lastException = e;
591
+ }
577
592
  else {
578
593
  lastException = e;
579
594
  }
@@ -605,10 +620,10 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
605
620
  httpError(response, 400, lastException);
606
621
  }
607
622
  else if (forbidden) {
608
- httpError(response, 403);
623
+ httpError(response, 403, lastException);
609
624
  }
610
625
  else if (conflict) {
611
- httpError(response, 409);
626
+ httpError(response, 409, lastException);
612
627
  }
613
628
  else if (notfound) {
614
629
  httpError(response, 404);
@@ -748,11 +763,11 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
748
763
  // Unauthenticate after the request.
749
764
  rest.use(unauthenticateTilmeld);
750
765
  async function loadEntity(entityData, nymph, patch = false, allowConflict = false) {
751
- if (entityData.class === 'Entity') {
766
+ let EntityClass = entityData.class;
767
+ if (EntityClass.class === 'Entity') {
752
768
  // Don't let clients use the `Entity` class, since it has no validity/AC checks.
753
- throw new InvalidParametersError("Can't use Entity class directly from the front end.");
769
+ throw new ForbiddenClassError("Can't use Entity class directly from the front end.");
754
770
  }
755
- let EntityClass = nymph.getEntityClass(entityData.class);
756
771
  if (!EntityClass.restEnabled) {
757
772
  throw new ForbiddenClassError('Not accessible.');
758
773
  }
@@ -777,43 +792,6 @@ export function createServer(nymph, { jsonOptions = {} } = {}) {
777
792
  }
778
793
  return entity;
779
794
  }
780
- /**
781
- * Check if an item is a reference, and if it is, convert it to an entity.
782
- *
783
- * This function will recurse into deeper arrays and objects.
784
- *
785
- * @param item The item to check.
786
- * @returns The item, converted.
787
- */
788
- function referencesToEntities(item, nymph) {
789
- if (item == null) {
790
- return item;
791
- }
792
- else if (Array.isArray(item)) {
793
- if (item.length === 3 && item[0] === 'nymph_entity_reference') {
794
- try {
795
- const EntityClass = nymph.getEntityClass(item[2]);
796
- if (!EntityClass.restEnabled) {
797
- throw new ForbiddenClassError('Not accessible.');
798
- }
799
- return EntityClass.factoryReference(item);
800
- }
801
- catch (e) {
802
- return item;
803
- }
804
- }
805
- return item.map((entry) => referencesToEntities(entry, nymph));
806
- }
807
- else if (typeof item === 'object' && !(item instanceof Entity)) {
808
- // Only do this for non-entity objects.
809
- const newItem = {};
810
- for (let curProperty in item) {
811
- newItem[curProperty] = referencesToEntities(item[curProperty], nymph);
812
- }
813
- return newItem;
814
- }
815
- return item;
816
- }
817
795
  /**
818
796
  * Return the request with an HTTP error response.
819
797
  *
@@ -1 +1 @@
1
- {"version":3,"file":"createServer.js","sourceRoot":"","sources":["../src/createServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createServer.js","sourceRoot":"","sources":["../src/createServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/server",
3
- "version": "1.0.0-beta.123",
3
+ "version": "1.0.0-beta.125",
4
4
  "description": "Nymph.js - REST Server",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,13 +38,13 @@
38
38
  },
39
39
  "license": "Apache-2.0",
40
40
  "dependencies": {
41
- "@nymphjs/nymph": "^1.0.0-beta.123",
41
+ "@nymphjs/nymph": "^1.0.0-beta.125",
42
42
  "cookie-parser": "^1.4.7",
43
43
  "express": "^5.2.1"
44
44
  },
45
45
  "devDependencies": {
46
- "@nymphjs/client": "^1.0.0-beta.123",
47
- "@nymphjs/driver-sqlite3": "^1.0.0-beta.123",
46
+ "@nymphjs/client": "^1.0.0-beta.125",
47
+ "@nymphjs/driver-sqlite3": "^1.0.0-beta.125",
48
48
  "@swc/core": "^1.16.1",
49
49
  "@swc/jest": "^0.2.39",
50
50
  "@tsconfig/recommended": "^1.0.13",
@@ -57,5 +57,5 @@
57
57
  "ts-node": "^10.9.2",
58
58
  "typescript": "^7.0.2"
59
59
  },
60
- "gitHead": "c37dc940d7bf39e0f63158add6d0c54e7c050782"
60
+ "gitHead": "b87bd7ebda690fc8c491835e44fece78dc650b9c"
61
61
  }
@@ -3,16 +3,15 @@ import express, { NextFunction, Request, Response } from 'express';
3
3
  import cookieParser from 'cookie-parser';
4
4
  import {
5
5
  Nymph,
6
- Entity,
7
6
  EntityConflictError,
8
7
  EntityConstructor,
9
8
  EntityInterface,
10
9
  EntityJson,
11
10
  EntityPatch,
12
- EntityReference,
13
11
  InvalidParametersError,
14
12
  TilmeldAccessLevels,
15
13
  classNamesToEntityConstructors,
14
+ referencesToEntities,
16
15
  Options,
17
16
  Selector,
18
17
  } from '@nymphjs/nymph';
@@ -148,27 +147,30 @@ export function createServer(
148
147
  return;
149
148
  }
150
149
  let [options, ...selectors] = data as [Options, ...Selector[]];
151
- let EntityClass;
152
- try {
153
- EntityClass = response.locals.nymph.getEntityClass(data[0].class);
154
- if (!EntityClass.restEnabled) {
155
- httpError(response, 403);
156
- return;
157
- }
158
- } catch (e: any) {
159
- httpError(response, 400, e);
160
- return;
161
- }
162
- options.class = EntityClass;
163
150
  options.source = 'client';
164
151
  options.skipAc = false;
165
152
  if (options.return === 'object') {
166
153
  options.return = 'entity';
167
154
  }
155
+ try {
156
+ options = classNamesToEntityConstructors(
157
+ response.locals.nymph,
158
+ options,
159
+ true,
160
+ );
161
+ } catch (e: any) {
162
+ if (e?.message === 'Not accessible.') {
163
+ httpError(response, 403);
164
+ return;
165
+ } else {
166
+ httpError(response, 500, e);
167
+ return;
168
+ }
169
+ }
168
170
  try {
169
171
  selectors = classNamesToEntityConstructors(
170
172
  response.locals.nymph,
171
- selectors,
173
+ referencesToEntities(selectors, response.locals.nymph, false, true),
172
174
  true,
173
175
  );
174
176
  } catch (e: any) {
@@ -280,17 +282,34 @@ export function createServer(
280
282
  }
281
283
  let entity: EntityInterface;
282
284
  try {
283
- entity = await loadEntity(entData, response.locals.nymph);
285
+ entity = await loadEntity(
286
+ classNamesToEntityConstructors(
287
+ response.locals.nymph,
288
+ referencesToEntities(
289
+ entData,
290
+ response.locals.nymph,
291
+ false,
292
+ true,
293
+ ),
294
+ true,
295
+ ),
296
+ response.locals.nymph,
297
+ );
284
298
  } catch (e: any) {
285
299
  if (e instanceof EntityConflictError) {
286
300
  conflict = true;
301
+ lastException = e;
287
302
  } else if (e instanceof ForbiddenClassError) {
288
303
  forbidden = true;
304
+ lastException = e;
289
305
  } else if (e.message === NOT_FOUND_ERROR) {
290
306
  notfound = true;
291
307
  } else if (e instanceof InvalidParametersError) {
292
308
  invalidRequest = true;
293
309
  lastException = e;
310
+ } else if (e.message === 'Not accessible.') {
311
+ forbidden = true;
312
+ lastException = e;
294
313
  } else {
295
314
  lastException = e;
296
315
  }
@@ -320,10 +339,10 @@ export function createServer(
320
339
  httpError(response, 400, lastException);
321
340
  return;
322
341
  } else if (conflict) {
323
- httpError(response, 409);
342
+ httpError(response, 409, lastException);
324
343
  return;
325
344
  } else if (forbidden) {
326
- httpError(response, 403);
345
+ httpError(response, 403, lastException);
327
346
  return;
328
347
  } else if (notfound) {
329
348
  httpError(response, 404);
@@ -346,9 +365,15 @@ export function createServer(
346
365
  return;
347
366
  }
348
367
  try {
349
- const params = referencesToEntities(
350
- [...data.params],
368
+ const params = classNamesToEntityConstructors(
351
369
  response.locals.nymph,
370
+ referencesToEntities(
371
+ [...data.params],
372
+ response.locals.nymph,
373
+ false,
374
+ true,
375
+ ),
376
+ true,
352
377
  );
353
378
  if (data.static) {
354
379
  let EntityClass: EntityConstructor;
@@ -444,16 +469,30 @@ export function createServer(
444
469
  } else {
445
470
  let entity: EntityInterface;
446
471
  try {
447
- entity = await loadEntity(data.entity, response.locals.nymph);
472
+ entity = await loadEntity(
473
+ classNamesToEntityConstructors(
474
+ response.locals.nymph,
475
+ referencesToEntities(
476
+ data.entity,
477
+ response.locals.nymph,
478
+ false,
479
+ true,
480
+ ),
481
+ true,
482
+ ),
483
+ response.locals.nymph,
484
+ );
448
485
  } catch (e: any) {
449
486
  if (e instanceof EntityConflictError) {
450
- httpError(response, 409);
487
+ httpError(response, 409, e);
451
488
  } else if (e instanceof ForbiddenClassError) {
452
- httpError(response, 403);
489
+ httpError(response, 403, e);
453
490
  } else if (e.message === NOT_FOUND_ERROR) {
454
491
  httpError(response, 404, e);
455
492
  } else if (e instanceof InvalidParametersError) {
456
493
  httpError(response, 400, e);
494
+ } else if (e.message === 'Not accessible.') {
495
+ httpError(response, 403);
457
496
  } else {
458
497
  httpError(response, 500, e);
459
498
  }
@@ -494,7 +533,7 @@ export function createServer(
494
533
  }
495
534
  } catch (e: any) {
496
535
  if (e instanceof ForbiddenClassError) {
497
- httpError(response, 403);
536
+ httpError(response, 403, e);
498
537
  return;
499
538
  } else {
500
539
  httpError(response, 500, e);
@@ -621,17 +660,30 @@ export function createServer(
621
660
  }
622
661
  let entity: EntityInterface;
623
662
  try {
624
- entity = await loadEntity(entData, response.locals.nymph, patch);
663
+ entity = await loadEntity(
664
+ classNamesToEntityConstructors(
665
+ response.locals.nymph,
666
+ referencesToEntities(entData, response.locals.nymph, false, true),
667
+ true,
668
+ ),
669
+ response.locals.nymph,
670
+ patch,
671
+ );
625
672
  } catch (e: any) {
626
673
  if (e instanceof EntityConflictError) {
627
674
  conflict = true;
675
+ lastException = e;
628
676
  } else if (e instanceof ForbiddenClassError) {
629
677
  forbidden = true;
678
+ lastException = e;
630
679
  } else if (e.message === NOT_FOUND_ERROR) {
631
680
  notfound = true;
632
681
  } else if (e instanceof InvalidParametersError) {
633
682
  invalidRequest = true;
634
683
  lastException = e;
684
+ } else if (e.message === 'Not accessible.') {
685
+ forbidden = true;
686
+ lastException = e;
635
687
  } else {
636
688
  lastException = e;
637
689
  }
@@ -660,9 +712,9 @@ export function createServer(
660
712
  if (invalidRequest) {
661
713
  httpError(response, 400, lastException);
662
714
  } else if (forbidden) {
663
- httpError(response, 403);
715
+ httpError(response, 403, lastException);
664
716
  } else if (conflict) {
665
- httpError(response, 409);
717
+ httpError(response, 409, lastException);
666
718
  } else if (notfound) {
667
719
  httpError(response, 404);
668
720
  } else {
@@ -805,13 +857,13 @@ export function createServer(
805
857
  patch = false,
806
858
  allowConflict = false,
807
859
  ): Promise<EntityInterface> {
808
- if (entityData.class === 'Entity') {
860
+ let EntityClass = entityData.class;
861
+ if (EntityClass.class === 'Entity') {
809
862
  // Don't let clients use the `Entity` class, since it has no validity/AC checks.
810
- throw new InvalidParametersError(
863
+ throw new ForbiddenClassError(
811
864
  "Can't use Entity class directly from the front end.",
812
865
  );
813
866
  }
814
- let EntityClass = nymph.getEntityClass(entityData.class);
815
867
  if (!EntityClass.restEnabled) {
816
868
  throw new ForbiddenClassError('Not accessible.');
817
869
  }
@@ -838,41 +890,6 @@ export function createServer(
838
890
  return entity;
839
891
  }
840
892
 
841
- /**
842
- * Check if an item is a reference, and if it is, convert it to an entity.
843
- *
844
- * This function will recurse into deeper arrays and objects.
845
- *
846
- * @param item The item to check.
847
- * @returns The item, converted.
848
- */
849
- function referencesToEntities(item: any, nymph: Nymph): any {
850
- if (item == null) {
851
- return item;
852
- } else if (Array.isArray(item)) {
853
- if (item.length === 3 && item[0] === 'nymph_entity_reference') {
854
- try {
855
- const EntityClass = nymph.getEntityClass(item[2]);
856
- if (!EntityClass.restEnabled) {
857
- throw new ForbiddenClassError('Not accessible.');
858
- }
859
- return EntityClass.factoryReference(item as EntityReference);
860
- } catch (e: any) {
861
- return item;
862
- }
863
- }
864
- return item.map((entry) => referencesToEntities(entry, nymph));
865
- } else if (typeof item === 'object' && !(item instanceof Entity)) {
866
- // Only do this for non-entity objects.
867
- const newItem: { [k: string]: any } = {};
868
- for (let curProperty in item) {
869
- newItem[curProperty] = referencesToEntities(item[curProperty], nymph);
870
- }
871
- return newItem;
872
- }
873
- return item;
874
- }
875
-
876
893
  /**
877
894
  * Return the request with an HTTP error response.
878
895
  *