@bscotch/gml-parser 1.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/LICENSE.md +29 -0
  2. package/README.md +151 -0
  3. package/assets/GmlSpec.xml +11419 -0
  4. package/dist/index.d.ts +16 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +13 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/jsdoc.d.ts +79 -0
  9. package/dist/jsdoc.d.ts.map +1 -0
  10. package/dist/jsdoc.feather.d.ts +23 -0
  11. package/dist/jsdoc.feather.d.ts.map +1 -0
  12. package/dist/jsdoc.feather.js +143 -0
  13. package/dist/jsdoc.feather.js.map +1 -0
  14. package/dist/jsdoc.js +468 -0
  15. package/dist/jsdoc.js.map +1 -0
  16. package/dist/jsdoc.test.d.ts +2 -0
  17. package/dist/jsdoc.test.d.ts.map +1 -0
  18. package/dist/jsdoc.test.js +185 -0
  19. package/dist/jsdoc.test.js.map +1 -0
  20. package/dist/lexer.d.ts +3 -0
  21. package/dist/lexer.d.ts.map +1 -0
  22. package/dist/lexer.js +14 -0
  23. package/dist/lexer.js.map +1 -0
  24. package/dist/lexer.test.d.ts +2 -0
  25. package/dist/lexer.test.d.ts.map +1 -0
  26. package/dist/lexer.test.js +78 -0
  27. package/dist/lexer.test.js.map +1 -0
  28. package/dist/lib.objects.d.ts +190 -0
  29. package/dist/lib.objects.d.ts.map +1 -0
  30. package/dist/lib.objects.js +242 -0
  31. package/dist/lib.objects.js.map +1 -0
  32. package/dist/logger.d.ts +13 -0
  33. package/dist/logger.d.ts.map +1 -0
  34. package/dist/logger.js +14 -0
  35. package/dist/logger.js.map +1 -0
  36. package/dist/modules.d.ts +19 -0
  37. package/dist/modules.d.ts.map +1 -0
  38. package/dist/modules.js +320 -0
  39. package/dist/modules.js.map +1 -0
  40. package/dist/modules.test.d.ts +2 -0
  41. package/dist/modules.test.d.ts.map +1 -0
  42. package/dist/modules.test.js +57 -0
  43. package/dist/modules.test.js.map +1 -0
  44. package/dist/modules.types.d.ts +78 -0
  45. package/dist/modules.types.d.ts.map +1 -0
  46. package/dist/modules.types.js +2 -0
  47. package/dist/modules.types.js.map +1 -0
  48. package/dist/modules.util.d.ts +5 -0
  49. package/dist/modules.util.d.ts.map +1 -0
  50. package/dist/modules.util.js +13 -0
  51. package/dist/modules.util.js.map +1 -0
  52. package/dist/parser.d.ts +121 -0
  53. package/dist/parser.d.ts.map +1 -0
  54. package/dist/parser.js +571 -0
  55. package/dist/parser.js.map +1 -0
  56. package/dist/parser.test.d.ts +2 -0
  57. package/dist/parser.test.d.ts.map +1 -0
  58. package/dist/parser.test.js +143 -0
  59. package/dist/parser.test.js.map +1 -0
  60. package/dist/parser.utility.d.ts +29 -0
  61. package/dist/parser.utility.d.ts.map +1 -0
  62. package/dist/parser.utility.js +125 -0
  63. package/dist/parser.utility.js.map +1 -0
  64. package/dist/project.asset.d.ts +115 -0
  65. package/dist/project.asset.d.ts.map +1 -0
  66. package/dist/project.asset.js +802 -0
  67. package/dist/project.asset.js.map +1 -0
  68. package/dist/project.code.d.ts +130 -0
  69. package/dist/project.code.d.ts.map +1 -0
  70. package/dist/project.code.js +570 -0
  71. package/dist/project.code.js.map +1 -0
  72. package/dist/project.d.ts +533 -0
  73. package/dist/project.d.ts.map +1 -0
  74. package/dist/project.diagnostics.d.ts +32 -0
  75. package/dist/project.diagnostics.d.ts.map +1 -0
  76. package/dist/project.diagnostics.js +23 -0
  77. package/dist/project.diagnostics.js.map +1 -0
  78. package/dist/project.js +1216 -0
  79. package/dist/project.js.map +1 -0
  80. package/dist/project.location.d.ts +133 -0
  81. package/dist/project.location.d.ts.map +1 -0
  82. package/dist/project.location.js +219 -0
  83. package/dist/project.location.js.map +1 -0
  84. package/dist/project.native.d.ts +26 -0
  85. package/dist/project.native.d.ts.map +1 -0
  86. package/dist/project.native.js +321 -0
  87. package/dist/project.native.js.map +1 -0
  88. package/dist/project.spec.d.ts +1298 -0
  89. package/dist/project.spec.d.ts.map +1 -0
  90. package/dist/project.spec.js +263 -0
  91. package/dist/project.spec.js.map +1 -0
  92. package/dist/project.test.d.ts +2 -0
  93. package/dist/project.test.d.ts.map +1 -0
  94. package/dist/project.test.js +633 -0
  95. package/dist/project.test.js.map +1 -0
  96. package/dist/shaderDefaults.d.ts +3 -0
  97. package/dist/shaderDefaults.d.ts.map +1 -0
  98. package/dist/shaderDefaults.js +32 -0
  99. package/dist/shaderDefaults.js.map +1 -0
  100. package/dist/signifiers.d.ts +54 -0
  101. package/dist/signifiers.d.ts.map +1 -0
  102. package/dist/signifiers.flags.d.ts +38 -0
  103. package/dist/signifiers.flags.d.ts.map +1 -0
  104. package/dist/signifiers.flags.js +131 -0
  105. package/dist/signifiers.flags.js.map +1 -0
  106. package/dist/signifiers.js +117 -0
  107. package/dist/signifiers.js.map +1 -0
  108. package/dist/spine.d.ts +28 -0
  109. package/dist/spine.d.ts.map +1 -0
  110. package/dist/spine.js +64 -0
  111. package/dist/spine.js.map +1 -0
  112. package/dist/spine.test.d.ts +2 -0
  113. package/dist/spine.test.d.ts.map +1 -0
  114. package/dist/spine.test.js +420 -0
  115. package/dist/spine.test.js.map +1 -0
  116. package/dist/spine.types.d.ts +89 -0
  117. package/dist/spine.types.d.ts.map +1 -0
  118. package/dist/spine.types.js +2 -0
  119. package/dist/spine.types.js.map +1 -0
  120. package/dist/test.lib.d.ts +3 -0
  121. package/dist/test.lib.d.ts.map +1 -0
  122. package/dist/test.lib.js +16 -0
  123. package/dist/test.lib.js.map +1 -0
  124. package/dist/tokens.categories.d.ts +22 -0
  125. package/dist/tokens.categories.d.ts.map +1 -0
  126. package/dist/tokens.categories.js +78 -0
  127. package/dist/tokens.categories.js.map +1 -0
  128. package/dist/tokens.code.d.ts +2 -0
  129. package/dist/tokens.code.d.ts.map +1 -0
  130. package/dist/tokens.code.js +523 -0
  131. package/dist/tokens.code.js.map +1 -0
  132. package/dist/tokens.d.ts +130 -0
  133. package/dist/tokens.d.ts.map +1 -0
  134. package/dist/tokens.js +13 -0
  135. package/dist/tokens.js.map +1 -0
  136. package/dist/tokens.lib.d.ts +15 -0
  137. package/dist/tokens.lib.d.ts.map +1 -0
  138. package/dist/tokens.lib.js +12 -0
  139. package/dist/tokens.lib.js.map +1 -0
  140. package/dist/tokens.shared.d.ts +4 -0
  141. package/dist/tokens.shared.d.ts.map +1 -0
  142. package/dist/tokens.shared.js +35 -0
  143. package/dist/tokens.shared.js.map +1 -0
  144. package/dist/tokens.strings.d.ts +5 -0
  145. package/dist/tokens.strings.d.ts.map +1 -0
  146. package/dist/tokens.strings.js +111 -0
  147. package/dist/tokens.strings.js.map +1 -0
  148. package/dist/types.checks.d.ts +50 -0
  149. package/dist/types.checks.d.ts.map +1 -0
  150. package/dist/types.checks.js +246 -0
  151. package/dist/types.checks.js.map +1 -0
  152. package/dist/types.d.ts +152 -0
  153. package/dist/types.d.ts.map +1 -0
  154. package/dist/types.feather.d.ts +21 -0
  155. package/dist/types.feather.d.ts.map +1 -0
  156. package/dist/types.feather.js +156 -0
  157. package/dist/types.feather.js.map +1 -0
  158. package/dist/types.hover.d.ts +4 -0
  159. package/dist/types.hover.d.ts.map +1 -0
  160. package/dist/types.hover.js +99 -0
  161. package/dist/types.hover.js.map +1 -0
  162. package/dist/types.js +457 -0
  163. package/dist/types.js.map +1 -0
  164. package/dist/types.primitives.d.ts +10 -0
  165. package/dist/types.primitives.d.ts.map +1 -0
  166. package/dist/types.primitives.js +88 -0
  167. package/dist/types.primitives.js.map +1 -0
  168. package/dist/types.sprites.d.ts +8 -0
  169. package/dist/types.sprites.d.ts.map +1 -0
  170. package/dist/types.sprites.js +417 -0
  171. package/dist/types.sprites.js.map +1 -0
  172. package/dist/types.test.d.ts +2 -0
  173. package/dist/types.test.d.ts.map +1 -0
  174. package/dist/types.test.js +62 -0
  175. package/dist/types.test.js.map +1 -0
  176. package/dist/util.d.ts +50 -0
  177. package/dist/util.d.ts.map +1 -0
  178. package/dist/util.js +168 -0
  179. package/dist/util.js.map +1 -0
  180. package/dist/util.test.d.ts +3 -0
  181. package/dist/util.test.d.ts.map +1 -0
  182. package/dist/util.test.js +63 -0
  183. package/dist/util.test.js.map +1 -0
  184. package/dist/visitor.assign.d.ts +24 -0
  185. package/dist/visitor.assign.d.ts.map +1 -0
  186. package/dist/visitor.assign.js +112 -0
  187. package/dist/visitor.assign.js.map +1 -0
  188. package/dist/visitor.d.ts +89 -0
  189. package/dist/visitor.d.ts.map +1 -0
  190. package/dist/visitor.functionExpression.d.ts +7 -0
  191. package/dist/visitor.functionExpression.d.ts.map +1 -0
  192. package/dist/visitor.functionExpression.js +216 -0
  193. package/dist/visitor.functionExpression.js.map +1 -0
  194. package/dist/visitor.globals.d.ts +59 -0
  195. package/dist/visitor.globals.d.ts.map +1 -0
  196. package/dist/visitor.globals.js +271 -0
  197. package/dist/visitor.globals.js.map +1 -0
  198. package/dist/visitor.identifierAccessor.d.ts +6 -0
  199. package/dist/visitor.identifierAccessor.d.ts.map +1 -0
  200. package/dist/visitor.identifierAccessor.js +381 -0
  201. package/dist/visitor.identifierAccessor.js.map +1 -0
  202. package/dist/visitor.js +605 -0
  203. package/dist/visitor.js.map +1 -0
  204. package/dist/visitor.processor.d.ts +66 -0
  205. package/dist/visitor.processor.d.ts.map +1 -0
  206. package/dist/visitor.processor.js +147 -0
  207. package/dist/visitor.processor.js.map +1 -0
  208. package/package.json +63 -0
