@prisma-psm/pg 1.0.5 → 1.0.7

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 (64) hide show
  1. package/.idea/vcs.xml +1 -0
  2. package/package.json +1 -1
  3. package/src/index.js +15 -6
  4. package/src/index.ts +22 -10
  5. package/src/migration/index.d.ts +2 -1
  6. package/src/migration/index.d.ts.map +1 -1
  7. package/src/migration/index.js +39 -0
  8. package/src/migration/index.js.map +1 -1
  9. package/src/migration/index.ts +43 -1
  10. package/src/parser/backup/engine.d.ts +4 -1
  11. package/src/parser/backup/engine.d.ts.map +1 -1
  12. package/src/parser/backup/engine.js +53 -33
  13. package/src/parser/backup/engine.js.map +1 -1
  14. package/src/parser/backup/engine.ts +58 -33
  15. package/src/parser/backup/index.d.ts +4 -1
  16. package/src/parser/backup/index.d.ts.map +1 -1
  17. package/src/parser/def.d.ts +5 -3
  18. package/src/parser/def.d.ts.map +1 -1
  19. package/src/parser/def.ts +9 -2
  20. package/src/parser/modelParser.d.ts +4 -1
  21. package/src/parser/modelParser.d.ts.map +1 -1
  22. package/src/parser/notice.js +1 -1
  23. package/src/parser/notice.ts +2 -2
  24. package/src/parser/parser.d.ts +6 -1
  25. package/src/parser/parser.d.ts.map +1 -1
  26. package/src/parser/parser.js +16 -16
  27. package/src/parser/parser.js.map +1 -1
  28. package/src/parser/parser.ts +31 -18
  29. package/src/parser/schama.d.ts +3 -0
  30. package/src/parser/schama.d.ts.map +1 -0
  31. package/src/parser/schama.js +16 -0
  32. package/src/parser/schama.js.map +1 -0
  33. package/src/parser/schama.ts +14 -0
  34. package/src/parser/sql.d.ts +4 -1
  35. package/src/parser/sql.d.ts.map +1 -1
  36. package/src/parser/sql.js +47 -20
  37. package/src/parser/sql.js.map +1 -1
  38. package/src/parser/sql.ts +33 -22
  39. package/src/parser/sys.d.ts.map +1 -1
  40. package/src/parser/sys.js +2 -6
  41. package/src/parser/sys.js.map +1 -1
  42. package/src/parser/sys.ts +3 -5
  43. package/src/parser/table/engine.js +2 -2
  44. package/src/parser/table/engine.ts +3 -3
  45. package/src/sql/catalog-maps.d.ts +1 -0
  46. package/src/sql/catalog-maps.d.ts.map +1 -0
  47. package/src/sql/catalog-maps.js +283 -0
  48. package/src/sql/catalog-maps.js.map +1 -0
  49. package/src/sql/catalog-maps.ts +281 -0
  50. package/src/sql/sql-builder.d.ts +1 -0
  51. package/src/sql/sql-builder.d.ts.map +1 -0
  52. package/src/sql/sql-builder.js +256 -0
  53. package/src/sql/sql-builder.js.map +1 -0
  54. package/src/sql/sql-builder.ts +254 -0
  55. package/src/utils/escape.d.ts +5 -1
  56. package/src/utils/escape.d.ts.map +1 -1
  57. package/src/utils/escape.js +328 -4
  58. package/src/utils/escape.js.map +1 -1
  59. package/src/utils/escape.ts +331 -4
  60. package/src/utils/script-util.d.ts +26 -0
  61. package/src/utils/script-util.d.ts.map +1 -0
  62. package/src/utils/script-util.js +95 -0
  63. package/src/utils/script-util.js.map +1 -0
  64. package/src/utils/script-util.ts +105 -0
