@digitalwalletcorp/sql-builder 1.2.4 → 1.3.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.
@@ -63,11 +63,9 @@ class AbstractSyntaxTree {
63
63
  */
64
64
  evaluateCondition(condition, entity) {
65
65
  try {
66
- // 一般的な条件チェックのルーチンをまとめて実施する
67
- // 生成されたトークンに手を加えたい場合、各関数はpublicになっているので個別に呼び出し可能
68
- const tokens = this.tokenize(condition); // トークン化
69
- const rpnTokens = this.shuntingYard(tokens); // RPN変換
70
- const result = this.evaluateRpn(rpnTokens, entity); // 評価
66
+ const tokens = this.tokenize(condition);
67
+ const rpnTokens = this.shuntingYard(tokens);
68
+ const result = this.evaluateRpn(rpnTokens, entity);
71
69
  return result;
72
70
  }
73
71
  catch (error) {
@@ -127,10 +125,6 @@ class AbstractSyntaxTree {
127
125
  tokens.push({ type: 'OPERATOR', value: chunk1 });
128
126
  i += 1;
129
127
  continue;
130
- // case '.':
131
- // tokens.push({ type: 'IDENTIFIER', value: chunk1 }); // '.'も識別子の一部として扱う
132
- // i += 1;
133
- // continue;
134
128
  case '(':
135
129
  case ')':
136
130
  tokens.push({ type: 'PARENTHESIS', value: chunk1 });
@@ -175,8 +169,9 @@ class AbstractSyntaxTree {
175
169
  }
176
170
  default:
177
171
  }
178
- // 識別子 (変数名, true, false, null, undefined, length)
179
- const identMatch = reststring.match(/^[a-zA-Z_][a-zA-Z0-9_.]*/); // ドットを含む識別子
172
+ // 識別子 (変数名, true, false, null, undefined, length, ?.を含むプロパティチェーン)
173
+ // ドットと疑問符を含んだプロパティチェーンを識別子としてパースする
174
+ const identMatch = reststring.match(/^[a-zA-Z_][a-zA-Z0-9_.]*(\?\.?[a-zA-Z0-9_]+)*/);
180
175
  if (identMatch) {
181
176
  const ident = identMatch[0];
182
177
  switch (ident) {
@@ -292,6 +287,7 @@ class AbstractSyntaxTree {
292
287
  stack.push(token.value);
293
288
  break;
294
289
  case 'IDENTIFIER':
290
+ // オプショナルチェイニングを考慮したgetPropertyを呼び出す
295
291
  stack.push(common.getProperty(entity, token.value));
296
292
  break;
297
293
  case 'OPERATOR':
@@ -344,6 +340,7 @@ class AbstractSyntaxTree {
344
340
  if (stack.length !== 1) {
345
341
  throw new Error(`Invalid expression: ${JSON.stringify(rpnTokens)}`);
346
342
  }
343
+ // undefinedやnullが返ってきた場合、falseと評価されるようにする
347
344
  return !!stack[0];
348
345
  }
349
346
  }
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-syntax-tree.js","sourceRoot":"","sources":["../src/abstract-syntax-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-syntax-tree.js","sourceRoot":"","sources":["../src/abstract-syntax-tree.ts"],"names":[],"mappings":"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"}
package/lib/common.js CHANGED
@@ -9,16 +9,29 @@ exports.getProperty = getProperty;
9
9
  * @returns {any}
10
10
  */
11
11
  function getProperty(entity, property) {
12
- const propertyPath = property.split('.');
13
- let value = entity;
14
- for (const prop of propertyPath) {
15
- if (value && value.hasOwnProperty(prop)) {
16
- value = value[prop];
12
+ // `?.` または `.` でパスを分割
13
+ const propertyPath = property.split(/(\?\.)|\./).filter(Boolean);
14
+ // 再帰呼び出し用のヘルパー関数
15
+ const get = (obj, keys) => {
16
+ if (keys.length === 0) {
17
+ return obj;
17
18
  }
18
- else {
19
+ // オプショナルチェイニングのチェック
20
+ if (obj == null) {
19
21
  return undefined;
20
22
  }
21
- }
22
- return value;
23
+ const currentKey = keys[0];
24
+ const remainingKeys = keys.slice(1);
25
+ // `?.` のトークンはスキップ
26
+ if (currentKey === '?.') {
27
+ return get(obj, remainingKeys);
28
+ }
29
+ // プロパティが存在しない場合は undefined を返す
30
+ if (!obj.hasOwnProperty(currentKey)) {
31
+ return undefined;
32
+ }
33
+ return get(obj[currentKey], remainingKeys);
34
+ };
35
+ return get(entity, propertyPath);
23
36
  }
24
37
  //# sourceMappingURL=common.js.map
package/lib/common.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;AAOA,kCAWC;AAlBD;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,MAA2B,EAAE,QAAgB;IACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;AAOA,kCA4BC;AAnCD;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,MAA2B,EAAE,QAAgB;IACvE,sBAAsB;IACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjE,iBAAiB;IACjB,MAAM,GAAG,GAAG,CAAC,GAAwB,EAAE,IAAc,EAAO,EAAE;QAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,oBAAoB;QACpB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEpC,kBAAkB;QAClB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACjC,CAAC;QACD,+BAA+B;QAC/B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC,CAAC;IACF,OAAO,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACnC,CAAC"}
@@ -4,15 +4,18 @@
4
4
  * SQLite: ?, $name, :name 配列またはオブジェクト
5
5
  * Oracle: :name オブジェクト
6
6
  * SQL Server: `@name` 配列またはオブジェクト
7
+ * BigQuery: `@name` オブジェクト
7
8
  *
8
9
  * 以下をサポートする
9
10
  * ・$1, $2 (postgres)
10
11
  * ・? (mysql) SQLite, SQL Serverもこれで代替可能
11
12
  * ・:name (oracle) SQLiteもこれで代替可能
12
13
  * ・`@name` (mssql)
14
+ * ・`@name` (bigquery)
13
15
  */
14
- type BindType = 'postgres' | 'mysql' | 'oracle' | 'mssql';
15
- type BindParameterType<T extends 'postgres' | 'mysql' | 'oracle' | 'mssql'> = T extends 'postgres' ? any[] : T extends 'mysql' ? any[] : T extends 'oracle' ? Record<string, any> : T extends 'mssql' ? Record<string, any> : undefined;
16
+ declare const dbTypes: readonly ["postgres", "mysql", "oracle", "mssql", "bigquery"];
17
+ type BindType = typeof dbTypes[number];
18
+ type BindParameterType<T extends BindType> = T extends 'postgres' ? any[] : T extends 'mysql' ? any[] : T extends 'oracle' ? Record<string, any> : T extends 'mssql' ? Record<string, any> : undefined;
16
19
  /**
17
20
  * 動的SQLを生成する
18
21
  *
@@ -55,7 +58,8 @@ type BindParameterType<T extends 'postgres' | 'mysql' | 'oracle' | 'mssql'> = T
55
58
  */
56
59
  export declare class SQLBuilder {
57
60
  private REGEX_TAG_PATTERN;
58
- constructor();
61
+ private bindType?;
62
+ constructor(bindType?: BindType);
59
63
  /**
60
64
  * 指定したテンプレートにエンティティの値をバインドしたSQLを生成する
61
65
  *
@@ -70,10 +74,10 @@ export declare class SQLBuilder {
70
74
  *
71
75
  * @param {string} template
72
76
  * @param {Record<string, any>} entity
73
- * @param {BindType} bindType
77
+ * @param {BindType} [bindType]
74
78
  * @returns {[string, BindParameterType<T>]}
75
79
  */
76
- generateParameterizedSQL<T extends BindType>(template: string, entity: Record<string, any>, bindType: T): [string, BindParameterType<T>];
80
+ generateParameterizedSQL<T extends BindType>(template: string, entity: Record<string, any>, bindType?: T): [string, BindParameterType<T>];
77
81
  /**
78
82
  * テンプレートに含まれるタグ構成を解析してコンテキストを返す
79
83
  *
@@ -122,6 +126,9 @@ export declare class SQLBuilder {
122
126
  * 'abc'
123
127
  * * 返却する値がnumber型の場合はそのまま返す
124
128
  * 1234
129
+ * * 返却する値がboolean型の場合はそのまま返す
130
+ * true
131
+ * false
125
132
  *
126
133
  * @param {string} property `obj.param1.param2`などのドットで繋いだプロパティ
127
134
  * @param {Record<string, any>} entity
@@ -36,6 +36,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.SQLBuilder = void 0;
37
37
  const common = __importStar(require("./common"));
38
38
  const abstract_syntax_tree_1 = require("./abstract-syntax-tree");
39
+ /**
40
+ * PostgreSQL: $1, $2... 配列
41
+ * MySQL: ? 配列
42
+ * SQLite: ?, $name, :name 配列またはオブジェクト
43
+ * Oracle: :name オブジェクト
44
+ * SQL Server: `@name` 配列またはオブジェクト
45
+ * BigQuery: `@name` オブジェクト
46
+ *
47
+ * 以下をサポートする
48
+ * ・$1, $2 (postgres)
49
+ * ・? (mysql) SQLite, SQL Serverもこれで代替可能
50
+ * ・:name (oracle) SQLiteもこれで代替可能
51
+ * ・`@name` (mssql)
52
+ * ・`@name` (bigquery)
53
+ */
54
+ const dbTypes = [
55
+ 'postgres',
56
+ 'mysql',
57
+ 'oracle',
58
+ 'mssql',
59
+ 'bigquery'
60
+ ];
39
61
  /**
40
62
  * 動的SQLを生成する
41
63
  *
@@ -78,7 +100,9 @@ const abstract_syntax_tree_1 = require("./abstract-syntax-tree");
78
100
  */
79
101
  class SQLBuilder {
80
102
  REGEX_TAG_PATTERN = /\/\*(.*?)\*\//g;
81
- constructor() {
103
+ bindType;
104
+ constructor(bindType) {
105
+ this.bindType = bindType;
82
106
  }
83
107
  /**
84
108
  * 指定したテンプレートにエンティティの値をバインドしたSQLを生成する
@@ -106,24 +130,27 @@ class SQLBuilder {
106
130
  *
107
131
  * @param {string} template
108
132
  * @param {Record<string, any>} entity
109
- * @param {BindType} bindType
133
+ * @param {BindType} [bindType]
110
134
  * @returns {[string, BindParameterType<T>]}
111
135
  */
112
136
  generateParameterizedSQL(template, entity, bindType) {
137
+ const bt = bindType || this.bindType;
138
+ if (!bt) {
139
+ throw new Error('The bindType parameter is mandatory if bindType is not provided in the constructor.');
140
+ }
113
141
  let bindParams;
114
- switch (bindType) {
142
+ switch (bt) {
115
143
  case 'postgres':
116
144
  case 'mysql':
117
145
  bindParams = [];
118
146
  break;
119
147
  case 'oracle':
120
- bindParams = {};
121
- break;
122
148
  case 'mssql':
149
+ case 'bigquery':
123
150
  bindParams = {};
124
151
  break;
125
152
  default:
126
- throw new Error(`Unsupported bind type: ${bindType}`);
153
+ throw new Error(`Unsupported bind type: ${bt}`);
127
154
  }
128
155
  /**
129
156
  * 「\/* *\/」で囲まれたすべての箇所を抽出
@@ -135,7 +162,7 @@ class SQLBuilder {
135
162
  const tagContexts = this.createTagContexts(template);
136
163
  const pos = { index: 0 };
137
164
  const result = this.parse(pos, template, entity, tagContexts, {
138
- bindType: bindType,
165
+ bindType: bt,
139
166
  bindIndex: 1,
140
167
  bindParams: bindParams
141
168
  });
@@ -194,7 +221,7 @@ class SQLBuilder {
194
221
  default: {
195
222
  tagContext.type = 'BIND';
196
223
  const contentMatcher = matchContent.match(/\/\*(.*?)\*\//);
197
- tagContext.contents = contentMatcher && contentMatcher[1] || '';
224
+ tagContext.contents = contentMatcher && contentMatcher[1]?.trim() || '';
198
225
  // ダミー値の終了位置をendIndexに設定
199
226
  const dummyEndIndex = this.getDummyParamEndIndex(template, tagContext);
200
227
  tagContext.endIndex = dummyEndIndex;
@@ -390,8 +417,9 @@ class SQLBuilder {
390
417
  }
391
418
  break;
392
419
  }
393
- case 'mssql': {
394
- // SQL Server形式の場合、名前付きバインドでバインドパラメータを展開
420
+ case 'mssql':
421
+ case 'bigquery': {
422
+ // SQL Server/BigQuery形式の場合、名前付きバインドでバインドパラメータを展開
395
423
  if (Array.isArray(value)) {
396
424
  const placeholders = [];
397
425
  for (let i = 0; i < value.length; i++) {
@@ -520,6 +548,9 @@ class SQLBuilder {
520
548
  * 'abc'
521
549
  * * 返却する値がnumber型の場合はそのまま返す
522
550
  * 1234
551
+ * * 返却する値がboolean型の場合はそのまま返す
552
+ * true
553
+ * false
523
554
  *
524
555
  * @param {string} property `obj.param1.param2`などのドットで繋いだプロパティ
525
556
  * @param {Record<string, any>} entity
@@ -528,27 +559,21 @@ class SQLBuilder {
528
559
  * @returns {string}
529
560
  */
530
561
  extractValue(property, entity, options) {
531
- try {
532
- const value = common.getProperty(entity, property);
533
- let result = '';
534
- switch (options?.responseType) {
535
- case 'array':
536
- case 'object':
537
- return value;
538
- default:
539
- // string
540
- if (Array.isArray(value)) {
541
- result = `(${value.map(v => typeof v === 'string' ? `'${this.escape(v)}'` : v).join(',')})`;
542
- }
543
- else {
544
- result = typeof value === 'string' ? `'${this.escape(value)}'` : value;
545
- }
546
- return result;
547
- }
548
- }
549
- catch (error) {
550
- console.warn('Error extracting value', property, entity, error);
551
- return undefined;
562
+ const value = common.getProperty(entity, property);
563
+ let result = '';
564
+ switch (options?.responseType) {
565
+ case 'array':
566
+ case 'object':
567
+ return value;
568
+ default:
569
+ // string
570
+ if (Array.isArray(value)) {
571
+ result = `(${value.map(v => typeof v === 'string' ? `'${this.escape(v)}'` : v).join(',')})`;
572
+ }
573
+ else {
574
+ result = typeof value === 'string' ? `'${this.escape(value)}'` : value;
575
+ }
576
+ return result;
552
577
  }
553
578
  }
554
579
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../src/sql-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../src/sql-builder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,iEAA4D;AAU5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,GAAG;IACd,UAAU;IACV,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;CACF,CAAC;AA0BX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAa,UAAU;IAEb,iBAAiB,GAAG,gBAAgB,CAAC;IAErC,QAAQ,CAAY;IAE5B,YAAY,QAAmB;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAAC,QAAgB,EAAE,MAA2B;QAC9D;;WAEG;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACI,wBAAwB,CAAqB,QAAgB,EAAE,MAA2B,EAAE,QAAY;QAE7G,MAAM,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAErC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACzG,CAAC;QAED,IAAI,UAAgC,CAAC;QACrC,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO;gBACV,UAAU,GAAG,EAAqC,CAAC;gBACnD,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,UAAU;gBACb,UAAU,GAAG,EAA0B,CAAC;gBACxC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QAED;;WAEG;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAC5D,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,QAAgB;QACxC,oDAAoD;QACpD;;WAEG;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE1D,0DAA0D;QAC1D,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;YAChB,MAAM,UAAU,GAAe;gBAC7B,IAAI,EAAE,MAAM,EAAE,4BAA4B;gBAC1C,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM;gBACrC,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC;aACV,CAAC;YACF,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC;oBAClC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC;oBAC1B,MAAM;gBACR,CAAC;gBACD,KAAK,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;oBACvB,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAClE,UAAU,CAAC,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChE,MAAM;gBACR,CAAC;gBACD,KAAK,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACtC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;oBACxB,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACnE,UAAU,CAAC,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChE,MAAM;gBACR,CAAC;gBACD,KAAK,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC;oBAChC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;oBACxB,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;oBACzB,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;oBAC3D,UAAU,CAAC,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACxE,wBAAwB;oBACxB,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBACvE,UAAU,CAAC,QAAQ,GAAG,aAAa,CAAC;gBACtC,CAAC;YACH,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAED,oEAAoE;QACpE,gBAAgB;QAChB;;;;;;;;;;WAUG;QACH,MAAM,iBAAiB,GAAiB,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAiB,EAAE,CAAC;QACxC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,OAAO,CAAC;gBACb,KAAK,IAAI,CAAC;gBACV,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzE,IAAI,gBAAgB,EAAE,CAAC;wBACrB,SAAS;wBACT,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC;wBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,cAAc;wBACd,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,CAAC;oBACD,sBAAsB;oBACtB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACnC,MAAM;gBACR,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,EAAG,CAAC;oBAClD,sCAAsC;oBACtC,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACtC,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzE,IAAI,gBAAgB,EAAE,CAAC;wBACrB,SAAS;wBACT,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC;wBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,cAAc;wBACd,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,KAAK,CAAqB,GAAgB,EAAE,QAAgB,EAAE,MAA2B,EAAE,WAAyB,EAAE,OAI7H;QACC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,6BAA6B;oBAC7B,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBACrE,MAAM;gBACR,CAAC;gBACD,KAAK,IAAI,CAAC,CAAC,CAAC;oBACV,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;wBACxD,4BAA4B;wBAC5B,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;wBACvB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBACvE,CAAC;yBAAM,CAAC;wBACN,kDAAkD;wBAClD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAChE,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC;oBACrC,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE;wBACtD,YAAY,EAAE,OAAO;qBACtB,CAAC,CAAC;oBACH,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;wBAC/D,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;4BAC1B,uCAAuC;4BACvC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;4BAChC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE;gCAClC,GAAG,MAAM;gCACT,CAAC,QAAQ,CAAC,EAAE,KAAK;6BAClB,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;4BAC5B,qBAAqB;4BACrB,MAAM,IAAI,IAAI,CAAC;wBACjB,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,kDAAkD;oBAClD,QAAQ,IAAI,EAAE,CAAC;wBACb,oDAAoD;wBACpD,KAAK,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO;+BACnC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;+BAClD,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;wBAC1E,uCAAuC;wBACvC,KAAK,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE;4BACtE,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;4BAChC,OAAO,EAAE,CAAC;wBACZ,QAAQ;oBACV,CAAC;oBACD,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC/D,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAChC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC9D,QAAQ,OAAO,EAAE,QAAQ,EAAE,CAAC;wBAC1B,KAAK,UAAU,CAAC,CAAC,CAAC;4BAChB,kCAAkC;4BAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oCACzB,YAAY,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oCAC5C,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC3C,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,gBAAgB;4BAC3D,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gCACnC,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC5C,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,KAAK,OAAO,CAAC,CAAC,CAAC;4BACb,4BAA4B;4BAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oCACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oCACtB,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC3C,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa;4BACxD,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,GAAG,CAAC;gCACb,OAAO,CAAC,UAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC5C,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;4BACd,oCAAoC;4BACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCACtC,sCAAsC;oCACtC,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAmC;oCACpF,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;oCAClC,OAAO,CAAC,UAAkC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gCACpE,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,qBAAqB;4BAChE,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gCACnC,OAAO,CAAC,UAAkC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;4BAC3E,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,KAAK,OAAO,CAAC;wBACb,KAAK,UAAU,CAAC,CAAC,CAAC;4BAChB,iDAAiD;4BACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAa,EAAE,CAAC;gCAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCACtC,sCAAsC;oCACtC,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAmC;oCACpF,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;oCAClC,OAAO,CAAC,UAAkC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gCACpE,CAAC;gCACD,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,qBAAqB;4BAChE,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gCACnC,OAAO,CAAC,UAAkC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;4BAC3E,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,OAAO,CAAC,CAAC,CAAC;4BACR,iBAAiB;4BACjB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;4BACpE,MAAM,IAAI,YAAY,IAAI,EAAE,CAAC;wBAC/B,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,QAAQ;YACV,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACK,qBAAqB,CAAC,QAAgB,EAAE,UAAsB;QACpE,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,qCAAqC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAa,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS;gBACT,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,CAAC,KAAK,GAAG;wBACZ,QAAQ;wBACR,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,IAAI;wBACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBACzC,QAAQ;gBACV,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,UAAU;gBACV,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,CAAC,KAAK,IAAI;wBACb,SAAS;wBACT,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,IAAI;wBACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBAC3C,QAAQ;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,CAAC,KAAK,IAAI;wBACb,SAAS;wBACT,MAAM,GAAG,IAAI,CAAC;wBACd,MAAM;oBACR,KAAK,CAAC,KAAK,GAAG;wBACZ,QAAQ;wBACR,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM;oBACR,KAAK,CAAC,KAAK,GAAG;wBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBACzC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;wBAC7C,SAAS;wBACT,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;wBAC7C,QAAQ;wBACR,OAAO,CAAC,GAAG,CAAC,CAAC;oBACf,KAAK,CAAC,KAAK,IAAI;wBACb,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4BACnC,OAAO;4BACP,OAAO,CAAC,GAAG,CAAC,CAAC;wBACf,CAAC;wBACD,KAAK;wBACL,OAAO,CAAC,CAAC;oBACX,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI;wBAC1B,OAAO;wBACP,OAAO,CAAC,CAAC;oBACX,KAAK,CAAC,KAAK,GAAG;wBACZ,OAAO,CAAC,CAAC;oBACX,QAAQ;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CAAC,SAAiB,EAAE,MAA2B;QACtE,MAAM,GAAG,GAAG,IAAI,yCAAkB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACK,YAAY,CAAqD,QAAgB,EAAE,MAA2B,EAAE,OAEvH;QACC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,QAAQ,OAAO,EAAE,YAAY,EAAE,CAAC;YAC9B,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,KAA4B,CAAC;YACtC;gBACE,SAAS;gBACT,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9F,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzE,CAAC;gBACD,OAAO,MAA6B,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,GAAW;QACxB,IAAI,aAAa,GAAG,GAAG,CAAC;QACxB,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpD,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AA7fD,gCA6fC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitalwalletcorp/sql-builder",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "This is a library for building SQL",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -1,7 +1,7 @@
1
1
  import * as common from './common';
2
2
 
3
3
  type Token =
4
- | { type: 'IDENTIFIER'; value: string } // 例: param, length
4
+ | { type: 'IDENTIFIER'; value: string } // 例: param, length, param?.length
5
5
  | { type: 'OPERATOR'; value: string } // 例: >, &&, ===, !=
6
6
  | { type: 'NUMBER'; value: number } // 例: 100.123
7
7
  | { type: 'BOOLEAN'; value: boolean } // 例: true, false
@@ -45,11 +45,9 @@ export class AbstractSyntaxTree {
45
45
  */
46
46
  public evaluateCondition(condition: string, entity: Record<string, any>): boolean {
47
47
  try {
48
- // 一般的な条件チェックのルーチンをまとめて実施する
49
- // 生成されたトークンに手を加えたい場合、各関数はpublicになっているので個別に呼び出し可能
50
- const tokens = this.tokenize(condition); // トークン化
51
- const rpnTokens = this.shuntingYard(tokens); // RPN変換
52
- const result = this.evaluateRpn(rpnTokens, entity); // 評価
48
+ const tokens = this.tokenize(condition);
49
+ const rpnTokens = this.shuntingYard(tokens);
50
+ const result = this.evaluateRpn(rpnTokens, entity);
53
51
  return result;
54
52
  } catch (error: any) {
55
53
  error.condition = condition;
@@ -110,10 +108,6 @@ export class AbstractSyntaxTree {
110
108
  tokens.push({ type: 'OPERATOR', value: chunk1 });
111
109
  i += 1;
112
110
  continue;
113
- // case '.':
114
- // tokens.push({ type: 'IDENTIFIER', value: chunk1 }); // '.'も識別子の一部として扱う
115
- // i += 1;
116
- // continue;
117
111
  case '(':
118
112
  case ')':
119
113
  tokens.push({ type: 'PARENTHESIS', value: chunk1 });
@@ -159,8 +153,9 @@ export class AbstractSyntaxTree {
159
153
  default:
160
154
  }
161
155
 
162
- // 識別子 (変数名, true, false, null, undefined, length)
163
- const identMatch = reststring.match(/^[a-zA-Z_][a-zA-Z0-9_.]*/); // ドットを含む識別子
156
+ // 識別子 (変数名, true, false, null, undefined, length, ?.を含むプロパティチェーン)
157
+ // ドットと疑問符を含んだプロパティチェーンを識別子としてパースする
158
+ const identMatch = reststring.match(/^[a-zA-Z_][a-zA-Z0-9_.]*(\?\.?[a-zA-Z0-9_]+)*/);
164
159
  if (identMatch) {
165
160
  const ident = identMatch[0];
166
161
  switch (ident) {
@@ -283,6 +278,7 @@ export class AbstractSyntaxTree {
283
278
  stack.push(token.value);
284
279
  break;
285
280
  case 'IDENTIFIER':
281
+ // オプショナルチェイニングを考慮したgetPropertyを呼び出す
286
282
  stack.push(common.getProperty(entity, token.value));
287
283
  break;
288
284
  case 'OPERATOR':
@@ -318,6 +314,7 @@ export class AbstractSyntaxTree {
318
314
  if (stack.length !== 1) {
319
315
  throw new Error(`Invalid expression: ${JSON.stringify(rpnTokens)}`);
320
316
  }
317
+ // undefinedやnullが返ってきた場合、falseと評価されるようにする
321
318
  return !!stack[0];
322
319
  }
323
320
  }
package/src/common.ts CHANGED
@@ -6,14 +6,31 @@
6
6
  * @returns {any}
7
7
  */
8
8
  export function getProperty(entity: Record<string, any>, property: string): any {
9
- const propertyPath = property.split('.');
10
- let value = entity;
11
- for (const prop of propertyPath) {
12
- if (value && value.hasOwnProperty(prop)) {
13
- value = value[prop];
14
- } else {
9
+ // `?.` または `.` でパスを分割
10
+ const propertyPath = property.split(/(\?\.)|\./).filter(Boolean);
11
+
12
+ // 再帰呼び出し用のヘルパー関数
13
+ const get = (obj: Record<string, any>, keys: string[]): any => {
14
+ if (keys.length === 0) {
15
+ return obj;
16
+ }
17
+ // オプショナルチェイニングのチェック
18
+ if (obj == null) {
19
+ return undefined;
20
+ }
21
+
22
+ const currentKey = keys[0];
23
+ const remainingKeys = keys.slice(1);
24
+
25
+ // `?.` のトークンはスキップ
26
+ if (currentKey === '?.') {
27
+ return get(obj, remainingKeys);
28
+ }
29
+ // プロパティが存在しない場合は undefined を返す
30
+ if (!obj.hasOwnProperty(currentKey)) {
15
31
  return undefined;
16
32
  }
17
- }
18
- return value;
33
+ return get(obj[currentKey], remainingKeys);
34
+ };
35
+ return get(entity, propertyPath);
19
36
  }
@@ -15,16 +15,26 @@ type ExtractValueType<T extends 'string' | 'array' | 'object'>
15
15
  * SQLite: ?, $name, :name 配列またはオブジェクト
16
16
  * Oracle: :name オブジェクト
17
17
  * SQL Server: `@name` 配列またはオブジェクト
18
+ * BigQuery: `@name` オブジェクト
18
19
  *
19
20
  * 以下をサポートする
20
21
  * ・$1, $2 (postgres)
21
22
  * ・? (mysql) SQLite, SQL Serverもこれで代替可能
22
23
  * ・:name (oracle) SQLiteもこれで代替可能
23
24
  * ・`@name` (mssql)
25
+ * ・`@name` (bigquery)
24
26
  */
25
- type BindType = 'postgres' | 'mysql' | 'oracle' | 'mssql';
27
+ const dbTypes = [
28
+ 'postgres',
29
+ 'mysql',
30
+ 'oracle',
31
+ 'mssql',
32
+ 'bigquery'
33
+ ] as const;
26
34
 
27
- type BindParameterType<T extends 'postgres' | 'mysql' | 'oracle' | 'mssql'>
35
+ type BindType = typeof dbTypes[number];
36
+
37
+ type BindParameterType<T extends BindType>
28
38
  = T extends 'postgres' ? any[]
29
39
  : T extends 'mysql' ? any[]
30
40
  : T extends 'oracle' ? Record<string, any>
@@ -90,7 +100,10 @@ export class SQLBuilder {
90
100
 
91
101
  private REGEX_TAG_PATTERN = /\/\*(.*?)\*\//g;
92
102
 
93
- constructor() {
103
+ private bindType?: BindType;
104
+
105
+ constructor(bindType?: BindType) {
106
+ this.bindType = bindType;
94
107
  }
95
108
 
96
109
  /**
@@ -121,25 +134,30 @@ export class SQLBuilder {
121
134
  *
122
135
  * @param {string} template
123
136
  * @param {Record<string, any>} entity
124
- * @param {BindType} bindType
137
+ * @param {BindType} [bindType]
125
138
  * @returns {[string, BindParameterType<T>]}
126
139
  */
127
- public generateParameterizedSQL<T extends BindType>(template: string, entity: Record<string, any>, bindType: T): [string, BindParameterType<T>] {
140
+ public generateParameterizedSQL<T extends BindType>(template: string, entity: Record<string, any>, bindType?: T): [string, BindParameterType<T>] {
141
+
142
+ const bt = bindType || this.bindType;
143
+
144
+ if (!bt) {
145
+ throw new Error('The bindType parameter is mandatory if bindType is not provided in the constructor.');
146
+ }
128
147
 
129
148
  let bindParams: BindParameterType<T>;
130
- switch (bindType) {
149
+ switch (bt) {
131
150
  case 'postgres':
132
151
  case 'mysql':
133
152
  bindParams = [] as unknown as BindParameterType<T>;
134
153
  break;
135
154
  case 'oracle':
136
- bindParams = {} as BindParameterType<T>;
137
- break;
138
155
  case 'mssql':
156
+ case 'bigquery':
139
157
  bindParams = {} as BindParameterType<T>;
140
158
  break;
141
159
  default:
142
- throw new Error(`Unsupported bind type: ${bindType}`);
160
+ throw new Error(`Unsupported bind type: ${bt}`);
143
161
  }
144
162
 
145
163
  /**
@@ -153,7 +171,7 @@ export class SQLBuilder {
153
171
  const tagContexts = this.createTagContexts(template);
154
172
  const pos: SharedIndex = { index: 0 };
155
173
  const result = this.parse(pos, template, entity, tagContexts, {
156
- bindType: bindType,
174
+ bindType: bt,
157
175
  bindIndex: 1,
158
176
  bindParams: bindParams
159
177
  });
@@ -214,7 +232,7 @@ export class SQLBuilder {
214
232
  default: {
215
233
  tagContext.type = 'BIND';
216
234
  const contentMatcher = matchContent.match(/\/\*(.*?)\*\//);
217
- tagContext.contents = contentMatcher && contentMatcher[1] || '';
235
+ tagContext.contents = contentMatcher && contentMatcher[1]?.trim() || '';
218
236
  // ダミー値の終了位置をendIndexに設定
219
237
  const dummyEndIndex = this.getDummyParamEndIndex(template, tagContext);
220
238
  tagContext.endIndex = dummyEndIndex;
@@ -411,8 +429,9 @@ export class SQLBuilder {
411
429
  }
412
430
  break;
413
431
  }
414
- case 'mssql': {
415
- // SQL Server形式の場合、名前付きバインドでバインドパラメータを展開
432
+ case 'mssql':
433
+ case 'bigquery': {
434
+ // SQL Server/BigQuery形式の場合、名前付きバインドでバインドパラメータを展開
416
435
  if (Array.isArray(value)) {
417
436
  const placeholders: string[] = [];
418
437
  for (let i = 0; i < value.length; i++) {
@@ -542,6 +561,9 @@ export class SQLBuilder {
542
561
  * 'abc'
543
562
  * * 返却する値がnumber型の場合はそのまま返す
544
563
  * 1234
564
+ * * 返却する値がboolean型の場合はそのまま返す
565
+ * true
566
+ * false
545
567
  *
546
568
  * @param {string} property `obj.param1.param2`などのドットで繋いだプロパティ
547
569
  * @param {Record<string, any>} entity
@@ -552,25 +574,20 @@ export class SQLBuilder {
552
574
  private extractValue<T extends 'string' | 'array' | 'object' = 'string'>(property: string, entity: Record<string, any>, options?: {
553
575
  responseType?: T
554
576
  }): ExtractValueType<T> {
555
- try {
556
- const value = common.getProperty(entity, property);
557
- let result = '';
558
- switch (options?.responseType) {
559
- case 'array':
560
- case 'object':
561
- return value as ExtractValueType<T>;
562
- default:
563
- // string
564
- if (Array.isArray(value)) {
565
- result = `(${value.map(v => typeof v === 'string' ? `'${this.escape(v)}'` : v).join(',')})`;
566
- } else {
567
- result = typeof value === 'string' ? `'${this.escape(value)}'` : value;
568
- }
569
- return result as ExtractValueType<T>;
570
- }
571
- } catch (error) {
572
- console.warn('Error extracting value', property, entity, error);
573
- return undefined as ExtractValueType<T>;
577
+ const value = common.getProperty(entity, property);
578
+ let result = '';
579
+ switch (options?.responseType) {
580
+ case 'array':
581
+ case 'object':
582
+ return value as ExtractValueType<T>;
583
+ default:
584
+ // string
585
+ if (Array.isArray(value)) {
586
+ result = `(${value.map(v => typeof v === 'string' ? `'${this.escape(v)}'` : v).join(',')})`;
587
+ } else {
588
+ result = typeof value === 'string' ? `'${this.escape(value)}'` : value;
589
+ }
590
+ return result as ExtractValueType<T>;
574
591
  }
575
592
  }
576
593