🎯 MapView v2.0 - Global Deployment Ready

 MAJOR FEATURES:
• Auto-zoom intelligence với smart bounds fitting
• Enhanced 3D GPS markers với pulsing effects
• Professional route display với 6-layer rendering
• Status-based parking icons với availability indicators
• Production-ready build optimizations

🗺️ AUTO-ZOOM FEATURES:
• Smart bounds fitting cho GPS + selected parking
• Adaptive padding (50px) cho visual balance
• Max zoom control (level 16) để tránh quá gần
• Dynamic centering khi không có selection

🎨 ENHANCED VISUALS:
• 3D GPS marker với multi-layer pulse effects
• Advanced parking icons với status colors
• Selection highlighting với animation
• Dimming system cho non-selected items

🛣️ ROUTE SYSTEM:
• OpenRouteService API integration
• Multi-layer route rendering (glow, shadow, main, animated)
• Real-time distance & duration calculation
• Visual route info trong popup

📱 PRODUCTION READY:
• SSR safe với dynamic imports
• Build errors resolved
• Global deployment via Vercel
• Optimized performance

🌍 DEPLOYMENT:
• Vercel: https://whatever-ctk2auuxr-phong12hexdockworks-projects.vercel.app
• Bundle size: 22.8 kB optimized
• Global CDN distribution
• HTTPS enabled

💾 VERSION CONTROL:
• MapView-v2.0.tsx backup created
• MAPVIEW_VERSIONS.md documentation
• Full version history tracking
This commit is contained in:
2025-07-20 19:52:16 +07:00
parent 3203463a6a
commit c65cc97a33
64624 changed files with 7199453 additions and 6462 deletions

View File

@@ -0,0 +1,5 @@
import AbstractFormatter from './utils/abstract';
import { TokenizerConfig } from '../core/types';
export default class Db2Formatter extends AbstractFormatter {
getTokenizerConfig(): TokenizerConfig;
}

View File