@@ -0,0 +1,254 @@
1
+ // import {Escape, lit, oid, SQL} from "../utils/escape";
2
+ // import {ScriptLine, scriptUtil} from "../utils/script-util";
3
+ // import {QueryBuilderResult} from "@prisma-psm/core";
4
+ //
5
+ // export function literalEscape ( value:any){
6
+ // let textValue;
7
+ // if( value === null || value === undefined) textValue = "null";
8
+ // else if( typeof value === "string") textValue = lit( value );
9
+ // else if( typeof value === "number") textValue = value;
10
+ // else if( typeof value === "boolean") textValue = value;
11
+ // else if( typeof value === "object") textValue = lit( JSON.stringify( value ));
12
+ // return textValue;
13
+ // }
14
+ //
15
+ //
16
+ //
17
+ // export type PreparedQuery = {
18
+ // query:string,
19
+ // values:any[],
20
+ // line:ScriptLine
21
+ // }
22
+ //
23
+ // const CHECK = Symbol("check" );
24
+ //
25
+ //
26
+ // export class PostgresQueryBuilderResult implements QueryBuilderResult{
27
+ // escaped:any[];
28
+ // piece:boolean
29
+ // template:string[];
30
+ // private _query:string;
31
+ // public line:ScriptLine;
32
+ //
33
+ // constructor(template:TemplateStringsArray|string|string[], escaped:any[], line:ScriptLine ) {
34
+ // if( !line || !line?.filename ) throw new Error( `Script line is not declared` );
35
+ // if( line.filename.startsWith("node:internal")){
36
+ // throw new Error( `Invalid script line is internal capture`);
37
+ // }
38
+ //
39
+ // if( !escaped ) escaped = [];
40
+ // if( !template ) template = [];
41
+ // this.template = [];
42
+ // this.escaped = [];
43
+ //
44
+ // let hasTemplate = !!template?.length;
45
+ // let hasValue = !!escaped?.length;
46
+ // let hasCheck = !!arguments[2] || arguments[2] === CHECK;
47
+ // if( !hasTemplate && !hasCheck ) throw new Error( "Invalid Builder" );
48
+ //
49
+ //
50
+ // if( typeof template === "string" ){
51
+ // this._query = template;
52
+ // } else {
53
+ // this.template.push( ...template);
54
+ // }
55
+ // this.escaped.push( ...escaped );
56
+ // this.line = line;
57
+ // }
58
+ //
59
+ // get builderParts(){
60
+ // if( this.pieces.length+1 !== this.template.length ) throw new Error( "Inconsistency template builder" );
61
+ //
62
+ // let list:any[] = [];
63
+ // this.template.forEach( (value, index) => {
64
+ // list.push( value );
65
+ // if( index < this.pieces.length ) list.push( this.pieces[ index ]);
66
+ // });
67
+ // return list;
68
+ // }
69
+ //
70
+ //
71
+ // parameterizedQuery():PreparedQuery{
72
+ // if( !!this._query ){
73
+ // let values = this.values.map( value => {
74
+ // if( value instanceof Escape ) return value.value;
75
+ // else return value;
76
+ // })
77
+ // return {
78
+ // query: this._query,
79
+ // values: values,
80
+ // line: this.line
81
+ // };
82
+ // } else {
83
+ // let argIndex = 1;
84
+ // let queryParts = this.builderParts.map( (value, index) => {
85
+ // if( (index %2) === 0 ){
86
+ // return value;
87
+ // }
88
+ //
89
+ // if( value instanceof Escape && value.mode === "type" && value.asArray){
90
+ // return '$'+(argIndex++)+"::"+value.type+"[]";
91
+ // } else if( value instanceof Escape && value.mode === "type" ){
92
+ // return '$'+(argIndex++)+"::"+value.type;
93
+ // }
94
+ //
95
+ // if( value instanceof Escape && value.mode === "identifier" ){
96
+ // return oid( value.value );
97
+ // }
98
+ //
99
+ // if( value === null || value === undefined){
100
+ // return "null";
101
+ // } else {
102
+ // return '$'+(argIndex++);
103
+ // }
104
+ // });
105
+ //
106
+ // let values = this.values.filter( value => {
107
+ // if( value instanceof Escape && value.mode === "identifier" ) return;
108
+ // else return value !== null && value !== undefined;
109
+ // }).map( value => {
110
+ // if( value instanceof Escape ) {
111
+ // if( value.value === null || value.value === undefined ) return null;
112
+ // if( value.type === "jsonb" && typeof value.value === "object" ) return JSON.stringify( value.value );
113
+ // if( value.type === "json" && typeof value.value === "object" ) return JSON.stringify( value.value );
114
+ // return value.value;
115
+ // }
116
+ // else return value;
117
+ // })
118
+ //
119
+ // return {
120
+ // query: queryParts.join(""),
121
+ // values: values,
122
+ // line: this.line
123
+ // }
124
+ // }
125
+ // }
126
+ //
127
+ // add( sqlPart:string, sqlValue:any ){
128
+ // this.template.push( sqlPart );
129
+ // this.values.push( sqlValue );
130
+ // }
131
+ // noParameterizedQuery():PreparedQuery{
132
+ // if( !!this._query ){
133
+ // return {
134
+ // line: this.line,
135
+ // query: this._query,
136
+ // values: null
137
+ // };
138
+ // } else {
139
+ // let queryParts = this.builderParts.map( (value, index) => {
140
+ // let _scape;
141
+ // if ((index % 2) === 0) {
142
+ // return value;
143
+ //
144
+ // }else if( value instanceof Escape && value.mode === "literal") {
145
+ // return lit( value.value?.toString?.()||null )
146
+ // } else if( value instanceof Escape && (value.mode === "unsafe" || value.mode === "keyword")){
147
+ // _scape = value.value;
148
+ // } else if( value instanceof Escape && value.mode === "type" ){
149
+ // let preEscape = value.literal();
150
+ // let textValue = literalEscape( preEscape );
151
+ // // let textValue = value.literal();
152
+ // let _as = "";
153
+ // if( value.type && value.type.length && value.asArray ) _as = `::${value.type}[]`;
154
+ // else if( value.type && value.type.length ) _as = `::${value.type}`;
155
+ // _scape = textValue+_as;
156
+ // } else if( value instanceof Escape && value.mode === "identifier" ){
157
+ // _scape= oid( value.value );
158
+ // } else {
159
+ // _scape = literalEscape( value )
160
+ // }return _scape;
161
+ // });
162
+ //
163
+ // let str = queryParts.join("");
164
+ // return {
165
+ // query: str,
166
+ // values: null,
167
+ // line: this.line
168
+ // }
169
+ // }
170
+ // }
171
+ //
172
+ //
173
+ // push( ...builders:QueryBuilderResult[] ){
174
+ // let _push = ( outsideBuilder:QueryBuilderResult)=>{
175
+ // let checkOutsideBuilder = this.checkSupportedJoin( outsideBuilder );
176
+ // if( !checkOutsideBuilder ) throw new Error( "Unsupported outside builder" );
177
+ // let checkSelfBuilder = this.checkSupportedJoin( this );
178
+ // if( !checkSelfBuilder ) {
179
+ // throw new Error("Current builder no support join");
180
+ // }
181
+ //
182
+ // if( !checkSelfBuilder.hasTemplate ) {
183
+ // this.template = [];
184
+ // if( checkSelfBuilder.hasQuery ){
185
+ // this.template.push( this._query );
186
+ // this._query = null;
187
+ // }
188
+ // }
189
+ //
190
+ // let selfTemplate = this.template;
191
+ // let outsideTemplate = outsideBuilder.template;
192
+ // if( !checkOutsideBuilder.hasTemplate ){
193
+ // outsideTemplate = [ outsideBuilder._query ];
194
+ // }
195
+ //
196
+ // outsideTemplate.forEach((element, elementIndex) => {
197
+ // if(selfTemplate.length > 0 && elementIndex===0 ){
198
+ // let lastElementResult = selfTemplate[selfTemplate.length - 1];
199
+ // lastElementResult = lastElementResult.trimEnd();
200
+ // if( lastElementResult[lastElementResult.length-1] !== ";" && !outsideBuilder.piece ) lastElementResult+= ";"
201
+ // selfTemplate[selfTemplate.length - 1] = lastElementResult+ "\n\n"+ element.trimStart();
202
+ // return
203
+ // }
204
+ // selfTemplate.push( element );
205
+ //
206
+ // });
207
+ // this.values.push( ... outsideBuilder.values );
208
+ // }
209
+ // builders.forEach( value => _push( value ) );
210
+ // }
211
+ //
212
+ // private checkSupportedJoin( builder:PostgresQueryBuilderResult ){
213
+ // let hasTemplate = !!builder.template && !!builder.template.length;
214
+ // let hasQuery = !!builder._query && !!builder._query.length;
215
+ // let hasValues = !!builder.values && !!builder.values.length && builder.values.length > 0
216
+ // if( !hasTemplate && hasValues ) return false;
217
+ // return { hasTemplate, hasQuery, hasValues };
218
+ //
219
+ // }
220
+ // }
221
+ // export function sql( sqlTemplate:TemplateStringsArray, ...values:any[]):QueryBuilderResult{
222
+ // let line = scriptUtil.lineOf( 1 );
223
+ // return new PostgresQueryBuilderResult(sqlTemplate, values.map(value => {
224
+ // if (value instanceof Escape) return value
225
+ // else return SQL.any(value)
226
+ // }), line);
227
+ // }
228
+ //
229
+ //
230
+ // sql.joins = ( ...builders:QueryBuilderResult[] )=>{
231
+ // let builder = builders.shift();
232
+ // if( !!builder && builders.length ) builder.push( ...builders );
233
+ // return builder;
234
+ // }
235
+ //
236
+ // sql.join = ( builders:QueryBuilderResult[] )=>{
237
+ // return sql.joins( ...(builders||[]) );
238
+ // }
239
+ //
240
+ // export function noAutoEscapeSql( sqlTemplate:TemplateStringsArray, ...values):PostgresQueryBuilderResult{
241
+ // let line = scriptUtil.lineOf( 1 );
242
+ // return new PostgresQueryBuilderResult( sqlTemplate, values, line );
243
+ // }
244
+ //
245
+ // export function queryJoin( ...prepared:QueryBuilderResult[] ):PostgresQueryBuilderResult {
246
+ // if( !prepared || !prepared.length ) throw new Error( "Query join is empty!");
247
+ // let superList = prepared;
248
+ // // @ts-ignore
249
+ // let joins = new QueryBuilderResult(undefined,undefined, prepared[ 0 ].line );
250
+ // superList.forEach( builder => {
251
+ // joins.push( builder );
252
+ // });
253
+ // return joins;
254
+ // }
@@ -1,3 +1,7 @@
1
1
  export declare function oid(string: string): string;
