exisjs 0.9.1 → 0.10.0-alpha.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 (171) hide show
  1. package/README.md +3 -0
  2. package/bin/exis.js +76 -1
  3. package/dist/config/config.d.ts.map +1 -1
  4. package/dist/config/config.js +2 -1
  5. package/dist/config/config.js.map +1 -1
  6. package/dist/config/types.d.ts +16 -2
  7. package/dist/config/types.d.ts.map +1 -1
  8. package/dist/docs/content/README.md +1 -0
  9. package/dist/docs/content/cli/commands.mdx +23 -1
  10. package/dist/docs/content/cli/usage.mdx +2 -1
  11. package/dist/docs/content/config.mdx +50 -4
  12. package/dist/docs/content/deployment.mdx +163 -0
  13. package/dist/docs/content/installation.mdx +1 -1
  14. package/dist/docs/content/introduction.mdx +3 -0
  15. package/dist/docs/content/validation.mdx +34 -12
  16. package/dist/docs/reference/config.mdx +3 -1
  17. package/dist/docs/reference/sanitize.mdx +129 -134
  18. package/dist/docs/reference/validator.mdx +12 -3
  19. package/dist/internal.d.ts +16 -0
  20. package/dist/internal.d.ts.map +1 -0
  21. package/dist/internal.js +45 -0
  22. package/dist/internal.js.map +1 -0
  23. package/dist/{cli → lib}/resolve-aliases.d.ts.map +1 -1
  24. package/dist/{cli → lib}/resolve-aliases.js.map +1 -1
  25. package/dist/lib/start-command.d.ts +11 -0
  26. package/dist/lib/start-command.d.ts.map +1 -0
  27. package/dist/lib/start-command.js +79 -0
  28. package/dist/lib/start-command.js.map +1 -0
  29. package/dist/lib/start-server.js +4 -2
  30. package/dist/lib/start-server.js.map +1 -1
  31. package/dist/middleware/backpressure.d.ts +5 -0
  32. package/dist/middleware/backpressure.d.ts.map +1 -1
  33. package/dist/middleware/backpressure.js +66 -36
  34. package/dist/middleware/backpressure.js.map +1 -1
  35. package/dist/router/route-scanner.d.ts +12 -4
  36. package/dist/router/route-scanner.d.ts.map +1 -1
  37. package/dist/router/route-scanner.js +65 -51
  38. package/dist/router/route-scanner.js.map +1 -1
  39. package/dist/sanitize/index.d.ts +29 -3
  40. package/dist/sanitize/index.d.ts.map +1 -1
  41. package/dist/sanitize/index.js +91 -32
  42. package/dist/sanitize/index.js.map +1 -1
  43. package/dist/server/adapters/bun-adapter.d.ts +1 -1
  44. package/dist/server/adapters/bun-adapter.d.ts.map +1 -1
  45. package/dist/server/adapters/bun-adapter.js.map +1 -1
  46. package/dist/server/app.d.ts.map +1 -1
  47. package/dist/server/app.js +24 -1
  48. package/dist/server/app.js.map +1 -1
  49. package/dist/server/bootstrapper.d.ts.map +1 -1
  50. package/dist/server/bootstrapper.js +4 -2
  51. package/dist/server/bootstrapper.js.map +1 -1
  52. package/dist/server/cluster.d.ts.map +1 -1
  53. package/dist/server/cluster.js +3 -0
  54. package/dist/server/cluster.js.map +1 -1
  55. package/dist/server/metrics.d.ts +43 -0
  56. package/dist/server/metrics.d.ts.map +1 -0
  57. package/dist/server/metrics.js +254 -0
  58. package/dist/server/metrics.js.map +1 -0
  59. package/dist/utils/logger.d.ts.map +1 -1
  60. package/dist/utils/logger.js +31 -3
  61. package/dist/utils/logger.js.map +1 -1
  62. package/dist/validator/builder.d.ts +32 -17
  63. package/dist/validator/builder.d.ts.map +1 -1
  64. package/dist/validator/builder.js +84 -25
  65. package/dist/validator/builder.js.map +1 -1
  66. package/dist/validator/compile.d.ts +7 -2
  67. package/dist/validator/compile.d.ts.map +1 -1
  68. package/dist/validator/compile.js +85 -54
  69. package/dist/validator/compile.js.map +1 -1
  70. package/dist/validator/engine.d.ts +58 -7
  71. package/dist/validator/engine.d.ts.map +1 -1
  72. package/dist/validator/engine.js +436 -522
  73. package/dist/validator/engine.js.map +1 -1
  74. package/dist/validator/error.d.ts.map +1 -1
  75. package/dist/validator/error.js +7 -0
  76. package/dist/validator/error.js.map +1 -1
  77. package/dist/validator/index.d.ts +4 -1
  78. package/dist/validator/index.d.ts.map +1 -1
  79. package/dist/validator/index.js +5 -1
  80. package/dist/validator/index.js.map +1 -1
  81. package/dist/validator/rules.d.ts +66 -7
  82. package/dist/validator/rules.d.ts.map +1 -1
  83. package/dist/validator/rules.js +435 -109
  84. package/dist/validator/rules.js.map +1 -1
  85. package/dist/validator/tex-types.d.ts +15 -0
  86. package/dist/validator/tex-types.d.ts.map +1 -1
  87. package/dist/validator/tex-types.js +127 -64
  88. package/dist/validator/tex-types.js.map +1 -1
  89. package/dist/validator/tex.d.ts +1 -1
  90. package/dist/validator/tex.d.ts.map +1 -1
  91. package/dist/validator/text.d.ts +2 -0
  92. package/dist/validator/text.d.ts.map +1 -1
  93. package/dist/validator/text.js +31 -13
  94. package/dist/validator/text.js.map +1 -1
  95. package/dist/validator/types.d.ts +22 -0
  96. package/dist/validator/types.d.ts.map +1 -1
  97. package/package.json +81 -9
  98. package/dist/cli/commands/build.d.ts +0 -11
  99. package/dist/cli/commands/build.d.ts.map +0 -1
  100. package/dist/cli/commands/build.js +0 -344
  101. package/dist/cli/commands/build.js.map +0 -1
  102. package/dist/cli/commands/clean.d.ts +0 -5
  103. package/dist/cli/commands/clean.d.ts.map +0 -1
  104. package/dist/cli/commands/clean.js +0 -30
  105. package/dist/cli/commands/clean.js.map +0 -1
  106. package/dist/cli/commands/dev.d.ts +0 -21
  107. package/dist/cli/commands/dev.d.ts.map +0 -1
  108. package/dist/cli/commands/dev.js +0 -842
  109. package/dist/cli/commands/dev.js.map +0 -1
  110. package/dist/cli/commands/doctor.d.ts +0 -2
  111. package/dist/cli/commands/doctor.d.ts.map +0 -1
  112. package/dist/cli/commands/doctor.js +0 -228
  113. package/dist/cli/commands/doctor.js.map +0 -1
  114. package/dist/cli/commands/exports.d.ts +0 -2
  115. package/dist/cli/commands/exports.d.ts.map +0 -1
  116. package/dist/cli/commands/exports.js +0 -48
  117. package/dist/cli/commands/exports.js.map +0 -1
  118. package/dist/cli/commands/generate.d.ts +0 -33
  119. package/dist/cli/commands/generate.d.ts.map +0 -1
  120. package/dist/cli/commands/generate.js +0 -469
  121. package/dist/cli/commands/generate.js.map +0 -1
  122. package/dist/cli/commands/init.d.ts +0 -2
  123. package/dist/cli/commands/init.d.ts.map +0 -1
  124. package/dist/cli/commands/init.js +0 -37
  125. package/dist/cli/commands/init.js.map +0 -1
  126. package/dist/cli/commands/repl.d.ts +0 -6
  127. package/dist/cli/commands/repl.d.ts.map +0 -1
  128. package/dist/cli/commands/repl.js +0 -75
  129. package/dist/cli/commands/repl.js.map +0 -1
  130. package/dist/cli/commands/run.d.ts +0 -7
  131. package/dist/cli/commands/run.d.ts.map +0 -1
  132. package/dist/cli/commands/run.js +0 -101
  133. package/dist/cli/commands/run.js.map +0 -1
  134. package/dist/cli/commands/start.d.ts +0 -8
  135. package/dist/cli/commands/start.d.ts.map +0 -1
  136. package/dist/cli/commands/start.js +0 -155
  137. package/dist/cli/commands/start.js.map +0 -1
  138. package/dist/cli/commands/test.d.ts +0 -8
  139. package/dist/cli/commands/test.d.ts.map +0 -1
  140. package/dist/cli/commands/test.js +0 -165
  141. package/dist/cli/commands/test.js.map +0 -1
  142. package/dist/cli/index.d.ts +0 -3
  143. package/dist/cli/index.d.ts.map +0 -1
  144. package/dist/cli/index.js +0 -268
  145. package/dist/cli/index.js.map +0 -1
  146. package/dist/cli/manifest.d.ts +0 -4
  147. package/dist/cli/manifest.d.ts.map +0 -1
  148. package/dist/cli/manifest.js +0 -489
  149. package/dist/cli/manifest.js.map +0 -1
  150. package/dist/cli/routes.d.ts +0 -17
  151. package/dist/cli/routes.d.ts.map +0 -1
  152. package/dist/cli/routes.js +0 -317
  153. package/dist/cli/routes.js.map +0 -1
  154. package/dist/cli/utils.d.ts +0 -24
  155. package/dist/cli/utils.d.ts.map +0 -1
  156. package/dist/cli/utils.js +0 -54
  157. package/dist/cli/utils.js.map +0 -1
  158. package/dist/lib/inspect-routes.d.ts +0 -2
  159. package/dist/lib/inspect-routes.d.ts.map +0 -1
  160. package/dist/lib/inspect-routes.js +0 -150
  161. package/dist/lib/inspect-routes.js.map +0 -1
  162. package/dist/lib/start-repl.d.ts +0 -2
  163. package/dist/lib/start-repl.d.ts.map +0 -1
  164. package/dist/lib/start-repl.js +0 -120
  165. package/dist/lib/start-repl.js.map +0 -1
  166. package/dist/sanitize/sanitize.d.ts +0 -33
  167. package/dist/sanitize/sanitize.d.ts.map +0 -1
  168. package/dist/sanitize/sanitize.js +0 -104
  169. package/dist/sanitize/sanitize.js.map +0 -1
  170. /package/dist/{cli → lib}/resolve-aliases.d.ts +0 -0
  171. /package/dist/{cli → lib}/resolve-aliases.js +0 -0
