@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,16 @@
1
+ export * from './jsdoc.js';
2
+ export * from './lib.objects.js';
3
+ export { importAssets, type ImportModuleOptions } from './modules.js';
4
+ export * from './project.asset.js';
5
+ export { Code } from './project.code.js';
6
+ export type { Diagnostic } from './project.diagnostics.js';
7
+ export * from './project.js';
8
+ export { FunctionArgRange, Position, Range, Reference, Scope, type ReferenceableType, } from './project.location.js';
9
+ export * from './signifiers.flags.js';
10
+ export { Signifier } from './signifiers.js';
11
+ export { Spine, type SpineSummary } from './spine.js';
12
+ export type * from './spine.types.js';
13
+ export { isTypeInstance, isTypeOfKind } from './types.checks.js';
14
+ export type * from './types.js';
15
+ export { primitiveNames, type PrimitiveName } from './types.primitives.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,KAAK,EACL,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,mBAAmB,kBAAkB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from './jsdoc.js';
2
+ export * from './lib.objects.js';
3
+ export { importAssets } from './modules.js';
4
+ export * from './project.asset.js';
5
+ export { Code } from './project.code.js';
6
+ export * from './project.js';
7
+ export { FunctionArgRange, Position, Range, Reference, Scope, } from './project.location.js';
8
+ export * from './signifiers.flags.js';
9
+ export { Signifier } from './signifiers.js';
10
+ export { Spine } from './spine.js';
11
+ export { isTypeInstance, isTypeOfKind } from './types.checks.js';
12
+ export { primitiveNames } from './types.primitives.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAA4B,MAAM,cAAc,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,KAAK,GAEN,MAAM,uBAAuB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { IToken } from 'chevrotain';
2
+ import type { IPosition, IRange } from './project.location.js';
3
+ declare const patterns: {
4
+ param: string;
5
+ description: string;
6
+ function: string;
7
+ returns: string;
8
+ pure: string;
9
+ mixin: string;
10
+ ignore: string;
11
+ deprecated: string;
12
+ self: string;
13
+ type: string;
14
+ localvar: string;
15
+ globalvar: string;
16
+ instancevar: string;
17
+ template: string;
18
+ unknown: string;
19
+ };
20
+ export type JsdocTagKind = keyof typeof patterns;
21
+ export type JsdocKind = 'function' | 'description' | 'type' | 'template' | 'param' | 'self' | 'localvar' | 'globalvar' | 'instancevar' | 'returns';
22
+ export interface JsdocComponent extends IRange {
23
+ /** The string content of this token */
24
+ content: string;
25
+ }
26
+ export interface Jsdoc<T extends JsdocKind = JsdocKind> extends IRange {
27
+ kind: T;
28
+ tag?: JsdocComponent;
29
+ description: string;
30
+ ignore?: boolean;
31
+ deprecated?: boolean;
32
+ mixin?: boolean;
33
+ templates?: Jsdoc<'template'>[];
34
+ params?: Jsdoc<'param'>[];
35
+ /** Return type as GML typestring */
36
+ returns?: Jsdoc<'returns'>;
37
+ /** Parameter or variable name */
38
+ name?: JsdocComponent;
39
+ /** If is an optional param */
40
+ optional?: boolean;
41
+ /** The GML typestring, for use by a param, type, localvar, etc */
42
+ type?: JsdocComponent;
43
+ /** For functions or self docs, the GML typestring for an @self/@context */
44
+ self?: JsdocComponent;
45
+ }
46
+ export interface JsdocSummary extends Jsdoc<'description' | 'function' | 'type' | 'self' | 'globalvar' | 'instancevar' | 'localvar'> {
47
+ /**
48
+ * The list of all tags found in this block, and their
49
+ * respective locations, for use e.g. syntax highlighting.
50
+ */
51
+ tags: JsdocComponent[];
52
+ diagnostics: (IRange & {
53
+ message: string;
54
+ })[];
55
+ /** Locations of all of the types parsed from the JSDoc block */
56
+ typeRanges: JsdocComponent[];
57
+ }
58
+ interface JsdocLine {
59
+ content: string;
60
+ start: IPosition;
61
+ }
62
+ /**
63
+ * Since single-line style comments make it impossible to
64
+ * tell when we're in a NEW doc, we need to break lines into
65
+ * groups
66
+ */
67
+ export declare function gmlLinesByGroup(gmlLines: IToken[]): JsdocLine[][];
68
+ export declare function parseJsdoc(jsdocLines: JsdocLine[]): JsdocSummary;
69
+ export declare function parseJsdoc(gmlLines: IToken[]): JsdocSummary;
70
+ export declare function parseJsdoc(jsBlock: IToken): JsdocSummary;
71
+ export declare function parseJsdoc(jsdocString: string,
72
+ /**
73
+ * The position of the first character of the jsdoc string,
74
+ * if it has been parsed out of a larger document. This is
75
+ * used to offset the positions of discovered tag components.
76
+ */
77
+ startPosition?: IPosition): JsdocSummary;
78
+ export {};
79
+ //# sourceMappingURL=jsdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.d.ts","sourceRoot":"","sources":["../src/jsdoc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAgC/D,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;CAgBb,CAAC;AAwDF,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,QAAQ,CAAC;AAEjD,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,aAAa,GACb,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,UAAU,GACV,WAAW,GACX,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,MAAM;IACpE,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1B,oCAAoC;IACpC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,iCAAiC;IACjC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,YACf,SAAQ,KAAK,CACT,aAAa,GACb,UAAU,GACV,MAAM,GACN,MAAM,GACN,WAAW,GACX,aAAa,GACb,UAAU,CACb;IACD;;;OAGG;IACH,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,WAAW,EAAE,CAAC,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAC9C,gEAAgE;IAChE,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;CAClB;AA2FD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,EAAE,CA4BjE;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;AAClE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;AAC7D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM;AACnB;;;;GAIG;AACH,aAAa,CAAC,EAAE,SAAS,GACxB,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Type } from './types.js';
2
+ export interface FeatherTypeUnion {
3
+ kind: 'union';
4
+ types: FeatherType[];
5
+ }
6
+ export interface FeatherType {
7
+ kind: 'type';
8
+ name: {
9
+ content: string;
10
+ offset: number;
11
+ inferred?: boolean;
12
+ };
13
+ of?: FeatherTypeUnion;
14
+ }
15
+ /**
16
+ * Given a parsed feather type, create a flat array of flat types.
17
+ * Useful for e.g. getting the offsets of all types in a union.
18
+ * @param flattened The array collecting the flattened types
19
+ */
20
+ export declare function flattenFeatherTypes(type: FeatherTypeUnion | FeatherType | string, flattened?: FeatherType[]): FeatherType[];
21
+ export declare function parseFeatherTypeString(typeString: string): FeatherTypeUnion;
22
+ export declare function typeToFeatherString(type: Type): string;
23
+ //# sourceMappingURL=jsdoc.feather.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.feather.d.ts","sourceRoot":"","sources":["../src/jsdoc.feather.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,EAAE,CAAC,EAAE,gBAAgB,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,GAAG,WAAW,GAAG,MAAM,EAC7C,SAAS,GAAE,WAAW,EAAO,GAC5B,WAAW,EAAE,CAaf;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CA4F3E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CA0BtD"}
@@ -0,0 +1,143 @@
1
+ // Handle GameMaker JSDoc typestrings
2
+ // GameMaker allows for some variations on the allowed syntax.
3
+ // Examples:
4
+ // - `String`
5
+ // - `String|Real`
6
+ // - `String,Real`
7
+ // - `String OR Real`
8
+ // - `Array`
9
+ // - `Array<String>`
10
+ // - `Array[String|Real]`
11
+ import { ok } from './util.js';
12
+ /**
13
+ * Given a parsed feather type, create a flat array of flat types.
14
+ * Useful for e.g. getting the offsets of all types in a union.
15
+ * @param flattened The array collecting the flattened types
16
+ */
17
+ export function flattenFeatherTypes(type, flattened = []) {
18
+ if (typeof type === 'string') {
19
+ return flattenFeatherTypes(parseFeatherTypeString(type), flattened);
20
+ }
21
+ if (type.kind === 'type') {
22
+ flattened.push(type);
23
+ if (type.of) {
24
+ flattenFeatherTypes(type.of, flattened);
25
+ }
26
+ }
27
+ else {
28
+ type.types.forEach((t) => flattenFeatherTypes(t, flattened));
29
+ }
30
+ return flattened;
31
+ }
32
+ export function parseFeatherTypeString(typeString) {
33
+ // Patterns
34
+ const whitespace = /\s+/y;
35
+ const leftBracket = /[<[]/y;
36
+ const rightBracket = /[>\]]/y;
37
+ const or = /(\bOR\b|\bor\b|\||,)/y;
38
+ const identifier = /[a-zA-Z_][a-zA-Z0-9_.]*/y;
39
+ let offset = 0;
40
+ // Handle case where a type is incorrectly wrapped in brackets
41
+ // (e.g. Array<String|Undefined> is fine, but just <String|Undefined> is not)
42
+ if (typeString.match(/^\s*[<[]/)) {
43
+ const parts = typeString.match(/^(\s*[<[])(.*)([>\]]\s*)$/);
44
+ if (parts) {
45
+ typeString =
46
+ ' '.repeat(parts[1].length) + parts[2] + ' '.repeat(parts[3].length);
47
+ }
48
+ }
49
+ const lex = (pattern) => {
50
+ pattern.lastIndex = offset;
51
+ const match = pattern.exec(typeString);
52
+ if (!match) {
53
+ return;
54
+ }
55
+ offset = pattern.lastIndex;
56
+ return match;
57
+ };
58
+ const rootUnion = { kind: 'union', types: [] };
59
+ const typeUnionStack = [rootUnion];
60
+ 0;
61
+ const currentUnion = () => typeUnionStack.at(-1);
62
+ let currentType;
63
+ if (!typeString?.trim()) {
64
+ rootUnion.types.push({
65
+ kind: 'type',
66
+ name: { content: 'Any', inferred: true, offset },
67
+ });
68
+ return rootUnion;
69
+ }
70
+ // Lex the string
71
+ while (offset < typeString.length) {
72
+ let match;
73
+ match = lex(leftBracket);
74
+ if (match) {
75
+ ok(currentType, 'Unexpected left bracket');
76
+ // Create a new union
77
+ const union = { kind: 'union', types: [] };
78
+ // Add it to the current type
79
+ currentType.of = union;
80
+ // Push it onto the stack
81
+ typeUnionStack.push(union);
82
+ continue;
83
+ }
84
+ match = lex(rightBracket);
85
+ if (match) {
86
+ // Pop the current union off the stack
87
+ typeUnionStack.pop();
88
+ // Can only be followed by an OR, so unset the type
89
+ currentType = undefined;
90
+ continue;
91
+ }
92
+ match = lex(or);
93
+ if (match) {
94
+ continue;
95
+ }
96
+ match = lex(identifier);
97
+ if (match) {
98
+ // Create a new type
99
+ const type = {
100
+ kind: 'type',
101
+ name: { content: match[0], offset: match.index },
102
+ };
103
+ // Add it to the current union
104
+ currentUnion().types.push(type);
105
+ currentType = type;
106
+ continue;
107
+ }
108
+ match = lex(whitespace);
109
+ if (match) {
110
+ continue;
111
+ }
112
+ break;
113
+ }
114
+ return rootUnion;
115
+ }
116
+ export function typeToFeatherString(type) {
117
+ // Functions, Structs, and Enums are the only types that can have names
118
+ if (type.isGeneric && type.name) {
119
+ return type.name;
120
+ }
121
+ if (type.signifier?.enumMember) {
122
+ const parent = type.signifier.parent;
123
+ return `Enum.${parent.name}.${type.name}`;
124
+ }
125
+ if (type.signifier?.enum) {
126
+ return `Enum.${type.name}`;
127
+ }
128
+ if (type.name) {
129
+ if (['Real', 'String', 'Boolean'].includes(type.kind)) {
130
+ // Then this is a constant, represented in Feather as `Constant.<Class>`
131
+ return `Constant.${type.name}`;
132
+ }
133
+ return `${type.kind}.${type.name}`;
134
+ }
135
+ // Arrays etc can contain items of a type) {
136
+ if (type.items?.type.length) {
137
+ return `${type.kind}<${type.items.type
138
+ .map((t) => t.toFeatherString())
139
+ .join('|')}>`;
140
+ }
141
+ return type.kind;
142
+ }
143
+ //# sourceMappingURL=jsdoc.feather.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.feather.js","sourceRoot":"","sources":["../src/jsdoc.feather.ts"],"names":[],"mappings":"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"}