kopytko-formatter 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.
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * BrightScript built-in functions and global objects.
4
+ * Covers the standard BrightScript runtime as documented at:
5
+ * https://developer.roku.com/docs/references/brightscript/language/global-functions.md
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.BRIGHTSCRIPT_KEYWORDS = exports.BRIGHTSCRIPT_BUILTINS = void 0;
9
+ exports.findBuiltin = findBuiltin;
10
+ exports.getKeywordCategory = getKeywordCategory;
11
+ exports.BRIGHTSCRIPT_BUILTINS = [
12
+ // Math
13
+ { name: 'Abs', signature: 'Abs(x as Float) as Float', returnType: 'Float', description: 'Returns the absolute value of x.', category: 'math' },
14
+ { name: 'Atn', signature: 'Atn(x as Float) as Float', returnType: 'Float', description: 'Returns the arctangent of x in radians.', category: 'math' },
15
+ { name: 'Cos', signature: 'Cos(x as Float) as Float', returnType: 'Float', description: 'Returns the cosine of x (x in radians).', category: 'math' },
16
+ { name: 'Exp', signature: 'Exp(x as Float) as Float', returnType: 'Float', description: 'Returns e^x.', category: 'math' },
17
+ { name: 'Fix', signature: 'Fix(x as Float) as Integer', returnType: 'Integer', description: 'Truncates x toward zero (removes the fractional part). Unlike Int(), which floors toward negative infinity, Fix(-2.9) returns -2.', category: 'math' },
18
+ { name: 'Int', signature: 'Int(x as Float) as Integer', returnType: 'Integer', description: 'Returns the largest integer less than or equal to x (floor). Int(-2.1) returns -3. Use Fix() to truncate toward zero instead.', category: 'math' },
19
+ { name: 'Log', signature: 'Log(x as Float) as Float', returnType: 'Float', description: 'Returns the natural logarithm of x.', category: 'math' },
20
+ { name: 'Rnd', signature: 'Rnd(range as Integer) as Integer', returnType: 'Integer', description: 'Returns a random integer between 1 and range inclusive. Rnd(0) returns a float between 0 and 1.', category: 'math' },
21
+ { name: 'Sgn', signature: 'Sgn(x as Float) as Integer', returnType: 'Integer', description: 'Returns the sign of x: -1, 0, or 1.', category: 'math' },
22
+ { name: 'Sin', signature: 'Sin(x as Float) as Float', returnType: 'Float', description: 'Returns the sine of x (x in radians).', category: 'math' },
23
+ { name: 'Sqr', signature: 'Sqr(x as Float) as Float', returnType: 'Float', description: 'Returns the square root of x.', category: 'math' },
24
+ { name: 'Tan', signature: 'Tan(x as Float) as Float', returnType: 'Float', description: 'Returns the tangent of x (x in radians).', category: 'math' },
25
+ // String
26
+ { name: 'Asc', signature: 'Asc(s as String) as Integer', returnType: 'Integer', description: 'Returns the ASCII code of the first character of s.', category: 'string' },
27
+ { name: 'Chr', signature: 'Chr(ch as Integer) as String', returnType: 'String', description: 'Returns the character corresponding to ASCII code ch.', category: 'string' },
28
+ { name: 'Instr', signature: 'Instr(start as Integer, haystack as String, needle as String) as Integer', returnType: 'Integer', description: 'Returns the position of needle in haystack starting from start (1-based), or 0 if not found.', category: 'string' },
29
+ { name: 'InstrRev', signature: 'InstrRev(haystack as String, needle as String) as Integer', returnType: 'Integer', description: 'Returns the position of the last occurrence of needle in haystack (1-based), or 0 if not found. Use Instr() to find the first occurrence.', category: 'string' },
30
+ { name: 'LCase', signature: 'LCase(s as String) as String', returnType: 'String', description: 'Returns s converted to lowercase.', category: 'string' },
31
+ { name: 'Left', signature: 'Left(s as String, n as Integer) as String', returnType: 'String', description: 'Returns the leftmost n characters of s.', category: 'string' },
32
+ { name: 'Len', signature: 'Len(s as String) as Integer', returnType: 'Integer', description: 'Returns the number of characters in s.', category: 'string' },
33
+ { name: 'Mid', signature: 'Mid(s as String, start as Integer, length = -1 as Integer) as String', returnType: 'String', description: 'Returns a substring of s starting at start (1-based) with optional length.', category: 'string' },
34
+ { name: 'Right', signature: 'Right(s as String, n as Integer) as String', returnType: 'String', description: 'Returns the rightmost n characters of s.', category: 'string' },
35
+ { name: 'Str', signature: 'Str(n as Float) as String', returnType: 'String', description: 'Converts a number to its string representation.', category: 'string' },
36
+ { name: 'StrI', signature: 'StrI(n as Integer, base = 10 as Integer) as String', returnType: 'String', description: 'Converts an integer to a string in the given base.', category: 'string' },
37
+ { name: 'String', signature: 'String(n as Integer, ch as String) as String', returnType: 'String', description: 'Returns a string of n repetitions of ch.', category: 'string' },
38
+ { name: 'StringI', signature: 'StringI(n as Integer, ch as Integer) as String', returnType: 'String', description: 'Returns a string of n repetitions of the character with ASCII code ch.', category: 'string' },
39
+ { name: 'Substitute', signature: 'Substitute(template as String, arg0 as String, arg1 = "" as String, arg2 = "" as String, arg3 = "" as String) as String', returnType: 'String', description: 'Substitutes {0}..{3} placeholders in template with the given arguments.', category: 'string' },
40
+ { name: 'Tr', signature: 'Tr(str as String) as String', returnType: 'String', description: 'Returns the localized translation of str from the channel\'s locale package. Returns str unchanged if no translation is found.', category: 'string' },
41
+ { name: 'UCase', signature: 'UCase(s as String) as String', returnType: 'String', description: 'Returns s converted to uppercase.', category: 'string' },
42
+ { name: 'Val', signature: 'Val(s as String, base = 10 as Integer) as Float', returnType: 'Float', description: 'Parses s as a number in the given base.', category: 'string' },
43
+ // Type conversion
44
+ { name: 'Box', signature: 'Box(x as Dynamic) as Dynamic', returnType: 'Dynamic', description: 'Boxes a primitive value into its corresponding object type (e.g. Integer → roInt, Float → roFloat, String → roString). Returns objects unchanged.', category: 'type' },
45
+ { name: 'CBool', signature: 'CBool(x as Dynamic) as Boolean', returnType: 'Boolean', description: 'Converts x to Boolean. Non-zero numbers and non-empty strings become true; zero, empty string, and invalid become false.', category: 'type' },
46
+ { name: 'CDbl', signature: 'CDbl(x as Dynamic) as Double', returnType: 'Double', description: 'Converts x to Double.', category: 'type' },
47
+ { name: 'CFloat', signature: 'CFloat(x as Dynamic) as Float', returnType: 'Float', description: 'Converts x to Float (same as Csng).', category: 'type' },
48
+ { name: 'CInt', signature: 'CInt(x as Dynamic) as Integer', returnType: 'Integer', description: 'Converts x to Integer (rounds to nearest).', category: 'type' },
49
+ { name: 'CLng', signature: 'CLng(x as Dynamic) as LongInteger', returnType: 'LongInteger', description: 'Converts x to LongInteger.', category: 'type' },
50
+ { name: 'Csng', signature: 'Csng(x as Dynamic) as Float', returnType: 'Float', description: 'Converts x to single-precision Float. Equivalent to CFloat().', category: 'type' },
51
+ { name: 'CObj', signature: 'CObj(x as Dynamic) as Object', returnType: 'Object', description: 'Casts x to Object type. Used to pass a value as a generic Object reference.', category: 'type' },
52
+ { name: 'CStr', signature: 'CStr(x as Dynamic) as String', returnType: 'String', description: 'Converts x to String.', category: 'type' },
53
+ { name: 'Unbox', signature: 'Unbox(x as Dynamic) as Dynamic', returnType: 'Dynamic', description: 'Extracts the primitive value from a boxed object (e.g. roInt → Integer, roFloat → Float, roString → String). Returns non-object values unchanged. Inverse of Box().', category: 'type' },
54
+ // Type inspection
55
+ { name: 'GetInterface', signature: 'GetInterface(obj as Dynamic, ifName as String) as Dynamic', returnType: 'Dynamic', description: 'Returns the named interface of obj, or invalid if obj does not implement it. Used to check interface support at runtime.', category: 'type' },
56
+ { name: 'IsArray', signature: 'IsArray(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is an roArray.', category: 'type' },
57
+ { name: 'IsAssociativeArray', signature: 'IsAssociativeArray(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is an roAssociativeArray.', category: 'type' },
58
+ { name: 'IsBoolean', signature: 'IsBoolean(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is a Boolean.', category: 'type' },
59
+ { name: 'IsDefined', signature: 'IsDefined(name as String) as Boolean', returnType: 'Boolean', description: 'Returns true if a variable with the given name is defined in the current scope.', category: 'type' },
60
+ { name: 'IsDouble', signature: 'IsDouble(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is a Double.', category: 'type' },
61
+ { name: 'IsFloat', signature: 'IsFloat(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is a Float.', category: 'type' },
62
+ { name: 'IsFunction', signature: 'IsFunction(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is a Function reference.', category: 'type' },
63
+ { name: 'IsInt', signature: 'IsInt(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is an Integer.', category: 'type' },
64
+ { name: 'IsInvalid', signature: 'IsInvalid(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is invalid.', category: 'type' },
65
+ { name: 'IsLongInteger', signature: 'IsLongInteger(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is a LongInteger.', category: 'type' },
66
+ { name: 'IsList', signature: 'IsList(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is an roList.', category: 'type' },
67
+ { name: 'IsNaN', signature: 'IsNaN(x as Float) as Boolean', returnType: 'Boolean', description: 'Returns true if x is NaN (not-a-number), e.g. from 0/0 or Sqr of a negative number.', category: 'type' },
68
+ { name: 'IsNode', signature: 'IsNode(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is an roSGNode (SceneGraph node).', category: 'type' },
69
+ { name: 'IsObject', signature: 'IsObject(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is a BrightScript object (roAssociativeArray, roArray, roSGNode, etc).', category: 'type' },
70
+ { name: 'IsString', signature: 'IsString(obj as Dynamic) as Boolean', returnType: 'Boolean', description: 'Returns true if obj is a String.', category: 'type' },
71
+ { name: 'Type', signature: 'Type(obj as Dynamic, version = 3 as Integer) as String', returnType: 'String', description: 'Returns the type name of obj as a string (e.g. "roArray", "Integer", "String", "invalid").', category: 'type' },
72
+ // Utility
73
+ { name: 'CreateObject', signature: 'CreateObject(objectName as String, ...args) as Dynamic', returnType: 'Dynamic', description: 'Creates a BrightScript object of the given type. Returns invalid if the object name is unknown.', category: 'utility' },
74
+ { name: 'Eval', signature: 'Eval(code as String) as Dynamic', returnType: 'Dynamic', description: 'Deprecated. Dynamically compiles and executes the BrightScript code string at runtime. Avoid in new code — use normal function calls instead.', category: 'utility' },
75
+ { name: 'FindMemberFunction', signature: 'FindMemberFunction(obj as Dynamic, funcName as String) as Dynamic', returnType: 'Dynamic', description: 'Returns a function reference for the named member function on obj, or invalid if not found. Useful for dynamic dispatch.', category: 'utility' },
76
+ { name: 'GetGlobalAA', signature: 'GetGlobalAA() as Object', returnType: 'Object', description: 'Returns the global associative array shared across all BrightScript code in the main thread.', category: 'utility' },
77
+ { name: 'GetLastRunCompileError', signature: 'GetLastRunCompileError() as Object', returnType: 'Object', description: 'Returns an roAssociativeArray describing the last compile-time error, or invalid if no error occurred. Keys: number, message, file, lineNumber.', category: 'utility' },
78
+ { name: 'GetLastRunRuntimeError', signature: 'GetLastRunRuntimeError() as Integer', returnType: 'Integer', description: 'Returns the error code from the last Run() call. Returns 0 if no error occurred. Only meaningful after Run() — for general runtime exceptions use try/catch.', category: 'utility' },
79
+ { name: 'ObjFun', signature: 'ObjFun(obj as Dynamic, funcName as String, ...args) as Dynamic', returnType: 'Dynamic', description: 'Calls the named member function on obj with the provided arguments. Equivalent to obj.funcName(...args) but with a dynamic function name.', category: 'utility' },
80
+ { name: 'FormatDrive', signature: 'FormatDrive(drive as String, fs_type as String) as Boolean', returnType: 'Boolean', description: 'Formats the storage volume at drive with the given filesystem type (e.g. "fat32"). Returns true on success.', category: 'utility' },
81
+ { name: 'Pos', signature: 'Pos(dummy as Integer) as Integer', returnType: 'Integer', description: 'Returns the current column position of the print cursor on the current output line. The argument is ignored; pass 0.', category: 'utility' },
82
+ { name: 'Mktime', signature: 'Mktime(time as Object) as LongInteger', returnType: 'LongInteger', description: 'Converts a date/time associative array to a Unix epoch (seconds since 1970-01-01 UTC). The AA must contain integer fields: year, month, day, hour, minute, second.', category: 'utility' },
83
+ { name: 'RebootSystem', signature: 'RebootSystem()', returnType: 'Void', description: 'Reboots the Roku device.', category: 'utility' },
84
+ { name: 'Run', signature: 'Run(filename as String, ...args) as Dynamic', returnType: 'Dynamic', description: 'Deprecated. Compiles and executes a BrightScript source file at runtime. Returns the value passed to End or Stop. Avoid in new code.', category: 'utility' },
85
+ { name: 'RunGarbageCollector', signature: 'RunGarbageCollector() as Object', returnType: 'Object', description: 'Runs the BrightScript garbage collector and returns an roAssociativeArray with collection statistics.', category: 'utility' },
86
+ { name: 'StrToI', signature: 'StrToI(str as String) as Dynamic', returnType: 'Dynamic', description: 'Converts the string str to an integer. Returns 0 if the string cannot be parsed. Unlike Val(), which returns a Float, StrToI() returns an Integer (or invalid on failure).', category: 'utility' },
87
+ { name: 'Tab', signature: 'Tab(col as Integer) as String', returnType: 'String', description: 'Used in print statements to advance output to column col. If the cursor is already past col, moves to col on the next line. Only meaningful inside a print statement.', category: 'utility' },
88
+ { name: 'Sleep', signature: 'Sleep(milliseconds as Integer)', returnType: 'Void', description: 'Pauses execution for the given number of milliseconds.', category: 'utility' },
89
+ { name: 'UpTime', signature: 'UpTime(dummy as Integer) as Float', returnType: 'Float', description: 'Returns the number of seconds since the system last rebooted. The argument is ignored; pass 0.', category: 'utility' },
90
+ { name: 'Wait', signature: 'Wait(timeout as Integer, port as Object) as Object', returnType: 'Object', description: 'Waits up to timeout ms for a message on port. Returns the message object, or invalid on timeout. Pass 0 to wait indefinitely.', category: 'utility' },
91
+ // JSON / XML
92
+ { name: 'FormatJson', signature: 'FormatJson(obj as Object, flags = 0 as Integer) as String', returnType: 'String', description: 'Serializes obj to a JSON string.', category: 'utility' },
93
+ { name: 'ParseJson', signature: 'ParseJson(json as String, flags = "" as String) as Dynamic', returnType: 'Dynamic', description: 'Parses a JSON string into a BrightScript object. Optional flags: "i" for case-insensitive keys, "d" for double-precision numbers.', category: 'utility' },
94
+ { name: 'ParseXML', signature: 'ParseXML(xml as String) as Object', returnType: 'Object', description: 'Parses an XML string and returns an roXMLElement.', category: 'utility' },
95
+ // IO
96
+ { name: 'ReadAsciiFile', signature: 'ReadAsciiFile(filePath as String) as String', returnType: 'String', description: 'Reads the content of a text file and returns it as a string.', category: 'io' },
97
+ { name: 'WriteAsciiFile', signature: 'WriteAsciiFile(filePath as String, text as String) as Boolean', returnType: 'Boolean', description: 'Writes text to a file at filePath. Returns true on success.', category: 'io' },
98
+ // Filesystem
99
+ { name: 'CopyFile', signature: 'CopyFile(source as String, destination as String) as Boolean', returnType: 'Boolean', description: 'Copies the file at source to destination. Returns true on success.', category: 'filesystem' },
100
+ { name: 'CreateDirectory', signature: 'CreateDirectory(path as String) as Boolean', returnType: 'Boolean', description: 'Creates a new directory at path. Returns true on success. Does not create intermediate directories.', category: 'filesystem' },
101
+ { name: 'DeleteDirectory', signature: 'DeleteDirectory(path as String) as Boolean', returnType: 'Boolean', description: 'Deletes the directory at path. The directory must be empty. Returns true on success.', category: 'filesystem' },
102
+ { name: 'DeleteFile', signature: 'DeleteFile(path as String) as Boolean', returnType: 'Boolean', description: 'Deletes the file at path. Returns true on success.', category: 'filesystem' },
103
+ { name: 'ListDir', signature: 'ListDir(path as String) as Object', returnType: 'Object', description: 'Returns an roArray of strings containing the names (not full paths) of all files and directories in path.', category: 'filesystem' },
104
+ { name: 'MatchFiles', signature: 'MatchFiles(path as String, pattern as String) as Object', returnType: 'Object', description: 'Returns an roArray of filenames in path whose names match the shell-style glob pattern. Matches only filenames, not subdirectory contents.', category: 'filesystem' },
105
+ { name: 'MoveFile', signature: 'MoveFile(source as String, destination as String) as Boolean', returnType: 'Boolean', description: 'Moves (renames) the file at source to destination. Returns true on success.', category: 'filesystem' },
106
+ ];
107
+ const _builtinMap = new Map(exports.BRIGHTSCRIPT_BUILTINS.map((b) => [b.name.toLowerCase(), b]));
108
+ function findBuiltin(name) {
109
+ return _builtinMap.get(name.toLowerCase());
110
+ }
111
+ exports.BRIGHTSCRIPT_KEYWORDS = [
112
+ 'and', 'as', 'boolean', 'catch', 'dim', 'double',
113
+ 'dynamic', 'each', 'else', 'elseif', 'end', 'endif', 'endsub', 'endfor',
114
+ 'endfunction', 'endtry', 'endwhile', 'exit', 'exitwhile', 'exitfor', 'false',
115
+ 'float', 'for', 'function', 'goto', 'if', 'in', 'integer', 'invalid', 'let',
116
+ 'interface', 'line_num', 'longinteger', 'mod', 'next', 'not', 'object', 'or', 'print',
117
+ 'rem', 'return', 'step', 'stop', 'string', 'sub', 'tab', 'then', 'throw',
118
+ 'to', 'true', 'try', 'void', 'while',
119
+ ];
120
+ const _keywordCategories = {};
121
+ // Types
122
+ for (const t of ['boolean', 'double', 'dynamic', 'float', 'integer', 'longinteger', 'object', 'string', 'void', 'interface']) {
123
+ _keywordCategories[t] = 'type';
124
+ }
125
+ // Literals
126
+ for (const l of ['true', 'false', 'invalid']) {
127
+ _keywordCategories[l] = 'literal';
128
+ }
129
+ // Logic operators
130
+ for (const o of ['and', 'or', 'not']) {
131
+ _keywordCategories[o] = 'logicOperator';
132
+ }
133
+ // Math operators
134
+ _keywordCategories['mod'] = 'mathOperator';
135
+ /** Returns the category of a keyword (lowercase). */
136
+ function getKeywordCategory(keyword) {
137
+ return _keywordCategories[keyword] ?? 'keyword';
138
+ }
139
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/builtins.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAsHH,kCAEC;AAiCD,gDAEC;AAjJY,QAAA,qBAAqB,GAA0B;IAC1D,OAAO;IACP,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC9I,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrJ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrJ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC1H,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,4BAA4B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,mIAAmI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnP,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,4BAA4B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,+HAA+H,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/O,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjJ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,kCAAkC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,iGAAiG,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvN,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,4BAA4B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrJ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnJ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC3I,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,MAAM,EAAE;IAEtJ,SAAS;IACT,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,6BAA6B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,qDAAqD,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1K,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,0EAA0E,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,8FAA8F,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,2DAA2D,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,2IAA2I,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjS,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxJ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,2CAA2C,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1K,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,6BAA6B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC3J,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,sEAAsE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,4EAA4E,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACvO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,4CAA4C,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC7K,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,2BAA2B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oDAAoD,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC9L,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,8CAA8C,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChL,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,gDAAgD,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,wEAAwE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjN,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,yHAAyH,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,yEAAyE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC9R,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,6BAA6B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,gIAAgI,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjP,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxJ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,iDAAiD,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAE9K,kBAAkB;IAClB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,mJAAmJ,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,0HAA0H,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChP,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,+BAA+B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzJ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,+BAA+B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,4CAA4C,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE;IACxJ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,+DAA+D,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/K,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,6EAA6E,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/L,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,qKAAqK,EAAE,QAAQ,EAAE,MAAM,EAAE;IAE3R,kBAAkB;IAClB,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,2DAA2D,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,0HAA0H,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClR,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,oCAAoC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChK,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,+CAA+C,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,+CAA+C,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,sCAAsC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,sCAAsC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,iFAAiF,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjN,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,qCAAqC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,oCAAoC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC7J,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,uCAAuC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,8CAA8C,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChL,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,kCAAkC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5J,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,sCAAsC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjK,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,0CAA0C,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/K,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC7J,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,qFAAqF,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjL,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,qCAAqC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,4FAA4F,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC1N,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,qCAAqC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,wDAAwD,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,4FAA4F,EAAE,QAAQ,EAAE,MAAM,EAAE;IAExO,UAAU;IACV,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,wDAAwD,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,iGAAiG,EAAE,QAAQ,EAAE,SAAS,EAAE;IACzP,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iCAAiC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,+IAA+I,EAAE,QAAQ,EAAE,SAAS,EAAE;IACxQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,mEAAmE,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,0HAA0H,EAAE,QAAQ,EAAE,SAAS,EAAE;IACnS,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,yBAAyB,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,8FAA8F,EAAE,QAAQ,EAAE,SAAS,EAAE;IACrN,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,oCAAoC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,iJAAiJ,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC9R,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,qCAAqC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,8JAA8J,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC7S,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,gEAAgE,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,2IAA2I,EAAE,QAAQ,EAAE,SAAS,EAAE;IACrS,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,4DAA4D,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,6GAA6G,EAAE,QAAQ,EAAE,SAAS,EAAE;IACxQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,kCAAkC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,sHAAsH,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC/O,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,uCAAuC,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,oKAAoK,EAAE,QAAQ,EAAE,SAAS,EAAE;IACzS,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE,QAAQ,EAAE,SAAS,EAAE;IACvI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,6CAA6C,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,sIAAsI,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC1Q,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,iCAAiC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,uGAAuG,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC9O,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kCAAkC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,4KAA4K,EAAE,QAAQ,EAAE,SAAS,EAAE;IACxS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,+BAA+B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,uKAAuK,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC5R,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,wDAAwD,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC9K,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,gGAAgG,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC3N,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oDAAoD,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,+HAA+H,EAAE,QAAQ,EAAE,SAAS,EAAE;IAE1Q,aAAa;IACb,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,2DAA2D,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC1L,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,4DAA4D,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,mIAAmI,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC5R,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE,QAAQ,EAAE,SAAS,EAAE;IAEjL,KAAK;IACL,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,6CAA6C,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtM,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,+DAA+D,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,6DAA6D,EAAE,QAAQ,EAAE,IAAI,EAAE;IAEzN,aAAa;IACb,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,8DAA8D,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,oEAAoE,EAAE,QAAQ,EAAE,YAAY,EAAE;IACjO,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,4CAA4C,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,qGAAqG,EAAE,QAAQ,EAAE,YAAY,EAAE;IACvP,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,4CAA4C,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,sFAAsF,EAAE,QAAQ,EAAE,YAAY,EAAE;IACxO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,uCAAuC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,oDAAoD,EAAE,QAAQ,EAAE,YAAY,EAAE;IAC5L,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,2GAA2G,EAAE,QAAQ,EAAE,YAAY,EAAE;IAC3O,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,yDAAyD,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,4IAA4I,EAAE,QAAQ,EAAE,YAAY,EAAE;IACrS,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,8DAA8D,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,6EAA6E,EAAE,QAAQ,EAAE,YAAY,EAAE;CAC3O,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,6BAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAC5D,CAAC;AAEF,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC;AAEY,QAAA,qBAAqB,GAAG;IACnC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ;IAChD,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IACvE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO;IAC5E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK;IAC3E,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;IACrF,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO;IACxE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO;CACrC,CAAC;AAKF,MAAM,kBAAkB,GAAoC,EAAE,CAAC;AAE/D,QAAQ;AACR,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;IAC7H,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACjC,CAAC;AACD,WAAW;AACX,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7C,kBAAkB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACpC,CAAC;AACD,kBAAkB;AAClB,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;IACrC,kBAAkB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;AAC1C,CAAC;AACD,iBAAiB;AACjB,kBAAkB,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC;AAE3C,qDAAqD;AACrD,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;AAClD,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { KeywordCategory } from './builtins';
2
+ export type CasingOption = 'NoChange' | 'UpperCase' | 'LowerCase' | 'Capitalize' | 'CamelCase' | 'PascalCase';
3
+ export interface CasingConfig {
4
+ /** Casing for BrightScript built-in global functions (Abs, CreateObject, …). */
5
+ builtins: CasingOption;
6
+ /** Casing for BrightScript language keywords (function, sub, if, …). Falls back for all sub-categories when their specific setting is not defined. */
7
+ keywords: CasingOption;
8
+ /** Casing for ro* component interface methods (Push, SetUrl, …). */
9
+ methods: CasingOption;
10
+ /** Casing for type names (boolean, integer, string, …). Falls back to `keywords`. */
11
+ types?: CasingOption;
12
+ /** Casing for literal values (true, false, invalid). Falls back to `keywords`. */
13
+ literals?: CasingOption;
14
+ /** Casing for logic operators (and, or, not). Falls back to `keywords`. */
15
+ logicOperators?: CasingOption;
16
+ /** Casing for math operators (mod). Falls back to `keywords`. */
17
+ mathOperators?: CasingOption;
18
+ /** Casing for user-defined top-level function/sub names. */
19
+ userFunctions?: CasingOption;
20
+ /** Casing for user-defined AA methods (this.doWork = function …). */
21
+ userMethods?: CasingOption;
22
+ /** Per-identifier overrides applied after all other rules. Key = lowercase name, value = exact output. */
23
+ exactCasing?: Record<string, string>;
24
+ }
25
+ export declare const DEFAULT_CASING_CONFIG: CasingConfig;
26
+ export declare function applyCasing(name: string, option: CasingOption): string;
27
+ export declare function applyCasingWithOverrides(name: string, option: CasingOption, exactCasing?: Record<string, string>): string;
28
+ export declare function resolveKeywordCasing(category: KeywordCategory, config: CasingConfig): CasingOption;
29
+ //# sourceMappingURL=casing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../../src/casing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,WAAW,GACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,EAAE,YAAY,CAAC;IACvB,sJAAsJ;IACtJ,QAAQ,EAAE,YAAY,CAAC;IACvB,oEAAoE;IACpE,OAAO,EAAE,YAAY,CAAC;IACtB,qFAAqF;IACrF,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,iEAAiE;IACjE,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,4DAA4D;IAC5D,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,qEAAqE;IACrE,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,0GAA0G;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAatE;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAQR;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,GAAG,YAAY,CAQlG"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CASING_CONFIG = void 0;
4
+ exports.applyCasing = applyCasing;
5
+ exports.applyCasingWithOverrides = applyCasingWithOverrides;
6
+ exports.resolveKeywordCasing = resolveKeywordCasing;
7
+ exports.DEFAULT_CASING_CONFIG = {
8
+ builtins: 'NoChange',
9
+ keywords: 'NoChange',
10
+ methods: 'NoChange',
11
+ };
12
+ function applyCasing(name, option) {
13
+ switch (option) {
14
+ case 'UpperCase': return name.toUpperCase();
15
+ case 'LowerCase': return name.toLowerCase();
16
+ case 'Capitalize': return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
17
+ case 'PascalCase': return splitWords(name).map(capitalizeWord).join('');
18
+ case 'CamelCase': {
19
+ const words = splitWords(name);
20
+ return words.map((w, i) => i === 0 ? w.toLowerCase() : capitalizeWord(w)).join('');
21
+ }
22
+ case 'NoChange':
23
+ default: return name;
24
+ }
25
+ }
26
+ function applyCasingWithOverrides(name, option, exactCasing) {
27
+ if (exactCasing) {
28
+ const lower = name.toLowerCase();
29
+ if (Object.prototype.hasOwnProperty.call(exactCasing, lower)) {
30
+ return exactCasing[lower];
31
+ }
32
+ }
33
+ return applyCasing(name, option);
34
+ }
35
+ function resolveKeywordCasing(category, config) {
36
+ switch (category) {
37
+ case 'type': return config.types ?? config.keywords;
38
+ case 'literal': return config.literals ?? config.keywords;
39
+ case 'logicOperator': return config.logicOperators ?? config.keywords;
40
+ case 'mathOperator': return config.mathOperators ?? config.keywords;
41
+ case 'keyword': return config.keywords;
42
+ }
43
+ }
44
+ function splitWords(name) {
45
+ return name.split(/(?=[A-Z])/).filter((w) => w.length > 0);
46
+ }
47
+ function capitalizeWord(word) {
48
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
49
+ }
50
+ //# sourceMappingURL=casing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"casing.js","sourceRoot":"","sources":["../../src/casing.ts"],"names":[],"mappings":";;;AAuCA,kCAaC;AAED,4DAYC;AAED,oDAQC;AA3CY,QAAA,qBAAqB,GAAiB;IACjD,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAG,UAAU;CACrB,CAAC;AAEF,SAAgB,WAAW,CAAC,IAAY,EAAE,MAAoB;IAC5D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW,CAAC,CAAG,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9C,KAAK,WAAW,CAAC,CAAG,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9C,KAAK,YAAY,CAAC,CAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtF,KAAK,YAAY,CAAC,CAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,OAAO,CAAC,CAAY,OAAO,IAAI,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAgB,wBAAwB,CACtC,IAAY,EACZ,MAAoB,EACpB,WAAoC;IAEpC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,oBAAoB,CAAC,QAAyB,EAAE,MAAoB;IAClF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC;QACpD,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;QAC1D,KAAK,eAAe,CAAC,CAAC,OAAO,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC;QACtE,KAAK,cAAc,CAAC,CAAC,OAAO,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC;QACpE,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Configuration for BrightScript document formatting.
3
+ *
4
+ * Every field has a sensible default so that the formatter works out of the box
5
+ * with zero configuration. Users opt into stricter formatting by setting
6
+ * individual rules in their VS Code settings under `kopytko.format.*`.
7
+ */
8
+ export interface FormattingConfig {
9
+ /** Spaces per indent level. */
10
+ indentSize: number;
11
+ /** Use tabs instead of spaces. */
12
+ useTabs: boolean;
13
+ /** Line ending style. 'auto' preserves the document's existing endings. */
14
+ lineEnding: 'lf' | 'crlf' | 'auto';
15
+ /** Remove trailing whitespace from lines. */
16
+ trimTrailingWhitespace: boolean;
17
+ /** Ensure the file ends with a newline. */
18
+ insertFinalNewline: boolean;
19
+ /** Maximum consecutive blank lines allowed (excess removed). 0 = no limit. */
20
+ maxEmptyLines: number;
21
+ /** Number of blank lines to enforce between top-level function/sub declarations. */
22
+ emptyLinesBetweenFunctions: number;
23
+ /** Number of blank lines between AA method definitions inside a builder function. */
24
+ emptyLinesBetweenMethods: number;
25
+ /** Blank lines at the start/end of blocks: 'strip' removes them, 'enforce' adds one, 'preserve' leaves as-is. */
26
+ emptyLinesAtBlockBoundaries: 'strip' | 'enforce' | 'preserve';
27
+ /** 'spaced' = `end if`, 'compact' = `endif`. Applies to all end-keyword variants. */
28
+ endKeywordStyle: 'spaced' | 'compact' | 'preserve';
29
+ /** Controls `then` on if-lines. 'multiline-only' adds it only on multi-line ifs. */
30
+ thenStyle: 'always' | 'never' | 'multiline-only' | 'singleline-only' | 'preserve';
31
+ /** Controls function vs sub for void procedures. 'sub' converts function() as Void to sub(). 'function' converts sub to function. 'allow-void' keeps function() as Void as-is. */
32
+ functionVsSubForVoid: 'function' | 'sub' | 'allow-void' | 'preserve';
33
+ /** Space before `(` in named function/sub definitions: `function foo()` vs `function foo ()`. */
34
+ spaceBeforeNamedFunctionParens: boolean;
35
+ /** Space before `(` in anonymous function expressions: `function()` vs `function ()`. */
36
+ spaceBeforeAnonymousFunctionParens: boolean;
37
+ /** Space before `(` in function calls: `doWork()` vs `doWork ()`. */
38
+ spaceBeforeCallParens: boolean;
39
+ /** Spaces inside `()` in calls and definitions. */
40
+ spaceInsideParens: 'never' | 'always';
41
+ /** Enforce or remove `as Type` return annotations on functions. */
42
+ returnTypeAnnotations: 'always' | 'never' | 'preserve';
43
+ /** Enforce or remove `as Type` param annotations. */
44
+ paramTypeAnnotations: 'always' | 'never' | 'preserve';
45
+ /** Multi-line parameter alignment: 'indent' uses one level, 'align-to-paren' aligns to opening paren. */
46
+ paramAlignmentStyle: 'indent' | 'align-to-paren';
47
+ /** Line length at which to wrap parameters to multiple lines. 0 = never wrap. */
48
+ wrapParamsThreshold: number;
49
+ /** Maximum desired line length. */
50
+ printWidth: number;
51
+ /** Long string handling: 'plus' breaks with + concatenation, 'array-join' breaks with [...].join(""), 'preserve' leaves as-is. */
52
+ wrapLongStrings: 'preserve' | 'plus' | 'array-join';
53
+ /** String concatenation style normalization: 'plus' enforces +, 'array-join' enforces [...].join(""), 'preserve' leaves as-is. */
54
+ stringConcatStyle: 'preserve' | 'plus' | 'array-join';
55
+ /** Break long method/field chains onto new lines. */
56
+ wrapLongChains: boolean;
57
+ /** Multi-line array literals. 'auto' = multi-line when exceeding printWidth. */
58
+ wrapArrays: 'auto' | 'always' | 'never';
59
+ /** Multi-line AA literals {}. 'auto' = multi-line when exceeding printWidth. */
60
+ wrapAssocArrays: 'auto' | 'always' | 'never';
61
+ /** Spaces inside `{}`: `{ key: value }` vs `{key: value}`. */
62
+ bracketSpacing: boolean;
63
+ /** Trailing comma after the last item in multi-line arrays/AAs. */
64
+ trailingComma: 'never' | 'always' | 'multiline';
65
+ /** Comma separators between items in multi-line arrays. BrightScript allows omitting commas when items are on separate lines. */
66
+ arrayCommaStyle: 'always' | 'never' | 'preserve';
67
+ /** Comma separators between entries in multi-line AAs. BrightScript allows omitting commas when entries are on separate lines. */
68
+ assocArrayCommaStyle: 'always' | 'never' | 'preserve';
69
+ /** When true, splits `[{` onto separate lines in multi-item arrays (improves readability). */
70
+ splitArrayOpenBracket: boolean;
71
+ /** Align values in multi-line AAs. */
72
+ arrayItemAlignment: 'off' | 'align';
73
+ /** Max number of keys before forcing an AA to multi-line. 0 = no limit. */
74
+ singleLineObjectThreshold: number;
75
+ /** Spaces around binary operators (+, -, *, /, <>, <, >, and, or, mod). */
76
+ spaceAroundOperators: boolean;
77
+ /** Spaces around = in assignments. */
78
+ spaceAroundAssignment: boolean;
79
+ /** Space after unary `not`. */
80
+ unarySpacing: boolean;
81
+ /** Where to put operators on wrapped lines: 'before' or 'after' the break. */
82
+ operatorLineBreakStyle: 'before' | 'after';
83
+ /** Normalize comment markers: `'` or `rem`, or preserve. */
84
+ commentStyle: "'" | 'rem' | 'preserve';
85
+ /** Enforce space after `'` or `rem`: `' comment` vs `'comment`. */
86
+ spaceAfterCommentMarker: boolean;
87
+ /** Max comment line length. 0 = no limit. */
88
+ commentWidth: number;
89
+ /** Sort @import statements alphabetically (module name first, then path). */
90
+ sortImports: boolean;
91
+ /** Insert blank line between module imports and local imports. */
92
+ /** Insert blank line after the last @import line (before code starts). */
93
+ emptyLineAfterImports: boolean;
94
+ /** Insert blank line after function/sub opening line. */
95
+ blankLineAfterFunctionOpen: boolean;
96
+ /** Insert blank line before end function/sub. */
97
+ blankLineBeforeFunctionClose: boolean;
98
+ /** Blank line before return: 'always', 'not-alone' (skip when return is only statement in block), or false. */
99
+ blankLineBeforeReturn: 'always' | 'not-alone' | false;
100
+ /** Enforce blank line before stand-alone comment blocks. */
101
+ blankLineBeforeComment: boolean;
102
+ /** Insert blank lines between visually distinct statement groups. */
103
+ separateLogicBlocks: boolean;
104
+ /** Max expression length for single-line if/then. 0 = never inline. */
105
+ inlineIfThreshold: number;
106
+ /** 'always' wraps if condition in parens, 'never' removes them. */
107
+ parenthesisIfCase: 'preserve' | 'always' | 'never';
108
+ /** else on its own line (true) vs same line as end if. */
109
+ elseOnNewLine: boolean;
110
+ /** Enforce spaces around `to` and `step` in for loops. */
111
+ forLoopSpacing: boolean;
112
+ /** Flag or remove print debug statements. */
113
+ printStatement: 'warn' | 'remove' | 'preserve';
114
+ /** Move trailing comments. 'above' puts them on the line above. */
115
+ lineCommentPosition: 'above' | 'inline' | 'preserve';
116
+ /** Enforce observeFieldScoped over observeField. 'always-scoped' converts to scoped, 'warn' flags non-scoped, 'preserve' leaves as-is. */
117
+ observeFieldStyle: 'always-scoped' | 'warn' | 'preserve';
118
+ /** m-prefix field access style. 'dot' enforces m.field, 'bracket' enforces m["field"], 'preserve' leaves as-is. */
119
+ mPrefixStyle: 'dot' | 'bracket' | 'preserve';
120
+ /** Align = signs in consecutive assignment lines. */
121
+ alignAssignments: boolean;
122
+ /** Field access consistency on known objects. 'dot' prefers m.top.field, 'method' prefers m.top.getField("field"), 'preserve' leaves as-is. */
123
+ fieldAccessConsistency: 'dot' | 'method' | 'preserve';
124
+ }
125
+ /** Default formatting config — all rules set to preserve existing code style. */
126
+ export declare const DEFAULT_FORMATTING_CONFIG: FormattingConfig;
127
+ /** Reads a FormattingConfig from a raw VS Code settings object. */
128
+ export declare function parseFormattingConfig(cfg: Record<string, unknown> | null | undefined): FormattingConfig;
129
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_FORMATTING_CONFIG = void 0;
4
+ exports.parseFormattingConfig = parseFormattingConfig;
5
+ /** Default formatting config — all rules set to preserve existing code style. */
6
+ exports.DEFAULT_FORMATTING_CONFIG = {
7
+ // Indentation & Whitespace
8
+ indentSize: 4,
9
+ useTabs: false,
10
+ lineEnding: 'auto',
11
+ trimTrailingWhitespace: true,
12
+ insertFinalNewline: true,
13
+ maxEmptyLines: 2,
14
+ emptyLinesBetweenFunctions: 1,
15
+ emptyLinesBetweenMethods: 1,
16
+ emptyLinesAtBlockBoundaries: 'preserve',
17
+ // Compound Keywords
18
+ endKeywordStyle: 'preserve',
19
+ thenStyle: 'preserve',
20
+ // Functions & Subs
21
+ functionVsSubForVoid: 'preserve',
22
+ spaceBeforeNamedFunctionParens: false,
23
+ spaceBeforeAnonymousFunctionParens: false,
24
+ spaceBeforeCallParens: false,
25
+ spaceInsideParens: 'never',
26
+ returnTypeAnnotations: 'preserve',
27
+ paramTypeAnnotations: 'preserve',
28
+ paramAlignmentStyle: 'indent',
29
+ wrapParamsThreshold: 0,
30
+ // Line Length & Wrapping
31
+ printWidth: 160,
32
+ wrapLongStrings: 'preserve',
33
+ stringConcatStyle: 'preserve',
34
+ wrapLongChains: false,
35
+ wrapArrays: 'never',
36
+ wrapAssocArrays: 'never',
37
+ // Arrays & AAs
38
+ bracketSpacing: true,
39
+ trailingComma: 'never',
40
+ arrayCommaStyle: 'preserve',
41
+ assocArrayCommaStyle: 'preserve',
42
+ splitArrayOpenBracket: false,
43
+ arrayItemAlignment: 'off',
44
+ singleLineObjectThreshold: 0,
45
+ // Operators & Expressions
46
+ spaceAroundOperators: true,
47
+ spaceAroundAssignment: true,
48
+ unarySpacing: true,
49
+ operatorLineBreakStyle: 'before',
50
+ // Comments
51
+ commentStyle: 'preserve',
52
+ spaceAfterCommentMarker: true,
53
+ commentWidth: 0,
54
+ // Imports
55
+ sortImports: false,
56
+ emptyLineAfterImports: false,
57
+ // Blank Lines
58
+ blankLineAfterFunctionOpen: false,
59
+ blankLineBeforeFunctionClose: false,
60
+ blankLineBeforeReturn: false,
61
+ blankLineBeforeComment: false,
62
+ separateLogicBlocks: false,
63
+ // Control Flow
64
+ inlineIfThreshold: 0,
65
+ parenthesisIfCase: 'preserve',
66
+ elseOnNewLine: true,
67
+ forLoopSpacing: true,
68
+ // Miscellaneous
69
+ printStatement: 'preserve',
70
+ lineCommentPosition: 'preserve',
71
+ // BrightScript Patterns
72
+ observeFieldStyle: 'preserve',
73
+ mPrefixStyle: 'preserve',
74
+ alignAssignments: false,
75
+ fieldAccessConsistency: 'preserve',
76
+ };
77
+ /** Reads a FormattingConfig from a raw VS Code settings object. */
78
+ function parseFormattingConfig(cfg) {
79
+ if (!cfg)
80
+ return { ...exports.DEFAULT_FORMATTING_CONFIG };
81
+ const d = exports.DEFAULT_FORMATTING_CONFIG;
82
+ const str = (key, def) => {
83
+ const v = cfg[key];
84
+ return typeof v === 'string' ? v : def;
85
+ };
86
+ const num = (key, def) => {
87
+ const v = cfg[key];
88
+ return typeof v === 'number' ? v : def;
89
+ };
90
+ const bool = (key, def) => {
91
+ const v = cfg[key];
92
+ return typeof v === 'boolean' ? v : def;
93
+ };
94
+ return {
95
+ indentSize: num('indentSize', d.indentSize),
96
+ useTabs: bool('useTabs', d.useTabs),
97
+ lineEnding: str('lineEnding', d.lineEnding),
98
+ trimTrailingWhitespace: bool('trimTrailingWhitespace', d.trimTrailingWhitespace),
99
+ insertFinalNewline: bool('insertFinalNewline', d.insertFinalNewline),
100
+ maxEmptyLines: num('maxEmptyLines', d.maxEmptyLines),
101
+ emptyLinesBetweenFunctions: num('emptyLinesBetweenFunctions', d.emptyLinesBetweenFunctions),
102
+ emptyLinesBetweenMethods: num('emptyLinesBetweenMethods', d.emptyLinesBetweenMethods),
103
+ emptyLinesAtBlockBoundaries: str('emptyLinesAtBlockBoundaries', d.emptyLinesAtBlockBoundaries),
104
+ endKeywordStyle: str('endKeywordStyle', d.endKeywordStyle),
105
+ thenStyle: str('thenStyle', d.thenStyle),
106
+ functionVsSubForVoid: str('functionVsSubForVoid', d.functionVsSubForVoid),
107
+ spaceBeforeNamedFunctionParens: bool('spaceBeforeNamedFunctionParens', d.spaceBeforeNamedFunctionParens),
108
+ spaceBeforeAnonymousFunctionParens: bool('spaceBeforeAnonymousFunctionParens', d.spaceBeforeAnonymousFunctionParens),
109
+ spaceBeforeCallParens: bool('spaceBeforeCallParens', d.spaceBeforeCallParens),
110
+ spaceInsideParens: str('spaceInsideParens', d.spaceInsideParens),
111
+ returnTypeAnnotations: str('returnTypeAnnotations', d.returnTypeAnnotations),
112
+ paramTypeAnnotations: str('paramTypeAnnotations', d.paramTypeAnnotations),
113
+ paramAlignmentStyle: str('paramAlignmentStyle', d.paramAlignmentStyle),
114
+ wrapParamsThreshold: num('wrapParamsThreshold', d.wrapParamsThreshold),
115
+ printWidth: num('printWidth', d.printWidth),
116
+ wrapLongStrings: str('wrapLongStrings', d.wrapLongStrings),
117
+ stringConcatStyle: str('stringConcatStyle', d.stringConcatStyle),
118
+ wrapLongChains: bool('wrapLongChains', d.wrapLongChains),
119
+ wrapArrays: str('wrapArrays', d.wrapArrays),
120
+ wrapAssocArrays: str('wrapAssocArrays', d.wrapAssocArrays),
121
+ bracketSpacing: bool('bracketSpacing', d.bracketSpacing),
122
+ trailingComma: str('trailingComma', d.trailingComma),
123
+ arrayCommaStyle: str('arrayCommaStyle', d.arrayCommaStyle),
124
+ assocArrayCommaStyle: str('assocArrayCommaStyle', d.assocArrayCommaStyle),
125
+ splitArrayOpenBracket: bool('splitArrayOpenBracket', d.splitArrayOpenBracket),
126
+ arrayItemAlignment: str('arrayItemAlignment', d.arrayItemAlignment),
127
+ singleLineObjectThreshold: num('singleLineObjectThreshold', d.singleLineObjectThreshold),
128
+ spaceAroundOperators: bool('spaceAroundOperators', d.spaceAroundOperators),
129
+ spaceAroundAssignment: bool('spaceAroundAssignment', d.spaceAroundAssignment),
130
+ unarySpacing: bool('unarySpacing', d.unarySpacing),
131
+ operatorLineBreakStyle: str('operatorLineBreakStyle', d.operatorLineBreakStyle),
132
+ commentStyle: str('commentStyle', d.commentStyle),
133
+ spaceAfterCommentMarker: bool('spaceAfterCommentMarker', d.spaceAfterCommentMarker),
134
+ commentWidth: num('commentWidth', d.commentWidth),
135
+ sortImports: bool('sortImports', d.sortImports),
136
+ emptyLineAfterImports: bool('emptyLineAfterImports', d.emptyLineAfterImports),
137
+ blankLineAfterFunctionOpen: bool('blankLineAfterFunctionOpen', d.blankLineAfterFunctionOpen),
138
+ blankLineBeforeFunctionClose: bool('blankLineBeforeFunctionClose', d.blankLineBeforeFunctionClose),
139
+ blankLineBeforeReturn: (() => {
140
+ const v = cfg['blankLineBeforeReturn'];
141
+ if (v === 'always' || v === 'not-alone')
142
+ return v;
143
+ if (v === true)
144
+ return 'always';
145
+ return false;
146
+ })(),
147
+ blankLineBeforeComment: bool('blankLineBeforeComment', d.blankLineBeforeComment),
148
+ separateLogicBlocks: bool('separateLogicBlocks', d.separateLogicBlocks),
149
+ inlineIfThreshold: num('inlineIfThreshold', d.inlineIfThreshold),
150
+ parenthesisIfCase: str('parenthesisIfCase', d.parenthesisIfCase),
151
+ elseOnNewLine: bool('elseOnNewLine', d.elseOnNewLine),
152
+ forLoopSpacing: bool('forLoopSpacing', d.forLoopSpacing),
153
+ printStatement: str('printStatement', d.printStatement),
154
+ lineCommentPosition: str('lineCommentPosition', d.lineCommentPosition),
155
+ observeFieldStyle: str('observeFieldStyle', d.observeFieldStyle),
156
+ mPrefixStyle: str('mPrefixStyle', d.mPrefixStyle),
157
+ alignAssignments: bool('alignAssignments', d.alignAssignments),
158
+ fieldAccessConsistency: str('fieldAccessConsistency', d.fieldAccessConsistency),
159
+ };
160
+ }
161
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { CasingConfig } from './casing';
2
+ import { FunctionDefinition } from './types';
3
+ import { FormattingConfig } from './config';
4
+ /**
5
+ * Formats BrightScript source code using an 11-pass engine.
6
+ *
7
+ * This is the pure, framework-agnostic formatting function.
8
+ * It takes a source string and returns the formatted result.
9
+ *
10
+ * @param source - The raw BrightScript source text.
11
+ * @param config - Formatting rules configuration.
12
+ * @param casing - Casing rules configuration (optional).
13
+ * @param userFunctions - Known user-defined functions for casing normalization (optional).
14
+ * @returns The formatted source text.
15
+ */
16
+ export declare function formatText(source: string, config: FormattingConfig, casing?: CasingConfig, userFunctions?: FunctionDefinition[]): string;
17
+ /**
18
+ * Checks whether source text is already formatted.
19
+ *
20
+ * @returns `true` if the text matches formatted output (no changes needed).
21
+ */
22
+ export declare function checkFormatting(source: string, config: FormattingConfig, casing?: CasingConfig, userFunctions?: FunctionDefinition[]): boolean;
23
+ //# sourceMappingURL=formatter.d.ts.map