@nymphjs/tilmeld 1.0.0-alpha.2 → 1.0.0-alpha.20

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.js CHANGED
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.User = exports.Tilmeld = exports.Group = exports.AbleObject = void 0;
16
+ exports.User = exports.tilmeldJoiProps = exports.Tilmeld = exports.Group = exports.AbleObject = void 0;
17
17
  __exportStar(require("./conf"), exports);
18
18
  __exportStar(require("./errors"), exports);
19
19
  const AbleObject_1 = __importDefault(require("./AbleObject"));
@@ -23,8 +23,9 @@ const Group_1 = __importDefault(require("./Group"));
23
23
  exports.Group = Group_1.default;
24
24
  const Tilmeld_1 = __importDefault(require("./Tilmeld"));
25
25
  exports.Tilmeld = Tilmeld_1.default;
26
- exports.default = Tilmeld_1.default;
27
26
  __exportStar(require("./Tilmeld.types"), exports);
27
+ const tilmeldJoiProps_1 = __importDefault(require("./tilmeldJoiProps"));
28
+ exports.tilmeldJoiProps = tilmeldJoiProps_1.default;
28
29
  __exportStar(require("./User"), exports);
29
30
  const User_1 = __importDefault(require("./User"));
30
31
  exports.User = User_1.default;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AAEvB,2CAAyB;AAEzB,8DAAsC;AAC7B,qBADF,oBAAU,CACE;AAEnB,0CAAwB;AACxB,oDAA4B;AACnB,gBADF,eAAK,CACE;AAEd,wDAAgC;AACvB,kBADF,iBAAO,CACE;AAChB,kBAAe,iBAAO,CAAC;AAEvB,kDAAgC;AAEhC,yCAAuB;AACvB,kDAA0B;AACjB,eADF,cAAI,CACE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AAEvB,2CAAyB;AAEzB,8DAAsC;AAC7B,qBADF,oBAAU,CACE;AAEnB,0CAAwB;AACxB,oDAA4B;AACnB,gBADF,eAAK,CACE;AAEd,wDAAgC;AACvB,kBADF,iBAAO,CACE;AAEhB,kDAAgC;AAEhC,wEAAgD;AACvC,0BADF,yBAAe,CACE;AAExB,yCAAuB;AACvB,kDAA0B;AACjB,eADF,cAAI,CACE"}
@@ -0,0 +1,12 @@
1
+ import Joi from 'joi';
2
+ declare const _default: {
3
+ user: Joi.ObjectSchema<any>;
4
+ group: Joi.ObjectSchema<any>;
5
+ acUser: Joi.NumberSchema;
6
+ acGroup: Joi.NumberSchema;
7
+ acOther: Joi.NumberSchema;
8
+ acRead: Joi.ArraySchema;
9
+ acWrite: Joi.ArraySchema;
10
+ acFull: Joi.ArraySchema;
11
+ };
12
+ export default _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const nymph_1 = require("@nymphjs/nymph");
7
+ const joi_1 = __importDefault(require("joi"));
8
+ const User_1 = __importDefault(require("./User"));
9
+ const Group_1 = __importDefault(require("./Group"));
10
+ exports.default = {
11
+ user: joi_1.default.object().instance(User_1.default),
12
+ group: joi_1.default.object().instance(Group_1.default),
13
+ acUser: joi_1.default.number().valid(nymph_1.TilmeldAccessLevels.NO_ACCESS, nymph_1.TilmeldAccessLevels.READ_ACCESS, nymph_1.TilmeldAccessLevels.WRITE_ACCESS, nymph_1.TilmeldAccessLevels.FULL_ACCESS),
14
+ acGroup: joi_1.default.number().valid(nymph_1.TilmeldAccessLevels.NO_ACCESS, nymph_1.TilmeldAccessLevels.READ_ACCESS, nymph_1.TilmeldAccessLevels.WRITE_ACCESS, nymph_1.TilmeldAccessLevels.FULL_ACCESS),
15
+ acOther: joi_1.default.number().valid(nymph_1.TilmeldAccessLevels.NO_ACCESS, nymph_1.TilmeldAccessLevels.READ_ACCESS, nymph_1.TilmeldAccessLevels.WRITE_ACCESS, nymph_1.TilmeldAccessLevels.FULL_ACCESS),
16
+ acRead: joi_1.default.array().items(joi_1.default.alternatives().try(joi_1.default.object().instance(User_1.default), joi_1.default.object().instance(Group_1.default))),
17
+ acWrite: joi_1.default.array().items(joi_1.default.alternatives().try(joi_1.default.object().instance(User_1.default), joi_1.default.object().instance(Group_1.default))),
18
+ acFull: joi_1.default.array().items(joi_1.default.alternatives().try(joi_1.default.object().instance(User_1.default), joi_1.default.object().instance(Group_1.default))),
19
+ };
20
+ //# sourceMappingURL=tilmeldJoiProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tilmeldJoiProps.js","sourceRoot":"","sources":["../src/tilmeldJoiProps.ts"],"names":[],"mappings":";;;;;AAAA,0CAAqD;AACrD,8CAAsB;AAEtB,kDAA0B;AAC1B,oDAA4B;AAE5B,kBAAe;IACb,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAI,CAAC;IACjC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC;IACnC,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CACxB,2BAAmB,CAAC,SAAS,EAC7B,2BAAmB,CAAC,WAAW,EAC/B,2BAAmB,CAAC,YAAY,EAChC,2BAAmB,CAAC,WAAW,CAChC;IACD,OAAO,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CACzB,2BAAmB,CAAC,SAAS,EAC7B,2BAAmB,CAAC,WAAW,EAC/B,2BAAmB,CAAC,YAAY,EAChC,2BAAmB,CAAC,WAAW,CAChC;IACD,OAAO,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CACzB,2BAAmB,CAAC,SAAS,EAC7B,2BAAmB,CAAC,WAAW,EAC/B,2BAAmB,CAAC,YAAY,EAChC,2BAAmB,CAAC,WAAW,CAChC;IACD,MAAM,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CACvB,aAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CACpB,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,EAC3B,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,CAC7B,CACF;IACD,OAAO,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CACxB,aAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CACpB,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,EAC3B,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,CAC7B,CACF;IACD,MAAM,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CACvB,aAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CACpB,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,EAC3B,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,CAC7B,CACF;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/tilmeld",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.20",
4
4
  "description": "NymphJS - Tilmeld User and Group System",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "license": "Apache-2.0",
