@nymphjs/tilmeld-setup 1.0.0-beta.11 → 1.0.0-beta.111

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.
@@ -0,0 +1,6 @@
1
+ import { Nymph } from '@nymphjs/client';
2
+ import { User as UserClass, Group as GroupClass } from '@nymphjs/tilmeld-client';
3
+ declare const nymph: Nymph;
4
+ declare const User: typeof UserClass;
5
+ declare const Group: typeof GroupClass;
6
+ export { nymph, User, Group };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
- import { NymphOptions } from '@nymphjs/client';
2
- import { Nymph } from '@nymphjs/nymph';
3
- export default function setup(options: NymphOptions, nymph: Nymph): import("express-serve-static-core").Express;
1
+ import type { NymphOptions } from '@nymphjs/client';
2
+ import type { Nymph } from '@nymphjs/nymph';
3
+ export declare function setup(options: NymphOptions, nymph: Nymph, { allowRegistration }?: {
4
+ allowRegistration?: boolean;
5
+ }): import("express-serve-static-core").Express;
6
+ export default setup;
package/dist/index.js CHANGED
@@ -1,16 +1,12 @@
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 express_1 = __importDefault(require("express"));
7
- const strtotime_1 = __importDefault(require("locutus/php/datetime/strtotime"));
8
- function setup(options, nymph) {
9
- const app = (0, express_1.default)();
10
- if (!nymph.tilmeld) {
11
- throw new Error('You need to configure Tilmeld on your Nymph instance first.');
12
- }
13
- const tilmeld = nymph.tilmeld;
1
+ import { dirname } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import express from 'express';
4
+ import strtotime from 'locutus/php/datetime/strtotime.js';
5
+ import { enforceTilmeld } from '@nymphjs/tilmeld';
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ export function setup(options, nymph, { allowRegistration = false } = {}) {
8
+ const app = express();
9
+ const tilmeld = enforceTilmeld(nymph);
14
10
  app.use('/verify', async (request, response, next) => {
15
11
  if (!tilmeld.config.verifyEmail || request.query.action == null) {
16
12
  next();
@@ -73,6 +69,7 @@ function setup(options, nymph) {
73
69
  printError(500, 'An error occurred.');
74
70
  return;
75
71
  case 'verify':
72
+ // Verify new user's email address.
76
73
  if (user.secret == null || request.query.secret !== user.secret) {
77
74
  printError(500, 'An error occurred.');
78
75
  return;
@@ -84,6 +81,7 @@ function setup(options, nymph) {
84
81
  delete user.secret;
85
82
  break;
86
83
  case 'verifychange':
84
+ // Email address change.
87
85
  if (user.newEmailSecret == null ||
88
86
  user.newEmailAddress == null ||
89
87
  request.query.secret !== user.newEmailSecret) {
@@ -109,6 +107,7 @@ function setup(options, nymph) {
109
107
  delete user.newEmailSecret;
110
108
  break;
111
109
  case 'cancelchange':
110
+ // Cancel an email address change.
112
111
  if (user.cancelEmailSecret == null ||
113
112
  user.cancelEmailAddress == null ||
114
113
  request.query.secret !== user.cancelEmailSecret) {
@@ -118,7 +117,7 @@ function setup(options, nymph) {
118
117
  if (tilmeld.config.emailRateLimit !== '' &&
119
118
  user.emailChangeDate != null &&
120
119
  user.emailChangeDate <
121
- ((0, strtotime_1.default)('-' + tilmeld.config.emailRateLimit) || 0) * 1000) {
120
+ (strtotime('-' + tilmeld.config.emailRateLimit) || 0) * 1000) {
122
121
  printError(400, "That email change cancellation link has expired. Please contact an administrator if you can't access your account.");
123
122
  return;
124
123
  }
@@ -153,13 +152,15 @@ function setup(options, nymph) {
153
152
  });
154
153
  app.get('/options.js', async (_request, response) => {
155
154
  response.type('text/javascript');
156
- response.send(`window.nymphOptions = ${JSON.stringify(options)};`);
155
+ response.send(`window.nymphOptions = ${JSON.stringify(options)};\n` +
156
+ `window.allowRegistration = ${JSON.stringify(allowRegistration)};\n` +
157
+ `window.appUrl = ${JSON.stringify(tilmeld.config.appUrl)};`);
157
158
  });
158
- app.use('/app', express_1.default.static(__dirname + '/app', {
159
+ app.use('/app', express.static(__dirname + '/app', {
159
160
  fallthrough: true,
160
161
  }));
161
- app.use(express_1.default.static(__dirname + '/../static', { fallthrough: false }));
162
+ app.use(express.static(__dirname + '/../static', { fallthrough: false }));
162
163
  return app;
163
164
  }
164
- exports.default = setup;
165
+ export default setup;
165
166
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/jest.config.js CHANGED
@@ -1,6 +1,15 @@
1
+ import { createDefaultEsmPreset } from 'ts-jest';
2
+
3
+ const presetConfig = createDefaultEsmPreset();
4
+
1
5
  /** @type {import('ts-jest').JestConfigWithTsJest} */
2
- module.exports = {
3
- preset: 'ts-jest',
6
+ const jestConfig = {
7
+ ...presetConfig,
4
8
  testEnvironment: 'node',
5
9
  rootDir: 'src/',
10
+ moduleNameMapper: {
11
+ '^(\\.|\\.\\.)\\/(.+)\\.js': '$1/$2',
12
+ },
6
13
  };
14
+
15
+ export default jestConfig;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@nymphjs/tilmeld-setup",
3
- "version": "1.0.0-beta.11",
4
- "description": "NymphJS - Tilmeld Setup App",
5
- "type": "commonjs",
3
+ "version": "1.0.0-beta.111",
4
+ "description": "Nymph.js - Tilmeld Setup App",
5
+ "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "keywords": [
@@ -14,11 +14,11 @@
14
14
  "clean": "test -d dist && rm -r dist || true",
15
15
  "build": "npm run build:server && npm run build:app && npm run build:app:theme",
16
16
  "build:server": "tsc -p tsconfig.server.json",
17
- "build:app": "webpack",
17
+ "build:app": "NODE_ENV=\"production\" rollup -c",
18
18
  "build:app:theme": "smui-theme compile dist/app/smui.css -i app/theme",
19
19
  "watch:server": "tsc --watch -p tsconfig.server.json",
20
- "watch:app": "webpack --watch",
21
- "prepare": "npm run clean && npm run build",
20
+ "watch:app": "NODE_ENV=\"development\" rollup -c --watch",
21
+ "prepublish": "npm run clean && npm run build",
22
22
  "test": "jest",
23
23
  "test:watch": "jest --watch"
24
24
  },
@@ -35,57 +35,61 @@
35
35
  },
36
36
  "license": "Apache-2.0",
37
37
  "dependencies": {
38
- "@nymphjs/nymph": "^1.0.0-beta.11",
39
- "@nymphjs/tilmeld": "^1.0.0-beta.11",
40
- "express": "^4.18.2",
41
- "locutus": "^2.0.16"
38
+ "@nymphjs/nymph": "^1.0.0-beta.111",
39
+ "@nymphjs/tilmeld": "^1.0.0-beta.111",
40
+ "express": "^5.2.1",
41
+ "locutus": "^2.0.39"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@material/elevation": "^14.0.0",
45
45
  "@material/typography": "^14.0.0",
46
- "@mdi/js": "^7.1.96",
47
- "@nymphjs/client": "^1.0.0-beta.11",
48
- "@nymphjs/driver-sqlite3": "^1.0.0-beta.11",
49
- "@nymphjs/query-parser": "^1.0.0-beta.11",
50
- "@nymphjs/server": "^1.0.0-beta.11",
51
- "@nymphjs/tilmeld-client": "^1.0.0-beta.11",
52
- "@nymphjs/tilmeld-components": "^1.0.0-beta.11",
53
- "@smui/button": "^7.0.0-beta.0",
54
- "@smui/card": "^7.0.0-beta.0",
55
- "@smui/checkbox": "^7.0.0-beta.0",
56
- "@smui/circular-progress": "^7.0.0-beta.0",
57
- "@smui/common": "^7.0.0-beta.0",
58
- "@smui/data-table": "^7.0.0-beta.0",
59
- "@smui/dialog": "^7.0.0-beta.0",
60
- "@smui/drawer": "^7.0.0-beta.0",
61
- "@smui/fab": "^7.0.0-beta.0",
62
- "@smui/form-field": "^7.0.0-beta.0",
63
- "@smui/icon-button": "^7.0.0-beta.0",
64
- "@smui/layout-grid": "^7.0.0-beta.0",
65
- "@smui/list": "^7.0.0-beta.0",
66
- "@smui/menu": "^7.0.0-beta.0",
67
- "@smui/paper": "^7.0.0-beta.0",
68
- "@smui/radio": "^7.0.0-beta.0",
69
- "@smui/tab": "^7.0.0-beta.0",
70
- "@smui/tab-bar": "^7.0.0-beta.0",
71
- "@smui/textfield": "^7.0.0-beta.0",
72
- "@smui/top-app-bar": "^7.0.0-beta.0",
73
- "@tsconfig/recommended": "^1.0.2",
74
- "@tsconfig/svelte": "^3.0.0",
75
- "@types/express": "^4.17.17",
76
- "@types/jest": "^29.4.0",
77
- "@types/locutus": "^0.0.6",
78
- "jest": "^29.4.3",
79
- "smui-theme": "^7.0.0-beta.0",
80
- "svelte": "^3.55.1",
81
- "svelte-check": "^3.0.4",
82
- "svelte-loader": "^3.1.7",
83
- "svelte-preprocess": "^5.0.1",
84
- "ts-jest": "^29.0.5",
85
- "ts-loader": "^9.4.2",
86
- "typescript": "~4.9.5",
87
- "webpack": "^5.75.0",
88
- "webpack-cli": "^5.0.1"
46
+ "@mdi/js": "^7.4.47",
47
+ "@nymphjs/client": "^1.0.0-beta.111",
48
+ "@nymphjs/driver-sqlite3": "^1.0.0-beta.111",
49
+ "@nymphjs/query-parser": "^1.0.0-beta.111",
50
+ "@nymphjs/server": "^1.0.0-beta.111",
51
+ "@nymphjs/tilmeld-client": "^1.0.0-beta.111",
52
+ "@nymphjs/tilmeld-components": "^1.0.0-beta.111",
53
+ "@rollup/plugin-commonjs": "^29.0.0",
54
+ "@rollup/plugin-node-resolve": "^16.0.3",
55
+ "@rollup/plugin-typescript": "^12.3.0",
56
+ "@smui/button": "^8.0.3",
57
+ "@smui/card": "^8.0.3",
58
+ "@smui/checkbox": "^8.0.3",
59
+ "@smui/circular-progress": "^8.0.3",
60
+ "@smui/common": "^8.0.3",
61
+ "@smui/data-table": "^8.0.3",
62
+ "@smui/dialog": "^8.0.3",
63
+ "@smui/drawer": "^8.0.3",
64
+ "@smui/fab": "^8.0.3",
65
+ "@smui/form-field": "^8.0.3",
66
+ "@smui/icon-button": "^8.0.3",
67
+ "@smui/layout-grid": "^8.0.3",
68
+ "@smui/list": "^8.0.3",
69
+ "@smui/menu": "^8.0.3",
70
+ "@smui/paper": "^8.0.3",
71
+ "@smui/radio": "^8.0.3",
72
+ "@smui/tab": "^8.0.3",
73
+ "@smui/tab-bar": "^8.0.3",
74
+ "@smui/textfield": "^8.0.3",
75
+ "@smui/top-app-bar": "^8.0.3",
76
+ "@tsconfig/recommended": "^1.0.13",
77
+ "@tsconfig/svelte": "^5.0.7",
78
+ "@types/express": "^5.0.6",
79
+ "@types/jest": "^30.0.0",
80
+ "@types/locutus": "^0.0.8",
81
+ "jest": "^30.2.0",
82
+ "navigo": "^8.11.1",
83
+ "rollup": "^4.57.1",
84
+ "rollup-plugin-postcss": "^4.0.2",
85
+ "rollup-plugin-svelte": "^7.2.3",
86
+ "smui-theme": "^8.0.3",
87
+ "svelte": "^5.50.3",
88
+ "svelte-check": "^4.3.6",
89
+ "svelte-preprocess": "^6.0.3",
90
+ "ts-jest": "^29.4.6",
91
+ "tslib": "^2.8.1",
92
+ "typescript": "^5.9.3"
89
93
  },
90
- "gitHead": "812eeec8e5b100c6f82abbae1722cfc64a167046"
94
+ "gitHead": "8028358367d8fd89bb434f122b243bec4c71f2e1"
91
95
  }
@@ -0,0 +1,36 @@
1
+ import svelte from 'rollup-plugin-svelte';
2
+ import resolve from '@rollup/plugin-node-resolve';
3
+ import typescript from '@rollup/plugin-typescript';
4
+ import commonjs from '@rollup/plugin-commonjs';
5
+ import { sveltePreprocess } from 'svelte-preprocess';
6
+ import postcss from 'rollup-plugin-postcss';
7
+
8
+ export default {
9
+ input: 'app/index.ts',
10
+ output: {
11
+ file: 'dist/app/index.js',
12
+ format: 'iife',
13
+ },
14
+ plugins: [
15
+ resolve({
16
+ browser: true,
17
+ exportConditions: ['svelte'],
18
+ extensions: ['.svelte', '.mjs', '.js', '.json', '.node'],
19
+ dedupe: ['svelte'],
20
+ }),
21
+ commonjs(),
22
+ typescript(),
23
+ svelte({
24
+ emitCss: true,
25
+ preprocess: sveltePreprocess({
26
+ typescript: {
27
+ verbatimModuleSyntax: true,
28
+ tsconfigFile: 'tsconfig.json',
29
+ },
30
+ }),
31
+ }),
32
+ postcss({
33
+ extract: true,
34
+ }),
35
+ ],
36
+ };
package/src/index.ts CHANGED
@@ -1,19 +1,20 @@
1
+ import { dirname } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
1
3
  import express from 'express';
2
- import strtotime from 'locutus/php/datetime/strtotime';
3
- import { NymphOptions } from '@nymphjs/client';
4
- import { Nymph } from '@nymphjs/nymph';
5
- import type { Tilmeld } from '@nymphjs/tilmeld';
6
-
7
- export default function setup(options: NymphOptions, nymph: Nymph) {
4
+ import strtotime from 'locutus/php/datetime/strtotime.js';
5
+ import type { NymphOptions } from '@nymphjs/client';
6
+ import type { Nymph } from '@nymphjs/nymph';
7
+ import { enforceTilmeld } from '@nymphjs/tilmeld';
8
+
9
+ const __dirname = dirname(fileURLToPath(import.meta.url));
10
+
11
+ export function setup(
12
+ options: NymphOptions,
13
+ nymph: Nymph,
14
+ { allowRegistration = false }: { allowRegistration?: boolean } = {},
15
+ ) {
8
16
  const app = express();
9
-
10
- if (!nymph.tilmeld) {
11
- throw new Error(
12
- 'You need to configure Tilmeld on your Nymph instance first.'
13
- );
14
- }
15
-
16
- const tilmeld = nymph.tilmeld as Tilmeld;
17
+ const tilmeld = enforceTilmeld(nymph);
17
18
 
18
19
  app.use('/verify', async (request, response, next) => {
19
20
  if (!tilmeld.config.verifyEmail || request.query.action == null) {
@@ -95,7 +96,7 @@ export default function setup(options: NymphOptions, nymph: Nymph) {
95
96
  if (tilmeld.config.unverifiedAccess) {
96
97
  user.groups = await nymph.getEntities(
97
98
  { class: tilmeld.Group, skipAc: true },
98
- { type: '&', equal: ['defaultSecondary', true] }
99
+ { type: '&', equal: ['defaultSecondary', true] },
99
100
  );
100
101
  }
101
102
  user.enabled = true;
@@ -151,7 +152,7 @@ export default function setup(options: NymphOptions, nymph: Nymph) {
151
152
  ) {
152
153
  printError(
153
154
  400,
154
- "That email change cancellation link has expired. Please contact an administrator if you can't access your account."
155
+ "That email change cancellation link has expired. Please contact an administrator if you can't access your account.",
155
156
  );
156
157
  return;
157
158
  }
@@ -175,19 +176,19 @@ export default function setup(options: NymphOptions, nymph: Nymph) {
175
176
  default:
176
177
  printSuccess(
177
178
  'Your account has been verified.',
178
- tilmeld.config.verifyRedirect
179
+ tilmeld.config.verifyRedirect,
179
180
  );
180
181
  break;
181
182
  case 'verifychange':
182
183
  printSuccess(
183
184
  'Your new email address has been verified.',
184
- tilmeld.config.verifyChangeRedirect
185
+ tilmeld.config.verifyChangeRedirect,
185
186
  );
186
187
  break;
187
188
  case 'cancelchange':
188
189
  printSuccess(
189
190
  'The email address change has been canceled.',
190
- tilmeld.config.cancelChangeRedirect
191
+ tilmeld.config.cancelChangeRedirect,
191
192
  );
192
193
  break;
193
194
  }
@@ -198,16 +199,22 @@ export default function setup(options: NymphOptions, nymph: Nymph) {
198
199
 
199
200
  app.get('/options.js', async (_request, response) => {
200
201
  response.type('text/javascript');
201
- response.send(`window.nymphOptions = ${JSON.stringify(options)};`);
202
+ response.send(
203
+ `window.nymphOptions = ${JSON.stringify(options)};\n` +
204
+ `window.allowRegistration = ${JSON.stringify(allowRegistration)};\n` +
205
+ `window.appUrl = ${JSON.stringify(tilmeld.config.appUrl)};`,
206
+ );
202
207
  });
203
208
 
204
209
  app.use(
205
210
  '/app',
206
211
  express.static(__dirname + '/app', {
207
212
  fallthrough: true,
208
- })
213
+ }),
209
214
  );
210
215
  app.use(express.static(__dirname + '/../static', { fallthrough: false }));
211
216
 
212
217
  return app;
213
218
  }
219
+
220
+ export default setup;
@@ -0,0 +1,3 @@
1
+ declare module 'locutus/php/datetime/strtotime.js' {
2
+ export default function (str: string, now?: number): number;
3
+ }
package/static/index.html CHANGED
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html>
1
+ <!doctype html>
2
2
  <head>
3
3
  <title>Tilmeld Setup App</title>
4
4
 
@@ -24,6 +24,9 @@
24
24
  <!-- SMUI CSS -->
25
25
  <link rel="stylesheet" href="app/smui.css" />
26
26
 
27
+ <!-- App CSS -->
28
+ <link rel="stylesheet" href="app/index.css" />
29
+
27
30
  <style>
28
31
  html,
29
32
  body {
package/test.mjs CHANGED
@@ -2,11 +2,8 @@ import express from 'express';
2
2
  import { SQLite3Driver } from '@nymphjs/driver-sqlite3';
3
3
  import { Nymph } from '@nymphjs/nymph';
4
4
  import { Tilmeld } from '@nymphjs/tilmeld';
5
- import server from '@nymphjs/server';
6
- import setupApp from './dist/index.js';
7
-
8
- const createServer = server.default;
9
- const setup = setupApp.default;
5
+ import createServer from '@nymphjs/server';
6
+ import setup from './dist/index.js';
10
7
 
11
8
  const nymph = new Nymph(
12
9
  {},
@@ -20,12 +17,13 @@ const nymph = new Nymph(
20
17
  cookiePath: '/',
21
18
  setupPath: '/user',
22
19
  emailUsernames: false,
20
+ domainSupport: true,
23
21
  clientEnabledUIDs: ['test'],
24
22
  verifyRedirect: 'http://localhost:8080',
25
23
  verifyChangeRedirect: 'http://localhost:8080',
26
24
  cancelChangeRedirect: 'http://localhost:8080',
27
25
  jwtSecret: 'shhhhh',
28
- })
26
+ }),
29
27
  );
30
28
 
31
29
  const app = express();
@@ -37,11 +35,14 @@ app.use(
37
35
  {
38
36
  restUrl: 'http://localhost:8080/rest',
39
37
  },
40
- nymph
41
- )
38
+ nymph,
39
+ {
40
+ allowRegistration: true,
41
+ },
42
+ ),
42
43
  );
43
44
 
44
- app.listen(8080);
45
-
46
- console.log('App is loaded. Go here in your browser:');
47
- console.log(' http://localhost:8080/user/');
45
+ app.listen(8080, () => {
46
+ console.log('App is loaded. Go here in your browser:');
47
+ console.log(' http://localhost:8080/user/');
48
+ });
package/tsconfig.json CHANGED
@@ -2,8 +2,18 @@
2
2
  "extends": "@tsconfig/svelte/tsconfig.json",
3
3
 
4
4
  "compilerOptions": {
5
+ "module": "ES2022",
6
+ "moduleResolution": "node",
7
+ "lib": ["DOM", "ES2022"],
8
+ "target": "ES2022",
5
9
  "noImplicitAny": true,
6
- "strict": true
10
+ "strict": true,
11
+
12
+ "removeComments": false,
13
+ "sourceMap": true,
14
+ "outDir": "dist/app",
15
+ "resolveJsonModule": true,
16
+ "declaration": true
7
17
  },
8
18
  "include": ["app/**/*"],
9
19
  "exclude": ["node_modules/*"]
@@ -2,10 +2,12 @@
2
2
  "extends": "@tsconfig/recommended/tsconfig.json",
3
3
 
4
4
  "compilerOptions": {
5
- "lib": ["ES2021"],
6
- "target": "ES2021",
5
+ "module": "ES2022",
6
+ "moduleResolution": "node",
7
+ "lib": ["ES2022"],
8
+ "target": "ES2022",
7
9
  "noImplicitAny": true,
8
- "removeComments": true,
10
+ "removeComments": false,
9
11
  "sourceMap": true,
10
12
  "outDir": "dist",
11
13
  "resolveJsonModule": true,
package/typedoc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": ["../../typedoc.base.json"],
3
+ "entryPoints": ["src/index.ts"],
4
+ "tsconfig": "./tsconfig.server.json"
5
+ }