@@ -1,120 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const node_repl_1 = __importDefault(require("node:repl"));
40
- const node_url_1 = require("node:url");
41
- const node_fs_1 = __importDefault(require("node:fs"));
42
- const node_path_1 = __importDefault(require("node:path"));
43
- async function startRepl() {
44
- const entryFile = process.env.EXIS_ENTRY_FILE;
45
- if (!entryFile) {
46
- console.error('EXIS_ENTRY_FILE environment variable is missing.');
47
- process.exit(1);
48
- }
49
- try {
50
- const cwd = process.cwd();
51
- const dynamicImport = new Function('specifier', 'return import(specifier)');
52
- // 1. Load .env files so process.env is populated
53
- const { loadEnv } = await Promise.resolve().then(() => __importStar(require('../config/env.js')));
54
- loadEnv(cwd);
55
- // 2. Auto-load Environment variables validation file if it exists
56
- const envFiles = [
57
- node_path_1.default.join(cwd, 'src', 'config', 'env.ts'),
58
- node_path_1.default.join(cwd, 'src', 'config', 'env.js'),
59
- ];
60
- for (const envFile of envFiles) {
61
- if (node_fs_1.default.existsSync(envFile)) {
62
- await dynamicImport((0, node_url_1.pathToFileURL)(envFile).href);
63
- break;
64
- }
65
- }
66
- const url = (0, node_url_1.pathToFileURL)(entryFile).href;
67
- const mod = await dynamicImport(url);
68
- // Support declarative `export default exis({ ... })`
69
- const app = mod.default || mod.app;
70
- if (app &&
71
- typeof app.create === 'function' &&
72
- typeof app.listen === 'function') {
73
- // Boot the app plugins and database connections without starting HTTP server
74
- await app.create();
75
- if (typeof app.onStartHook === 'function') {
76
- await app.onStartHook(app);
77
- }
78
- }
79
- // 3. Auto-discover and inject Models
80
- const modelsToInject = {};
81
- const possibleModelDirs = [
82
- node_path_1.default.join(cwd, 'src', 'models'),
83
- node_path_1.default.join(cwd, 'models'),
84
- ];
85
- for (const dir of possibleModelDirs) {
86
- if (node_fs_1.default.existsSync(dir)) {
87
- const files = node_fs_1.default.readdirSync(dir);
88
- for (const file of files) {
89
- if (file.endsWith('.ts') || file.endsWith('.js')) {
90
- const modelPath = node_path_1.default.join(dir, file);
91
- const modelUrl = (0, node_url_1.pathToFileURL)(modelPath).href;
92
- const modelMod = await dynamicImport(modelUrl).catch(() => ({}));
93
- // Look for exported classes/variables that might be models
94
- for (const key in modelMod) {
95
- if (key === 'default') {
96
- const name = node_path_1.default.basename(file, node_path_1.default.extname(file));
97
- modelsToInject[name] = modelMod.default;
98
- }
99
- else {
100
- modelsToInject[key] = modelMod[key];
101
- }
102
- }
103
- }
104
- }
105
- }
106
- }
107
- if (Object.keys(modelsToInject).length > 0) {
108
- console.log(`\x1b[32m[exis]\x1b[0m Auto-injected models: ${Object.keys(modelsToInject).join(', ')}`);
109
- }
110
- const replServer = node_repl_1.default.start({ prompt: 'exis> ' });
111
- replServer.context.app = app;
112
- Object.assign(replServer.context, modelsToInject);
113
- }
114
- catch (err) {
115
- console.error(err);
116
- process.exit(1);
117
- }
118
- }
119
- startRepl();
120
- //# sourceMappingURL=start-repl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start-repl.js","sourceRoot":"","sources":["../../src/lib/start-repl.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * ExisJS Sanitize Engine
3
- *
4
- * A collection of pure functions for transforming data before business logic validation.
5
- * These are designed to be composable with the `ValidatorType.sanitize()` method.
6
- */
7
- export declare const sanitize: {
8
- trim: (val: any) => any;
9
- toLowerCase: (val: any) => any;
10
- toUpperCase: (val: any) => any;
11
- collapseWhitespace: (val: any) => any;
12
- stripHtml: (val: any) => any;
13
- escapeHtml: (val: any) => any;
14
- normalizeUnicode: (val: any) => any;
15
- slugify: (val: any) => any;
16
- truncate: (length: number) => (val: any) => any;
17
- removeNonAlphanumeric: (val: any) => any;
18
- normalizeLineEndings: (val: any) => any;
19
- round: (val: number) => number;
20
- clamp: (min: number, max: number) => (val: number) => number;
21
- defaultIfNaN: (fallback: number) => (val: number) => number;
22
- normalizeToIsoString: (val: Date) => string;
23
- stripTime: (val: Date) => Date;
24
- dedupe: <T>(val: T[]) => T[];
25
- compact: <T>(val: T[]) => Exclude<T, null | undefined | "">[];
26
- trimElements: (val: string[]) => string[];
27
- limitLength: <T>(length: number) => (val: T[]) => T[];
28
- stripUnknownKeys: <T extends Record<string, any>>(allowedKeys: (keyof T)[]) => (val: T) => T;
29
- deepTrimStringValues: <T extends Record<string, any>>(val: T) => T;
30
- omit: <T extends Record<string, any>, K extends keyof T>(keys: K[]) => (val: T) => Omit<T, K>;
31
- pick: <T extends Record<string, any>, K extends keyof T>(keys: K[]) => (val: T) => Pick<T, K>;
32
- };
33
- //# sourceMappingURL=sanitize.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/sanitize/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,eAAO,MAAM,QAAQ;gBALb,GAAG,KAAG,GAAG;uBAAT,GAAG,KAAG,GAAG;uBAAT,GAAG,KAAG,GAAG;8BAAT,GAAG,KAAG,GAAG;qBAAT,GAAG,KAAG,GAAG;sBAAT,GAAG,KAAG,GAAG;4BAAT,GAAG,KAAG,GAAG;mBAAT,GAAG,KAAG,GAAG;uBAyCJ,MAAM,MACd,KAAK,GAAG,KAAG,GAAG;iCA1CX,GAAG,KAAG,GAAG;gCAAT,GAAG,KAAG,GAAG;iBAsDF,MAAM,KAAG,MAAM;iBAGpB,MAAM,OAAO,MAAM,MACxB,KAAK,MAAM,KAAG,MAAM;6BAIV,MAAM,MAChB,KAAK,MAAM,KAAG,MAAM;gCAKK,IAAI,KAAG,MAAM;qBAExB,IAAI,KAAG,IAAI;aAQnB,CAAC,OAAO,CAAC,EAAE,KAAG,CAAC,EAAE;cAEhB,CAAC,OAAO,CAAC,EAAE,KAAG,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;wBAKvC,MAAM,EAAE,KAAG,MAAM,EAAE;kBAIpC,CAAC,UAAU,MAAM,MACjB,KAAK,CAAC,EAAE,KAAG,CAAC,EAAE;uBAMd,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,MACvD,KAAK,CAAC,KAAG,CAAC;2BAQU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAG,CAAC;WAmB7D,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,EAAE,MAC3D,KAAK,CAAC,KAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;WASnB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,EAAE,MAC3D,KAAK,CAAC,KAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;CAOvB,CAAA"}
@@ -1,104 +0,0 @@
1
- "use strict";
2
- /**
3
- * ExisJS Sanitize Engine
4
- *
5
- * A collection of pure functions for transforming data before business logic validation.
6
- * These are designed to be composable with the `ValidatorType.sanitize()` method.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.sanitize = void 0;
10
- const safeString = (fn) => (val) => {
11
- if (val === null || val === undefined)
12
- return val;
13
- return typeof val === 'string' ? fn(val) : val;
14
- };
15
- exports.sanitize = {
16
- // ─── String Sanitizers ────────────────────────────────────────────────────────
17
- trim: safeString((val) => val.trim()),
18
- toLowerCase: safeString((val) => val.toLowerCase()),
19
- toUpperCase: safeString((val) => val.toUpperCase()),
20
- collapseWhitespace: safeString((val) => val.replace(/\s+/g, ' ')),
21
- stripHtml: safeString((val) => val.replace(/<[^>]*>?/gm, '')),
22
- escapeHtml: safeString((val) => val.replace(/[&<>"']/g, (m) => {
23
- const map = {
24
- '&': '&amp;',
25
- '<': '&lt;',
26
- '>': '&gt;',
27
- '"': '&quot;',
28
- "'": '&#39;',
29
- };
30
- return map[m] || m;
31
- })),
32
- normalizeUnicode: safeString((val) => val.normalize('NFC')),
33
- slugify: safeString((val) => val
34
- .toLowerCase()
35
- .replace(/[^a-z0-9]+/g, '-')
36
- .replace(/(^-|-$)/g, '')),
37
- truncate: (length) => (val) => {
38
- if (val === null || val === undefined || typeof val !== 'string')
39
- return val;
40
- return val.length > length ? val.substring(0, length) : val;
41
- },
42
- removeNonAlphanumeric: safeString((val) => val.replace(/[^a-zA-Z0-9]/g, '')),
43
- normalizeLineEndings: safeString((val) => val.replace(/\r\n/g, '\n')),
44
- // ─── Number Sanitizers ────────────────────────────────────────────────────────
45
- round: (val) => Math.round(val),
46
- clamp: (min, max) => (val) => Math.max(min, Math.min(max, val)),
47
- defaultIfNaN: (fallback) => (val) => Number.isNaN(val) ? fallback : val,
48
- // ─── Date Sanitizers ──────────────────────────────────────────────────────────
49
- normalizeToIsoString: (val) => val.toISOString(),
50
- stripTime: (val) => {
51
- const d = new Date(val);
52
- d.setHours(0, 0, 0, 0);
53
- return d;
54
- },
55
- // ─── Array Sanitizers ─────────────────────────────────────────────────────────
56
- dedupe: (val) => Array.from(new Set(val)),
57
- compact: (val) => val.filter((v) => v !== null && v !== undefined && v !== ''),
58
- trimElements: (val) => val.map((v) => (typeof v === 'string' ? v.trim() : v)),
59
- limitLength: (length) => (val) => val.slice(0, length),
60
- // ─── Object Sanitizers ────────────────────────────────────────────────────────
61
- stripUnknownKeys: (allowedKeys) => (val) => {
62
- const res = {};
63
- for (const key of allowedKeys) {
64
- if (key in val)
65
- res[key] = val[key];
66
- }
67
- return res;
68
- },
69
- deepTrimStringValues: (val) => {
70
- const walk = (obj) => {
71
- if (typeof obj === 'string')
72
- return obj.trim();
73
- if (Array.isArray(obj))
74
- return obj.map(walk);
75
- if (obj !== null && typeof obj === 'object') {
76
- const res = {};
77
- for (const k in obj) {
78
- if (Object.prototype.hasOwnProperty.call(obj, k)) {
79
- res[k] = walk(obj[k]);
80
- }
81
- }
82
- return res;
83
- }
84
- return obj;
85
- };
86
- return walk(val);
87
- },
88
- omit: (keys) => (val) => {
89
- const res = { ...val };
90
- for (const k of keys) {
91
- delete res[k];
92
- }
93
- return res;
94
- },
95
- pick: (keys) => (val) => {
96
- const res = {};
97
- for (const k of keys) {
98
- if (k in val)
99
- res[k] = val[k];
100
- }
101
- return res;
102
- },
103
- };
104
- //# sourceMappingURL=sanitize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/sanitize/sanitize.ts"],"names":[],"mappings":"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"}
File without changes
File without changes