@eggjs/dal-runtime 4.0.0-beta.34 → 4.0.0-beta.36

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.
@@ -1,74 +1,64 @@
1
- import nunjucks, { Template } from 'nunjucks';
2
- import sqlstring from 'sqlstring';
3
1
  import { NunjucksConverter } from "./NunjucksConverter.js";
4
2
  import { SqlUtil } from "./SqlUtil.js";
3
+ import nunjucks, { Template } from "nunjucks";
4
+ import sqlstring from "sqlstring";
5
+
6
+ //#region src/NunjucksUtil.ts
5
7
  const compiler = nunjucks.compiler;
6
8
  const envs = {};
7
- const ROOT_RENDER_FUNC = Symbol('rootRenderFunc');
8
- const RUNTIME = Object.assign({}, nunjucks.runtime, {
9
- escapeSQL: function escapeSQL(key, value) {
10
- // 如果是预定义 block 则不转义
11
- if (this.env.globals[key])
12
- return value;
13
- return sqlstring.escape(value, true, this.env.timezone);
14
- },
15
- });
9
+ const ROOT_RENDER_FUNC = Symbol("rootRenderFunc");
10
+ const RUNTIME = Object.assign({}, nunjucks.runtime, { escapeSQL: function escapeSQL(key, value) {
11
+ if (this.env.globals[key]) return value;
12
+ return sqlstring.escape(value, true, this.env.timezone);
13
+ } });
16
14
  function _replaceCodeWithSQLFeature(source) {
17
- const funcs = [
18
- 'convertNormalVariableCode', // 普通变量
19
- 'convertTernaryCode', // 三目运算
20
- 'convertNestedObjectCode', // 对象中的变量,如 `user.id`
21
- 'convertValueInsideFor', // for 中的值需要转义
22
- ];
23
- return funcs.reduce((source, func) => NunjucksConverter[func](source), source);
15
+ return [
16
+ "convertNormalVariableCode",
17
+ "convertTernaryCode",
18
+ "convertNestedObjectCode",
19
+ "convertValueInsideFor"
20
+ ].reduce((source$1, func) => NunjucksConverter[func](source$1), source);
24
21
  }
25
22
  /**
26
- * compile the string into function
27
- * @see https://github.com/mozilla/nunjucks/blob/2fd547f/src/environment.js#L571-L592
28
- */
23
+ * compile the string into function
24
+ * @see https://github.com/mozilla/nunjucks/blob/2fd547f/src/environment.js#L571-L592
25
+ */
29
26
  function _compile() {
30
- let source = compiler.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts);
31
- /**
32
- * 将一些 Nunjucks 的 HTML 转义的代码转换成 SQL 防注入的代码
33
- */
34
- source = _replaceCodeWithSQLFeature(source);
35
- // eslint-disable-next-line
36
- const props = new Function(source)();
37
- this.blocks = this._getBlocks(props);
38
- this[ROOT_RENDER_FUNC] = props.root;
39
- this.rootRenderFunc = function (env, context, frame, _runtime, cb) {
40
- /**
41
- * 1. runtime 遗弃,用新的
42
- * 2. 移除 SQL 语句中多余空白符
43
- */
44
- return this[ROOT_RENDER_FUNC](env, context, frame, RUNTIME, function (err, ret) {
45
- // istanbul ignore if
46
- if (err)
47
- return cb(err, ret);
48
- return cb(err, SqlUtil.minify(ret || ''));
49
- });
50
- };
51
- this.compiled = true;
27
+ let source = compiler.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts);
28
+ /**
29
+ * 将一些 Nunjucks 的 HTML 转义的代码转换成 SQL 防注入的代码
30
+ */
31
+ source = _replaceCodeWithSQLFeature(source);
32
+ const props = new Function(source)();
33
+ this.blocks = this._getBlocks(props);
34
+ this[ROOT_RENDER_FUNC] = props.root;
35
+ this.rootRenderFunc = function(env, context, frame, _runtime, cb) {
36
+ /**
37
+ * 1. 将 runtime 遗弃,用新的
38
+ * 2. 移除 SQL 语句中多余空白符
39
+ */
40
+ return this[ROOT_RENDER_FUNC](env, context, frame, RUNTIME, function(err, ret) {
41
+ // istanbul ignore if
42
+ if (err) return cb(err, ret);
43
+ return cb(err, SqlUtil.minify(ret || ""));
44
+ });
45
+ };
46
+ this.compiled = true;
52
47
  }
