@nymphjs/nymph 1.0.0-beta.123 → 1.0.0-beta.124

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,12 @@
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.124](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.123...v1.0.0-beta.124) (2026-09-24)
7
+
8
+ ### Bug Fixes
9
+
10
+ - client class translation in queries and params ([849355c](https://forge.sciactive.com/sciactive/nymphjs/commits/849355c7ad2dfb594415454c2d491b6868508434))
11
+
6
12
  # [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
13
 
8
14
  ### Features
package/dist/utils.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import Nymph from './Nymph.js';
2
- import { Selector } from './Nymph.types.js';
3
2
  export declare function xor(a: any, b: any): boolean;
4
3
  export declare function uniqueStrings(array: string[]): string[];
5
- export declare function classNamesToEntityConstructors(nymph: Nymph, selectors: Selector[], enforceRestEnabledFlag?: boolean): Selector[];
4
+ export declare function classNamesToEntityConstructors<T extends any>(nymph: Nymph, item: T, enforceRestEnabledFlag?: boolean): T;
5
+ export declare function entityConstructorsToClassNames(item: any): any;
6
6
  export declare function entitiesToReferences(item: any, existingOnly?: boolean): any;
7
- export declare function referencesToEntities(item: any, nymph: Nymph, useSkipAc?: boolean): any;
7
+ export declare function referencesToEntities(item: any, nymph: Nymph, useSkipAc?: boolean, enforceRestEnabledFlag?: boolean): any;
8
8
  export declare function sortObj<T extends {
9
9
  [k: string]: any;
10
10
  }>(obj: T): T;
package/dist/utils.js CHANGED
@@ -9,57 +9,68 @@ export function uniqueStrings(array) {
9
9
  }
10
10
  return Object.keys(obj);
11
11
  }
12
- export function classNamesToEntityConstructors(nymph, selectors, enforceRestEnabledFlag = false) {
13
- const newSelectors = [];
14
- for (const curSelector of selectors) {
15
- const newSelector = { type: curSelector.type };
16
- for (const k in curSelector) {
17
- const key = k;
18
- const value = curSelector[key];
19
- if (key === 'type') {
20
- continue;
21
- }
22
- if (value === undefined) {
23
- continue;
24
- }
25
- if (key === 'qref' || key === '!qref') {
26
- const tmpArr = (Array.isArray((value ?? [])[0])
27
- ? value
28
- : [value]);
29
- for (let i = 0; i < tmpArr.length; i++) {
30
- const name = tmpArr[i][0];
31
- const [qrefOptions, ...selectors] = tmpArr[i][1];
32
- const QrefEntityClass = qrefOptions.class
33
- ? nymph.getEntityClass(qrefOptions.class)
34
- : nymph.getEntityClass('Entity');
35
- if (enforceRestEnabledFlag && !QrefEntityClass.restEnabled) {
36
- throw new Error('Not accessible.');
37
- }
38
- const options = { ...qrefOptions, class: QrefEntityClass };
39
- if (!newSelector[key]) {
40
- newSelector[key] = [];
41
- }
42
- newSelector[key].push([
43
- name,
44
- [
45
- options,
46
- ...classNamesToEntityConstructors(nymph, selectors, enforceRestEnabledFlag),
47
- ],
48
- ]);
49
- }
50
- }
51
- else if (key === 'selector' || key === '!selector') {
52
- const tmpArr = (Array.isArray(value) ? value : [value]);
53
- newSelector[key] = classNamesToEntityConstructors(nymph, tmpArr, enforceRestEnabledFlag);
54
- }
55
- else {
56
- // @ts-ignore: ts doesn't know what value is here.
57
- newSelector[key] = value;
58
- }
12
+ export function classNamesToEntityConstructors(nymph, item, enforceRestEnabledFlag = false) {
13
+ if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
14
+ return item;
15
+ }
16
+ else if (Array.isArray(item) &&
17
+ item.length === 2 &&
18
+ item[0] === 'nymph_class_reference' &&
19
+ typeof item[1] === 'string') {
20
+ // Convert class references to entity classes.
21
+ const EntityClass = nymph.getEntityClass(item[1]);
22
+ if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
23
+ throw new Error('Not accessible.');
24
+ }
25
+ return EntityClass;
26
+ }
27
+ else if (item instanceof Entity &&
28
+ typeof item.$toReference === 'function') {
29
+ // Don't touch entities.
30
+ return item;
31
+ }
32
+ else if (Array.isArray(item)) {
33
+ // Recurse into lower arrays.
34
+ return item.map((entry) => classNamesToEntityConstructors(nymph, entry, enforceRestEnabledFlag));
35
+ }
36
+ else if (item instanceof Object) {
37
+ let newObj = Object.create(item);
38
+ for (let [key, value] of Object.entries(item)) {
39
+ newObj[key] = classNamesToEntityConstructors(nymph, value, enforceRestEnabledFlag);
59
40
  }
60
- newSelectors.push(newSelector);
41
+ return newObj;
61
42
  }
62
- return newSelectors;
43
+ // Not an entity or array, just return it.
44
+ return item;
45
+ }
46
+ export function entityConstructorsToClassNames(item) {
47
+ if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
48
+ return item;
49
+ }
50
+ else if (typeof item === 'function' &&
51
+ item.prototype instanceof Entity &&
52
+ typeof item.class === 'string') {
53
+ // Convert entity classes to class references.
54
+ return ['nymph_class_reference', item.class];
55
+ }
56
+ else if (item instanceof Entity &&
57
+ typeof item.$toReference === 'function') {
58
+ // Don't touch entities.
59
+ return item;
60
+ }
61
+ else if (Array.isArray(item)) {
62
+ // Recurse into lower arrays.
63
+ return item.map((entry) => entityConstructorsToClassNames(entry));
64
+ }
65
+ else if (item instanceof Object) {
66
+ let newObj = Object.create(item);
67
+ for (let [key, value] of Object.entries(item)) {
68
+ newObj[key] = entityConstructorsToClassNames(value);
69
+ }
70
+ return newObj;
71
+ }
72
+ // Not an entity or array, just return it.
73
+ return item;
63
74
  }
64
75
  export function entitiesToReferences(item, existingOnly) {
65
76
  if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
@@ -70,6 +81,12 @@ export function entitiesToReferences(item, existingOnly) {
70
81
  // Convert entities to references.
71
82
  return item.$toReference(existingOnly);
72
83
  }
84
+ else if (typeof item === 'function' &&
85
+ item.prototype instanceof Entity &&
86
+ typeof item.class === 'string') {
87
+ // Don't touch Entity classes.
88
+ return item;
89
+ }
73
90
  else if (Array.isArray(item)) {
74
91
  // Recurse into lower arrays.
75
92
  return item.map((entry) => entitiesToReferences(entry, existingOnly));
@@ -84,7 +101,7 @@ export function entitiesToReferences(item, existingOnly) {
84
101
  // Not an entity or array, just return it.
85
102
  return item;
86
103
  }
87
- export function referencesToEntities(item, nymph, useSkipAc = false) {
104
+ export function referencesToEntities(item, nymph, useSkipAc = false, enforceRestEnabledFlag = false) {
88
105
  if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
89
106
  return item;
90
107
  }
@@ -93,6 +110,9 @@ export function referencesToEntities(item, nymph, useSkipAc = false) {
93
110
  if (item[0] === 'nymph_entity_reference') {
94
111
  try {
95
112
  const EntityClass = nymph.getEntityClass(item[2]);
113
+ if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
114
+ throw new Error('Not accessible.');
115
+ }
96
116
  const entity = EntityClass.factoryReference(item);
97
117
  entity.$useSkipAc(useSkipAc);
98
118
  entity.$nymph = nymph;
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/nymph",
3
- "version": "1.0.0-beta.123",
3
+ "version": "1.0.0-beta.124",
4
4
  "description": "Application Data and Access Framework for Node.js and the Browser",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "license": "Apache-2.0",
45
45
  "dependencies": {
46
- "@nymphjs/guid": "^1.0.0-beta.123",
46
+ "@nymphjs/guid": "^1.0.0-beta.124",
47
47
  "@sciactive/tokenizer": "^3.4.0",
48
48
  "debug": "^4.4.3",
49
49
  "joi": "^18.2.5",
@@ -66,5 +66,5 @@
66
66
  "ts-node": "^10.9.2",
67
67
  "typescript": "^7.0.2"
68
68
  },
69
- "gitHead": "c37dc940d7bf39e0f63158add6d0c54e7c050782"
69
+ "gitHead": "f0e37f47c5ceeaaa1b389867f7cd24eac05cc5f9"
70
70
  }
package/src/utils.ts CHANGED
@@ -15,76 +15,79 @@ export function uniqueStrings(array: string[]) {
15
15
  return Object.keys(obj);
16
16
  }
17
17
 
18
- export function classNamesToEntityConstructors(
18
+ export function classNamesToEntityConstructors<T extends any>(
19
19
  nymph: Nymph,
20
- selectors: Selector[],
20
+ item: T,
21
21
  enforceRestEnabledFlag = false,
22
- ): Selector[] {
23
- const newSelectors: Selector[] = [];
24
-
25
- for (const curSelector of selectors) {
26
- const newSelector: Selector = { type: curSelector.type };
27
-
28
- for (const k in curSelector) {
29
- const key = k as keyof Selector;
30
- const value = curSelector[key];
31
-
32
- if (key === 'type') {
33
- continue;
34
- }
35
-
36
- if (value === undefined) {
37
- continue;
38
- }
39
-
40
- if (key === 'qref' || key === '!qref') {
41
- const tmpArr = (
42
- Array.isArray(((value as Selector['qref']) ?? [])[0])
43
- ? value
44
- : [value]
45
- ) as [string, [Options, ...Selector[]]][];
46
- for (let i = 0; i < tmpArr.length; i++) {
47
- const name = tmpArr[i][0];
48
- const [qrefOptions, ...selectors] = tmpArr[i][1];
49
- const QrefEntityClass = qrefOptions.class
50
- ? nymph.getEntityClass(qrefOptions.class)
51
- : nymph.getEntityClass('Entity');
52
- if (enforceRestEnabledFlag && !QrefEntityClass.restEnabled) {
53
- throw new Error('Not accessible.');
54
- }
55
- const options = { ...qrefOptions, class: QrefEntityClass };
56
- if (!newSelector[key]) {
57
- newSelector[key] = [];
58
- }
59
- (newSelector[key] as [string, [Options, ...Selector[]]][]).push([
60
- name,
61
- [
62
- options,
63
- ...classNamesToEntityConstructors(
64
- nymph,
65
- selectors,
66
- enforceRestEnabledFlag,
67
- ),
68
- ],
69
- ]);
70
- }
71
- } else if (key === 'selector' || key === '!selector') {
72
- const tmpArr = (Array.isArray(value) ? value : [value]) as Selector[];
73
- newSelector[key] = classNamesToEntityConstructors(
74
- nymph,
75
- tmpArr,
76
- enforceRestEnabledFlag,
77
- );
78
- } else {
79
- // @ts-ignore: ts doesn't know what value is here.
80
- newSelector[key] = value;
81
- }
22
+ ): T {
23
+ if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
24
+ return item;
25
+ } else if (
26
+ Array.isArray(item) &&
27
+ item.length === 2 &&
28
+ item[0] === 'nymph_class_reference' &&
29
+ typeof item[1] === 'string'
30
+ ) {
31
+ // Convert class references to entity classes.
32
+ const EntityClass = nymph.getEntityClass(item[1]);
33
+ if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
34
+ throw new Error('Not accessible.');
82
35
  }
83
-
84
- newSelectors.push(newSelector);
36
+ return EntityClass as T;
37
+ } else if (
38
+ item instanceof Entity &&
39
+ typeof item.$toReference === 'function'
40
+ ) {
41
+ // Don't touch entities.
42
+ return item;
43
+ } else if (Array.isArray(item)) {
44
+ // Recurse into lower arrays.
45
+ return item.map((entry) =>
46
+ classNamesToEntityConstructors(nymph, entry, enforceRestEnabledFlag),
47
+ ) as T;
48
+ } else if (item instanceof Object) {
49
+ let newObj = Object.create(item);
50
+ for (let [key, value] of Object.entries(item)) {
51
+ newObj[key] = classNamesToEntityConstructors(
52
+ nymph,
53
+ value,
54
+ enforceRestEnabledFlag,
55
+ );
56
+ }
57
+ return newObj;
85
58
  }
59
+ // Not an entity or array, just return it.
60
+ return item;
61
+ }
86
62
 
87
- return newSelectors;
63
+ export function entityConstructorsToClassNames(item: any): any {
64
+ if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
65
+ return item;
66
+ } else if (
67
+ typeof item === 'function' &&
68
+ item.prototype instanceof Entity &&
69
+ typeof item.class === 'string'
70
+ ) {
71
+ // Convert entity classes to class references.
72
+ return ['nymph_class_reference', item.class];
73
+ } else if (
74
+ item instanceof Entity &&
75
+ typeof item.$toReference === 'function'
76
+ ) {
77
+ // Don't touch entities.
78
+ return item;
79
+ } else if (Array.isArray(item)) {
80
+ // Recurse into lower arrays.
81
+ return item.map((entry) => entityConstructorsToClassNames(entry));
82
+ } else if (item instanceof Object) {
83
+ let newObj = Object.create(item);
84
+ for (let [key, value] of Object.entries(item)) {
85
+ newObj[key] = entityConstructorsToClassNames(value);
86
+ }
87
+ return newObj;
88
+ }
89
+ // Not an entity or array, just return it.
90
+ return item;
88
91
  }
89
92
 
90
93
  export function entitiesToReferences(item: any, existingOnly?: boolean): any {
@@ -96,6 +99,13 @@ export function entitiesToReferences(item: any, existingOnly?: boolean): any {
96
99
  ) {
97
100
  // Convert entities to references.
98
101
  return item.$toReference(existingOnly);
102
+ } else if (
103
+ typeof item === 'function' &&
104
+ item.prototype instanceof Entity &&
105
+ typeof item.class === 'string'
106
+ ) {
107
+ // Don't touch Entity classes.
108
+ return item;
99
109
  } else if (Array.isArray(item)) {
100
110
  // Recurse into lower arrays.
101
111
  return item.map((entry) => entitiesToReferences(entry, existingOnly));
@@ -114,6 +124,7 @@ export function referencesToEntities(
114
124
  item: any,
115
125
  nymph: Nymph,
116
126
  useSkipAc = false,
127
+ enforceRestEnabledFlag = false,
117
128
  ): any {
118
129
  if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
119
130
  return item;
@@ -122,6 +133,9 @@ export function referencesToEntities(
122
133
  if (item[0] === 'nymph_entity_reference') {
123
134
  try {
124
135
  const EntityClass = nymph.getEntityClass(item[2]);
136
+ if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
137
+ throw new Error('Not accessible.');
138
+ }
125
139
  const entity = EntityClass.factoryReference(item as EntityReference);
126
140
  entity.$useSkipAc(useSkipAc);
127
141
  entity.$nymph = nymph;