@nymphjs/tilmeld-setup 1.0.0-beta.96 → 1.0.0-beta.98

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,16 @@
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.98](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.97...v1.0.0-beta.98) (2025-10-24)
7
+
8
+ **Note:** Version bump only for package @nymphjs/tilmeld-setup
9
+
10
+ # [1.0.0-beta.97](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.96...v1.0.0-beta.97) (2025-10-04)
11
+
12
+ ### Bug Fixes
13
+
14
+ - password verify on user edit page when password is empty ([bf797f7](https://github.com/sciactive/nymphjs/commit/bf797f77cc08f73731b9e20e413be6e7c0cec213))
15
+
6
16
  # [1.0.0-beta.96](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.95...v1.0.0-beta.96) (2025-09-01)
7
17
 
8
18
  **Note:** Version bump only for package @nymphjs/tilmeld-setup
@@ -1067,8 +1067,9 @@
1067
1067
  passwordVerify === ''
1068
1068
  ) {
1069
1069
  passwordVerified = undefined;
1070
+ } else {
1071
+ passwordVerified = $entity.passwordTemp === passwordVerify;
1070
1072
  }
1071
- passwordVerified = $entity.passwordTemp === passwordVerify;
1072
1073
  }
1073
1074
 
1074
1075
  function addAbility() {
package/dist/app/index.js CHANGED
@@ -28334,7 +28334,7 @@
28334
28334
  function selectorParser({ query, selector, qrefMap, bareHandler, }) {
28335
28335
  let curQuery = query;
28336
28336
  // eg. user<{User name="Hunter"}> or user!<{User name="Hunter"}>
28337
- const qrefRegex = /(?: |^)(\w+)!?<\{(\w+) (.*?[^\\])\}>(?= |$)/g;
28337
+ const qrefRegex = /(?: |^)([^\s=\[\]<>{}]+?)!?<\{(\w+) (.*?[^\\])\}>(?= |$)/g;
28338
28338
  const qrefMatch = curQuery.match(qrefRegex);
28339
28339
  if (qrefMatch) {
28340
28340
  selector.qref = [];
@@ -28374,18 +28374,72 @@
28374
28374
  }
28375
28375
  }
28376
28376
  curQuery = curQuery.replace(qrefRegex, '');
28377
- // eg. name=Marty or name="Marty McFly" or enabled=true or someArray=[1,2]
28378
- const equalRegex = /(?: |^)(\w+)!?=(""|".*?[^\\]"|[^ ]+)(?= |$)/g;
28377
+ // eg. someArray=[1,2] or someObject={"prop":"some value"}
28378
+ const equalJsonRegex = /(?: |^)([^\s=\[\]<>{}]+?)!?=(\{|\[)/g;
28379
+ const equalJsonMatch = [...curQuery.matchAll(equalJsonRegex)];
28380
+ {
28381
+ if (!('equal' in selector)) {
28382
+ selector.equal = [];
28383
+ }
28384
+ if (!('!equal' in selector)) {
28385
+ selector['!equal'] = [];
28386
+ }
28387
+ // Work backward to find all long JSON values.
28388
+ for (let i = equalJsonMatch.length - 1; i >= 0; i--) {
28389
+ const match = equalJsonMatch[i];
28390
+ let [name, opener] = splitn(match[0].trim(), '=', 2);
28391
+ let start = match.index + match[0].length - 1;
28392
+ let nextEndToken = curQuery.indexOf(opener === '{' ? '}' : ']', start);
28393
+ while (nextEndToken !== -1) {
28394
+ try {
28395
+ if (name.endsWith('!')) {
28396
+ selector['!equal'].unshift([
28397
+ name.slice(0, -1),
28398
+ JSON.parse(curQuery.substring(start, nextEndToken + 1)),
28399
+ ]);
28400
+ }
28401
+ else {
28402
+ selector.equal.unshift([
28403
+ name,
28404
+ JSON.parse(curQuery.substring(start, nextEndToken + 1)),
28405
+ ]);
28406
+ }
28407
+ curQuery =
28408
+ curQuery.substring(0, match.index) +
28409
+ curQuery.substring(nextEndToken + 1);
28410
+ break;
28411
+ }
28412
+ catch (e) {
28413
+ nextEndToken = curQuery.indexOf(opener === '{' ? '}' : ']', nextEndToken + 1);
28414
+ }
28415
+ }
28416
+ }
28417
+ if (selector.equal == null || !selector.equal.length) {
28418
+ delete selector.equal;
28419
+ }
28420
+ if (selector['!equal'] == null || !selector['!equal'].length) {
28421
+ delete selector['!equal'];
28422
+ }
28423
+ }
28424
+ // eg. name=Marty or name="Marty McFly" or enabled=true
28425
+ const equalRegex = /(?: |^)([^\s=\[\]<>{}]+?)!?=(""|".*?[^\\]"|[^ ]+)(?= |$)/g;
28379
28426
  const equalMatch = curQuery.match(equalRegex);
28380
28427
  if (equalMatch) {
28381
- selector.equal = [];
28382
- selector['!equal'] = [];
28428
+ if (!('equal' in selector)) {
28429
+ selector.equal = [];
28430
+ }
28431
+ if (!('!equal' in selector)) {
28432
+ selector['!equal'] = [];
28433
+ }
28383
28434
  for (let match of equalMatch) {
28384
28435
  try {
28385
28436
  let [name, value] = splitn(match.trim(), '=', 2);
28386
28437
  try {
28387
28438
  if (name.endsWith('!')) {
28388
- selector['!equal'].push([name.slice(0, -1), JSON.parse(value)]);
28439
+ selector['!equal'].push([
28440
+ name.slice(0, -1),
28441
+ JSON.parse(value),
28442
+ ]);
28389
28443
  }
28390
28444
  else {
28391
28445
  selector.equal.push([name, JSON.parse(value)]);
@@ -28393,10 +28447,16 @@
28393
28447
  }
28394
28448
  catch (e) {
28395
28449
  if (name.endsWith('!')) {
28396
- selector['!equal'].push([name.slice(0, -1), unQuoteString(value)]);
28450
+ selector['!equal'].push([
28451
+ name.slice(0, -1),
28452
+ unQuoteString(value),
28453
+ ]);
28397
28454
  }
28398
28455
  else {
28399
- selector.equal.push([name, unQuoteString(value)]);
28456
+ selector.equal.push([
28457
+ name,
28458
+ unQuoteString(value),
28459
+ ]);
28400
28460
  }
28401
28461
  }
28402
28462
  }
@@ -28404,16 +28464,16 @@
28404
28464
  continue;
28405
28465
  }
28406
28466
  }
28407
- if (!selector.equal.length) {
28467
+ if (selector.equal == null || !selector.equal.length) {
28408
28468
  delete selector.equal;
28409
28469
  }
28410
- if (!selector['!equal'].length) {
28470
+ if (selector['!equal'] == null || !selector['!equal'].length) {
28411
28471
  delete selector['!equal'];
28412
28472
  }
28413
28473
  }
28414
28474
  curQuery = curQuery.replace(equalRegex, '');
28415
28475
  // eg. user<{790274347f9b3a018c2cedee}> or user!<{790274347f9b3a018c2cedee}>
28416
- const refRegex = /(?: |^)(\w+)!?<\{([0-9a-f]{24})\}>(?= |$)/g;
28476
+ const refRegex = /(?: |^)([^\s=\[\]<>{}]+?)!?<\{([0-9a-f]{24})\}>(?= |$)/g;
28417
28477
  const refMatch = curQuery.match(refRegex);
28418
28478
  if (refMatch) {
28419
28479
  selector.ref = [];
@@ -28441,7 +28501,7 @@
28441
28501
  }
28442
28502
  curQuery = curQuery.replace(refRegex, '');
28443
28503
  // eg. someArrayOfNumbers<10> or someObject!<"some string">
28444
- const containRegex = /(?: |^)(\w+)!?(<.*?[^\\]>)(?= |$)/g;
28504
+ const containRegex = /(?: |^)([^\s=\[\]<>{}]+?)!?(<(?:[^"][^>]*?|".*?[^\\]"))>(?= |$)/g;
28445
28505
  const containMatch = curQuery.match(containRegex);
28446
28506
  if (containMatch) {
28447
28507
  selector.contain = [];
@@ -28453,22 +28513,22 @@
28453
28513
  if (name.endsWith('!')) {
28454
28514
  selector['!contain'].push([
28455
28515
  name.slice(0, -1),
28456
- JSON.parse(unQuoteAngles(value)),
28516
+ JSON.parse(unQuoteString(value)),
28457
28517
  ]);
28458
28518
  }
28459
28519
  else {
28460
- selector.contain.push([name, JSON.parse(unQuoteAngles(value))]);
28520
+ selector.contain.push([name, JSON.parse(unQuoteString(value))]);
28461
28521
  }
28462
28522
  }
28463
28523
  catch (e) {
28464
28524
  if (name.endsWith('!')) {
28465
28525
  selector['!contain'].push([
28466
28526
  name.slice(0, -1),
28467
- unQuoteAngles(value),
28527
+ unQuoteString(value),
28468
28528
  ]);
28469
28529
  }
28470
28530
  else {
28471
- selector.contain.push([name, unQuoteAngles(value)]);
28531
+ selector.contain.push([name, unQuoteString(value)]);
28472
28532
  }
28473
28533
  }
28474
28534
  }
@@ -28485,7 +28545,7 @@
28485
28545
  }
28486
28546
  curQuery = curQuery.replace(containRegex, '');
28487
28547
  // eg. name~/Hunter/ or name!~/hunter/i
28488
- const posixRegex = /(?: |^)(\w+)!?~(\/\/|\/.*?[^\\]\/)i?(?= |$)/g;
28548
+ const posixRegex = /(?: |^)([^\s=\[\]<>{}]+?)!?~(\/\/|\/.*?[^\\]\/)i?(?= |$)/g;
28489
28549
  const posixMatch = curQuery.match(posixRegex);
28490
28550
  if (posixMatch) {
28491
28551
  selector.match = [];
@@ -28537,7 +28597,7 @@
28537
28597
  }
28538
28598
  curQuery = curQuery.replace(posixRegex, '');
28539
28599
  // eg. name~Hunter or name!~"hunter"i
28540
- const likeRegex = /(?: |^)(\w+)!?~(""i?|".*?[^\\]"i?|[^ ]+)(?= |$)/g;
28600
+ const likeRegex = /(?: |^)([^\s=\[\]<>{}]+?)!?~(""i?|".*?[^\\]"i?|[^ ]+)(?= |$)/g;
28541
28601
  const likeMatch = curQuery.match(likeRegex);
28542
28602
  if (likeMatch) {
28543
28603
  selector.like = [];
@@ -28614,7 +28674,7 @@
28614
28674
  }
28615
28675
  curQuery = curQuery.replace(guidRegex, '');
28616
28676
  // eg. [enabled] or [!defaultPrimaryGroup]
28617
- const truthyRegex = /(?: |^)\[(!?\w+)\](?= |$)/g;
28677
+ const truthyRegex = /(?: |^)\[(!?[^\s=\[\]<>{}]+?)\](?= |$)/g;
28618
28678
  const truthyMatch = curQuery.match(truthyRegex);
28619
28679
  if (truthyMatch) {
28620
28680
  selector.truthy = [];
@@ -28670,7 +28730,7 @@
28670
28730
  }
28671
28731
  curQuery = curQuery.replace(tagRegex, '');
28672
28732
  // eg. cdate>15
28673
- const gtRegex = /(?: |^)(\w+)>(-?\d+(?:\.\d+)?)(?= |$)/g;
28733
+ const gtRegex = /(?: |^)([^\s=\[\]<>{}]+?)>(-?\d+(?:\.\d+)?)(?= |$)/g;
28674
28734
  const gtMatch = curQuery.match(gtRegex);
28675
28735
  if (gtMatch) {
28676
28736
  selector.gt = [];
@@ -28689,7 +28749,7 @@
28689
28749
  }
28690
28750
  curQuery = curQuery.replace(gtRegex, '');
28691
28751
  // eg. cdate>yesterday or cdate>"2 days ago"
28692
- const gtRelativeRegex = /(?: |^)(\w+)>(\w+|"[^"]+")(?= |$)/g;
28752
+ const gtRelativeRegex = /(?: |^)([^\s=\[\]<>{}]+?)>(\w+|"[^"]+")(?= |$)/g;
28693
28753
  const gtRelativeMatch = curQuery.match(gtRelativeRegex);
28694
28754
  if (gtRelativeMatch) {
28695
28755
  if (selector.gt == null) {
@@ -28714,7 +28774,7 @@
28714
28774
  }
28715
28775
  curQuery = curQuery.replace(gtRelativeRegex, '');
28716
28776
  // eg. cdate>=15
28717
- const gteRegex = /(?: |^)(\w+)>=(-?\d+(?:\.\d+)?)(?= |$)/g;
28777
+ const gteRegex = /(?: |^)([^\s=\[\]<>{}]+?)>=(-?\d+(?:\.\d+)?)(?= |$)/g;
28718
28778
  const gteMatch = curQuery.match(gteRegex);
28719
28779
  if (gteMatch) {
28720
28780
  selector.gte = [];
@@ -28733,7 +28793,7 @@
28733
28793
  }
28734
28794
  curQuery = curQuery.replace(gteRegex, '');
28735
28795
  // eg. cdate>=yesterday or cdate>="2 days ago"
28736
- const gteRelativeRegex = /(?: |^)(\w+)>=(\w+|"[^"]+")(?= |$)/g;
28796
+ const gteRelativeRegex = /(?: |^)([^\s=\[\]<>{}]+?)>=(\w+|"[^"]+")(?= |$)/g;
28737
28797
  const gteRelativeMatch = curQuery.match(gteRelativeRegex);
28738
28798
  if (gteRelativeMatch) {
28739
28799
  if (selector.gte == null) {
@@ -28758,7 +28818,7 @@
28758
28818
  }
28759
28819
  curQuery = curQuery.replace(gteRelativeRegex, '');
28760
28820
  // eg. cdate<15
28761
- const ltRegex = /(?: |^)(\w+)<(-?\d+(?:\.\d+)?)(?= |$)/g;
28821
+ const ltRegex = /(?: |^)([^\s=\[\]<>{}]+?)<(-?\d+(?:\.\d+)?)(?= |$)/g;
28762
28822
  const ltMatch = curQuery.match(ltRegex);
28763
28823
  if (ltMatch) {
28764
28824
  selector.lt = [];
@@ -28777,7 +28837,7 @@
28777
28837
  }
28778
28838
  curQuery = curQuery.replace(ltRegex, '');
28779
28839
  // eg. cdate<yesterday or cdate<"2 days ago"
28780
- const ltRelativeRegex = /(?: |^)(\w+)<(\w+|"[^"]+")(?= |$)/g;
28840
+ const ltRelativeRegex = /(?: |^)([^\s=\[\]<>{}]+?)<(\w+|"[^"]+")(?= |$)/g;
28781
28841
  const ltRelativeMatch = curQuery.match(ltRelativeRegex);
28782
28842
  if (ltRelativeMatch) {
28783
28843
  if (selector.lt == null) {
@@ -28802,7 +28862,7 @@
28802
28862
  }
28803
28863
  curQuery = curQuery.replace(ltRelativeRegex, '');
28804
28864
  // eg. cdate<=15
28805
- const lteRegex = /(?: |^)(\w+)<=(-?\d+(?:\.\d+)?)(?= |$)/g;
28865
+ const lteRegex = /(?: |^)([^\s=\[\]<>{}]+?)<=(-?\d+(?:\.\d+)?)(?= |$)/g;
28806
28866
  const lteMatch = curQuery.match(lteRegex);
28807
28867
  if (lteMatch) {
28808
28868
  selector.lte = [];
@@ -28821,7 +28881,7 @@
28821
28881
  }
28822
28882
  curQuery = curQuery.replace(lteRegex, '');
28823
28883
  // eg. cdate<=yesterday or cdate<="2 days ago"
28824
- const lteRelativeRegex = /(?: |^)(\w+)<=(\w+|"[^"]+")(?= |$)/g;
28884
+ const lteRelativeRegex = /(?: |^)([^\s=\[\]<>{}]+?)<=(\w+|"[^"]+")(?= |$)/g;
28825
28885
  const lteRelativeMatch = curQuery.match(lteRelativeRegex);
28826
28886
  if (lteRelativeMatch) {
28827
28887
  if (selector.lte == null) {
@@ -28853,9 +28913,6 @@
28853
28913
  }
28854
28914
  return input;
28855
28915
  }
28856
- function unQuoteAngles(input) {
28857
- return input.replace(/\\</g, '<').replace(/\\>/g, '>').replace(/\\\\/g, '\\');
28858
- }
28859
28916
  function unQuoteCurlies(input) {
28860
28917
  return input
28861
28918
  .replace(/\\\{/g, '{')
@@ -33926,9 +33983,9 @@
33926
33983
  function doVerifyPassword() {
33927
33984
  if (($entity().passwordTemp == null || $entity().passwordTemp === '') && get(passwordVerify) === '') {
33928
33985
  set(passwordVerified, undefined);
33986
+ } else {
33987
+ set(passwordVerified, $entity().passwordTemp === get(passwordVerify));
33929
33988
  }
33930
-
33931
- set(passwordVerified, $entity().passwordTemp === get(passwordVerify));
33932
33989
  }
33933
33990
 
33934
33991
  function addAbility() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/tilmeld-setup",
3
- "version": "1.0.0-beta.96",
3
+ "version": "1.0.0-beta.98",
4
4
  "description": "Nymph.js - Tilmeld Setup App",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -35,8 +35,8 @@
35
35
  },
36
36
  "license": "Apache-2.0",
37
37
  "dependencies": {
38
- "@nymphjs/nymph": "^1.0.0-beta.96",
39
- "@nymphjs/tilmeld": "^1.0.0-beta.96",
38
+ "@nymphjs/nymph": "^1.0.0-beta.98",
39
+ "@nymphjs/tilmeld": "^1.0.0-beta.98",
40
40
  "express": "^4.21.2",
41
41
  "locutus": "^2.0.32"
42
42
  },
@@ -44,12 +44,12 @@
44
44
  "@material/elevation": "^14.0.0",
45
45
  "@material/typography": "^14.0.0",
46
46
  "@mdi/js": "^7.4.47",
47
- "@nymphjs/client": "^1.0.0-beta.96",
48
- "@nymphjs/driver-sqlite3": "^1.0.0-beta.96",
49
- "@nymphjs/query-parser": "^1.0.0-beta.96",
50
- "@nymphjs/server": "^1.0.0-beta.96",
51
- "@nymphjs/tilmeld-client": "^1.0.0-beta.96",
52
- "@nymphjs/tilmeld-components": "^1.0.0-beta.96",
47
+ "@nymphjs/client": "^1.0.0-beta.98",
48
+ "@nymphjs/driver-sqlite3": "^1.0.0-beta.98",
49
+ "@nymphjs/query-parser": "^1.0.0-beta.98",
50
+ "@nymphjs/server": "^1.0.0-beta.98",
51
+ "@nymphjs/tilmeld-client": "^1.0.0-beta.98",
52
+ "@nymphjs/tilmeld-components": "^1.0.0-beta.98",
53
53
  "@rollup/plugin-commonjs": "^28.0.1",
54
54
  "@rollup/plugin-node-resolve": "^15.3.0",
55
55
  "@rollup/plugin-typescript": "^12.1.1",
@@ -91,5 +91,5 @@
91
91
  "tslib": "^2.8.1",
92
92
  "typescript": "^5.7.2"
93
93
  },
94
- "gitHead": "bf1d0ded836084ae1cecae2efe0a45501f90f6d0"
94
+ "gitHead": "4d73463289302e50262f8a6aa31ae1825a3b3d6e"
95
95
  }