@@ -0,0 +1,585 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var abstract_1 = __importDefault(require("./utils/abstract"));
var Db2Formatter = (function (_super) {
__extends(Db2Formatter, _super);
function Db2Formatter() {
return _super !== null && _super.apply(this, arguments) || this;
}
Db2Formatter.prototype.getTokenizerConfig = function () {
return {
reservedWords: reservedWords,
reservedTopLevelWords: reservedTopLevelWords,
reservedNewlineWords: reservedNewlineWords,
reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,
stringTypes: ["\"\"", "''", '``', '[]'],
openParens: ['('],
closeParens: [')'],
indexedPlaceholderTypes: ['?'],
namedPlaceholderTypes: [':'],
lineCommentTypes: ['--'],
specialWordChars: ['#', '@']
};
};
return Db2Formatter;
}(abstract_1["default"]));
exports["default"] = Db2Formatter;
var reservedWords = [
'ABS',
'ACTIVATE',
'ALIAS',
'ALL',
'ALLOCATE',
'ALLOW',
'ALTER',
'ANY',
'ARE',
'ARRAY',
'AS',
'ASC',
'ASENSITIVE',
'ASSOCIATE',
'ASUTIME',
'ASYMMETRIC',
'AT',
'ATOMIC',
'ATTRIBUTES',
'AUDIT',
'AUTHORIZATION',
'AUX',
'AUXILIARY',
'AVG',
'BEFORE',
'BEGIN',
'BETWEEN',
'BIGINT',
'BINARY',
'BLOB',
'BOOLEAN',
'BOTH',
'BUFFERPOOL',
'BY',
'CACHE',
'CALL',
'CALLED',
'CAPTURE',
'CARDINALITY',
'CASCADED',
'CASE',
'CAST',
'CCSID',
'CEIL',
'CEILING',
'CHAR',
'CHARACTER',
'CHARACTER_LENGTH',
'CHAR_LENGTH',
'CHECK',
'CLOB',
'CLONE',
'CLOSE',
'CLUSTER',
'COALESCE',
'COLLATE',
'COLLECT',
'COLLECTION',
'COLLID',
'COLUMN',
'COMMENT',
'COMMIT',
'CONCAT',
'CONDITION',
'CONNECT',
'CONNECTION',
'CONSTRAINT',
'CONTAINS',
'CONTINUE',
'CONVERT',
'CORR',
'CORRESPONDING',
'COUNT',
'COUNT_BIG',
'COVAR_POP',
'COVAR_SAMP',
'CREATE',
'CROSS',
'CUBE',
'CUME_DIST',
'CURRENT',
'CURRENT_DATE',
'CURRENT_DEFAULT_TRANSFORM_GROUP',
'CURRENT_LC_CTYPE',
'CURRENT_PATH',
'CURRENT_ROLE',
'CURRENT_SCHEMA',
'CURRENT_SERVER',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_TIMEZONE',
'CURRENT_TRANSFORM_GROUP_FOR_TYPE',
'CURRENT_USER',
'CURSOR',
'CYCLE',
'DATA',
'DATABASE',
'DATAPARTITIONNAME',
'DATAPARTITIONNUM',
'DATE',
'DAY',
'DAYS',
'DB2GENERAL',
'DB2GENRL',
'DB2SQL',
'DBINFO',
'DBPARTITIONNAME',
'DBPARTITIONNUM',
'DEALLOCATE',
'DEC',
'DECIMAL',
'DECLARE',
'DEFAULT',
'DEFAULTS',
'DEFINITION',
'DELETE',
'DENSERANK',
'DENSE_RANK',
'DEREF',
'DESCRIBE',
'DESCRIPTOR',
'DETERMINISTIC',
'DIAGNOSTICS',
'DISABLE',
'DISALLOW',
'DISCONNECT',
'DISTINCT',
'DO',
'DOCUMENT',
'DOUBLE',
'DROP',
'DSSIZE',
'DYNAMIC',
'EACH',
'EDITPROC',
'ELEMENT',
'ELSE',
'ELSEIF',
'ENABLE',
'ENCODING',
'ENCRYPTION',
'END',
'END-EXEC',
'ENDING',
'ERASE',
'ESCAPE',
'EVERY',
'EXCEPTION',
'EXCLUDING',
'EXCLUSIVE',
'EXEC',
'EXECUTE',
'EXISTS',
'EXIT',
'EXP',
'EXPLAIN',
'EXTENDED',
'EXTERNAL',
'EXTRACT',
'FALSE',
'FENCED',
'FETCH',
'FIELDPROC',
'FILE',
'FILTER',
'FINAL',
'FIRST',
'FLOAT',
'FLOOR',
'FOR',
'FOREIGN',
'FREE',
'FULL',
'FUNCTION',
'FUSION',
'GENERAL',
'GENERATED',
'GET',
'GLOBAL',
'GOTO',
'GRANT',
'GRAPHIC',
'GROUP',
'GROUPING',
'HANDLER',
'HASH',
'HASHED_VALUE',
'HINT',
'HOLD',
'HOUR',
'HOURS',
'IDENTITY',
'IF',
'IMMEDIATE',
'IN',
'INCLUDING',
'INCLUSIVE',
'INCREMENT',
'INDEX',
'INDICATOR',
'INDICATORS',
'INF',
'INFINITY',
'INHERIT',
'INNER',
'INOUT',
'INSENSITIVE',
'INSERT',
'INT',
'INTEGER',
'INTEGRITY',
'INTERSECTION',
'INTERVAL',
'INTO',
'IS',
'ISOBID',
'ISOLATION',
'ITERATE',
'JAR',
'JAVA',
'KEEP',
'KEY',
'LABEL',
'LANGUAGE',
'LARGE',
'LATERAL',
'LC_CTYPE',
'LEADING',
'LEAVE',
'LEFT',
'LIKE',
'LINKTYPE',
'LN',
'LOCAL',
'LOCALDATE',
'LOCALE',
'LOCALTIME',
'LOCALTIMESTAMP',
'LOCATOR',
'LOCATORS',
'LOCK',
'LOCKMAX',
'LOCKSIZE',
'LONG',
'LOOP',
'LOWER',
'MAINTAINED',
'MATCH',
'MATERIALIZED',
'MAX',
'MAXVALUE',
'MEMBER',
'MERGE',
'METHOD',
'MICROSECOND',
'MICROSECONDS',
'MIN',
'MINUTE',
'MINUTES',
'MINVALUE',
'MOD',
'MODE',
'MODIFIES',
'MODULE',
'MONTH',
'MONTHS',
'MULTISET',
'NAN',
'NATIONAL',
'NATURAL',
'NCHAR',
'NCLOB',
'NEW',
'NEW_TABLE',
'NEXTVAL',
'NO',
'NOCACHE',
'NOCYCLE',
'NODENAME',
'NODENUMBER',
'NOMAXVALUE',
'NOMINVALUE',
'NONE',
'NOORDER',
'NORMALIZE',
'NORMALIZED',
'NOT',
'NULL',
'NULLIF',
'NULLS',
'NUMERIC',
'NUMPARTS',
'OBID',
'OCTET_LENGTH',
'OF',
'OFFSET',
'OLD',
'OLD_TABLE',
'ON',
'ONLY',
'OPEN',
'OPTIMIZATION',
'OPTIMIZE',
'OPTION',
'ORDER',
'OUT',
'OUTER',
'OVER',
'OVERLAPS',
'OVERLAY',
'OVERRIDING',
'PACKAGE',
'PADDED',
'PAGESIZE',
'PARAMETER',
'PART',
'PARTITION',
'PARTITIONED',
'PARTITIONING',
'PARTITIONS',
'PASSWORD',
'PATH',
'PERCENTILE_CONT',
'PERCENTILE_DISC',
'PERCENT_RANK',
'PIECESIZE',
'PLAN',
'POSITION',
'POWER',
'PRECISION',
'PREPARE',
'PREVVAL',
'PRIMARY',
'PRIQTY',
'PRIVILEGES',
'PROCEDURE',
'PROGRAM',
'PSID',
'PUBLIC',
'QUERY',
'QUERYNO',
'RANGE',
'RANK',
'READ',
'READS',
'REAL',
'RECOVERY',
'RECURSIVE',
'REF',
'REFERENCES',
'REFERENCING',
'REFRESH',
'REGR_AVGX',
'REGR_AVGY',
'REGR_COUNT',
'REGR_INTERCEPT',
'REGR_R2',
'REGR_SLOPE',
'REGR_SXX',
'REGR_SXY',
'REGR_SYY',
'RELEASE',
'RENAME',
'REPEAT',
'RESET',
'RESIGNAL',
'RESTART',
'RESTRICT',
'RESULT',
'RESULT_SET_LOCATOR',
'RETURN',
'RETURNS',
'REVOKE',
'RIGHT',
'ROLE',
'ROLLBACK',
'ROLLUP',
'ROUND_CEILING',
'ROUND_DOWN',
'ROUND_FLOOR',
'ROUND_HALF_DOWN',
'ROUND_HALF_EVEN',
'ROUND_HALF_UP',
'ROUND_UP',
'ROUTINE',
'ROW',
'ROWNUMBER',
'ROWS',
'ROWSET',
'ROW_NUMBER',
'RRN',
'RUN',
'SAVEPOINT',
'SCHEMA',
'SCOPE',
'SCRATCHPAD',
'SCROLL',
'SEARCH',
'SECOND',
'SECONDS',
'SECQTY',
'SECURITY',
'SENSITIVE',
'SEQUENCE',
'SESSION',
'SESSION_USER',
'SIGNAL',
'SIMILAR',
'SIMPLE',
'SMALLINT',
'SNAN',
'SOME',
'SOURCE',
'SPECIFIC',
'SPECIFICTYPE',
'SQL',
'SQLEXCEPTION',
'SQLID',
'SQLSTATE',
'SQLWARNING',
'SQRT',
'STACKED',
'STANDARD',
'START',
'STARTING',
'STATEMENT',
'STATIC',
'STATMENT',
'STAY',
'STDDEV_POP',
'STDDEV_SAMP',
'STOGROUP',
'STORES',
'STYLE',
'SUBMULTISET',
'SUBSTRING',
'SUM',
'SUMMARY',
'SYMMETRIC',
'SYNONYM',
'SYSFUN',
'SYSIBM',
'SYSPROC',
'SYSTEM',
'SYSTEM_USER',
'TABLE',
'TABLESAMPLE',
'TABLESPACE',
'THEN',
'TIME',
'TIMESTAMP',
'TIMEZONE_HOUR',
'TIMEZONE_MINUTE',
'TO',
'TRAILING',
'TRANSACTION',
'TRANSLATE',
'TRANSLATION',
'TREAT',
'TRIGGER',
'TRIM',
'TRUE',
'TRUNCATE',
'TYPE',
'UESCAPE',
'UNDO',
'UNIQUE',
'UNKNOWN',
'UNNEST',
'UNTIL',
'UPPER',
'USAGE',
'USER',
'USING',
'VALIDPROC',
'VALUE',
'VARCHAR',
'VARIABLE',
'VARIANT',
'VARYING',
'VAR_POP',
'VAR_SAMP',
'VCAT',
'VERSION',
'VIEW',
'VOLATILE',
'VOLUMES',
'WHEN',
'WHENEVER',
'WHILE',
'WIDTH_BUCKET',
'WINDOW',
'WITH',
'WITHIN',
'WITHOUT',
'WLM',
'WRITE',
'XMLELEMENT',
'XMLEXISTS',
'XMLNAMESPACES',
'YEAR',
'YEARS'
];
var reservedTopLevelWords = [
'ADD',
'AFTER',
'ALTER COLUMN',
'ALTER TABLE',
'DELETE FROM',
'EXCEPT',
'FETCH FIRST',
'FROM',
'GROUP BY',
'GO',
'HAVING',
'INSERT INTO',
'INTERSECT',
'LIMIT',
'ORDER BY',
'SELECT',
'SET CURRENT SCHEMA',
'SET SCHEMA',
'SET',
'UPDATE',
'VALUES',
'WHERE'
];
var reservedTopLevelWordsNoIndent = ['INTERSECT', 'INTERSECT ALL', 'MINUS', 'UNION', 'UNION ALL'];
var reservedNewlineWords = [
'AND',
'CROSS JOIN',
'INNER JOIN',
'JOIN',
'LEFT JOIN',
'LEFT OUTER JOIN',
'OR',
'OUTER JOIN',
'RIGHT JOIN',
'RIGHT OUTER JOIN'
];

