@simulacrum/auth0-simulator 0.8.3 → 0.10.0

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.
Files changed (117) hide show
  1. package/README.md +28 -206
  2. package/bin/start.js +7 -0
  3. package/dist/auth/constants.d.ts.map +1 -1
  4. package/dist/auth/constants.js +2 -5
  5. package/dist/auth/constants.js.map +1 -1
  6. package/dist/auth/date.js +3 -9
  7. package/dist/auth/date.js.map +1 -1
  8. package/dist/auth/jwt.d.ts +4 -1
  9. package/dist/auth/jwt.d.ts.map +1 -1
  10. package/dist/auth/jwt.js +8 -13
  11. package/dist/auth/jwt.js.map +1 -1
  12. package/dist/auth/refresh-token.d.ts +4 -0
  13. package/dist/auth/refresh-token.d.ts.map +1 -0
  14. package/dist/auth/refresh-token.js +18 -0
  15. package/dist/auth/refresh-token.js.map +1 -0
  16. package/dist/config/get-config.d.ts +6 -6
  17. package/dist/config/get-config.d.ts.map +1 -1
  18. package/dist/config/get-config.js +18 -18
  19. package/dist/config/get-config.js.map +1 -1
  20. package/dist/handlers/auth0-handlers.d.ts +6 -10
  21. package/dist/handlers/auth0-handlers.d.ts.map +1 -1
  22. package/dist/handlers/auth0-handlers.js +81 -66
  23. package/dist/handlers/auth0-handlers.js.map +1 -1
  24. package/dist/handlers/index.d.ts +5 -0
  25. package/dist/handlers/index.d.ts.map +1 -0
  26. package/dist/handlers/index.js +36 -0
  27. package/dist/handlers/index.js.map +1 -0
  28. package/dist/handlers/login-redirect.d.ts +2 -2
  29. package/dist/handlers/login-redirect.d.ts.map +1 -1
  30. package/dist/handlers/login-redirect.js +3 -7
  31. package/dist/handlers/login-redirect.js.map +1 -1
  32. package/dist/handlers/oauth-handlers.d.ts +12 -9
  33. package/dist/handlers/oauth-handlers.d.ts.map +1 -1
  34. package/dist/handlers/oauth-handlers.js +86 -67
  35. package/dist/handlers/oauth-handlers.js.map +1 -1
  36. package/dist/handlers/openid-handlers.d.ts +4 -4
  37. package/dist/handlers/openid-handlers.d.ts.map +1 -1
  38. package/dist/handlers/openid-handlers.js +11 -15
  39. package/dist/handlers/openid-handlers.js.map +1 -1
  40. package/dist/handlers/url.d.ts.map +1 -1
  41. package/dist/handlers/url.js +1 -5
  42. package/dist/handlers/url.js.map +1 -1
  43. package/dist/handlers/utils.d.ts +11 -4
  44. package/dist/handlers/utils.d.ts.map +1 -1
  45. package/dist/handlers/utils.js +11 -15
  46. package/dist/handlers/utils.js.map +1 -1
  47. package/dist/handlers/web-message.d.ts +1 -1
  48. package/dist/handlers/web-message.d.ts.map +1 -1
  49. package/dist/handlers/web-message.js +8 -12
  50. package/dist/handlers/web-message.js.map +1 -1
  51. package/dist/index.d.ts +16 -18
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +18 -127
  54. package/dist/index.js.map +1 -1
  55. package/dist/middleware/create-cors.d.ts +1 -1
  56. package/dist/middleware/create-cors.js +2 -9
  57. package/dist/middleware/create-cors.js.map +1 -1
  58. package/dist/middleware/error-handling.d.ts +3 -0
  59. package/dist/middleware/error-handling.d.ts.map +1 -0
  60. package/dist/{error-handling-middleware.js → middleware/error-handling.js} +5 -11
  61. package/dist/middleware/error-handling.js.map +1 -0
  62. package/dist/middleware/no-cache.d.ts +1 -1
  63. package/dist/middleware/no-cache.js +1 -5
  64. package/dist/middleware/no-cache.js.map +1 -1
  65. package/dist/middleware/session.d.ts +1 -1
  66. package/dist/middleware/session.js +3 -10
  67. package/dist/middleware/session.js.map +1 -1
  68. package/dist/rules/extensionless-file-name.js +1 -5
  69. package/dist/rules/extensionless-file-name.js.map +1 -1
  70. package/dist/rules/parse-rules-files.d.ts.map +1 -1
  71. package/dist/rules/parse-rules-files.js +15 -22
  72. package/dist/rules/parse-rules-files.js.map +1 -1
  73. package/dist/rules/rules-runner.d.ts +2 -2
  74. package/dist/rules/rules-runner.d.ts.map +1 -1
  75. package/dist/rules/rules-runner.js +14 -21
  76. package/dist/rules/rules-runner.js.map +1 -1
  77. package/dist/rules/types.d.ts +1 -1
  78. package/dist/rules/types.d.ts.map +1 -1
  79. package/dist/rules/types.js +1 -2
  80. package/dist/store/entities.d.ts +111 -0
  81. package/dist/store/entities.d.ts.map +1 -0
  82. package/dist/store/entities.js +38 -0
  83. package/dist/store/entities.js.map +1 -0
  84. package/dist/store/index.d.ts +37 -0
  85. package/dist/store/index.d.ts.map +1 -0
  86. package/dist/store/index.js +44 -0
  87. package/dist/store/index.js.map +1 -0
  88. package/dist/types.d.ts +32 -22
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/types.js +21 -25
  91. package/dist/types.js.map +1 -1
  92. package/dist/views/login.d.ts +2 -2
  93. package/dist/views/login.d.ts.map +1 -1
  94. package/dist/views/login.js +82 -35
  95. package/dist/views/login.js.map +1 -1
  96. package/dist/views/username-password.d.ts +2 -2
  97. package/dist/views/username-password.d.ts.map +1 -1
  98. package/dist/views/username-password.js +3 -7
  99. package/dist/views/username-password.js.map +1 -1
  100. package/dist/views/web-message.d.ts +1 -1
  101. package/dist/views/web-message.d.ts.map +1 -1
  102. package/dist/views/web-message.js +3 -10
  103. package/dist/views/web-message.js.map +1 -1
  104. package/package.json +24 -41
  105. package/CHANGELOG.md +0 -171
  106. package/bin/index.js +0 -2
  107. package/dist/error-handling-middleware.d.ts +0 -3
  108. package/dist/error-handling-middleware.d.ts.map +0 -1
  109. package/dist/error-handling-middleware.js.map +0 -1
  110. package/dist/handlers/get-service-url.d.ts +0 -3
  111. package/dist/handlers/get-service-url.d.ts.map +0 -1
  112. package/dist/handlers/get-service-url.js +0 -11
  113. package/dist/handlers/get-service-url.js.map +0 -1
  114. package/dist/start.d.ts +0 -2
  115. package/dist/start.d.ts.map +0 -1
  116. package/dist/start.js +0 -77
  117. package/dist/start.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,129 +1,20 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
