-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.js
74 lines (68 loc) · 2.15 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* @license
* Copyright 2018 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
require('module-keys/cjs').polyfill(module, require);
const { SqlFragment } = require('./lib/fragment.js');
const { SqlId } = require('./lib/id.js');
const { makeSqlTagFunction } = require('./lib/tag-fn.js');
const { Mintable } = require('node-sec-patterns');
const mintSqlFragment = require.moduleKeys.unbox(
Mintable.minterFor(SqlFragment),
() => true,
String);
let mysql = null;
let pg = null; // eslint-disable-line id-length
Object.defineProperties(module.exports, {
mysql: {
// Lazily load MySQL machinery since
// PG users are unlikely to use MySQL and vice-versa.
get() {
if (!mysql) {
// eslint-disable-next-line global-require
const lexer = require('./lib/mysql-lexer.js');
// eslint-disable-next-line global-require
const { escape, escapeDelimited } = require('./lib/mysql-escaper.js');
mysql = makeSqlTagFunction(
lexer, escape, escapeDelimited, true, mintSqlFragment);
}
return mysql;
},
enumerable: true,
},
pg: {
get() {
if (!pg) {
// eslint-disable-next-line global-require
const lexer = require('./lib/pg-lexer.js');
// eslint-disable-next-line global-require
const { escape, escapeDelimited } = require('./lib/pg-escaper.js');
pg = makeSqlTagFunction(
lexer, escape, escapeDelimited, false, mintSqlFragment);
}
return pg;
},
enumerable: true,
},
SqlId: {
value: SqlId,
enumerable: true,
},
SqlFragment: {
value: SqlFragment,
enumerable: true,
},
});