View File

@@ -0,0 +1,5 @@
import AbstractFormatter from './utils/abstract';
import { TokenizerConfig } from '../core/types';
export default class N1qlFormatter extends AbstractFormatter {
getTokenizerConfig(): TokenizerConfig;
}

View File

@@ -0,0 +1,257 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var abstract_1 = __importDefault(require("./utils/abstract"));
var N1qlFormatter = (function (_super) {
__extends(N1qlFormatter, _super);
function N1qlFormatter() {
return _super !== null && _super.apply(this, arguments) || this;
}
N1qlFormatter.prototype.getTokenizerConfig = function () {
return {
reservedWords: reservedWords,
reservedTopLevelWords: reservedTopLevelWords,
reservedNewlineWords: reservedNewlineWords,
reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,
stringTypes: ["\"\"", "''", '``'],
openParens: ['(', '[', '{'],
closeParens: [')', ']', '}'],
namedPlaceholderTypes: ['$'],
lineCommentTypes: ['#', '--'],
specialWordChars: []
};
};
return N1qlFormatter;
}(abstract_1["default"]));
exports["default"] = N1qlFormatter;
var reservedWords = [
'ALL',
'ALTER',
'ANALYZE',
'AND',
'ANY',
'ARRAY',
'AS',
'ASC',
'BEGIN',
'BETWEEN',
'BINARY',
'BOOLEAN',
'BREAK',
'BUCKET',
'BUILD',
'BY',
'CALL',
'CASE',
'CAST',
'CLUSTER',
'COLLATE',
'COLLECTION',
'COMMIT',
'CONNECT',
'CONTINUE',
'CORRELATE',
'COVER',
'CREATE',
'DATABASE',
'DATASET',
'DATASTORE',
'DECLARE',
'DECREMENT',
'DELETE',
'DERIVED',
'DESC',
'DESCRIBE',
'DISTINCT',
'DO',
'DROP',
'EACH',
'ELEMENT',
'ELSE',
'END',
'EVERY',
'EXCEPT',
'EXCLUDE',
'EXECUTE',
'EXISTS',
'EXPLAIN',
'FALSE',
'FETCH',
'FIRST',
'FLATTEN',
'FOR',
'FORCE',
'FROM',
'FUNCTION',
'GRANT',
'GROUP',
'GSI',
'HAVING',
'IF',
'IGNORE',
'ILIKE',
'IN',
'INCLUDE',
'INCREMENT',
'INDEX',
'INFER',
'INLINE',
'INNER',
'INSERT',
'INTERSECT',
'INTO',
'IS',
'JOIN',
'KEY',
'KEYS',
'KEYSPACE',
'KNOWN',
'LAST',
'LEFT',
'LET',
'LETTING',
'LIKE',
'LIMIT',
'LSM',
'MAP',
'MAPPING',
'MATCHED',
'MATERIALIZED',
'MERGE',
'MISSING',
'NAMESPACE',
'NEST',
'NOT',
'NULL',
'NUMBER',
'OBJECT',
'OFFSET',
'ON',
'OPTION',
'OR',
'ORDER',
'OUTER',
'OVER',
'PARSE',
'PARTITION',
'PASSWORD',
'PATH',
'POOL',
'PREPARE',
'PRIMARY',
'PRIVATE',
'PRIVILEGE',
'PROCEDURE',
'PUBLIC',
'RAW',
'REALM',
'REDUCE',
'RENAME',
'RETURN',
'RETURNING',
'REVOKE',
'RIGHT',
'ROLE',
'ROLLBACK',
'SATISFIES',
'SCHEMA',
'SELECT',
'SELF',
'SEMI',
'SET',
'SHOW',
'SOME',
'START',
'STATISTICS',
'STRING',
'SYSTEM',
'THEN',
'TO',
'TRANSACTION',
'TRIGGER',
'TRUE',
'TRUNCATE',
'UNDER',
'UNION',
'UNIQUE',
'UNKNOWN',
'UNNEST',
'UNSET',
'UPDATE',
'UPSERT',
'USE',
'USER',
'USING',
'VALIDATE',
'VALUE',
'VALUED',
'VALUES',
'VIA',
'VIEW',
'WHEN',
'WHERE',
'WHILE',
'WITH',
'WITHIN',
'WORK',
'XOR'
];
var reservedTopLevelWords = [
'DELETE FROM',
'EXCEPT ALL',
'EXCEPT',
'EXPLAIN DELETE FROM',
'EXPLAIN UPDATE',
'EXPLAIN UPSERT',
'FROM',
'GROUP BY',
'HAVING',
'INFER',
'INSERT INTO',
'LET',
'LIMIT',
'MERGE',
'NEST',
'ORDER BY',
'PREPARE',
'SELECT',
'SET CURRENT SCHEMA',
'SET SCHEMA',
'SET',
'UNNEST',
'UPDATE',
'UPSERT',
'USE KEYS',
'VALUES',
'WHERE'
];
var reservedTopLevelWordsNoIndent = ['INTERSECT', 'INTERSECT ALL', 'MINUS', 'UNION', 'UNION ALL'];
var reservedNewlineWords = [
'AND',
'INNER JOIN',
'JOIN',
'LEFT JOIN',
'LEFT OUTER JOIN',
'OR',
'OUTER JOIN',
'RIGHT JOIN',
'RIGHT OUTER JOIN',
'XOR'
];