2
- export declare function val(string: string): string;
2
+ export declare function lit(string: string, type?: string): string;
3
+ export declare const VARCHAR = "varchar";
4
+ export declare const TEXT = "text";
5
+ export declare const DOUBLE = "double precision";
6
+ export declare const NUMERIC = "numeric";
3
7
  //# sourceMappingURL=escape.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["escape.ts"],"names":[],"mappings":"AAkBA,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa1C;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,UAGjC"}
1
+ {"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["escape.ts"],"names":[],"mappings":"AAmBA,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa1C;AACD,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAC,MAAM,UAK/C;AAED,eAAO,MAAM,OAAO,YAAU,CAAC;AAC/B,eAAO,MAAM,IAAI,SAAO,CAAC;AACzB,eAAO,MAAM,MAAM,qBAAmB,CAAC;AACvC,eAAO,MAAM,OAAO,YAAU,CAAC"}
@@ -23,8 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.NUMERIC = exports.DOUBLE = exports.TEXT = exports.VARCHAR = void 0;
26
27
  exports.oid = oid;
27
- exports.val = val;
28
+ exports.lit = lit;
28
29
  const pg = __importStar(require("pg"));
29
30
  const RESERVED_WORDS = new Set([
30
31
  "all", "analyse", "analyze", "and", "any", "array", "as", "asc", "asymmetric",
@@ -51,9 +52,332 @@ function oid(string) {
51
52
  }
52
53
  return pg.escapeIdentifier(string);
53
54
  }
54
- function val(string) {
55
+ function lit(string, type) {
56
+ let _type = "";
57
+ if (!!type && typeof type === "string")
58
+ _type = `::${type}`;
55
59
  if (string === null || string === undefined)
56
- return 'null';
57
- return pg.escapeLiteral(string);
60
+ return `null${_type}`;
61
+ return `${pg.escapeLiteral(string)}${_type}`;
58
62
  }
63
+ exports.VARCHAR = "varchar";
64
+ exports.TEXT = "text";
65
+ exports.DOUBLE = "double precision";
66
+ exports.NUMERIC = "numeric";
67
+ //
68
+ // import PGDataType from "../sql/catalog-maps";
69
+ //
70
+ //
71
+ //
72
+ //
73
+ //
74
+ //
75
+ // export function ObjectArray <T>( value:{[p:string]:T}, callback:( key, value:T )=> void){
76
+ // if( !value ) return;
77
+ // Object.entries( value ).forEach( ([key, value ]) => {
78
+ // callback( key, value );
79
+ // })
80
+ // }
81
+ //
82
+ //
83
+ // export function literalArray( value:any, type:string, recursive?:boolean, recursiveSystanx?:boolean ):string {
84
+ // if( value === null || value === undefined ) return `null`;
85
+ // if( !Array.isArray( value ) ) throw new Error( `Value of ${ value?.toString?.() } is not array` );
86
+ // let cast = ( next:any )=>{
87
+ // let isArray:boolean;
88
+ // if( recursive && Array.isArray( next ) ){
89
+ // next = next.map( element => cast( element ) );
90
+ // isArray = true;
91
+ // } else if( recursive && !!next && typeof next === "object" && !Array.isArray( next ) ){
92
+ // ObjectArray( next, ( key, element ) => {
93
+ // next[ key ] = cast( element );
94
+ // });
95
+ // }
96
+ // let literal = JSON.stringify( next );
97
+ // if( recursive && recursiveSystanx && isArray ) literal = `{${literal.substring(1, literal.length-1 )}}`;
98
+ // return literal;
99
+ // }
100
+ //
101
+ // let result = cast( value );
102
+ // result = `{${result.substring(1, result.length-1 )}}`;
103
+ // return result;
104
+ // }
105
+ //
106
+ //
107
+ // export class Escape<S> {
108
+ // type:string;
109
+ // mode:"type"|"identifier"|"unsafe"|"keyword"|"literal";
110
+ // value:S;
111
+ // asArray:boolean
112
+ // variadic:boolean
113
+ // constructor(type: string, mode: "type" | "identifier" | "unsafe" | "keyword"|"literal", value: S, array:boolean, variadic:boolean ) {
114
+ // if( mode === "identifier" && !value ) throw new Error ( "Valor invalido para identifier");
115
+ // if( typeof value === "number" && Number.isNaN( value ) ) throw new Error( `Number values is NaN!` );
116
+ //
117
+ // this.type = type;
118
+ // this.mode = mode;
119
+ // this.value = value;
120
+ // this.asArray = array;
121
+ // this.variadic = variadic;
122
+ //
123
+ // try {
124
+ // JSON.stringify( this.value );
125
+ // } catch (e) {
126
+ // console.error( `Parse value error: Value`, this.value );
127
+ // throw e;
128
+ // }
129
+ // }
130
+ //
131
+ // literal(){
132
+ // if( this.mode === "unsafe" ) return this.value;
133
+ // if( this.mode === "keyword" ) return this.value;
134
+ // if( this.mode === "literal" ) return lit( this.value?.toString?.()||null );
135
+ //
136
+ // // console.log( "//Resolve nulls")
137
+ // if( this.value === null || this.value === undefined ) return `null`;
138
+ //
139
+ // // console.log( "//Resolve JSON arrays", this.asArray, this.type)
140
+ // if( this.asArray && [ "json", "jsonb" ].includes( this.type ) ) return literalArray( this.value, this.type, false, false );
141
+ //
142
+ // // console.log( "//Resolve arrays", this.asArray, this.type)
143
+ // if( this.asArray ) return literalArray( this.value, this.type, true, true );
144
+ //
145
+ // // console.log( "//Resolve numbers types")
146
+ // if( typeof this.value === "number" ) return `${ this.value }`;
147
+ //
148
+ // // console.log("//Resolve string")
149
+ // if( typeof this.value === "string" ) return this.value;
150
+ //
151
+ // // console.log( "//Resolve boolean")
152
+ // if( typeof this.value === "boolean" ) return `${Boolean(this.value)}`;
153
+ //
154
+ // // console.log("//Resolve other types")
155
+ // if( typeof this.value === "object" ) return JSON.stringify( this.value );
156
+ //
157
+ // throw new Error( `Valor não esperado para ser tratado ${ this.value } as type ${ this.type } in mode ${ this.mode }!` );
158
+ // }
159
+ // }
160
+ //
161
+ // export const TypeFamilyCollection = {
162
+ // UUID :[ "uuid" ] as const,
163
+ // Integer :[ "int2", "smallint", "int", "int4", "integer", "int8", "bigint" ] as const,
164
+ // Real :[ "double", "numeric", "float", "money" ] as const,
165
+ // Text :[ "varchar", "character varying", "text" ] as const,
166
+ // Document : [ "json", "jsonb" ] as const,
167
+ // DocumentArray : [ "json_array", "jsonb_array" ] as const,
168
+ // Time :[ "time", "timetz" ] as const,
169
+ // Date :[ "date" ] as const,
170
+ // DateTime :[ "timestamp", "timestamptz" ] as const,
171
+ // Boolean: [ "boolean", "bool" ] as const
172
+ // } as const;
173
+ //
174
+ // type EscapeMap = {
175
+ // [ K in typeof TypeFamilyCollection[keyof typeof TypeFamilyCollection ][number]&keyof PGDataType]:(
176
+ // args: PGDataType[K]|(PGDataType[K])[]
177
+ // ) => Escape<PGDataType[K]>
178
+ // } & {
179
+ // identifier( object:string):Escape<string>
180
+ // unsafe( expression:string):Escape<string>
181
+ // keyword( keyword:string):Escape<string>
182
+ // literal( keyword:string):Escape<string>
183
+ // any<T>( object:T ):Escape<T>
184
+ // anyOf<T>( object:T, format:string ):Escape<T>
185
+ // }
186
+ //
187
+ // let checkIsValidNumber=( arg )=>{
188
+ // if( arg === null ) return true;
189
+ // let num:number = Number( arg );
190
+ // return !Number.isNaN( num ) && Number.isFinite( num);
191
+ // }
192
+ //
193
+ //
194
+ // function transformValues( array, transform:( original )=> any ){
195
+ // return array.map( check => {
196
+ // if( check === undefined || check === null ) return null;
197
+ // if( Array.isArray( check ) ) return transformValues( check, transform );
198
+ // return transform(check);
199
+ // });
200
+ // }
201
+ //
202
+ // function hasInvalidValueInArray( array:any[], check:( arg )=> boolean ){
203
+ // return !!array.find(value => {
204
+ // if (value === null) return false;
205
+ // if (Array.isArray(value)) return hasInvalidValueInArray(value, check);
206
+ // let valid = check(value);
207
+ // return !valid;
208
+ // });
209
+ // }
210
+ //
211
+ // function createEscape( value, type, variadic, transform:( original )=>any, check:( arg )=> boolean ){
212
+ // if( value === null || value === undefined )
213
+ // return new Escape( type, "type", value, false, variadic );
214
+ // if( Array.isArray( value ) ){
215
+ // let array = transformValues( value, transform );
216
+ // if( hasInvalidValueInArray( array , check ) ) throw new Error( `Invalid scape value ${ value } ${type} in array` );
217
+ // return new Escape( type, "type", value, true, variadic );
218
+ // }
219
+ // let checked = transformValues([ value ], transform );
220
+ // if( hasInvalidValueInArray( checked, check ) ) throw new Error( `Invalid scape value ${ value } TO ${type}` );
221
+ // return new Escape( type, "type", checked[ 0 ], false, false );
222
+ // }
223
+ // export const SQL:EscapeMap= {} as any;
224
+ //
225
+ // [
226
+ // TypeFamilyCollection.Integer,
227
+ // TypeFamilyCollection.Real,
228
+ // ].forEach( collection => {
229
+ // collection.forEach( type => {
230
+ // SQL[ type ] = ( value, variadic )=>{
231
+ // return createEscape(value, type, variadic, original => Number(original), checkIsValidNumber);
232
+ // }
233
+ // });
234
+ // });
235
+ //
236
+ //
237
+ // [
238
+ // TypeFamilyCollection.Text,
239
+ // TypeFamilyCollection.UUID,
240
+ // ].forEach( collection => {
241
+ // collection.forEach( type => {
242
+ // SQL[ type ] = (( value, variadic )=>{
243
+ // return createEscape( value, type, variadic, original => original, arg => typeof arg === "string" );
244
+ // }) as any
245
+ // });
246
+ // });
247
+ //
248
+ //
249
+ //
250
+ // [
251
+ // TypeFamilyCollection.Document,
252
+ // ].forEach( collection => {
253
+ // collection.forEach( type => {
254
+ // SQL[ type ] = (( value, variadic )=>{
255
+ // let escape = createEscape( value, type, variadic, original => original, arg => true );
256
+ // escape.asArray = false;
257
+ // return escape;
258
+ // }) as any
259
+ //
260
+ // SQL[ `${type}_array` ] = (( value, variadic )=>{
261
+ // let escape = createEscape( value, type, variadic, original => original, arg => true );
262
+ // escape.asArray = true;
263
+ // return escape;
264
+ // }) as any
265
+ // });
266
+ // });
267
+ //
268
+ // [
269
+ // TypeFamilyCollection.Time,
270
+ // TypeFamilyCollection.Date,
271
+ // TypeFamilyCollection.DateTime
272
+ // ].forEach( collection => {
273
+ // collection.forEach( type => {
274
+ // SQL[ type ] = ( value, variadic )=>{
275
+ // return createEscape( value, type, variadic, original => original, arg => true );
276
+ // }
277
+ // });
278
+ // });
279
+ //
280
+ // [
281
+ // TypeFamilyCollection.Boolean
282
+ // ].forEach( collection => {
283
+ // collection.forEach( type => {
284
+ // SQL[ type ] =( ( value, variadic )=>{
285
+ // return createEscape( value, type, variadic, original => !!original, arg => true );
286
+ // }) as any
287
+ // });
288
+ // });
289
+ //
290
+ //
291
+ //
292
+ // export function anyNumber( value ){
293
+ // if( Number.isNaN( value ) ) return SQL.numeric( value );
294
+ // let _asReal = ()=>{
295
+ //
296
+ // /*
297
+ // //TODO reforçar outras validação para double precision|real|decimal
298
+ // decimal variable user-specified precision, exact up to 131072 digits before the decimal point; up to 16383 digits after the decimal point
299
+ // numeric variable user-specified precision, exact up to 131072 digits before the decimal point; up to 16383 digits after the decimal point
300
+ // real 4 bytes variable-precision, inexact 6 decimal digits precision
301
+ // double precision 8 bytes variable-precision, inexact 15 decimal digits precision
302
+ // */
303
+ // return SQL.numeric( value );
304
+ // }
305
+ // let _asInteger = ()=>{
306
+ // let _subtype:("numeric"|"integer"|"bigint") & keyof typeof SQL = "integer";
307
+ // /*
308
+ // //TODO reforçar outras validação para smallint|integer|bigint
309
+ // smallint 2 bytes small-range integer -32768 to +32767
310
+ // integer 4 bytes typical choice for integer -2147483648 to +2147483647
311
+ // bigint 8 bytes large-range integer -9223372036854775808 to 9223372036854775807
312
+ // */
313
+ //
314
+ // if( value >= -2147483648 && value <= +2147483647 ) _subtype = "integer";
315
+ // else if( value >= -9223372036854775808 && value <= 9223372036854775807 ) _subtype = "bigint";
316
+ // else _subtype = "numeric";
317
+ // // @ts-ignore
318
+ // return SQL[_subtype]( value );
319
+ // }
320
+ //
321
+ // let parts = `${ value }`.split(".");
322
+ // if( parts.length === 2 ) return _asReal()
323
+ // else return _asInteger();
324
+ //
325
+ // }
326
+ //
327
+ // export function anyObject( value:any ){
328
+ // if( Array.isArray( value ) ) {
329
+ // let _determineType = ( next:any[] )=>{
330
+ // let determined = next.map( element => {
331
+ // if( typeof element === "string" ) return "text";
332
+ // if( typeof element === "boolean" ) return "boolean";
333
+ // if( typeof element === "number" ) return "number";
334
+ // if( !element && typeof element === "object" && !Array.isArray( element ) ) return "jsonb";
335
+ // if( Array.isArray( element ) ) return _determineType( element );
336
+ // }).filter( determined => !!determined );
337
+ // if( determined.length ) return determined[0];
338
+ // return null;
339
+ // };
340
+ //
341
+ // let type = _determineType( value );
342
+ // if( !type ) type = "text";
343
+ // return SQL[type](value);
344
+ // } else return SQL.jsonb( value );
345
+ // }
346
+ //
347
+ //
348
+ //
349
+ // //Any Type Scape
350
+ // SQL["any"]=<T>( value:T )=>{
351
+ // if( value === null || value === undefined ) return SQL.text( value as string );
352
+ // if( typeof value === "string" ) return SQL.text( value );
353
+ // if( typeof value === "boolean" ) return SQL.boolean( value );
354
+ // if( typeof value === "number" ) return anyNumber( value );
355
+ // if( typeof value === "object" ) return anyObject( value );
356
+ // throw new Error( `Valor não esperado para ser tratado ${ value }!` );
357
+ // }
358
+ //
359
+ // //Any Type Scape
360
+ // SQL["anyOf"]=<T>( value:T, format:string )=>{
361
+ // let any = SQL.any( value );
362
+ // any.type = format;
363
+ // return any;
364
+ // }
365
+ //
366
+ //
367
+ // //Special Scape
368
+ // SQL["identifier"]=( value:string )=>{
369
+ // if( !value ) throw new Error( "Invalid Value for Identifier" );
370
+ // return new Escape( null, "identifier", value, false, false );
371
+ // }
372
+ //
373
+ // SQL["unsafe"]=( value:string )=>{
374
+ // return new Escape( null, "unsafe", value, false, false );
375
+ // }
376
+ //
377
+ // SQL["keyword"]=( value:string )=>{
378
+ // return new Escape( null, "keyword", value, false, false );
379
+ // }
380
+ // SQL["literal"]=( value:string )=>{
381
+ // return new Escape( null, "literal", value, false, false );
382
+ // }
59
383
  //# sourceMappingURL=escape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"escape.js","sourceRoot":"","sources":["escape.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,kBAaC;AACD,kBAGC;AAnCD,uCAAyB;AAEzB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC3B,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY;IAC7E,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IAC/E,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc;IACzE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY;IAC5E,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;IAC1E,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW;IAC7E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ;IAClF,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW;IAC5E,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAChF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;IAClF,QAAQ,EAAE,MAAM;CACnB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,wCAAwC;AAEzF,SAAgB,GAAG,CAAC,MAAc;IAC9B,IAAI,CAAC,MAAM,EAAC,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAEhE,IAAI,iBAAiB,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AACD,SAAgB,GAAG,CAAC,MAAc;IAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3D,OAAO,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"escape.js","sourceRoot":"","sources":["escape.ts"],"names":[],"mappings":"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"}