prettier-plugin-tsql 0.1.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.
- package/LICENSE +21 -0
- package/README.md +199 -0
- package/bin/dotnet/Microsoft.SqlServer.TransactSql.ScriptDom.dll +0 -0
- package/bin/dotnet/SqlScriptDom.deps.json +41 -0
- package/bin/dotnet/SqlScriptDom.dll +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/language.d.ts +3 -0
- package/dist/language.d.ts.map +1 -0
- package/dist/language.js +9 -0
- package/dist/language.js.map +1 -0
- package/dist/options.d.ts +3 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +35 -0
- package/dist/options.js.map +1 -0
- package/dist/parser/index.d.ts +5 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +263 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/types.d.ts +21 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +2 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/printer/admin.d.ts +22 -0
- package/dist/printer/admin.d.ts.map +1 -0
- package/dist/printer/admin.js +250 -0
- package/dist/printer/admin.js.map +1 -0
- package/dist/printer/ddl.d.ts +36 -0
- package/dist/printer/ddl.d.ts.map +1 -0
- package/dist/printer/ddl.js +836 -0
- package/dist/printer/ddl.js.map +1 -0
- package/dist/printer/expressions.d.ts +11 -0
- package/dist/printer/expressions.d.ts.map +1 -0
- package/dist/printer/expressions.js +1475 -0
- package/dist/printer/expressions.js.map +1 -0
- package/dist/printer/helpers.d.ts +25 -0
- package/dist/printer/helpers.d.ts.map +1 -0
- package/dist/printer/helpers.js +61 -0
- package/dist/printer/helpers.js.map +1 -0
- package/dist/printer/index.d.ts +4 -0
- package/dist/printer/index.d.ts.map +1 -0
- package/dist/printer/index.js +30 -0
- package/dist/printer/index.js.map +1 -0
- package/dist/printer/procedural.d.ts +41 -0
- package/dist/printer/procedural.d.ts.map +1 -0
- package/dist/printer/procedural.js +364 -0
- package/dist/printer/procedural.js.map +1 -0
- package/dist/printer/security.d.ts +15 -0
- package/dist/printer/security.d.ts.map +1 -0
- package/dist/printer/security.js +309 -0
- package/dist/printer/security.js.map +1 -0
- package/dist/printer/statements.d.ts +18 -0
- package/dist/printer/statements.d.ts.map +1 -0
- package/dist/printer/statements.js +689 -0
- package/dist/printer/statements.js.map +1 -0
- package/dist/printer/utils.d.ts +34 -0
- package/dist/printer/utils.d.ts.map +1 -0
- package/dist/printer/utils.js +61 -0
- package/dist/printer/utils.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import { keyword, hardline, join, indent, group, line, softline, ifExistsDoc } from './utils.js';
|
|
2
|
+
import { propStr, propBool } from './helpers.js';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// GRANT / DENY / REVOKE
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const securityObjectKindMap = {
|
|
7
|
+
NotSpecified: '',
|
|
8
|
+
Object: 'OBJECT',
|
|
9
|
+
Database: 'DATABASE',
|
|
10
|
+
Schema: 'SCHEMA',
|
|
11
|
+
Login: 'LOGIN',
|
|
12
|
+
User: 'USER',
|
|
13
|
+
Role: 'ROLE',
|
|
14
|
+
ServerRole: 'SERVER ROLE',
|
|
15
|
+
Server: 'SERVER',
|
|
16
|
+
Assembly: 'ASSEMBLY',
|
|
17
|
+
AsymmetricKey: 'ASYMMETRIC KEY',
|
|
18
|
+
Certificate: 'CERTIFICATE',
|
|
19
|
+
Contract: 'CONTRACT',
|
|
20
|
+
Endpoint: 'ENDPOINT',
|
|
21
|
+
FullTextCatalog: 'FULLTEXT CATALOG',
|
|
22
|
+
FullTextStopList: 'FULLTEXT STOPLIST',
|
|
23
|
+
MessageType: 'MESSAGE TYPE',
|
|
24
|
+
RemoteServiceBinding: 'REMOTE SERVICE BINDING',
|
|
25
|
+
Route: 'ROUTE',
|
|
26
|
+
SearchPropertyList: 'SEARCH PROPERTY LIST',
|
|
27
|
+
Service: 'SERVICE',
|
|
28
|
+
SymmetricKey: 'SYMMETRIC KEY',
|
|
29
|
+
Type: 'TYPE',
|
|
30
|
+
XmlSchemaCollection: 'XML SCHEMA COLLECTION',
|
|
31
|
+
AvailabilityGroup: 'AVAILABILITY GROUP',
|
|
32
|
+
};
|
|
33
|
+
function printSecurityTarget(target, opts) {
|
|
34
|
+
const kind = target['objectKind'] ?? 'NotSpecified';
|
|
35
|
+
const objName = target['objectName'];
|
|
36
|
+
const cols = target['columns'];
|
|
37
|
+
if (kind === 'Server')
|
|
38
|
+
return keyword('SERVER', opts);
|
|
39
|
+
const className = securityObjectKindMap[kind] ?? kind.toUpperCase();
|
|
40
|
+
const prefix = className ? [keyword(className, opts), '::'] : '';
|
|
41
|
+
let result = [prefix, objName ?? ''];
|
|
42
|
+
if (cols && cols.length > 0)
|
|
43
|
+
result = [result, ' (', join(', ', cols), ')'];
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
function printSecurityPrincipal(p, opts) {
|
|
47
|
+
const type = p['principalType'] ?? '';
|
|
48
|
+
if (type === 'Public')
|
|
49
|
+
return keyword('PUBLIC', opts);
|
|
50
|
+
return p['name'] ?? '';
|
|
51
|
+
}
|
|
52
|
+
function printPermission(p, opts) {
|
|
53
|
+
const name = (p['name'] ?? '').toUpperCase();
|
|
54
|
+
const cols = p['columns'];
|
|
55
|
+
const parts = [keyword(name, opts)];
|
|
56
|
+
if (cols && cols.length > 0)
|
|
57
|
+
parts.push(' (', join(', ', cols), ')');
|
|
58
|
+
return parts;
|
|
59
|
+
}
|
|
60
|
+
export function printGrantDenyRevoke(node, verb, opts) {
|
|
61
|
+
const perms = node.props?.['permissions'] ?? [];
|
|
62
|
+
const target = node.props?.['target'];
|
|
63
|
+
const principals = node.props?.['principals'] ?? [];
|
|
64
|
+
const asClause = node.props?.['asClause'];
|
|
65
|
+
const withGrant = node.props?.['withGrantOption'];
|
|
66
|
+
const cascade = node.props?.['cascade'];
|
|
67
|
+
const grantOptFor = node.props?.['grantOptionFor'];
|
|
68
|
+
const permDocs = perms.map((p) => printPermission(p, opts));
|
|
69
|
+
const principalDocs = principals.map((p) => printSecurityPrincipal(p, opts));
|
|
70
|
+
// Verb + optional "GRANT OPTION FOR" prefix (REVOKE only)
|
|
71
|
+
const verbParts = [keyword(verb, opts)];
|
|
72
|
+
if (grantOptFor)
|
|
73
|
+
verbParts.push(' ', keyword('GRANT OPTION FOR', opts));
|
|
74
|
+
// Permissions: wrap only when they exceed printWidth
|
|
75
|
+
const permPart = [' ', group([indent([softline, join([',', line], permDocs)])])];
|
|
76
|
+
const parts = [...verbParts, permPart];
|
|
77
|
+
if (target)
|
|
78
|
+
parts.push([hardline, keyword('ON', opts), ' ', printSecurityTarget(target, opts)]);
|
|
79
|
+
const direction = verb === 'REVOKE' ? 'FROM' : 'TO';
|
|
80
|
+
parts.push([hardline, group([keyword(direction, opts), indent([line, join([',', line], principalDocs)])])]);
|
|
81
|
+
if (withGrant)
|
|
82
|
+
parts.push([hardline, keyword('WITH GRANT OPTION', opts)]);
|
|
83
|
+
if (cascade)
|
|
84
|
+
parts.push([hardline, keyword('CASCADE', opts)]);
|
|
85
|
+
if (asClause)
|
|
86
|
+
parts.push([hardline, keyword('AS', opts), ' ', asClause]);
|
|
87
|
+
parts.push(';');
|
|
88
|
+
return parts;
|
|
89
|
+
}
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
// USER / LOGIN / ROLE — shared option helpers
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
/** Map PrincipalOptionKind → SQL keyword (uppercase; keyword() applies casing). */
|
|
94
|
+
const principalOptionKindMap = {
|
|
95
|
+
DefaultDatabase: 'DEFAULT_DATABASE',
|
|
96
|
+
DefaultLanguage: 'DEFAULT_LANGUAGE',
|
|
97
|
+
DefaultSchema: 'DEFAULT_SCHEMA',
|
|
98
|
+
Sid: 'SID',
|
|
99
|
+
AllowEncryptedValueModifications: 'ALLOW_ENCRYPTED_VALUE_MODIFICATIONS',
|
|
100
|
+
CheckExpiration: 'CHECK_EXPIRATION',
|
|
101
|
+
CheckPolicy: 'CHECK_POLICY',
|
|
102
|
+
Name: 'NAME',
|
|
103
|
+
Password: 'PASSWORD',
|
|
104
|
+
DefaultDomain: 'DEFAULT_DOMAIN',
|
|
105
|
+
MustChange: 'MUST_CHANGE',
|
|
106
|
+
Credential: 'CREDENTIAL',
|
|
107
|
+
OldPassword: 'OLD_PASSWORD',
|
|
108
|
+
Unlock: 'UNLOCK',
|
|
109
|
+
};
|
|
110
|
+
function principalOptionKw(kind, opts) {
|
|
111
|
+
const sql = principalOptionKindMap[kind] ?? kind.toUpperCase();
|
|
112
|
+
return keyword(sql, opts);
|
|
113
|
+
}
|
|
114
|
+
function printPrincipalOption(o, opts) {
|
|
115
|
+
const kind = o['kind'] ?? '';
|
|
116
|
+
if (kind === 'Password') {
|
|
117
|
+
return join([',', hardline], expandPasswordOption(o, opts));
|
|
118
|
+
}
|
|
119
|
+
if ('onOff' in o) {
|
|
120
|
+
return [principalOptionKw(kind, opts), ' = ', keyword(o['onOff'].toUpperCase(), opts)];
|
|
121
|
+
}
|
|
122
|
+
if ('value' in o) {
|
|
123
|
+
return [principalOptionKw(kind, opts), ' = ', o['value'] ?? ''];
|
|
124
|
+
}
|
|
125
|
+
if ('identifier' in o) {
|
|
126
|
+
return [principalOptionKw(kind, opts), ' = ', o['identifier'] ?? ''];
|
|
127
|
+
}
|
|
128
|
+
return principalOptionKw(kind, opts);
|
|
129
|
+
}
|
|
130
|
+
function withOptionsPart(items) {
|
|
131
|
+
return group([indent([line, join([',', line], items)])]);
|
|
132
|
+
}
|
|
133
|
+
/** Expands a password option into multiple peer items so OLD_PASSWORD and UNLOCK
|
|
134
|
+
* are treated as separate WITH options rather than embedded sub-lines. */
|
|
135
|
+
function expandPasswordOption(o, opts) {
|
|
136
|
+
const pw = o['password'];
|
|
137
|
+
const old = o['oldPassword'];
|
|
138
|
+
const hashed = o['hashed'];
|
|
139
|
+
const mustChange = o['mustChange'];
|
|
140
|
+
const unlock = o['unlock'];
|
|
141
|
+
const pwDoc = [keyword('PASSWORD', opts), ' = ', pw ?? ''];
|
|
142
|
+
if (hashed)
|
|
143
|
+
pwDoc.push(' ', keyword('HASHED', opts));
|
|
144
|
+
if (mustChange)
|
|
145
|
+
pwDoc.push(' ', keyword('MUST_CHANGE', opts));
|
|
146
|
+
const result = [pwDoc];
|
|
147
|
+
if (old)
|
|
148
|
+
result.push([keyword('OLD_PASSWORD', opts), ' = ', old]);
|
|
149
|
+
if (unlock)
|
|
150
|
+
result.push(keyword('UNLOCK', opts));
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
function printPrincipalOptions(node, opts) {
|
|
154
|
+
const options = node.props?.['options'];
|
|
155
|
+
if (!Array.isArray(options) || options.length === 0)
|
|
156
|
+
return '';
|
|
157
|
+
const parts = options.map((o) => printPrincipalOption(o, opts));
|
|
158
|
+
return [keyword('WITH', opts), withOptionsPart(parts)];
|
|
159
|
+
}
|
|
160
|
+
// ---------------------------------------------------------------------------
|
|
161
|
+
// USER
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
export function printCreateUser(node, opts) {
|
|
164
|
+
const name = propStr(node, 'name') ?? '';
|
|
165
|
+
const loginType = propStr(node, 'loginOptionType') ?? '';
|
|
166
|
+
const loginId = propStr(node, 'loginOptionId');
|
|
167
|
+
const optionsDoc = printPrincipalOptions(node, opts);
|
|
168
|
+
const loginTypeMap = {
|
|
169
|
+
Login: 'FOR LOGIN',
|
|
170
|
+
Certificate: 'FOR CERTIFICATE',
|
|
171
|
+
AsymmetricKey: 'FOR ASYMMETRIC KEY',
|
|
172
|
+
WithoutLogin: 'WITHOUT LOGIN',
|
|
173
|
+
External: 'FROM EXTERNAL PROVIDER',
|
|
174
|
+
};
|
|
175
|
+
const loginClause = loginTypeMap[loginType];
|
|
176
|
+
const parts = [keyword('CREATE USER', opts), ' ', name];
|
|
177
|
+
if (loginClause) {
|
|
178
|
+
parts.push([hardline, keyword(loginClause, opts)]);
|
|
179
|
+
if (loginId)
|
|
180
|
+
parts.push(' ', loginId);
|
|
181
|
+
}
|
|
182
|
+
if (optionsDoc !== '')
|
|
183
|
+
parts.push([hardline, optionsDoc]);
|
|
184
|
+
parts.push(';');
|
|
185
|
+
return parts;
|
|
186
|
+
}
|
|
187
|
+
export function printAlterUser(node, opts) {
|
|
188
|
+
const name = propStr(node, 'name') ?? '';
|
|
189
|
+
return [keyword('ALTER USER', opts), ' ', name, hardline, printPrincipalOptions(node, opts), ';'];
|
|
190
|
+
}
|
|
191
|
+
export function printDropUser(node, opts) {
|
|
192
|
+
const name = propStr(node, 'name') ?? '';
|
|
193
|
+
const ifExists = propBool(node, 'ifExists');
|
|
194
|
+
return [keyword('DROP USER', opts), ifExistsDoc(ifExists, opts), ' ', name, ';'];
|
|
195
|
+
}
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
// LOGIN
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
export function printCreateLogin(node, opts) {
|
|
200
|
+
const name = propStr(node, 'name') ?? '';
|
|
201
|
+
const sourceType = propStr(node, 'sourceType') ?? '';
|
|
202
|
+
const parts = [keyword('CREATE LOGIN', opts), ' ', name];
|
|
203
|
+
if (sourceType === 'Password') {
|
|
204
|
+
const pw = propStr(node, 'password') ?? '';
|
|
205
|
+
const hashed = node.props?.['hashed'];
|
|
206
|
+
const mustChange = node.props?.['mustChange'];
|
|
207
|
+
const pwParts = [keyword('PASSWORD', opts), ' = ', pw];
|
|
208
|
+
if (hashed)
|
|
209
|
+
pwParts.push(' ', keyword('HASHED', opts));
|
|
210
|
+
if (mustChange)
|
|
211
|
+
pwParts.push(' ', keyword('MUST_CHANGE', opts));
|
|
212
|
+
const options = node.props?.['options'];
|
|
213
|
+
const optDocs = Array.isArray(options)
|
|
214
|
+
? options.map((o) => printPrincipalOption(o, opts))
|
|
215
|
+
: [];
|
|
216
|
+
const allOpts = [pwParts, ...optDocs];
|
|
217
|
+
parts.push([hardline, keyword('WITH', opts), withOptionsPart(allOpts)]);
|
|
218
|
+
}
|
|
219
|
+
else if (sourceType === 'Windows') {
|
|
220
|
+
parts.push([hardline, keyword('FROM WINDOWS', opts)]);
|
|
221
|
+
const optionsDoc = printPrincipalOptions(node, opts);
|
|
222
|
+
if (optionsDoc !== '')
|
|
223
|
+
parts.push([hardline, optionsDoc]);
|
|
224
|
+
}
|
|
225
|
+
else if (sourceType === 'Certificate') {
|
|
226
|
+
parts.push([hardline, keyword('FROM CERTIFICATE', opts), ' ', propStr(node, 'sourceName') ?? '']);
|
|
227
|
+
}
|
|
228
|
+
else if (sourceType === 'AsymmetricKey') {
|
|
229
|
+
parts.push([hardline, keyword('FROM ASYMMETRIC KEY', opts), ' ', propStr(node, 'sourceName') ?? '']);
|
|
230
|
+
}
|
|
231
|
+
else if (sourceType) {
|
|
232
|
+
parts.push([' ', sourceType]);
|
|
233
|
+
}
|
|
234
|
+
parts.push(';');
|
|
235
|
+
return parts;
|
|
236
|
+
}
|
|
237
|
+
export function printAlterLogin(node, opts) {
|
|
238
|
+
const name = propStr(node, 'name') ?? '';
|
|
239
|
+
const action = propStr(node, 'action') ?? '';
|
|
240
|
+
const base = [keyword('ALTER LOGIN', opts), ' ', name];
|
|
241
|
+
if (action === 'Enable')
|
|
242
|
+
return [base, ' ', keyword('ENABLE', opts), ';'];
|
|
243
|
+
if (action === 'Disable')
|
|
244
|
+
return [base, ' ', keyword('DISABLE', opts), ';'];
|
|
245
|
+
if (action === 'AddCredential') {
|
|
246
|
+
return [base, hardline, keyword('ADD CREDENTIAL', opts), ' ', propStr(node, 'credentialName') ?? '', ';'];
|
|
247
|
+
}
|
|
248
|
+
if (action === 'DropCredential') {
|
|
249
|
+
return [base, hardline, keyword('DROP CREDENTIAL', opts), ' ', propStr(node, 'credentialName') ?? '', ';'];
|
|
250
|
+
}
|
|
251
|
+
if (action === 'WithOptions') {
|
|
252
|
+
const options = node.props?.['options'];
|
|
253
|
+
const optDocs = Array.isArray(options)
|
|
254
|
+
? options.flatMap((o) => o['kind'] === 'Password'
|
|
255
|
+
? expandPasswordOption(o, opts)
|
|
256
|
+
: [printPrincipalOption(o, opts)])
|
|
257
|
+
: [];
|
|
258
|
+
return [base, hardline, keyword('WITH', opts), withOptionsPart(optDocs), ';'];
|
|
259
|
+
}
|
|
260
|
+
return [base, ';'];
|
|
261
|
+
}
|
|
262
|
+
export function printDropLogin(node, opts) {
|
|
263
|
+
const name = propStr(node, 'name') ?? '';
|
|
264
|
+
const ifExists = propBool(node, 'ifExists');
|
|
265
|
+
return [keyword('DROP LOGIN', opts), ifExistsDoc(ifExists, opts), ' ', name, ';'];
|
|
266
|
+
}
|
|
267
|
+
// ---------------------------------------------------------------------------
|
|
268
|
+
// ROLE
|
|
269
|
+
// ---------------------------------------------------------------------------
|
|
270
|
+
export function printCreateRole(node, opts) {
|
|
271
|
+
const name = propStr(node, 'name') ?? '';
|
|
272
|
+
const owner = propStr(node, 'owner');
|
|
273
|
+
return [
|
|
274
|
+
keyword('CREATE ROLE', opts),
|
|
275
|
+
' ',
|
|
276
|
+
name,
|
|
277
|
+
owner ? [hardline, keyword('AUTHORIZATION', opts), ' ', owner] : '',
|
|
278
|
+
';',
|
|
279
|
+
];
|
|
280
|
+
}
|
|
281
|
+
export function printAlterRole(node, opts) {
|
|
282
|
+
const name = propStr(node, 'name') ?? '';
|
|
283
|
+
const action = propStr(node, 'action') ?? '';
|
|
284
|
+
const base = [keyword('ALTER ROLE', opts), ' ', name];
|
|
285
|
+
if (action === 'AddMember')
|
|
286
|
+
return [base, hardline, keyword('ADD MEMBER', opts), ' ', propStr(node, 'member') ?? '', ';'];
|
|
287
|
+
if (action === 'DropMember')
|
|
288
|
+
return [base, hardline, keyword('DROP MEMBER', opts), ' ', propStr(node, 'member') ?? '', ';'];
|
|
289
|
+
if (action === 'Rename')
|
|
290
|
+
return [base, hardline, keyword('WITH NAME', opts), ' = ', propStr(node, 'newName') ?? '', ';'];
|
|
291
|
+
return [base, ';'];
|
|
292
|
+
}
|
|
293
|
+
export function printDropRole(node, opts) {
|
|
294
|
+
const name = propStr(node, 'name') ?? '';
|
|
295
|
+
const ifExists = propBool(node, 'ifExists');
|
|
296
|
+
return [keyword('DROP ROLE', opts), ifExistsDoc(ifExists, opts), ' ', name, ';'];
|
|
297
|
+
}
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
// ALTER AUTHORIZATION
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
export function printAlterAuthorization(node, opts) {
|
|
302
|
+
const target = node.props?.['target'];
|
|
303
|
+
const toSchemaOwner = node.props?.['toSchemaOwner'];
|
|
304
|
+
const principal = propStr(node, 'principal') ?? '';
|
|
305
|
+
const targetDoc = target ? printSecurityTarget(target, opts) : '';
|
|
306
|
+
const toPart = toSchemaOwner ? keyword('SCHEMA OWNER', opts) : principal;
|
|
307
|
+
return [keyword('ALTER AUTHORIZATION', opts), hardline, keyword('ON', opts), ' ', targetDoc, hardline, keyword('TO', opts), ' ', toPart, ';'];
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/plugin/printer/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Doc } from 'prettier';
|
|
2
|
+
import type { SqlNode } from '../parser/types.js';
|
|
3
|
+
import type { Options } from './utils.js';
|
|
4
|
+
/** Print a node via the expression dispatcher (no path needed for inner nodes). */
|
|
5
|
+
export declare function printNode(node: SqlNode, opts: Options): Doc;
|
|
6
|
+
/** Print a boolean expression node via the expression dispatcher. */
|
|
7
|
+
export declare function printBool(node: SqlNode, opts: Options): Doc;
|
|
8
|
+
/** Print a query expression node via the expression dispatcher. */
|
|
9
|
+
export declare function qexpr(node: SqlNode, opts: Options): Doc;
|
|
10
|
+
/**
|
|
11
|
+
* Print a statement with its leading and trailing comments.
|
|
12
|
+
* Used for top-level statements and for bodies in procs/functions/triggers/IF/WHILE/etc.
|
|
13
|
+
* Exported so that ddl.ts and procedural.ts can call it (circular import — safe in ESM).
|
|
14
|
+
*/
|
|
15
|
+
export declare function printStatementWithComments(s: SqlNode, opts: Options): Doc;
|
|
16
|
+
export declare function printScript(node: SqlNode, opts: Options): Doc;
|
|
17
|
+
export declare function printStatement(node: SqlNode, opts: Options): Doc;
|
|
18
|
+
//# sourceMappingURL=statements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../src/plugin/printer/statements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAoI1C,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CAE3D;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CAE3D;AAED,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CAEvD;AAaD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CAOzE;AAwCD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CAc7D;AAeD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CA+RhE"}
|