@@ -0,0 +1,533 @@
1
+ import { Pathy } from '@bscotch/pathy';
2
+ import { type StitchConfig } from '@bscotch/stitch-config';
3
+ import { type Yyp, type YypFolder, type YypResource } from '@bscotch/yy';
4
+ import { EventEmitter } from 'events';
5
+ import { ImportModuleOptions } from './modules.types.js';
6
+ import { Asset } from './project.asset.js';
7
+ import { Code } from './project.code.js';
8
+ import { Diagnostic } from './project.diagnostics.js';
9
+ import { Native } from './project.native.js';
10
+ import { Signifier } from './signifiers.js';
11
+ import { StructType, Type } from './types.js';
12
+ export { setLogger, type Logger } from './logger.js';
13
+ export interface SymbolInfo {
14
+ native: boolean;
15
+ symbol: Signifier | Type;
16
+ }
17
+ export interface DiagnosticsEventPayload {
18
+ filePath: string;
19
+ code?: Code;
20
+ diagnostics: Diagnostic[];
21
+ }
22
+ export type OnDiagnostics = (diagnostics: DiagnosticsEventPayload) => void;
23
+ export interface ProjectOptions {
24
+ /**
25
+ * Register a callback to run when diagnostics are emitted.
26
+ * If not provided, a callback can be registered after
27
+ * initialization, but will not receive any diagnostics
28
+ * from the initial parse.
29
+ */
30
+ onDiagnostics?: OnDiagnostics;
31
+ /**
32
+ * If registered, this callback will be used to report
33
+ * when progress has been made towards loading the project.
34
+ */
35
+ onLoadProgress?: (increment: number, message?: string) => void;
36
+ settings?: {
37
+ /**
38
+ * Symbols starting with these prefixes that are not declared
39
+ * in the coded will be treated as global symbols. This is
40
+ * useful for ensuring globals created by extensions will not
41
+ * show up as being undeclared.
42
+ */
43
+ autoDeclareGlobalsPrefixes?: string[];
44
+ };
45
+ }
46
+ export declare class Project {
47
+ readonly yypPath: Pathy<any>;
48
+ readonly options?: ProjectOptions | undefined;
49
+ yyp: Yyp;
50
+ /** Until this resolves, assume that this.yyp is not yet read */
51
+ yypWaiter?: Promise<any>;
52
+ config: StitchConfig;
53
+ readonly assets: Map<string, Asset<"animcurves" | "extensions" | "fonts" | "notes" | "objects" | "particles" | "paths" | "rooms" | "scripts" | "sequences" | "shaders" | "sounds" | "sprites" | "tilesets" | "timelines">>;
54
+ /**
55
+ * Store the "native" functions, constants, and enums on
56
+ * a per-project basis, but separately from the project-specific
57
+ * symbols. The native symbols and types are loaded from the spec,
58
+ * so they can vary between projects. */
59
+ native: Native;
60
+ helpLinks: {
61
+ [method: string]: string;
62
+ };
63
+ /**
64
+ * When resolved, the GML spec has been loaded and the
65
+ * `native` property has been populated.
66
+ */
67
+ nativeWaiter?: Promise<void>;
68
+ /**
69
+ * The type of the 'global' struct, which contains all globalvars
70
+ * and globally defined functions. */
71
+ self: StructType;
72
+ /**
73
+ * The `global` symbol, which has type `self`. */
74
+ symbol: Signifier;
75
+ /**
76
+ * Non-native global types, which can be referenced in JSDocs
77
+ * and in a symbol's types. */
78
+ readonly types: Map<string, Type<"Array" | "Bool" | "Enum" | "Function" | "Pointer" | "Real" | "String" | "Struct" | "Undefined" | "ArgumentIdentity" | "Any" | "Asset.GMAnimCurve" | "Asset.GMAudioGroup" | "Asset.GMFont" | "Asset.GMObject" | "Asset.GMParticleSystem" | "Asset.GMPath" | "Asset.GMRoom" | "Asset.GMScript" | "Asset.GMSequence" | "Asset.GMShader" | "Asset.GMSound" | "Asset.GMSprite" | "Asset.GMTileSet" | "Asset.GMTimeline" | "Asset.Script" | "Id.AudioEmitter" | "Id.AudioListener" | "Id.AudioSyncGroup" | "Id.BackgroundElement" | "Id.BinaryFile" | "Id.Buffer" | "Id.Camera" | "Id.DsGrid" | "Id.DsList" | "Id.DsMap" | "Id.DsPriority" | "Id.DsQueue" | "Id.DsStack" | "Id.ExternalCall" | "Id.Gif" | "Id.Instance" | "Id.Layer" | "Id.MpGrid" | "Id.ParticleEmitter" | "Id.ParticleSystem" | "Id.ParticleType" | "Id.PhysicsIndex" | "Id.PhysicsParticleGroup" | "Id.Sampler" | "Id.SequenceElement" | "Id.Socket" | "Id.Sound" | "Id.SpriteElement" | "Id.Surface" | "Id.TextFile" | "Id.Texture" | "Id.TileElementId" | "Id.TileMapElement" | "Id.TimeSource" | "Id.Uniform" | "Id.VertexBuffer" | "Id.VertexFormat" | "Mixed" | "EnumMember" | "Unknown" | "Never" | "InstanceType" | "ObjectType" | "StaticType">>;
79
+ protected emitter: EventEmitter<[never]>;
80
+ /** Code that needs to be reprocessed, for one reason or another. */
81
+ protected dirtyFiles: Set<Code>;
82
+ protected constructor(yypPath: Pathy<any>, options?: ProjectOptions | undefined);
83
+ /**
84
+ * @internal For tracking changed code files that will need to be re-parsed.
85
+ */
86
+ queueDirtyFileUpdate(code: Code): void;
87
+ /**
88
+ * @internal Drain the queue of dirty files, updating their diagnostics
89
+ */
90
+ drainDirtyFileUpdateQueue(): void;
91
+ /**
92
+ * Update the YYP file to list a specific GameMaker IDE version.
93
+ * Note that the GameMaker IDE will overwrite this with whatever
94
+ * its own version is -- this feature is useful for external tools
95
+ * like Stitch that can manage multiple GameMaker IDE versions.
96
+ */
97
+ setIdeVersion(version: string): Promise<void>;
98
+ /**
99
+ * The current version of the GameMaker IDE listed in
100
+ * this project's YYP file. This is the GameMaker version that
101
+ * the project was last opened with.
102
+ */
103
+ get ideVersion(): string;
104
+ /**
105
+ * The directory in which the project lives.
106
+ */
107
+ get dir(): Pathy;
108
+ /**
109
+ * Get the Stitch config for this project, which defines
110
+ * various settings that may impact rule around adding
111
+ * assets, parsing logs, etc.
112
+ */
113
+ get stitchConfig(): Pathy<import("zod").objectOutputType<{
114
+ $schema: import("zod").ZodDefault<import("zod").ZodLiteral<"https://raw.githubusercontent.com/bscotch/stitch/develop/packages/config/schemas/stitch.config.schema.json">>;
115
+ textureGroupAssignments: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
116
+ audioGroupAssignments: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
117
+ runtimeVersion: import("zod").ZodOptional<import("zod").ZodString>;
118
+ newSpriteRules: import("zod").ZodOptional<import("zod").ZodObject<{
119
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
120
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
121
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
122
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
123
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
124
+ }, import("zod").ZodTypeAny, "passthrough">>>;
125
+ newSoundRules: import("zod").ZodOptional<import("zod").ZodObject<{
126
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
127
+ defaults: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
128
+ mono: import("zod").ZodOptional<import("zod").ZodBoolean>;
129
+ }, "strip", import("zod").ZodTypeAny, {
130
+ mono?: boolean | undefined;
131
+ }, {
132
+ mono?: boolean | undefined;
133
+ }>>>;
134
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
135
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
136
+ defaults: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
137
+ mono: import("zod").ZodOptional<import("zod").ZodBoolean>;
138
+ }, "strip", import("zod").ZodTypeAny, {
139
+ mono?: boolean | undefined;
140
+ }, {
141
+ mono?: boolean | undefined;
142
+ }>>>;
143
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
144
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
145
+ defaults: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
146
+ mono: import("zod").ZodOptional<import("zod").ZodBoolean>;
147
+ }, "strip", import("zod").ZodTypeAny, {
148
+ mono?: boolean | undefined;
149
+ }, {
150
+ mono?: boolean | undefined;
151
+ }>>>;
152
+ }, import("zod").ZodTypeAny, "passthrough">>>;
153
+ gameConsoleStyle: import("zod").ZodOptional<import("zod").ZodObject<{
154
+ base: import("zod").ZodOptional<import("zod").ZodString>;
155
+ lines: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
156
+ base: import("zod").ZodOptional<import("zod").ZodString>;
157
+ description: import("zod").ZodOptional<import("zod").ZodString>;
158
+ pattern: import("zod").ZodString;
159
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
160
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
161
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
162
+ base: import("zod").ZodOptional<import("zod").ZodString>;
163
+ description: import("zod").ZodOptional<import("zod").ZodString>;
164
+ pattern: import("zod").ZodString;
165
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
166
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
167
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
168
+ base: import("zod").ZodOptional<import("zod").ZodString>;
169
+ description: import("zod").ZodOptional<import("zod").ZodString>;
170
+ pattern: import("zod").ZodString;
171
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
172
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
173
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">>;
174
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
175
+ base: import("zod").ZodOptional<import("zod").ZodString>;
176
+ lines: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
177
+ base: import("zod").ZodOptional<import("zod").ZodString>;
178
+ description: import("zod").ZodOptional<import("zod").ZodString>;
179
+ pattern: import("zod").ZodString;
180
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
181
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
182
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
183
+ base: import("zod").ZodOptional<import("zod").ZodString>;
184
+ description: import("zod").ZodOptional<import("zod").ZodString>;
185
+ pattern: import("zod").ZodString;
186
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
187
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
188
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
189
+ base: import("zod").ZodOptional<import("zod").ZodString>;
190
+ description: import("zod").ZodOptional<import("zod").ZodString>;
191
+ pattern: import("zod").ZodString;
192
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
193
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
194
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">>;
195
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
196
+ base: import("zod").ZodOptional<import("zod").ZodString>;
197
+ lines: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
198
+ base: import("zod").ZodOptional<import("zod").ZodString>;
199
+ description: import("zod").ZodOptional<import("zod").ZodString>;
200
+ pattern: import("zod").ZodString;
201
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
202
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
203
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
204
+ base: import("zod").ZodOptional<import("zod").ZodString>;
205
+ description: import("zod").ZodOptional<import("zod").ZodString>;
206
+ pattern: import("zod").ZodString;
207
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
208
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
209
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
210
+ base: import("zod").ZodOptional<import("zod").ZodString>;
211
+ description: import("zod").ZodOptional<import("zod").ZodString>;
212
+ pattern: import("zod").ZodString;
213
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
214
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
215
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">>;
216
+ }, import("zod").ZodTypeAny, "passthrough">>>;
217
+ }, import("zod").ZodTypeAny, "passthrough">>;
218
+ /** List the names of the GameMaker configs defined by this project. */
219
+ get configs(): string[];
220
+ /** List the project's "datafiles" (a.k.a. "Included Files"), in the same format as they appear in the YYP file. */
221
+ get datafiles(): {
222
+ name: string;
223
+ resourceType: "GMIncludedFile";
224
+ resourceVersion: string;
225
+ CopyToMask: bigint;
226
+ filePath: string;
227
+ ConfigValues?: Record<string, {
228
+ CopyToMask: string;
229
+ }> | undefined;
230
+ }[];
231
+ /** List the Folders in this project, normalized to regular POSIX paths
232
+ * @example ['my/folder', 'my/other/folder']
233
+ */
234
+ get folders(): string[];
235
+ /**
236
+ * Run a callback when diagnostics are emitted. Returns an unsubscribe function. */
237
+ onDiagnostics(callback: OnDiagnostics): () => void;
238
+ /** @internal Method that can be called after some code has been parsed to report diagnostics to listeners. */
239
+ emitDiagnostics(code: Code | string, diagnostics: Diagnostic[]): void;
240
+ /**
241
+ * Since GameMaker assets are global they must have unique names independent of their type. Find an asset give it's name. Note that this is case-insensitive!
242
+ * @param name The name of the asset to find, case-insensitive.
243
+ */
244
+ getAssetByName<Assert extends boolean>(name: string | undefined, options?: {
245
+ assertExists: Assert;
246
+ }): Assert extends true ? Asset : Asset | undefined;
247
+ /**
248
+ * @param name The name of the asset to find and remove, case-insensitive.
249
+ */
250
+ removeAssetByName(name: string | undefined): Promise<void>;
251
+ getAsset(path: Pathy<any>): Asset | undefined;
252
+ getGmlFile(path: Pathy<any>): Code | undefined;
253
+ /** Normalize path information for a datafile ("Included File") */
254
+ parseIncludedFilePath(filePath: string, name?: string): {
255
+ filePath: string;
256
+ name: string;
257
+ };
258
+ findIncludedFile(filePath: string, name?: string): {
259
+ name: string;
260
+ resourceType: "GMIncludedFile";
261
+ resourceVersion: string;
262
+ CopyToMask: bigint;
263
+ filePath: string;
264
+ ConfigValues?: Record<string, {
265
+ CopyToMask: string;
266
+ }> | undefined;
267
+ } | undefined;
268
+ /**
269
+ * Ensure that the included files listed in the YYP exactly match
270
+ * the files in the `datafiles` directory.
271
+ */
272
+ syncIncludedFiles(): Promise<void>;
273
+ /** @internal Load an Asset instance into the project's data model. For use by methods that load the project, add assets, etc. */
274
+ registerAsset(resource: Asset): void;
275
+ /**
276
+ * @param from The name of the asset to rename, case-insensitive.
277
+ * @param to The new name for the asset, which must be a valid identifier that doesn't already have an associated asset. The name will be set in the provided casing, but must be unique case-insensitively.
278
+ */
279
+ renameAsset(from: string, to: string): Promise<void>;
280
+ renameSignifier(signifier: Signifier, newName: string): Promise<void>;
281
+ import(fromProject: Project | string, options?: ImportModuleOptions): Promise<{
282
+ created: string[];
283
+ updated: string[];
284
+ errors: string[];
285
+ skipped: string[];
286
+ }>;
287
+ duplicateAsset(sourceName: string, newPath: string): Promise<Asset<"animcurves" | "extensions" | "fonts" | "notes" | "objects" | "particles" | "paths" | "rooms" | "scripts" | "sequences" | "shaders" | "sounds" | "sprites" | "tilesets" | "timelines">>;
288
+ /**
289
+ * Create a new sound asset. Will not do anything if the asset by this name already exists (but will log an error).
290
+ * @param newSoundPath The POSIX-style path within the asset tree where you want this sound to be created, where the last component is the name of the sound asset.
291
+ * @param fromFile The path to the source sound file to copy into the new asset's directory.
292
+ * @example project.createSound('folder/of/sounds/snd_my_new_sound', 'path/to/sound.mp3');
293
+ */
294
+ createSound(newSoundPath: string, fromFile: string | Pathy): Promise<Asset<"animcurves" | "extensions" | "fonts" | "notes" | "objects" | "particles" | "paths" | "rooms" | "scripts" | "sequences" | "shaders" | "sounds" | "sprites" | "tilesets" | "timelines"> | undefined>;
295
+ /**
296
+ * Create a new room asset. Will not do anything if the asset by this name already exists (but will log an error).
297
+ * @param newRoomPath The POSIX-style path within the asset tree where you want this asset to be created, where the last component is the name of the asset.
298
+ * @example project.createRoom('folder/of/rooms/rm_my_room');
299
+ */
300
+ createRoom(newRoomPath: string): Promise<Asset<'rooms'> | undefined>;
301
+ /**
302
+ * Create a new sprite asset. Will not do anything if the asset by this name already exists (but will log an error).
303
+ * @param newSpritePath The POSIX-style path within the asset tree where you want this asset to be created, where the last component is the name of the asset.
304
+ * @param fromImageFile Path to a source PNG image to use as the first frame of the sprite.
305
+ * @example project.createSprite('folder/of/sprites/sp_my_sprite', 'path/to/sprite.png');
306
+ */
307
+ createSprite(newSpritePath: string, fromImageFile: string | Pathy): Promise<Asset<'sprites'> | undefined>;
308
+ /**
309
+ * Add an object to the yyp file. The string can include separators,
310
+ * in which case folders will be ensured up to the final component.
311
+ * @param newObjectName The POSIX-style path within the asset tree where you want this asset to be created, where the last component is the name of the asset.
312
+ */
313
+ createObject(newObjectName: string): Promise<Asset<'objects'> | undefined>;
314
+ createShader(path: string): Promise<Asset<'shaders'> | undefined>;
315
+ /**
316
+ * Add a script to the yyp file. The path string can include separators,
317
+ * in which case folders will be ensured up to the final component.
318
+ */
319
+ createScript(path: string): Promise<Asset<'scripts'> | undefined>;
320
+ protected parseNewAssetPath(path: string): Promise<{
321
+ folder: {
322
+ name: string;
323
+ resourceType: "GMFolder";
324
+ resourceVersion: string;
325
+ folderPath: string;
326
+ tags?: string[] | undefined;
327
+ order?: number | undefined;
328
+ };
329
+ name: string;
330
+ } | undefined>;
331
+ /**
332
+ * Given the path to a yy file for an asset, ensure
333
+ * it has an entry in the yyp file. */
334
+ addAssetToYyp(yyPath: string, options?: {
335
+ skipSave?: boolean;
336
+ }): Promise<YypResource>;
337
+ protected parseFolderPath(path: string | string[]): {
338
+ parts: string[];
339
+ full: string;
340
+ prefix: string;
341
+ };
342
+ listAssetsInFolder(path: string | string[], options?: {
343
+ recursive: boolean;
344
+ }): Asset<"animcurves" | "extensions" | "fonts" | "notes" | "objects" | "particles" | "paths" | "rooms" | "scripts" | "sequences" | "shaders" | "sounds" | "sprites" | "tilesets" | "timelines">[];
345
+ /**
346
+ * Delete a folder recursively. Only allowed if there are no assets
347
+ * in this or any subfolder.
348
+ */
349
+ deleteFolder(path: string | string[]): Promise<void>;
350
+ /**
351
+ * Rename an existing folder. Allows for renaming any part of
352
+ * the path (useful both "moving" and "renaming" a folder).
353
+ * Array inputs are interpreted as pre-split paths. If the new
354
+ * name matches an existing folder, it will in effect be "merged"
355
+ * with that existing folder.
356
+ *
357
+ * Returns the list of folders and assets that are now in a new
358
+ * location. */
359
+ renameFolder(oldPath: string | string[], newPath: string | string[]): Promise<{
360
+ movedFolders: [from: {
361
+ name: string;
362
+ resourceType: "GMFolder";
363
+ resourceVersion: string;
364
+ folderPath: string;
365
+ tags?: string[] | undefined;
366
+ order?: number | undefined;
367
+ }, to: {
368
+ name: string;
369
+ resourceType: "GMFolder";
370
+ resourceVersion: string;
371
+ folderPath: string;
372
+ tags?: string[] | undefined;
373
+ order?: number | undefined;
374
+ } | undefined][];
375
+ movedAssets: Asset<"animcurves" | "extensions" | "fonts" | "notes" | "objects" | "particles" | "paths" | "rooms" | "scripts" | "sequences" | "shaders" | "sounds" | "sprites" | "tilesets" | "timelines">[];
376
+ } | undefined>;
377
+ /**
378
+ * Add a folder to the yyp file. The string can include separators,
379
+ * in which case nested folders will be created. If an array is provided,
380
+ * it is interpreted as a pre-split path. */
381
+ createFolder(path: string | string[], options?: {
382
+ skipSave?: boolean;
383
+ }): Promise<YypFolder | undefined>;
384
+ saveYyp(): Promise<void>;
385
+ /**
386
+ * The name of a resource, *in lower case*, from
387
+ * a path. This is used as the key for looking up resources.
388
+ *
389
+ * The path can be to the asset's folder, or to any file within
390
+ * that folder.
391
+ */
392
+ assetNameFromPath(path: Pathy<any>): string;
393
+ /**
394
+ * When first creating an instance, we need to get all project file
395
+ * content into memory for fast access. In particular, we need all
396
+ * yyp, yy, and gml files for scripts and objects. For other asset types
397
+ * we just need their names and yyp filepaths.
398
+ *
399
+ * Can be called at any time -- will only operate on new assets.
400
+ *
401
+ * Returns the list of added assets. Assets are instanced and registered but their
402
+ * code is not parsed!
403
+ */
404
+ protected loadAssets(options?: ProjectOptions): Promise<Asset[]>;
405
+ protected loadHelpLinks(): Promise<void>;
406
+ reloadConfig(): Promise<import("zod").objectOutputType<{
407
+ $schema: import("zod").ZodDefault<import("zod").ZodLiteral<"https://raw.githubusercontent.com/bscotch/stitch/develop/packages/config/schemas/stitch.config.schema.json">>;
408
+ textureGroupAssignments: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
409
+ audioGroupAssignments: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
410
+ runtimeVersion: import("zod").ZodOptional<import("zod").ZodString>;
411
+ newSpriteRules: import("zod").ZodOptional<import("zod").ZodObject<{
412
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
413
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
414
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
415
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
416
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
417
+ }, import("zod").ZodTypeAny, "passthrough">>>;
418
+ newSoundRules: import("zod").ZodOptional<import("zod").ZodObject<{
419
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
420
+ defaults: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
421
+ mono: import("zod").ZodOptional<import("zod").ZodBoolean>;
422
+ }, "strip", import("zod").ZodTypeAny, {
423
+ mono?: boolean | undefined;
424
+ }, {
425
+ mono?: boolean | undefined;
426
+ }>>>;
427
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
428
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
429
+ defaults: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
430
+ mono: import("zod").ZodOptional<import("zod").ZodBoolean>;
431
+ }, "strip", import("zod").ZodTypeAny, {
432
+ mono?: boolean | undefined;
433
+ }, {
434
+ mono?: boolean | undefined;
435
+ }>>>;
436
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
437
+ allowedNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
438
+ defaults: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
439
+ mono: import("zod").ZodOptional<import("zod").ZodBoolean>;
440
+ }, "strip", import("zod").ZodTypeAny, {
441
+ mono?: boolean | undefined;
442
+ }, {
443
+ mono?: boolean | undefined;
444
+ }>>>;
445
+ }, import("zod").ZodTypeAny, "passthrough">>>;
446
+ gameConsoleStyle: import("zod").ZodOptional<import("zod").ZodObject<{
447
+ base: import("zod").ZodOptional<import("zod").ZodString>;
448
+ lines: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
449
+ base: import("zod").ZodOptional<import("zod").ZodString>;
450
+ description: import("zod").ZodOptional<import("zod").ZodString>;
451
+ pattern: import("zod").ZodString;
452
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
453
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
454
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
455
+ base: import("zod").ZodOptional<import("zod").ZodString>;
456
+ description: import("zod").ZodOptional<import("zod").ZodString>;
457
+ pattern: import("zod").ZodString;
458
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
459
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
460
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
461
+ base: import("zod").ZodOptional<import("zod").ZodString>;
462
+ description: import("zod").ZodOptional<import("zod").ZodString>;
463
+ pattern: import("zod").ZodString;
464
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
465
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
466
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">>;
467
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
468
+ base: import("zod").ZodOptional<import("zod").ZodString>;
469
+ lines: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
470
+ base: import("zod").ZodOptional<import("zod").ZodString>;
471
+ description: import("zod").ZodOptional<import("zod").ZodString>;
472
+ pattern: import("zod").ZodString;
473
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
474
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
475
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
476
+ base: import("zod").ZodOptional<import("zod").ZodString>;
477
+ description: import("zod").ZodOptional<import("zod").ZodString>;
478
+ pattern: import("zod").ZodString;
479
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
480
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
481
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
482
+ base: import("zod").ZodOptional<import("zod").ZodString>;
483
+ description: import("zod").ZodOptional<import("zod").ZodString>;
484
+ pattern: import("zod").ZodString;
485
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
486
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
487
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">>;
488
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
489
+ base: import("zod").ZodOptional<import("zod").ZodString>;
490
+ lines: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
491
+ base: import("zod").ZodOptional<import("zod").ZodString>;
492
+ description: import("zod").ZodOptional<import("zod").ZodString>;
493
+ pattern: import("zod").ZodString;
494
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
495
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
496
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
497
+ base: import("zod").ZodOptional<import("zod").ZodString>;
498
+ description: import("zod").ZodOptional<import("zod").ZodString>;
499
+ pattern: import("zod").ZodString;
500
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
501
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
502
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
503
+ base: import("zod").ZodOptional<import("zod").ZodString>;
504
+ description: import("zod").ZodOptional<import("zod").ZodString>;
505
+ pattern: import("zod").ZodString;
506
+ caseSensitive: import("zod").ZodOptional<import("zod").ZodBoolean>;
507
+ styles: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
508
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">>;
509
+ }, import("zod").ZodTypeAny, "passthrough">>>;
510
+ }, import("zod").ZodTypeAny, "passthrough">>;
511
+ getWindowsName(): Promise<string | undefined>;
512
+ /**
513
+ * Load the GML spec for the project's runtime version, falling
514
+ * back on the included spec if necessary.
515
+ */
516
+ protected loadGmlSpec(): Promise<void>;
517
+ /**
518
+ * Call to reload the project's yyp file (e.g. because it has changed
519
+ * on disk) and add/remove any resources.
520
+ */
521
+ reloadYyp(): Promise<void>;
522
+ /**
523
+ * @internal
524
+ * Initialize a collection of new assets by parsing their GML */
525
+ initiallyParseAssetCode(assets: Asset[]): void;
526
+ protected initialize(options?: ProjectOptions): Promise<void>;
527
+ /**
528
+ * Create a new project instance and initialize it.
529
+ */
530
+ static initialize(yypPath: string, options?: ProjectOptions): Promise<Project>;
531
+ static readonly fallbackGmlSpecPath: Pathy<unknown>;
532
+ }
533
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { IRecognitionException, IToken } from 'chevrotain';
2
+ import type { IRange, Range } from './project.location.js';
3
+ export type GmlParseError = IRecognitionException & {
4
+ previousToken?: IToken;
5
+ };
6
+ export type DiagnosticSeverity = 'error' | 'warning' | 'info';
7
+ export interface DiagnosticCollections {
8
+ GLOBAL_SELF: Diagnostic[];
9
+ INVALID_OPERATION: Diagnostic[];
10
+ JSDOC_MISMATCH: Diagnostic[];
11
+ MISSING_EVENT_INHERITED: Diagnostic[];
12
+ MISSING_REQUIRED_ARGUMENT: Diagnostic[];
13
+ SYNTAX_ERROR: Diagnostic[];
14
+ TOO_MANY_ARGUMENTS: Diagnostic[];
15
+ UNDECLARED_VARIABLE_REFERENCE: Diagnostic[];
16
+ UNDECLARED_GLOBAL_REFERENCE: Diagnostic[];
17
+ JSDOC: Diagnostic[];
18
+ UNUSED: Diagnostic[];
19
+ }
20
+ export type DiagnosticCollectionName = keyof DiagnosticCollections;
21
+ export declare class Diagnostic {
22
+ readonly message: string;
23
+ readonly location: IRange;
24
+ readonly severity: DiagnosticSeverity;
25
+ readonly payload?: any;
26
+ readonly $tag = "diagnostic";
27
+ constructor(message: string, location: IRange, severity?: DiagnosticSeverity, payload?: any);
28
+ static warn(message: string, location: Range, payload?: any): Diagnostic;
29
+ static error(message: string, location: Range, payload?: any): Diagnostic;
30
+ static info(message: string, location: Range, payload?: any): Diagnostic;
31
+ }
32
+ //# sourceMappingURL=project.diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.diagnostics.d.ts","sourceRoot":"","sources":["../src/project.diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,qBAAqB,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAChC,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,uBAAuB,EAAE,UAAU,EAAE,CAAC;IACtC,yBAAyB,EAAE,UAAU,EAAE,CAAC;IACxC,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,6BAA6B,EAAE,UAAU,EAAE,CAAC;IAC5C,2BAA2B,EAAE,UAAU,EAAE,CAAC;IAC1C,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AACD,MAAM,MAAM,wBAAwB,GAAG,MAAM,qBAAqB,CAAC;AAEnE,qBAAa,UAAU;IAInB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG;IANxB,QAAQ,CAAC,IAAI,gBAAgB;gBAGlB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,kBAA8B,EACxC,OAAO,CAAC,EAAE,GAAG;IAGxB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,GAAG;IAI3D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,GAAG;IAI5D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,GAAG;CAG5D"}
@@ -0,0 +1,23 @@
1
+ export class Diagnostic {
2
+ message;
3
+ location;
4
+ severity;
5
+ payload;
6
+ $tag = 'diagnostic';
7
+ constructor(message, location, severity = 'warning', payload) {
8
+ this.message = message;
9
+ this.location = location;
10
+ this.severity = severity;
11
+ this.payload = payload;
12
+ }
13
+ static warn(message, location, payload) {
14
+ return new Diagnostic(message, location, 'warning', payload);
15
+ }
16
+ static error(message, location, payload) {
17
+ return new Diagnostic(message, location, 'error', payload);
18
+ }
19
+ static info(message, location, payload) {
20
+ return new Diagnostic(message, location, 'info', payload);
21
+ }
22
+ }
23
+ //# sourceMappingURL=project.diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.diagnostics.js","sourceRoot":"","sources":["../src/project.diagnostics.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,UAAU;IAIV;IACA;IACA;IACA;IANF,IAAI,GAAG,YAAY,CAAC;IAE7B,YACW,OAAe,EACf,QAAgB,EAChB,WAA+B,SAAS,EACxC,OAAa;QAHb,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAgC;QACxC,YAAO,GAAP,OAAO,CAAM;IACrB,CAAC;IAEJ,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAAe,EAAE,OAAa;QACzD,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,QAAe,EAAE,OAAa;QAC1D,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAAe,EAAE,OAAa;QACzD,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;CACF"}