1
+ import { createFoundationSimulationServer, } from "@simulacrum/foundation-simulator";
2
+ import { extendStore } from "./store/index";
3
+ import { extendRouter } from "./handlers";
4
+ import { auth0InitialStoreSchema, } from "./store/entities";
5
+ import { getConfig } from "./config/get-config";
6
+ export const simulation = (args = {}) => {
7
+ var _a;
8
+ const config = getConfig(args.options);
9
+ const parsedInitialState = !(args === null || args === void 0 ? void 0 : args.initialState)
10
+ ? undefined
11
+ : auth0InitialStoreSchema.parse(args === null || args === void 0 ? void 0 : args.initialState);
12
+ return createFoundationSimulationServer({
13
+ port: 4400, // default port
14
+ protocol: "https",
15
+ extendStore: extendStore(parsedInitialState, (_a = args === null || args === void 0 ? void 0 : args.extend) === null || _a === void 0 ? void 0 : _a.extendStore),
16
+ extendRouter: extendRouter(config),
17
+ })();
20
18
  };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.auth0 = exports.createAuth0Server = exports.getConfig = void 0;
26
- const server_1 = require("@simulacrum/server");
27
- const express_1 = __importStar(require("express"));
28
- const path_1 = __importDefault(require("path"));
29
- const get_config_1 = require("./config/get-config");
30
- const error_handling_middleware_1 = require("./error-handling-middleware");
31
- const auth0_handlers_1 = require("./handlers/auth0-handlers");
32
- const get_service_url_1 = require("./handlers/get-service-url");
33
- const openid_handlers_1 = require("./handlers/openid-handlers");
34
- const create_cors_1 = require("./middleware/create-cors");
35
- const no_cache_1 = require("./middleware/no-cache");
36
- const session_1 = require("./middleware/session");
37
- var get_config_2 = require("./config/get-config");
38
- Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return get_config_2.getConfig; } });
39
- const publicDir = path_1.default.join(__dirname, 'views', 'public');
40
- const createAuth0Service = (slice, options) => ({
41
- name: 'Auth0Service',
42
- *init() {
43
- let debug = !!slice.slice('debug').get();
44
- let { port } = options;
45
- let config = (0, get_config_1.getConfig)(slice.slice('options').slice('options').get());
46
- let serviceURL = () => (0, get_service_url_1.getServiceUrl)(slice.get());
47
- let auth0Store = slice.slice('store').slice('auth0');
48
- auth0Store.set({});
49
- let store = {
50
- get: (nonce) => auth0Store.slice(nonce).get(),
51
- set: (nonce, session) => auth0Store.slice(nonce).set(session),
52
- };
53
- let people = {
54
- *[Symbol.iterator]() {
55
- var _a;
56
- let values = Object.values((_a = slice.slice('store').slice('people').get()) !== null && _a !== void 0 ? _a : {});
57
- for (let person of values) {
58
- yield person;
59
- }
60
- }
61
- };
62
- let server = yield createAuth0Server({
63
- debug,
64
- config,
65
- store,
66
- serviceURL,
67
- people,
68
- port
69
- });
70
- return {
71
- port: server.port,
72
- protocol: 'https',
73
- };
74
- }
75
- });
76
- function createAuth0Server(options) {
77
- let { config, serviceURL, store, people, port, debug = true } = options;
78
- let auth0 = (0, auth0_handlers_1.createAuth0Handlers)(store, people, serviceURL, config, debug);
79
- let openid = (0, openid_handlers_1.createOpenIdHandlers)(serviceURL);
80
- return {
81
- name: 'Auth0Server',
82
- *init() {
83
- let app = (0, express_1.default)()
84
- .use(express_1.default.static(publicDir))
85
- .use((0, session_1.createSession)())
86
- .use((0, create_cors_1.createCors)())
87
- .use((0, no_cache_1.noCache)())
88
- .use((0, express_1.json)())
89
- .use((0, express_1.urlencoded)({ extended: true }))
90
- .get('/heartbeat', auth0['/heartbeat'])
91
- .get('/authorize', auth0['/authorize'])
92
- .get('/login', auth0['/login'])
93
- .get('/u/login', auth0['/usernamepassword/login'])
94
- .post('/usernamepassword/login', auth0['/usernamepassword/login'])
95
- .post('/login/callback', auth0['/login/callback'])
96
- .post('/oauth/token', auth0['/oauth/token'])
97
- .get('/userinfo', auth0['/userinfo'])
98
- .get('/v2/logout', auth0['/v2/logout'])
99
- .get('/.well-known/jwks.json', openid['/.well-known/jwks.json'])
100
- .get('/.well-known/openid-configuration', openid['/.well-known/openid-configuration']);
101
- if (debug) {
102
- app.use(server_1.consoleLogger);
103
- }
104
- // needs to be the last middleware added
105
- app.use(error_handling_middleware_1.defaultErrorHandler);
106
- let server = yield (0, server_1.createServer)(app, { protocol: 'https', port });
107
- return {
108
- port: server.address.port
109
- };
110
- }
111
- };
112
- }
113
- exports.createAuth0Server = createAuth0Server;
114
- const auth0 = () => {
115
- return {
116
- services: { auth0: createAuth0Service },
117
- scenarios: {
118
- /**
119
- * Here we just export the internal `person` scenario so that it can be
120
- * used with the a standalone auth0 simulator. However,
121
- * what we really need to have some way to _react_ to the person
122
- * having been created and augment the record at that point.
123
- */
124
- person: server_1.person
125
- }
126
- };
127
- };
128
- exports.auth0 = auth0;
19
+ export { auth0UserSchema, defaultUser } from "./store/entities";
129
20
  //# 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":"AAAA,OAAO,EACL,gCAAgC,GAGjC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAA2B,WAAW,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAEL,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAoBhD,MAAM,CAAC,MAAM,UAAU,GAAmB,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE;;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,kBAAkB,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAA;QAC5C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC,CAAC;IACtD,OAAO,gCAAgC,CAAC;QACtC,IAAI,EAAE,IAAI,EAAE,eAAe;QAC3B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,WAAW,CAAC,kBAAkB,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,WAAW,CAAC;QACvE,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;KACnC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { RequestHandler } from 'express';