33
33
  "dependencies": {
34
- "@nymphjs/nymph": "^1.0.0-alpha.2",
34
+ "@nymphjs/nymph": "^1.0.0-alpha.20",
35
35
  "crypto-js": "^4.1.1",
36
36
  "email-templates": "^8.0.8",
37
37
  "express": "^4.17.1",
@@ -39,26 +39,26 @@
39
39
  "jsonwebtoken": "^8.5.1",
40
40
  "locutus": "^2.0.15",
41
41
  "lodash": "^4.17.21",
42
- "nanoid": "^3.1.25",
42
+ "nanoid": "^3.1.30",
43
43
  "nanoid-dictionary": "^4.3.0",
44
44
  "pug": "^3.0.2"
45
45
  },
46
46
  "devDependencies": {
47
- "@nymphjs/client": "^1.0.0-alpha.2",
48
- "@nymphjs/client-node": "^1.0.0-alpha.2",
49
- "@nymphjs/driver-sqlite3": "^1.0.0-alpha.2",
47
+ "@nymphjs/client": "^1.0.0-alpha.20",
48
+ "@nymphjs/client-node": "^1.0.0-alpha.20",
49
+ "@nymphjs/driver-sqlite3": "^1.0.0-alpha.20",
50
50
  "@tsconfig/recommended": "^1.0.1",
51
51
  "@types/crypto-js": "^4.0.2",
52
52
  "@types/email-templates": "^8.0.4",
53
53
  "@types/express": "^4.17.13",
54
- "@types/jest": "^27.0.1",
55
- "@types/jsonwebtoken": "^8.5.5",
54
+ "@types/jest": "^27.0.2",
55
+ "@types/jsonwebtoken": "^8.5.6",
56
56
  "@types/locutus": "^0.0.6",
57
- "@types/lodash": "^4.14.172",
57
+ "@types/lodash": "^4.14.177",
58
58
  "@types/nanoid-dictionary": "^4.2.0",
59
- "jest": "^27.0.6",
60
- "ts-jest": "^27.0.5",
61
- "typescript": "^4.3.5"
59
+ "jest": "^27.3.1",
60
+ "ts-jest": "^27.0.7",
61
+ "typescript": "^4.5.2"
62
62
  },
63
- "gitHead": "9596354bffaa484f3002f3063f0963f6261040be"
63
+ "gitHead": "4191b5824ea6ef71557f2357a30069d5d4e98a89"
64
64
  }
package/src/Group.test.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SQLite3Driver } from '@nymphjs/driver-sqlite3';
2
- import nymph from '@nymphjs/nymph';
2
+ import { Nymph } from '@nymphjs/nymph';
3
3
 
4
4
  import Tilmeld from './Tilmeld';
5
5
  import defaults from './conf/defaults';
@@ -16,7 +16,7 @@ const tilmeld = new Tilmeld({
16
16
  cancelChangeRedirect: 'http://localhost:8080',
17
17
  jwtSecret: 'shhhhh',
18
18
  });