View File

@@ -0,0 +1,6 @@
import AbstractFormatter from './utils/abstract';
import { Token, TokenizerConfig } from '../core/types';
export default class PlSqlFormatter extends AbstractFormatter {
getTokenizerConfig(): TokenizerConfig;
tokenOverride: (token: Token, previousReservedToken: Token) => Token;
}

View File

@@ -0,0 +1,459 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var abstract_1 = __importDefault(require("./utils/abstract"));
var types_1 = require("../core/types");
var PlSqlFormatter = (function (_super) {
__extends(PlSqlFormatter, _super);
function PlSqlFormatter() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.tokenOverride = function (token, previousReservedToken) {
if (token.type === types_1.TokenTypes.RESERVED_TOP_LEVEL &&
previousReservedToken.value &&
token.value.toUpperCase() === 'SET' &&
previousReservedToken.value.toUpperCase() === 'BY') {
token.type = types_1.TokenTypes.RESERVED;
return token;
}
};
return _this;
}
PlSqlFormatter.prototype.getTokenizerConfig = function () {
return {
reservedWords: reservedWords,
reservedTopLevelWords: reservedTopLevelWords,
reservedNewlineWords: reservedNewlineWords,
reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,
stringTypes: ["\"\"", "N''", "''", '``'],
openParens: ['(', 'CASE'],
closeParens: [')', 'END'],
indexedPlaceholderTypes: ['?'],
namedPlaceholderTypes: [':'],
lineCommentTypes: ['--'],
specialWordChars: ['_', '$', '#', '.', '@']
};
};
return PlSqlFormatter;
}(abstract_1["default"]));
exports["default"] = PlSqlFormatter;
var reservedWords = [
'A',
'ACCESSIBLE',
'AGENT',
'AGGREGATE',
'ALL',
'ALTER',
'ANY',
'ARRAY',
'AS',
'ASC',
'AT',
'ATTRIBUTE',
'AUTHID',
'AVG',
'BETWEEN',
'BFILE_BASE',
'BINARY_INTEGER',
'BINARY',
'BLOB_BASE',
'BLOCK',
'BODY',
'BOOLEAN',
'BOTH',
'BOUND',
'BREADTH',
'BULK',
'BY',
'BYTE',
'C',
'CALL',
'CALLING',
'CASCADE',
'CASE',
'CHAR_BASE',
'CHAR',
'CHARACTER',
'CHARSET',
'CHARSETFORM',
'CHARSETID',
'CHECK',
'CLOB_BASE',
'CLONE',
'CLOSE',
'CLUSTER',
'CLUSTERS',
'COALESCE',
'COLAUTH',
'COLLECT',
'COLUMNS',
'COMMENT',
'COMMIT',
'COMMITTED',
'COMPILED',
'COMPRESS',
'CONNECT',
'CONSTANT',
'CONSTRUCTOR',
'CONTEXT',
'CONTINUE',
'CONVERT',
'COUNT',
'CRASH',
'CREATE',
'CREDENTIAL',
'CURRENT',
'CURRVAL',
'CURSOR',
'CUSTOMDATUM',
'DANGLING',
'DATA',
'DATE_BASE',
'DATE',
'DAY',
'DECIMAL',
'DEFAULT',
'DEFINE',
'DELETE',
'DEPTH',
'DESC',
'DETERMINISTIC',
'DIRECTORY',
'DISTINCT',
'DO',
'DOUBLE',
'DROP',
'DURATION',
'ELEMENT',
'ELSIF',
'EMPTY',
'END',
'ESCAPE',
'EXCEPTIONS',
'EXCLUSIVE',
'EXECUTE',
'EXISTS',
'EXIT',
'EXTENDS',
'EXTERNAL',
'EXTRACT',
'FALSE',
'FETCH',
'FINAL',
'FIRST',
'FIXED',
'FLOAT',
'FOR',
'FORALL',
'FORCE',
'FROM',
'FUNCTION',
'GENERAL',
'GOTO',
'GRANT',
'GROUP',
'HASH',
'HEAP',
'HIDDEN',
'HOUR',
'IDENTIFIED',
'IF',
'IMMEDIATE',
'IN',
'INCLUDING',
'INDEX',
'INDEXES',
'INDICATOR',
'INDICES',
'INFINITE',
'INSTANTIABLE',
'INT',
'INTEGER',
'INTERFACE',
'INTERVAL',
'INTO',
'INVALIDATE',
'IS',
'ISOLATION',
'JAVA',
'LANGUAGE',
'LARGE',
'LEADING',
'LENGTH',
'LEVEL',
'LIBRARY',
'LIKE',
'LIKE2',
'LIKE4',
'LIKEC',
'LIMITED',
'LOCAL',
'LOCK',
'LONG',
'MAP',
'MAX',
'MAXLEN',
'MEMBER',
'MERGE',
'MIN',
'MINUTE',
'MLSLABEL',
'MOD',
'MODE',
'MONTH',
'MULTISET',
'NAME',
'NAN',
'NATIONAL',
'NATIVE',
'NATURAL',
'NATURALN',
'NCHAR',
'NEW',
'NEXTVAL',
'NOCOMPRESS',
'NOCOPY',
'NOT',
'NOWAIT',
'NULL',
'NULLIF',
'NUMBER_BASE',
'NUMBER',
'OBJECT',
'OCICOLL',
'OCIDATE',
'OCIDATETIME',
'OCIDURATION',
'OCIINTERVAL',
'OCILOBLOCATOR',
'OCINUMBER',
'OCIRAW',
'OCIREF',
'OCIREFCURSOR',
'OCIROWID',
'OCISTRING',
'OCITYPE',
'OF',
'OLD',
'ON',
'ONLY',
'OPAQUE',
'OPEN',
'OPERATOR',
'OPTION',
'ORACLE',
'ORADATA',
'ORDER',
'ORGANIZATION',
'ORLANY',
'ORLVARY',
'OTHERS',
'OUT',
'OVERLAPS',
'OVERRIDING',
'PACKAGE',
'PARALLEL_ENABLE',
'PARAMETER',
'PARAMETERS',
'PARENT',
'PARTITION',
'PASCAL',
'PCTFREE',
'PIPE',
'PIPELINED',
'PLS_INTEGER',
'PLUGGABLE',
'POSITIVE',
'POSITIVEN',
'PRAGMA',
'PRECISION',
'PRIOR',
'PRIVATE',
'PROCEDURE',
'PUBLIC',
'RAISE',
'RANGE',
'RAW',
'READ',
'REAL',
'RECORD',
'REF',
'REFERENCE',
'RELEASE',
'RELIES_ON',
'REM',
'REMAINDER',
'RENAME',
'RESOURCE',
'RESULT_CACHE',
'RESULT',
'RETURN',
'RETURNING',
'REVERSE',
'REVOKE',
'ROLLBACK',
'ROW',
'ROWID',
'ROWNUM',
'ROWTYPE',
'SAMPLE',
'SAVE',
'SAVEPOINT',
'SB1',
'SB2',
'SB4',
'SEARCH',
'SECOND',
'SEGMENT',
'SELF',
'SEPARATE',
'SEQUENCE',
'SERIALIZABLE',
'SHARE',
'SHORT',
'SIZE_T',
'SIZE',
'SMALLINT',
'SOME',
'SPACE',
'SPARSE',
'SQL',
'SQLCODE',
'SQLDATA',
'SQLERRM',
'SQLNAME',
'SQLSTATE',
'STANDARD',
'START',
'STATIC',
'STDDEV',
'STORED',
'STRING',
'STRUCT',
'STYLE',
'SUBMULTISET',
'SUBPARTITION',
'SUBSTITUTABLE',
'SUBTYPE',
'SUCCESSFUL',
'SUM',
'SYNONYM',
'SYSDATE',
'TABAUTH',
'TABLE',
'TDO',
'THE',
'THEN',
'TIME',
'TIMESTAMP',
'TIMEZONE_ABBR',
'TIMEZONE_HOUR',
'TIMEZONE_MINUTE',
'TIMEZONE_REGION',
'TO',
'TRAILING',
'TRANSACTION',
'TRANSACTIONAL',
'TRIGGER',
'TRUE',
'TRUSTED',
'TYPE',
'UB1',
'UB2',
'UB4',
'UID',
'UNDER',
'UNIQUE',
'UNPLUG',
'UNSIGNED',
'UNTRUSTED',
'USE',
'USER',
'USING',
'VALIDATE',
'VALIST',
'VALUE',
'VARCHAR',
'VARCHAR2',
'VARIABLE',
'VARIANCE',
'VARRAY',
'VARYING',
'VIEW',
'VIEWS',
'VOID',
'WHENEVER',
'WHILE',
'WITH',
'WORK',
'WRAPPED',
'WRITE',
'YEAR',
'ZONE'
];
var reservedTopLevelWords = [
'ADD',
'ALTER COLUMN',
'ALTER TABLE',
'BEGIN',
'CONNECT BY',
'DECLARE',
'DELETE FROM',
'DELETE',
'END',
'EXCEPT',
'EXCEPTION',
'FETCH FIRST',
'FROM',
'GROUP BY',
'HAVING',
'INSERT INTO',
'INSERT',
'LIMIT',
'LOOP',
'MODIFY',
'ORDER BY',
'SELECT',
'SET CURRENT SCHEMA',
'SET SCHEMA',
'SET',
'START WITH',
'UPDATE',
'VALUES',
'WHERE'
];
var reservedTopLevelWordsNoIndent = ['INTERSECT', 'INTERSECT ALL', 'MINUS', 'UNION', 'UNION ALL'];
var reservedNewlineWords = [
'AND',
'CROSS APPLY',
'CROSS JOIN',
'ELSE',
'END',
'INNER JOIN',
'JOIN',
'LEFT JOIN',
'LEFT OUTER JOIN',
'OR',
'OUTER APPLY',
'OUTER JOIN',
'RIGHT JOIN',
'RIGHT OUTER JOIN',
'WHEN',
'XOR'
];