1
+ import type { RequestHandler } from "express";
2
2
  export declare const createCors: () => RequestHandler;
3
3
  //# sourceMappingURL=create-cors.d.ts.map
@@ -1,11 +1,5 @@
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
- exports.createCors = void 0;
7
- const cors_1 = __importDefault(require("cors"));
8
- const createCors = () => (0, cors_1.default)({
1
+ import cors from "cors";
2
+ export const createCors = () => cors({
9
3
  origin: (origin, cb) => {
10
4
  if (typeof origin === "string") {
11
5
  return cb(null, [origin]);
@@ -14,5 +8,4 @@ const createCors = () => (0, cors_1.default)({
14
8
  },
15
9
  credentials: true,
16
10
  });
17
- exports.createCors = createCors;
18
11
  //# sourceMappingURL=create-cors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-cors.js","sourceRoot":"","sources":["../../src/middleware/create-cors.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AAEjB,MAAM,UAAU,GAAG,GAAmB,EAAE,CAC7C,IAAA,cAAI,EAAC;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACrB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;SAC3B;QAED,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAVQ,QAAA,UAAU,cAUlB"}
1
+ {"version":3,"file":"create-cors.js","sourceRoot":"","sources":["../../src/middleware/create-cors.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,GAAmB,EAAE,CAC7C,IAAI,CAAC;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACrB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Request, Response, NextFunction } from "express";
2
+ export declare function defaultErrorHandler(error: Error, _req: Request, res: Response, next: NextFunction): void;
3
+ //# sourceMappingURL=error-handling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/middleware/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,QA6BnB"}
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultErrorHandler = void 0;
4
- function defaultErrorHandler(error, _req, res, next) {
1
+ export function defaultErrorHandler(error, _req, res, next) {
5
2
  var _a;
6
3
  if (res.headersSent) {
7
4
  return next(error);
8
5
  }
9
- let assertCondition = 'Assert condition failed: ';
6
+ let assertCondition = "Assert condition failed: ";
10
7
  if ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.startsWith(assertCondition)) {
11
8
  let errorCode = 500;
12
9
  let errorResponse = error.message;
13
- if (error.message.includes('::')) {
10
+ if (error.message.includes("::")) {
14
11
  let errorMessage = error.message.slice(assertCondition.length);
15
12
  errorCode = parseInt(errorMessage.slice(0, 3));
16
13
  errorResponse = errorMessage.slice(5);
@@ -19,9 +16,7 @@ function defaultErrorHandler(error, _req, res, next) {
19
16
  }
20
17
  else {
21
18
  console.error(error);
22
- res
23
- .status(500)
24
- .json({
19
+ res.status(500).json({
25
20
  error: {
26
21
  name: error.name,
27
22
  message: error.message,
@@ -30,5 +25,4 @@ function defaultErrorHandler(error, _req, res, next) {
30
25
  });
31
26
  }
32
27
  }
33
- exports.defaultErrorHandler = defaultErrorHandler;
34
- //# sourceMappingURL=error-handling-middleware.js.map
28
+ //# sourceMappingURL=error-handling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../src/middleware/error-handling.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CACjC,KAAY,EACZ,IAAa,EACb,GAAa,EACb,IAAkB;;IAElB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,eAAe,GAAG,2BAA2B,CAAC;IAElD,IAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;QAElC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC/D,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { RequestHandler } from 'express';
1
+ import type { RequestHandler } from "express";
2
2
  export declare const noCache: () => RequestHandler;
3
3
  //# sourceMappingURL=no-cache.d.ts.map
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.noCache = void 0;
4
- const noCache = () => (_, res, next) => {
1
+ export const noCache = () => (_, res, next) => {
5
2
  res.set("Pragma", "no-cache");
6
3
  res.set("Cache-Control", "no-cache, no-store");
7
4
  next();
8
5
  };
9
- exports.noCache = noCache;
10
6
  //# sourceMappingURL=no-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-cache.js","sourceRoot":"","sources":["../../src/middleware/no-cache.ts"],"names":[],"mappings":";;;AAEO,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAClE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB"}
1
+ {"version":3,"file":"no-cache.js","sourceRoot":"","sources":["../../src/middleware/no-cache.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAClE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { RequestHandler } from 'express';
1
+ import type { RequestHandler } from "express";
2
2
  export declare const createSession: () => RequestHandler;
3
3
  //# sourceMappingURL=session.d.ts.map
@@ -1,13 +1,7 @@
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
- exports.createSession = void 0;
7
- const cookie_session_1 = __importDefault(require("cookie-session"));
1
+ import cookieSession from "cookie-session";
8
2
  const twentyFourHours = 24 * 60 * 60 * 1000;
9
- const createSession = () => {
10
- return (0, cookie_session_1.default)({
3
+ export const createSession = () => {
4
+ return cookieSession({
11
5
  name: "session",
12
6
  keys: ["shhh"],
13
7
  secure: true,
@@ -16,5 +10,4 @@ const createSession = () => {
16
10
  sameSite: "none",
17
11
  });
18
12
  };
19
- exports.createSession = createSession;
20
13
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":";;;;;;AACA,oEAA2C;AAC3C,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC,MAAM,aAAa,GAAG,GAAmB,EAAE;IAChD,OAAO,IAAA,wBAAa,EAAC;QACnB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,MAAM;KAClB,CAAC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,GAAmB,EAAE;IAChD,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extensionlessFileName = void 0;
4
- const extensionlessFileName = (fileName) => fileName.indexOf(".") === -1
1
+ export const extensionlessFileName = (fileName) => fileName.indexOf(".") === -1
5
2
  ? fileName
6
3
  : fileName.split(".").slice(0, -1).join(".");
7
- exports.extensionlessFileName = extensionlessFileName;
8
4
  //# sourceMappingURL=extensionless-file-name.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensionless-file-name.js","sourceRoot":"","sources":["../../src/rules/extensionless-file-name.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAU,EAAE,CAChE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,QAAQ;IACV,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAHpC,QAAA,qBAAqB,yBAGe"}
1
+ {"version":3,"file":"extensionless-file-name.js","sourceRoot":"","sources":["../../src/rules/extensionless-file-name.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAU,EAAE,CAChE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,QAAQ;IACV,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-rules-files.d.ts","sourceRoot":"","sources":["../../src/rules/parse-rules-files.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,EAAE,CAiCrF"}
1
+ {"version":3,"file":"parse-rules-files.d.ts","sourceRoot":"","sources":["../../src/rules/parse-rules-files.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,CAmCtC"}
@@ -1,35 +1,28 @@
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
- exports.parseRulesFiles = void 0;
7
- const extensionless_file_name_1 = require("./extensionless-file-name");
8
- const assert_ts_1 = require("assert-ts");
9
- const fs_1 = __importDefault(require("fs"));
10
- const path_1 = __importDefault(require("path"));
11
- function parseRulesFiles(rulesPath) {
1
+ import { extensionlessFileName } from "./extensionless-file-name";
2
+ import { assert } from "assert-ts";
3
+ import fs from "fs";
4
+ import path from "path";
5
+ export function parseRulesFiles(rulesPath) {
12
6
  var _a;
13
- let ruleFiles = fs_1.default
7
+ let ruleFiles = fs
14
8
  .readdirSync(rulesPath)
15
- .filter((f) => path_1.default.extname(f) === ".js");
16
- return (_a = ruleFiles
9
+ .filter((f) => path.extname(f) === ".js");
10
+ return ((_a = ruleFiles
17
11
  .map((r) => {
18
- let filename = path_1.default.join(rulesPath, r);
19
- let jsonFile = `${(0, extensionless_file_name_1.extensionlessFileName)(filename)}.json`;
20
- (0, assert_ts_1.assert)(!!jsonFile, `no corresponding rule file for ${r}`);
21
- let rawRule = fs_1.default.readFileSync(jsonFile, 'utf8');
12
+ let filename = path.join(rulesPath, r);
13
+ let jsonFile = `${extensionlessFileName(filename)}.json`;
14
+ assert(!!jsonFile, `no corresponding rule file for ${r}`);
15
+ let rawRule = fs.readFileSync(jsonFile, "utf8");
22
16
  let { enabled, order = 0, stage = "login_success", } = JSON.parse(rawRule);
23
17
  if (!enabled) {
24
18
  return undefined;
25
19
  }
26
- let code = fs_1.default.readFileSync(filename, {
20
+ let code = fs.readFileSync(filename, {
27
21
  encoding: "utf-8",
28
22
  });
29
23
  return { code, filename, order, stage };
30
24
  })
31
- .flatMap(x => !!x ? x : [])
32
- .sort((left, right) => left.order - right.order)) !== null && _a !== void 0 ? _a : [];
25
+ .flatMap((x) => (!!x ? x : []))
26
+ .sort((left, right) => left.order - right.order)) !== null && _a !== void 0 ? _a : []);
33
27
  }
34
- exports.parseRulesFiles = parseRulesFiles;
35
28
  //# sourceMappingURL=parse-rules-files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-rules-files.js","sourceRoot":"","sources":["../../src/rules/parse-rules-files.ts"],"names":[],"mappings":";;;;;;AAAA,uEAAkE;AAClE,yCAAmC;AACnC,4CAAoB;AACpB,gDAAwB;AAGxB,SAAgB,eAAe,CAAC,SAAiB;;IAC/C,IAAI,SAAS,GAAG,YAAE;SACjB,WAAW,CAAC,SAAS,CAAC;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IAE1C,OAAO,MAAA,SAAS;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEvC,IAAI,QAAQ,GAAG,GAAG,IAAA,+CAAqB,EAAC,QAAQ,CAAC,OAAO,CAAC;QAEzD,IAAA,kBAAM,EAAC,CAAC,CAAC,QAAQ,EAAE,kCAAkC,CAAC,EAAE,CAAC,CAAC;QAE1D,IAAI,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEhD,IAAI,EACF,OAAO,EACP,KAAK,GAAG,CAAC,EACT,KAAK,GAAG,eAAe,GACxB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE;YACnC,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1C,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;AAC3D,CAAC;AAjCD,0CAiCC"}
1
+ {"version":3,"file":"parse-rules-files.js","sourceRoot":"","sources":["../../src/rules/parse-rules-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,eAAe,CAC7B,SAAiB;;IAEjB,IAAI,SAAS,GAAG,EAAE;SACf,WAAW,CAAC,SAAS,CAAC;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IAE5C,OAAO,CACL,MAAA,SAAS;SACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEvC,IAAI,QAAQ,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEzD,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,kCAAkC,CAAC,EAAE,CAAC,CAAC;QAE1D,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEhD,IAAI,EACF,OAAO,EACP,KAAK,GAAG,CAAC,EACT,KAAK,GAAG,eAAe,GACxB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE;YACnC,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1C,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,mCAAI,EAAE,CACzD,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { RuleContext, RuleUser } from './types';
2
- export declare type RulesRunner = <A, I>(user: RuleUser, context: RuleContext<A, I>) => void;
1
+ import type { RuleContext, RuleUser } from "./types";
2
+ export type RulesRunner = <A, I>(user: RuleUser, context: RuleContext<A, I>) => void;
3
3
  export declare function createRulesRunner(rulesPath?: string): RulesRunner;
4
4
  //# sourceMappingURL=rules-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules-runner.d.ts","sourceRoot":"","sources":["../../src/rules/rules-runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAQ,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE3D,oBAAY,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AAoDrF,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAyBjE"}
1
+ {"version":3,"file":"rules-runner.d.ts","sourceRoot":"","sources":["../../src/rules/rules-runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAQ,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAC7B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KACvB,IAAI,CAAC;AAwDV,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CA4BjE"}
@@ -1,14 +1,8 @@
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
- exports.createRulesRunner = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const vm_1 = __importDefault(require("vm"));
9
- const fs_1 = __importDefault(require("fs"));
10
- const assert_ts_1 = require("assert-ts");
11
- const parse_rules_files_1 = require("./parse-rules-files");
1
+ import path from "path";
2
+ import vm from "vm";
3
+ import fs from "fs";
4
+ import { assert } from "assert-ts";
5
+ import { parseRulesFiles } from "./parse-rules-files";
12
6
  async function runRule(user, context, rule) {
13
7
  await new Promise((resolve, reject) => {
14
8
  let sandbox = {
@@ -32,11 +26,11 @@ async function runRule(user, context, rule) {
32
26
  },
33
27
  },
34
28
  };
35
- let vmContext = vm_1.default.createContext(sandbox);
36
- (0, assert_ts_1.assert)(typeof rule !== 'undefined', 'undefined rule');
29
+ let vmContext = vm.createContext(sandbox);
30
+ assert(typeof rule !== "undefined", "undefined rule");
37
31
  let { code, filename } = rule;
38
- console.debug(`executing rule ${path_1.default.basename(filename)}`);
39
- let script = new vm_1.default.Script(`
32
+ console.debug(`executing rule ${path.basename(filename)}`);
33
+ let script = new vm.Script(`
40
34
  (async function(exports) {
41
35
  try {
42
36
  await (${code})(__simulator.user, __simulator.context, resolve);
@@ -53,15 +47,15 @@ async function runRule(user, context, rule) {
53
47
  });
54
48
  }).catch((error) => console.error(error));
55
49
  }
56
- function createRulesRunner(rulesPath) {
50
+ export function createRulesRunner(rulesPath) {
57
51
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
58
52
  let callback = (_user, _context) => { };
59
- if (typeof rulesPath === 'undefined') {
53
+ if (typeof rulesPath === "undefined") {
60
54
  return callback;
61
55
  }
62
- let fullPath = path_1.default.join(process.cwd(), rulesPath);
63
- (0, assert_ts_1.assert)(fs_1.default.existsSync(fullPath), `no rules directory at ${fullPath}`);
64
- let rules = (0, parse_rules_files_1.parseRulesFiles)(rulesPath);
56
+ let fullPath = path.join(process.cwd(), rulesPath);
57
+ assert(fs.existsSync(fullPath), `no rules directory at ${fullPath}`);
58
+ let rules = parseRulesFiles(rulesPath);
65
59
  if (rules.length === 0) {
66
60
  return callback;
67
61
  }
@@ -72,5 +66,4 @@ function createRulesRunner(rulesPath) {
72
66
  }
73
67
  };
74
68
  }
75
- exports.createRulesRunner = createRulesRunner;
76
69
  //# sourceMappingURL=rules-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules-runner.js","sourceRoot":"","sources":["../../src/rules/rules-runner.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AACpB,yCAAmC;AACnC,2DAAsD;AAKtD,KAAK,UAAU,OAAO,CAAQ,IAAc,EAAE,OAA0B,EAAE,IAAU;IAClF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,OAAO,GAAG;YACZ,OAAO;YACP,MAAM;YACN,cAAc;YACd,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,UAAU;YACV,OAAO;YACP,OAAO;YACP,MAAM;YACN,OAAO;YACP,MAAM;YACN,WAAW,EAAE;gBACX,GAAG;oBACD,IAAI;oBACJ,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE;iBACxB;aACF;SACF,CAAC;QAEF,IAAI,SAAS,GAAG,YAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAA,kBAAM,EAAC,OAAO,IAAI,KAAK,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAEtD,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE9B,OAAO,CAAC,KAAK,CAAC,kBAAkB,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE3D,IAAI,MAAM,GAAG,IAAI,YAAE,CAAC,MAAM,CAAC;;;mBAGZ,IAAI;;;;;;KAMlB,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;YAC7B,QAAQ;YACR,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,iBAAiB,CAAC,SAAkB;IAClD,6DAA6D;IAC7D,IAAI,QAAQ,GAAG,CAAC,KAAe,EAAE,QAAuC,EAAE,EAAE,GAAG,CAAC,CAAC;IAEjF,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;QACpC,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAEnD,IAAA,kBAAM,EAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAErE,IAAI,KAAK,GAAG,IAAA,mCAAe,EAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,KAAK,EAAQ,IAAc,EAAE,OAA0B,EAAE,EAAE;QAChE,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;QAE9C,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;YACtB,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SACpC;IACL,CAAC,CAAC;AACJ,CAAC;AAzBD,8CAyBC"}
1
+ {"version":3,"file":"rules-runner.js","sourceRoot":"","sources":["../../src/rules/rules-runner.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQtD,KAAK,UAAU,OAAO,CACpB,IAAc,EACd,OAA0B,EAC1B,IAAU;IAEV,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,OAAO,GAAG;YACZ,OAAO;YACP,MAAM;YACN,cAAc;YACd,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,UAAU;YACV,OAAO;YACP,OAAO;YACP,MAAM;YACN,OAAO;YACP,MAAM;YACN,WAAW,EAAE;gBACX,GAAG;oBACD,IAAI;oBACJ,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE;iBACxB;aACF;SACF,CAAC;QAEF,IAAI,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,IAAI,KAAK,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAEtD,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE9B,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE3D,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;;;mBAGZ,IAAI;;;;;;KAMlB,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;YAC7B,QAAQ;YACR,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAkB;IAClD,6DAA6D;IAC7D,IAAI,QAAQ,GAAG,CACb,KAAe,EACf,QAAuC,EACvC,EAAE,GAAE,CAAC,CAAC;IAER,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAEnD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAErE,IAAI,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,EAAQ,IAAc,EAAE,OAA0B,EAAE,EAAE;QAChE,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;QAEhD,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -15,7 +15,7 @@ export interface RuleUser {
15
15
  name?: string | undefined;
16
16
  identities: IdentityProvider[] | undefined;
17
17
  }
18
- declare type IdentityProvider = {
18
+ type IdentityProvider = {
19
19
  provider: string;
20
20
  user_id: string;
21
21
  connection: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rules/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;CAC5C;AAED,aAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC1B,GAAG,CAAC,CAAC;IAEN,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rules/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;CAC5C;AAED,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC1B,GAAG,CAAC,CAAC;IAEN,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
@@ -0,0 +1,111 @@
1
+ import { z } from "zod";
2
+ import { IdProp } from "@simulacrum/foundation-simulator";
3
+ export declare const auth0UserSchema: z.ZodEffects<z.ZodObject<{
4
+ id: z.ZodDefault<z.ZodString>;
5
+ name: z.ZodString;
6
+ password: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
+ email: z.ZodOptional<z.ZodString>;
8
+ picture: z.ZodOptional<z.ZodString>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ id: string;
11
+ name: string;
12
+ password: string;
13
+ email?: string | undefined;
14
+ picture?: string | undefined;
15
+ }, {
16
+ name: string;
17
+ id?: string | undefined;
18
+ password?: string | undefined;
19
+ email?: string | undefined;
20
+ picture?: string | undefined;
21
+ }>, {
22
+ id: string;
23
+ name: string;
24
+ password: string;
25
+ email?: string | undefined;
26
+ picture?: string | undefined;
27
+ }, {
28
+ name: string;
29
+ id?: string | undefined;
30
+ password?: string | undefined;
31
+ email?: string | undefined;
32
+ picture?: string | undefined;
33
+ }>;
34
+ export type Auth0User = z.infer<typeof auth0UserSchema>;
35
+ export declare const defaultUser: {
36
+ id: string;
37
+ name: string;
38
+ password: string;
39
+ email?: string | undefined;
40
+ picture?: string | undefined;
41
+ };
42
+ export declare const auth0InitialStoreSchema: z.ZodObject<{
43
+ users: z.ZodArray<z.ZodEffects<z.ZodObject<{
44
+ id: z.ZodDefault<z.ZodString>;
45
+ name: z.ZodString;
46
+ password: z.ZodDefault<z.ZodOptional<z.ZodString>>;
47
+ email: z.ZodOptional<z.ZodString>;
48
+ picture: z.ZodOptional<z.ZodString>;
49
+ }, "strip", z.ZodTypeAny, {
50
+ id: string;
51
+ name: string;
52
+ password: string;
53
+ email?: string | undefined;
54
+ picture?: string | undefined;
55
+ }, {
56
+ name: string;
57
+ id?: string | undefined;
58
+ password?: string | undefined;
59
+ email?: string | undefined;
60
+ picture?: string | undefined;
61
+ }>, {
62
+ id: string;
63
+ name: string;
64
+ password: string;
65
+ email?: string | undefined;
66
+ picture?: string | undefined;
67
+ }, {
68
+ name: string;
69
+ id?: string | undefined;
70
+ password?: string | undefined;
71
+ email?: string | undefined;
72
+ picture?: string | undefined;
73
+ }>, "many">;
74
+ }, "strip", z.ZodTypeAny, {
75
+ users: {
76
+ id: string;
77
+ name: string;
78
+ password: string;
79
+ email?: string | undefined;
80
+ picture?: string | undefined;
81
+ }[];
82
+ }, {
83
+ users: {
84
+ name: string;
85
+ id?: string | undefined;
86
+ password?: string | undefined;
87
+ email?: string | undefined;
88
+ picture?: string | undefined;
89
+ }[];
90
+ }>;
91
+ export type AuthSession = {
92
+ username: string;
93
+ nonce: string;
94
+ };
95
+ export type Auth0Store = z.output<typeof auth0InitialStoreSchema> & {
96
+ sessions: AuthSession[];
97
+ };
98
+ export type Auth0InitialStore = z.input<typeof auth0InitialStoreSchema>;
99
+ export declare const convertToObj: <T extends {
100
+ [k: string]: any;
101
+ }>(arrayOfObjects: T[], key?: IdProp) => Record<IdProp, T>;
102
+ export declare const convertInitialStateToStoreState: (initialState: Auth0InitialStore | undefined) => {
103
+ users: Record<IdProp, {
104
+ id: string;
105
+ name: string;
106
+ password: string;
107
+ email?: string | undefined;
108
+ picture?: string | undefined;
109
+ }>;
110
+ } | undefined;
111
+ //# sourceMappingURL=entities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/store/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAG1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AACL,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,eAAO,MAAM,WAAW;;;;;;CAGtB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAElC,CAAC;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,GAAG;IAClE,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,kBACzC,CAAC,EAAE,QACd,MAAM,KACV,MAAM,CAAC,MAAM,EAAE,CAAC,CAIU,CAAC;AAE9B,eAAO,MAAM,+BAA+B,iBAC5B,iBAAiB,GAAG,SAAS;;;;;;;;aAQ5C,CAAC"}