@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.
- package/dist/BaseSqlMap.d.ts +17 -14
- package/dist/BaseSqlMap.js +168 -222
- package/dist/CodeGenerator.d.ts +16 -13
- package/dist/CodeGenerator.js +118 -149
- package/dist/DaoLoader.d.ts +7 -3
- package/dist/DaoLoader.js +16 -14
- package/dist/DataSource.d.ts +30 -26
- package/dist/DataSource.js +71 -74
- package/dist/DatabaseForker.d.ts +15 -11
- package/dist/DatabaseForker.js +48 -51
- package/dist/MySqlDataSource.d.ts +25 -21
- package/dist/MySqlDataSource.js +53 -54
- package/dist/NunjucksConverter.d.ts +75 -72
- package/dist/NunjucksConverter.js +90 -94
- package/dist/NunjucksUtil.d.ts +8 -4
- package/dist/NunjucksUtil.js +55 -65
- package/dist/SqlGenerator.d.ts +12 -8
- package/dist/SqlGenerator.js +224 -386
- package/dist/SqlMapLoader.d.ts +13 -9
- package/dist/SqlMapLoader.js +23 -21
- package/dist/SqlUtil.d.ts +5 -2
- package/dist/SqlUtil.js +185 -214
- package/dist/TableModelInstanceBuilder.d.ts +9 -5
- package/dist/TableModelInstanceBuilder.js +25 -23
- package/dist/TableSqlMap.d.ts +17 -18
- package/dist/TableSqlMap.js +84 -88
- package/dist/TemplateUtil.d.ts +21 -18
- package/dist/TemplateUtil.js +75 -86
- package/dist/index.d.ts +15 -15
- package/dist/index.js +16 -16
- package/package.json +29 -33
package/dist/NunjucksUtil.js
CHANGED
|
@@ -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(
|
|
8
|
-
const RUNTIME = Object.assign({}, nunjucks.runtime, {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
27
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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 };
|
package/dist/SqlGenerator.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { TableModel } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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 };
|