View File

@@ -0,0 +1,5 @@
import AbstractFormatter from './utils/abstract';
import { TokenizerConfig } from '../core/types';
export default class StandardSqlFormatter extends AbstractFormatter {
getTokenizerConfig(): TokenizerConfig;
}

View File

@@ -0,0 +1,369 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var abstract_1 = __importDefault(require("./utils/abstract"));
var StandardSqlFormatter = (function (_super) {
__extends(StandardSqlFormatter, _super);
function StandardSqlFormatter() {
return _super !== null && _super.apply(this, arguments) || this;
}
StandardSqlFormatter.prototype.getTokenizerConfig = function () {
return {
reservedWords: reservedWords,
reservedTopLevelWords: reservedTopLevelWords,
reservedNewlineWords: reservedNewlineWords,
reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent,
stringTypes: ["\"\"", "N''", "''", '``', '[]', "E''"],
openParens: ['(', 'CASE'],
closeParens: [')', 'END'],
indexedPlaceholderTypes: ['?'],
namedPlaceholderTypes: ['@', ':', '%', '$'],
lineCommentTypes: ['#', '--'],
specialWordChars: []
};
};
return StandardSqlFormatter;
}(abstract_1["default"]));
exports["default"] = StandardSqlFormatter;
var reservedWords = [
'ACCESSIBLE',
'ACTION',
'AGAINST',
'AGGREGATE',
'ALGORITHM',
'ALL',
'ALTER',
'ANALYSE',
'ANALYZE',
'AS',
'ASC',
'AUTOCOMMIT',
'AUTO_INCREMENT',
'BACKUP',
'BEGIN',
'BETWEEN',
'BINLOG',
'BOTH',
'CASCADE',
'CASE',
'CHANGE',
'CHANGED',
'CHARACTER SET',
'CHARSET',
'CHECK',
'CHECKSUM',
'COLLATE',
'COLLATION',
'COLUMN',
'COLUMNS',
'COMMENT',
'COMMIT',
'COMMITTED',
'COMPRESSED',
'CONCURRENT',
'CONSTRAINT',
'CONTAINS',
'CONVERT',
'COUNT',
'CREATE',
'CROSS',
'CURRENT_TIMESTAMP',
'DATABASE',
'DATABASES',
'DAY_HOUR',
'DAY_MINUTE',
'DAY_SECOND',
'DAY',
'DEFAULT',
'DEFINER',
'DELAYED',
'DELETE',
'DESC',
'DESCRIBE',
'DETERMINISTIC',
'DISTINCT',
'DISTINCTROW',
'DIV',
'DO',
'DROP',
'DUMPFILE',
'DUPLICATE',
'DYNAMIC',
'ELSE',
'ENCLOSED',
'END',
'ENGINE',
'ENGINES',
'ENGINE_TYPE',
'ESCAPE',
'ESCAPED',
'EVENTS',
'EXEC',
'EXECUTE',
'EXISTS',
'EXPLAIN',
'EXTENDED',
'FAST',
'FETCH',
'FIELDS',
'FILE',
'FIRST',
'FIXED',
'FLUSH',
'FOR',
'FORCE',
'FOREIGN',
'FULL',
'FULLTEXT',
'FUNCTION',
'GLOBAL',
'GRANTS',
'GROUP_CONCAT',
'HEAP',
'HIGH_PRIORITY',
'HOSTS',
'HOUR',
'HOUR_MINUTE',
'HOUR_SECOND',
'IDENTIFIED',
'IF',
'IFNULL',
'IGNORE',
'IN',
'INDEX',
'INDEXES',
'INFILE',
'INSERT',
'INSERT_ID',
'INSERT_METHOD',
'INTERVAL',
'INTO',
'INVOKER',
'IS',
'ISOLATION',
'KEY',
'KEYS',
'KILL',
'LAST_INSERT_ID',
'LEADING',
'LEVEL',
'LIKE',
'LINEAR',
'LINES',
'LOAD',
'LOCAL',
'LOCK',
'LOCKS',
'LOGS',
'LOW_PRIORITY',
'MARIA',
'MASTER',
'MASTER_CONNECT_RETRY',
'MASTER_HOST',
'MASTER_LOG_FILE',
'MATCH',
'MAX_CONNECTIONS_PER_HOUR',
'MAX_QUERIES_PER_HOUR',
'MAX_ROWS',
'MAX_UPDATES_PER_HOUR',
'MAX_USER_CONNECTIONS',
'MEDIUM',
'MERGE',
'MINUTE',
'MINUTE_SECOND',
'MIN_ROWS',
'MODE',
'MONTH',
'MRG_MYISAM',
'MYISAM',
'NAMES',
'NATURAL',
'NOT',
'NOW()',
'NULL',
'OFFSET',
'ON DELETE',
'ON UPDATE',
'ON',
'ONLY',
'OPEN',
'OPTIMIZE',
'OPTION',
'OPTIONALLY',
'OUTFILE',
'PACK_KEYS',
'PAGE',
'PARTIAL',
'PARTITION',
'PARTITIONS',
'PASSWORD',
'PRIMARY',
'PRIVILEGES',
'PROCEDURE',
'PROCESS',
'PROCESSLIST',
'PURGE',
'QUICK',
'RAID0',
'RAID_CHUNKS',
'RAID_CHUNKSIZE',
'RAID_TYPE',
'RANGE',
'READ',
'READ_ONLY',
'READ_WRITE',
'REFERENCES',
'REGEXP',
'RELOAD',
'RENAME',
'REPAIR',
'REPEATABLE',
'REPLACE',
'REPLICATION',
'RESET',
'RESTORE',
'RESTRICT',
'RETURN',
'RETURNS',
'REVOKE',
'RLIKE',
'ROLLBACK',
'ROW',
'ROWS',
'ROW_FORMAT',
'SECOND',
'SECURITY',
'SEPARATOR',
'SERIALIZABLE',
'SESSION',
'SHARE',
'SHOW',
'SHUTDOWN',
'SLAVE',
'SONAME',
'SOUNDS',
'SQL',
'SQL_AUTO_IS_NULL',
'SQL_BIG_RESULT',
'SQL_BIG_SELECTS',
'SQL_BIG_TABLES',
'SQL_BUFFER_RESULT',
'SQL_CACHE',
'SQL_CALC_FOUND_ROWS',
'SQL_LOG_BIN',
'SQL_LOG_OFF',
'SQL_LOG_UPDATE',
'SQL_LOW_PRIORITY_UPDATES',
'SQL_MAX_JOIN_SIZE',
'SQL_NO_CACHE',
'SQL_QUOTE_SHOW_CREATE',
'SQL_SAFE_UPDATES',
'SQL_SELECT_LIMIT',
'SQL_SLAVE_SKIP_COUNTER',
'SQL_SMALL_RESULT',
'SQL_WARNINGS',
'START',
'STARTING',
'STATUS',
'STOP',
'STORAGE',
'STRAIGHT_JOIN',
'STRING',
'STRIPED',
'SUPER',
'TABLE',
'TABLES',
'TEMPORARY',
'TERMINATED',
'THEN',
'TO',
'TRAILING',
'TRANSACTIONAL',
'TRIGGER',
'TRUE',
'TRUNCATE',
'TYPE',
'TYPES',
'UNCOMMITTED',
'UNIQUE',
'UNLOCK',
'UNSIGNED',
'USAGE',
'USE',
'USING',
'VARIABLES',
'VIEW',
'WHEN',
'WITH',
'WORK',
'WRITE',
'YEAR_MONTH',
];
var reservedTopLevelWords = [
'ADD',
'AFTER',
'ALTER COLUMN',
'ALTER TABLE',
'CREATE OR REPLACE',
'DECLARE',
'DELETE FROM',
'EXCEPT',
'FETCH FIRST',
'FROM',
'GO',
'GRANT',
'GROUP BY',
'HAVING',
'INSERT INTO',
'INSERT',
'LIMIT',
'MODIFY',
'ORDER BY',
'RETURNING',
'SELECT',
'SET CURRENT SCHEMA',
'SET SCHEMA',
'SET',
'UPDATE',
'VALUES',
'WHERE',
];
var reservedTopLevelWordsNoIndent = ['INTERSECT ALL', 'INTERSECT', 'MINUS', 'UNION ALL', 'UNION'];
var reservedNewlineWords = [
'AND',
'CROSS APPLY',
'CROSS JOIN',
'ELSE',
'INNER JOIN',
"FULL JOIN",
"FULL OUTER JOIN",
'LEFT JOIN',
'LEFT OUTER JOIN',
'NATURAL JOIN',
'OR',
'OUTER APPLY',
'OUTER JOIN',
'RENAME',
'RIGHT JOIN',
'RIGHT OUTER JOIN',
'JOIN',
'WHEN',
'XOR',
];

View File

@@ -0,0 +1,11 @@
import { Config, Token, TokenizerConfig } from '../../core/types';
import Tokenizer from '../../core/Tokenizer';
export default abstract class AbstractFormatter {
cfg: Config;
constructor(cfg: Config);
abstract getTokenizerConfig(): TokenizerConfig;
format(query: string): string;
tokenize(query: string): Token[];
tokenizer(): Tokenizer;
protected tokenOverride?: (token: Token, previousToken?: Token) => Token;
}

View File

@@ -0,0 +1,23 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var Tokenizer_1 = __importDefault(require("../../core/Tokenizer"));
var Formatter_1 = __importDefault(require("../../core/Formatter"));
var AbstractFormatter = (function () {
function AbstractFormatter(cfg) {
this.cfg = cfg;
}
AbstractFormatter.prototype.format = function (query) {
return new Formatter_1["default"](this.cfg, this.tokenizer(), this.tokenOverride).format(query);
};
AbstractFormatter.prototype.tokenize = function (query) {
return this.tokenizer().tokenize(query);
};
AbstractFormatter.prototype.tokenizer = function () {
return new Tokenizer_1["default"](this.getTokenizerConfig());
};
return AbstractFormatter;
}());
exports["default"] = AbstractFormatter;