19
- nymph.init(
19
+ const _nymph = new Nymph(
20
20
  {},
21
21
  new SQLite3Driver({
22
22
  filename: ':memory:',
@@ -37,6 +37,14 @@ describe('Group', () => {
37
37
  return newGroup;
38
38
  }
39
39
 
40
+ it('new group passes validation', async () => {
41
+ const validGroup = await makeNewGroup();
42
+
43
+ expect(() => {
44
+ defaults.validatorGroup(validGroup);
45
+ }).not.toThrow();
46
+ });
47
+
40
48
  it("doesn't allow unknown keys", async () => {
41
49
  const invalidGroup = await makeNewGroup();
42
50
 
package/src/Group.ts CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  import md5 from 'crypto-js/md5';
11
11
  import { difference } from 'lodash';
12
12
 
13
+ import type Tilmeld from './Tilmeld';
13
14
  import AbleObject from './AbleObject';
14
15
  import {
15
16
  BadDataError,
@@ -17,7 +18,6 @@ import {
17
18
  BadUsernameError,
18
19
  CouldNotChangeDefaultPrimaryGroupError,
19
20
  } from './errors';
20
- import Tilmeld from './Tilmeld';
21
21
  import User, { UserData } from './User';
22
22
 
23
23
  export type GroupData = {
@@ -72,11 +72,20 @@ export type GroupData = {
72
72
  unverifiedSecondary?: boolean;
73
73
  };
74
74
 
75
+ /**
76
+ * A user group data model.
77
+ *
78
+ * Written by Hunter Perrin for SciActive.
79
+ *
80
+ * @author Hunter Perrin <hperrin@gmail.com>
81
+ * @copyright SciActive Inc
82
+ * @see http://nymph.io/
83
+ */
75
84
  export default class Group extends AbleObject<GroupData> {
76
85
  /**
77
86
  * The instance of Tilmeld to use for queries.
78
87
  */
79
- public static tilmeld: Tilmeld;
88
+ static tilmeld: Tilmeld;
80
89
  static ETYPE = 'tilmeld_group';
81
90
  static class = 'Group';
82
91
 
@@ -97,9 +106,9 @@ export default class Group extends AbleObject<GroupData> {
97
106
  'getPrimaryGroups',
98
107
  'getSecondaryGroups',
99
108
  ];
100
- protected $privateData = Group.DEFAULT_PRIVATE_DATA;
101
- public static searchRestrictedData = Group.DEFAULT_PRIVATE_DATA;
102
- protected $allowlistData? = Group.DEFAULT_ALLOWLIST_DATA;
109
+ protected $privateData = [...Group.DEFAULT_PRIVATE_DATA];
110
+ public static searchRestrictedData = [...Group.DEFAULT_PRIVATE_DATA];
111
+ protected $allowlistData? = [...Group.DEFAULT_ALLOWLIST_DATA];
103
112
  protected $allowlistTags?: string[] = [];
104
113
 
105
114
  /**
@@ -285,8 +294,8 @@ export default class Group extends AbleObject<GroupData> {
285
294
  const tilmeld = this.$nymph.tilmeld as Tilmeld;
286
295
  let user = givenUser ?? tilmeld.User.current();
287
296
 
288
- this.$privateData = Group.DEFAULT_PRIVATE_DATA;
289
- this.$allowlistData = Group.DEFAULT_ALLOWLIST_DATA;
297
+ this.$privateData = [...Group.DEFAULT_PRIVATE_DATA];
298
+ this.$allowlistData = [...Group.DEFAULT_ALLOWLIST_DATA];
290
299
 
291
300
  if (tilmeld.config.emailUsernames) {
292
301
  this.$privateData.push('groupname');
@@ -743,7 +752,9 @@ export default class Group extends AbleObject<GroupData> {
743
752
  }
744
753
 
745
754
  const transaction = 'tilmeld-delete-' + this.guid;
746
- const tnymph = await this.$nymph.startTransaction(transaction);
755
+ const nymph = this.$nymph;
756
+ const tnymph = await nymph.startTransaction(transaction);
757
+ this.$nymph = tnymph;
747
758
 
748
759
  // Delete descendants.
749
760
  const descendants = await this.$getDescendants();
@@ -751,6 +762,7 @@ export default class Group extends AbleObject<GroupData> {
751
762
  for (let curGroup of descendants) {
752
763
  if (!(await curGroup.$delete())) {
753
764
  await tnymph.rollback(transaction);
765
+ this.$nymph = nymph;
754
766
  return false;
755
767
  }
756
768
  }
@@ -771,6 +783,7 @@ export default class Group extends AbleObject<GroupData> {
771
783
  delete user.group;
772
784
  if (!(await user.$save())) {
773
785
  await tnymph.rollback(transaction);
786
+ this.$nymph = nymph;
774
787
  return false;
775
788
  }
776
789
  }
@@ -801,6 +814,7 @@ export default class Group extends AbleObject<GroupData> {
801
814
  } else {
802
815
  await tnymph.rollback(transaction);
803
816
  }
817
+ this.$nymph = nymph;
804
818
  return success;
805
819
  }
806
820
  }