53
- export class NunjucksUtils {
54
- static createEnv(modelName) {
55
- if (envs[modelName])
56
- return envs[modelName];
57
- const env = (envs[modelName] = nunjucks.configure({
58
- autoescape: false,
59
- }));
60
- return env;
61
- }
62
- static compile(modelName, sqlName, sql) {
63
- // istanbul ignore if
64
- if (!envs[modelName]) {
65
- throw new Error(`you should create an Environment for ${modelName} first.`);
66
- }
67
- const template = new Template(sql, envs[modelName], `egg-dal:MySQL:${modelName}:${sqlName}`, false);
68
- // 做一些 hack,使得支持 MySQL 的一些 Escape
69
- template._compile = _compile;
70
- template.compile();
71
- return template;
72
- }
73
- }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVuanVja3NVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL051bmp1Y2tzVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBb0IsTUFBTSxVQUFVLENBQUM7QUFDaEUsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdkMsTUFBTSxRQUFRLEdBQUksUUFBZ0IsQ0FBQyxRQUFRLENBQUM7QUFDNUMsTUFBTSxJQUFJLEdBQWdDLEVBQUUsQ0FBQztBQUU3QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDbEQsU0FBUyxFQUFFLFNBQVMsU0FBUyxDQUFZLEdBQVcsRUFBRSxLQUFjO1FBQ2xFLG9CQUFvQjtRQUNwQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILFNBQVMsMEJBQTBCLENBQUMsTUFBYztJQUNoRCxNQUFNLEtBQUssR0FBRztRQUNaLDJCQUEyQixFQUFFLE9BQU87UUFDcEMsb0JBQW9CLEVBQUUsT0FBTztRQUM3Qix5QkFBeUIsRUFBRSxxQkFBcUI7UUFDaEQsdUJBQXVCLEVBQUUsY0FBYztLQUMvQixDQUFDO0lBRVgsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFD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
48
+ var NunjucksUtils = class {
49
+ static createEnv(modelName) {
50
+ if (envs[modelName]) return envs[modelName];
51
+ return envs[modelName] = nunjucks.configure({ autoescape: false });
52
+ }
53
+ static compile(modelName, sqlName, sql) {
54
+ // istanbul ignore if
55
+ if (!envs[modelName]) throw new Error(`you should create an Environment for ${modelName} first.`);
56
+ const template = new Template(sql, envs[modelName], `egg-dal:MySQL:${modelName}:${sqlName}`, false);
57
+ template._compile = _compile;
58
+ template.compile();
59
+ return template;
60
+ }
61
+ };
62
+
63
+ //#endregion
64
+ export { NunjucksUtils };
@@ -1,9 +1,13 @@
1
- import { TableModel } from '@eggjs/dal-decorator';
2
- export declare class SqlGenerator {
3
- private formatComment;
4
- private generateColumn;
5
- private generateColumnType;
6
- private generateIndex;
7
- private generateTableOptions;
8
- generate(tableModel: TableModel): string;
1
+ import { TableModel } from "@eggjs/dal-decorator";
2
+
3
+ //#region src/SqlGenerator.d.ts
4
+ declare class SqlGenerator {
5
+ private formatComment;
6
+ private generateColumn;
7
+ private generateColumnType;
8
+ private generateIndex;
9
+ private generateTableOptions;
10
+ generate(tableModel: TableModel): string;
9
11
  }
12
+ //#endregion
13
+ export { SqlGenerator };