@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.
- package/LICENSE.md +29 -0
- package/README.md +151 -0
- package/assets/GmlSpec.xml +11419 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/jsdoc.d.ts +79 -0
- package/dist/jsdoc.d.ts.map +1 -0
- package/dist/jsdoc.feather.d.ts +23 -0
- package/dist/jsdoc.feather.d.ts.map +1 -0
- package/dist/jsdoc.feather.js +143 -0
- package/dist/jsdoc.feather.js.map +1 -0
- package/dist/jsdoc.js +468 -0
- package/dist/jsdoc.js.map +1 -0
- package/dist/jsdoc.test.d.ts +2 -0
- package/dist/jsdoc.test.d.ts.map +1 -0
- package/dist/jsdoc.test.js +185 -0
- package/dist/jsdoc.test.js.map +1 -0
- package/dist/lexer.d.ts +3 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +14 -0
- package/dist/lexer.js.map +1 -0
- package/dist/lexer.test.d.ts +2 -0
- package/dist/lexer.test.d.ts.map +1 -0
- package/dist/lexer.test.js +78 -0
- package/dist/lexer.test.js.map +1 -0
- package/dist/lib.objects.d.ts +190 -0
- package/dist/lib.objects.d.ts.map +1 -0
- package/dist/lib.objects.js +242 -0
- package/dist/lib.objects.js.map +1 -0
- package/dist/logger.d.ts +13 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +14 -0
- package/dist/logger.js.map +1 -0
- package/dist/modules.d.ts +19 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +320 -0
- package/dist/modules.js.map +1 -0
- package/dist/modules.test.d.ts +2 -0
- package/dist/modules.test.d.ts.map +1 -0
- package/dist/modules.test.js +57 -0
- package/dist/modules.test.js.map +1 -0
- package/dist/modules.types.d.ts +78 -0
- package/dist/modules.types.d.ts.map +1 -0
- package/dist/modules.types.js +2 -0
- package/dist/modules.types.js.map +1 -0
- package/dist/modules.util.d.ts +5 -0
- package/dist/modules.util.d.ts.map +1 -0
- package/dist/modules.util.js +13 -0
- package/dist/modules.util.js.map +1 -0
- package/dist/parser.d.ts +121 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +571 -0
- package/dist/parser.js.map +1 -0
- package/dist/parser.test.d.ts +2 -0
- package/dist/parser.test.d.ts.map +1 -0
- package/dist/parser.test.js +143 -0
- package/dist/parser.test.js.map +1 -0
- package/dist/parser.utility.d.ts +29 -0
- package/dist/parser.utility.d.ts.map +1 -0
- package/dist/parser.utility.js +125 -0
- package/dist/parser.utility.js.map +1 -0
- package/dist/project.asset.d.ts +115 -0
- package/dist/project.asset.d.ts.map +1 -0
- package/dist/project.asset.js +802 -0
- package/dist/project.asset.js.map +1 -0
- package/dist/project.code.d.ts +130 -0
- package/dist/project.code.d.ts.map +1 -0
- package/dist/project.code.js +570 -0
- package/dist/project.code.js.map +1 -0
- package/dist/project.d.ts +533 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.diagnostics.d.ts +32 -0
- package/dist/project.diagnostics.d.ts.map +1 -0
- package/dist/project.diagnostics.js +23 -0
- package/dist/project.diagnostics.js.map +1 -0
- package/dist/project.js +1216 -0
- package/dist/project.js.map +1 -0
- package/dist/project.location.d.ts +133 -0
- package/dist/project.location.d.ts.map +1 -0
- package/dist/project.location.js +219 -0
- package/dist/project.location.js.map +1 -0
- package/dist/project.native.d.ts +26 -0
- package/dist/project.native.d.ts.map +1 -0
- package/dist/project.native.js +321 -0
- package/dist/project.native.js.map +1 -0
- package/dist/project.spec.d.ts +1298 -0
- package/dist/project.spec.d.ts.map +1 -0
- package/dist/project.spec.js +263 -0
- package/dist/project.spec.js.map +1 -0
- package/dist/project.test.d.ts +2 -0
- package/dist/project.test.d.ts.map +1 -0
- package/dist/project.test.js +633 -0
- package/dist/project.test.js.map +1 -0
- package/dist/shaderDefaults.d.ts +3 -0
- package/dist/shaderDefaults.d.ts.map +1 -0
- package/dist/shaderDefaults.js +32 -0
- package/dist/shaderDefaults.js.map +1 -0
- package/dist/signifiers.d.ts +54 -0
- package/dist/signifiers.d.ts.map +1 -0
- package/dist/signifiers.flags.d.ts +38 -0
- package/dist/signifiers.flags.d.ts.map +1 -0
- package/dist/signifiers.flags.js +131 -0
- package/dist/signifiers.flags.js.map +1 -0
- package/dist/signifiers.js +117 -0
- package/dist/signifiers.js.map +1 -0
- package/dist/spine.d.ts +28 -0
- package/dist/spine.d.ts.map +1 -0
- package/dist/spine.js +64 -0
- package/dist/spine.js.map +1 -0
- package/dist/spine.test.d.ts +2 -0
- package/dist/spine.test.d.ts.map +1 -0
- package/dist/spine.test.js +420 -0
- package/dist/spine.test.js.map +1 -0
- package/dist/spine.types.d.ts +89 -0
- package/dist/spine.types.d.ts.map +1 -0
- package/dist/spine.types.js +2 -0
- package/dist/spine.types.js.map +1 -0
- package/dist/test.lib.d.ts +3 -0
- package/dist/test.lib.d.ts.map +1 -0
- package/dist/test.lib.js +16 -0
- package/dist/test.lib.js.map +1 -0
- package/dist/tokens.categories.d.ts +22 -0
- package/dist/tokens.categories.d.ts.map +1 -0
- package/dist/tokens.categories.js +78 -0
- package/dist/tokens.categories.js.map +1 -0
- package/dist/tokens.code.d.ts +2 -0
- package/dist/tokens.code.d.ts.map +1 -0
- package/dist/tokens.code.js +523 -0
- package/dist/tokens.code.js.map +1 -0
- package/dist/tokens.d.ts +130 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +13 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tokens.lib.d.ts +15 -0
- package/dist/tokens.lib.d.ts.map +1 -0
- package/dist/tokens.lib.js +12 -0
- package/dist/tokens.lib.js.map +1 -0
- package/dist/tokens.shared.d.ts +4 -0
- package/dist/tokens.shared.d.ts.map +1 -0
- package/dist/tokens.shared.js +35 -0
- package/dist/tokens.shared.js.map +1 -0
- package/dist/tokens.strings.d.ts +5 -0
- package/dist/tokens.strings.d.ts.map +1 -0
- package/dist/tokens.strings.js +111 -0
- package/dist/tokens.strings.js.map +1 -0
- package/dist/types.checks.d.ts +50 -0
- package/dist/types.checks.d.ts.map +1 -0
- package/dist/types.checks.js +246 -0
- package/dist/types.checks.js.map +1 -0
- package/dist/types.d.ts +152 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.feather.d.ts +21 -0
- package/dist/types.feather.d.ts.map +1 -0
- package/dist/types.feather.js +156 -0
- package/dist/types.feather.js.map +1 -0
- package/dist/types.hover.d.ts +4 -0
- package/dist/types.hover.d.ts.map +1 -0
- package/dist/types.hover.js +99 -0
- package/dist/types.hover.js.map +1 -0
- package/dist/types.js +457 -0
- package/dist/types.js.map +1 -0
- package/dist/types.primitives.d.ts +10 -0
- package/dist/types.primitives.d.ts.map +1 -0
- package/dist/types.primitives.js +88 -0
- package/dist/types.primitives.js.map +1 -0
- package/dist/types.sprites.d.ts +8 -0
- package/dist/types.sprites.d.ts.map +1 -0
- package/dist/types.sprites.js +417 -0
- package/dist/types.sprites.js.map +1 -0
- package/dist/types.test.d.ts +2 -0
- package/dist/types.test.d.ts.map +1 -0
- package/dist/types.test.js +62 -0
- package/dist/types.test.js.map +1 -0
- package/dist/util.d.ts +50 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +168 -0
- package/dist/util.js.map +1 -0
- package/dist/util.test.d.ts +3 -0
- package/dist/util.test.d.ts.map +1 -0
- package/dist/util.test.js +63 -0
- package/dist/util.test.js.map +1 -0
- package/dist/visitor.assign.d.ts +24 -0
- package/dist/visitor.assign.d.ts.map +1 -0
- package/dist/visitor.assign.js +112 -0
- package/dist/visitor.assign.js.map +1 -0
- package/dist/visitor.d.ts +89 -0
- package/dist/visitor.d.ts.map +1 -0
- package/dist/visitor.functionExpression.d.ts +7 -0
- package/dist/visitor.functionExpression.d.ts.map +1 -0
- package/dist/visitor.functionExpression.js +216 -0
- package/dist/visitor.functionExpression.js.map +1 -0
- package/dist/visitor.globals.d.ts +59 -0
- package/dist/visitor.globals.d.ts.map +1 -0
- package/dist/visitor.globals.js +271 -0
- package/dist/visitor.globals.js.map +1 -0
- package/dist/visitor.identifierAccessor.d.ts +6 -0
- package/dist/visitor.identifierAccessor.d.ts.map +1 -0
- package/dist/visitor.identifierAccessor.js +381 -0
- package/dist/visitor.identifierAccessor.js.map +1 -0
- package/dist/visitor.js +605 -0
- package/dist/visitor.js.map +1 -0
- package/dist/visitor.processor.d.ts +66 -0
- package/dist/visitor.processor.d.ts.map +1 -0
- package/dist/visitor.processor.js +147 -0
- package/dist/visitor.processor.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { pathy } from '@bscotch/pathy';
|
|
2
|
+
import { undent } from '@bscotch/utility';
|
|
3
|
+
import { expect } from 'chai';
|
|
4
|
+
import dotenv from 'dotenv';
|
|
5
|
+
import fs from 'fs/promises';
|
|
6
|
+
import { logger } from './logger.js';
|
|
7
|
+
import { GmlParser } from './parser.js';
|
|
8
|
+
import { Type } from './types.js';
|
|
9
|
+
import { ok } from './util.js';
|
|
10
|
+
dotenv.config();
|
|
11
|
+
function showErrors(parser, filepath) {
|
|
12
|
+
const errors = Array.isArray(parser) ? parser : parser.errors;
|
|
13
|
+
if (!errors.length)
|
|
14
|
+
return;
|
|
15
|
+
logger.error(errors.map((e) => ({
|
|
16
|
+
loc: `${filepath || ''}:${e.token.startLine}:${e.token.startColumn}`,
|
|
17
|
+
msg: e.message,
|
|
18
|
+
token: e.token.image,
|
|
19
|
+
resynced: e.resyncedTokens.map((t) => ({
|
|
20
|
+
image: t.image,
|
|
21
|
+
startLine: t.startLine,
|
|
22
|
+
startColumn: t.startColumn,
|
|
23
|
+
})),
|
|
24
|
+
})));
|
|
25
|
+
}
|
|
26
|
+
describe('Parser', function () {
|
|
27
|
+
it('can get types from typestrings', function () {
|
|
28
|
+
expect(Type.fromFeatherString('Array', new Map(), false)[0].kind).to.equal('Array');
|
|
29
|
+
const stringArray = Type.fromFeatherString('Array<string>', new Map(), false)[0];
|
|
30
|
+
expect(stringArray.kind).to.equal('Array');
|
|
31
|
+
expect(stringArray.items.kind).to.equal('String');
|
|
32
|
+
const dsMap = Type.fromFeatherString('Id.DsMap[String,Real]', new Map(), false)[0];
|
|
33
|
+
expect(dsMap.kind).to.equal('Id.DsMap');
|
|
34
|
+
const dsMapItems = dsMap.items.type;
|
|
35
|
+
expect(dsMapItems.length).to.equal(2);
|
|
36
|
+
expect(dsMapItems[0].kind).to.equal('String');
|
|
37
|
+
expect(dsMapItems[1].kind).to.equal('Real');
|
|
38
|
+
});
|
|
39
|
+
it('can parse cross-referencing types', function () {
|
|
40
|
+
const knownTypes = new Map();
|
|
41
|
+
const arrayOfStructs = Type.fromFeatherString('Array<Struct.Hello>', knownTypes, true)[0];
|
|
42
|
+
knownTypes.set('Struct.Hello', arrayOfStructs.items.type[0]);
|
|
43
|
+
const structType = Type.fromFeatherString('Struct.Hello', knownTypes, false)[0];
|
|
44
|
+
ok(knownTypes.get('Struct.Hello') === structType);
|
|
45
|
+
expect(arrayOfStructs.kind).to.equal('Array');
|
|
46
|
+
expect(arrayOfStructs.items.kind).to.equal('Struct');
|
|
47
|
+
ok(arrayOfStructs.items.type[0] === structType);
|
|
48
|
+
expect(arrayOfStructs.items.type[0].name).to.equal('Hello');
|
|
49
|
+
});
|
|
50
|
+
it('can parse complex typestrings', function () {
|
|
51
|
+
const complexType = Type.fromFeatherString('Array<string OR Array<Real>>|Struct.Hello OR Id.DsMap[String,Real]', new Map(), true);
|
|
52
|
+
const [arrayType, structType, dsMapType] = complexType;
|
|
53
|
+
expect(complexType.length).to.equal(3);
|
|
54
|
+
expect(arrayType.kind).to.equal('Array');
|
|
55
|
+
const arrayItems = arrayType.items.type;
|
|
56
|
+
expect(arrayItems.length).to.equal(2);
|
|
57
|
+
expect(arrayItems[0].kind).to.equal('String');
|
|
58
|
+
expect(arrayItems[1].kind).to.equal('Array');
|
|
59
|
+
expect(arrayItems[1].items.kind).to.equal('Real');
|
|
60
|
+
expect(structType.kind).to.equal('Struct');
|
|
61
|
+
expect(structType.name).to.equal('Hello');
|
|
62
|
+
expect(dsMapType.kind).to.equal('Id.DsMap');
|
|
63
|
+
const dsMapItems = dsMapType.items.type;
|
|
64
|
+
expect(dsMapItems.length).to.equal(2);
|
|
65
|
+
expect(dsMapItems[0].kind).to.equal('String');
|
|
66
|
+
expect(dsMapItems[1].kind).to.equal('Real');
|
|
67
|
+
});
|
|
68
|
+
it('can parse simple expressions', function () {
|
|
69
|
+
const parser = new GmlParser();
|
|
70
|
+
const { cst } = parser.parse('(1 + 2 * 3) + (hello / (world || undefined))');
|
|
71
|
+
expect(parser.errors.length).to.equal(0);
|
|
72
|
+
expect(cst).to.exist;
|
|
73
|
+
});
|
|
74
|
+
it('can get errors for invalid simple expressions', function () {
|
|
75
|
+
const parser = new GmlParser();
|
|
76
|
+
const { cst, errors } = parser.parse('(1 + 2 * 3) + hello / world || undefined +');
|
|
77
|
+
expect(parser.errors.length).to.equal(1);
|
|
78
|
+
expect(errors.length).to.equal(1);
|
|
79
|
+
});
|
|
80
|
+
it('can parse complex expressions', function () {
|
|
81
|
+
const parser = new GmlParser();
|
|
82
|
+
const { cst } = parser.parse('1 + 2 * 3 + hello / world[no+true] || undefined + (1 + 2 * 3 + hello / world || undefined ^^ functionCall(10+3,undefined,,))');
|
|
83
|
+
expect(parser.errors.length).to.equal(0);
|
|
84
|
+
expect(cst).to.exist;
|
|
85
|
+
// logger.log(
|
|
86
|
+
// GmlParser.jsonify(
|
|
87
|
+
// // @ts-expect-error
|
|
88
|
+
// cst!.children.statement[0].children.expressionStatement[0].children
|
|
89
|
+
// .expression[0],
|
|
90
|
+
// ),
|
|
91
|
+
// );
|
|
92
|
+
});
|
|
93
|
+
it('can parse GML style JSDocs', function () {
|
|
94
|
+
const parser = new GmlParser();
|
|
95
|
+
const { cst } = parser.parse(undent `
|
|
96
|
+
/// @description This is a description
|
|
97
|
+
/// @param {string} a
|
|
98
|
+
/// @param {number} b
|
|
99
|
+
/// @returns {string}
|
|
100
|
+
function myFunc(a, b) {}
|
|
101
|
+
`);
|
|
102
|
+
showErrors(parser);
|
|
103
|
+
expect(parser.errors.length).to.equal(0);
|
|
104
|
+
expect(cst).to.exist;
|
|
105
|
+
});
|
|
106
|
+
it('can parse sample files', async function () {
|
|
107
|
+
const parser = new GmlParser();
|
|
108
|
+
const samples = await fs.readdir('./samples');
|
|
109
|
+
for (const sample of samples) {
|
|
110
|
+
// logger.log('Parsing', sample);
|
|
111
|
+
if (!sample.endsWith('.gml')) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const filePath = `./samples/${sample}`;
|
|
115
|
+
const code = await fs.readFile(filePath, 'utf-8');
|
|
116
|
+
const { cst } = parser.parse(code);
|
|
117
|
+
showErrors(parser, filePath);
|
|
118
|
+
expect(cst).to.exist;
|
|
119
|
+
expect(parser.errors).to.have.length(0);
|
|
120
|
+
// logger.log(cst);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
xit('can parse sample project', async function () {
|
|
124
|
+
const projectDir = process.env.GML_PARSER_SAMPLE_PROJECT_DIR;
|
|
125
|
+
expect(projectDir, 'A dotenv file should provide a path to a full sample project, as env var GML_PARSER_SAMPLE_PROJECT_DIR').to.exist;
|
|
126
|
+
const dir = pathy(projectDir);
|
|
127
|
+
const files = await dir.listChildrenRecursively({
|
|
128
|
+
includeExtension: ['.gml'],
|
|
129
|
+
});
|
|
130
|
+
expect(files.length).to.be.greaterThan(0);
|
|
131
|
+
const parser = new GmlParser();
|
|
132
|
+
for (let i = 0; i < files.length; i++) {
|
|
133
|
+
const file = files[i];
|
|
134
|
+
const code = await file.read();
|
|
135
|
+
const { cst } = parser.parse(code);
|
|
136
|
+
showErrors(parser, file.absolute);
|
|
137
|
+
expect(cst).to.exist;
|
|
138
|
+
expect(parser.errors).to.have.length(0);
|
|
139
|
+
// logger.log(cst);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=parser.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../src/parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CstNode, IToken } from 'chevrotain';
|
|
2
|
+
import type { AccessorSuffixesCstChildren, AccessorSuffixesCstNode, AssignmentCstChildren, AssignmentCstNode, AssignmentRightHandSideCstChildren, AssignmentRightHandSideCstNode, FunctionArgumentCstNode, FunctionArgumentsCstNode, IdentifierCstChildren, IdentifierCstNode, MultilineDoubleStringLiteralCstChildren, MultilineSingleStringLiteralCstChildren, StringLiteralCstChildren } from '../gml-cst.js';
|
|
3
|
+
/** Right-hand side from the CST, normalized via `rhsFrom` */
|
|
4
|
+
export type Rhs = AssignmentCstNode[] | AssignmentCstNode | AssignmentRightHandSideCstNode[] | AssignmentRightHandSideCstNode | AssignmentRightHandSideCstChildren | AssignmentCstChildren | undefined;
|
|
5
|
+
export declare function rhsFrom(item: Rhs): AssignmentRightHandSideCstChildren | undefined;
|
|
6
|
+
export declare function functionFromRhs(rhs: Rhs): import("../gml-cst.js").FunctionExpressionCstChildren | undefined;
|
|
7
|
+
export declare function structLiteralFromRhs(rhs: Rhs): import("../gml-cst.js").StructLiteralCstChildren | undefined;
|
|
8
|
+
export declare function arrayLiteralFromRhs(rhs: Rhs): import("../gml-cst.js").ArrayLiteralCstChildren | undefined;
|
|
9
|
+
export type IdentifierSource = IdentifierCstChildren | IdentifierCstNode | IdentifierCstNode[] | {
|
|
10
|
+
identifier: IdentifierCstNode[];
|
|
11
|
+
} | {
|
|
12
|
+
children: {
|
|
13
|
+
identifier: IdentifierCstNode[];
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
type AccessorSuffixName = keyof AccessorSuffixesCstChildren;
|
|
17
|
+
export type SortedAccessorSuffix<T extends AccessorSuffixName = AccessorSuffixName> = Required<AccessorSuffixesCstChildren>[T][0];
|
|
18
|
+
export declare function isEmpty(obj: {}): boolean;
|
|
19
|
+
export declare function sortedFunctionCallParts(node: FunctionArgumentsCstNode): (IToken | FunctionArgumentCstNode)[];
|
|
20
|
+
export declare function stringLiteralAsString(children: StringLiteralCstChildren | MultilineSingleStringLiteralCstChildren | MultilineDoubleStringLiteralCstChildren): string;
|
|
21
|
+
export declare function sortChildren(records: Record<string, (IToken | CstNode)[]>): (IToken | CstNode)[];
|
|
22
|
+
export declare function sortedAccessorSuffixes(suffixNodes: AccessorSuffixesCstNode[] | undefined): SortedAccessorSuffix[];
|
|
23
|
+
export declare function identifierFrom(nodes: IdentifierSource): {
|
|
24
|
+
token: IToken;
|
|
25
|
+
type: keyof IdentifierCstChildren;
|
|
26
|
+
name: string;
|
|
27
|
+
} | undefined;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=parser.utility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.utility.d.ts","sourceRoot":"","sources":["../src/parser.utility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,kCAAkC,EAClC,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,uCAAuC,EACvC,uCAAuC,EACvC,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAGvB,6DAA6D;AAC7D,MAAM,MAAM,GAAG,GACX,iBAAiB,EAAE,GACnB,iBAAiB,GACjB,8BAA8B,EAAE,GAChC,8BAA8B,GAC9B,kCAAkC,GAClC,qBAAqB,GACrB,SAAS,CAAC;AAEd,wBAAgB,OAAO,CACrB,IAAI,EAAE,GAAG,GACR,kCAAkC,GAAG,SAAS,CAqBhD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,qEAEvC;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,gEAE5C;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,+DAG3C;AAED,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,iBAAiB,GACjB,iBAAiB,EAAE,GACnB;IAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA;CAAE,GACnC;IAAE,QAAQ,EAAE;QAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAEtD,KAAK,kBAAkB,GAAG,MAAM,2BAA2B,CAAC;AAC5D,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAC/C,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD,wBAAgB,OAAO,CAAC,GAAG,EAAE,EAAE,WAE9B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,CAAC,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAWtC;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EACJ,wBAAwB,GACxB,uCAAuC,GACvC,uCAAuC,GAC1C,MAAM,CAgBR;AAMD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,GAC5C,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAOtB;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,uBAAuB,EAAE,GAAG,SAAS,GACjD,oBAAoB,EAAE,CAgBxB;AAWD,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAClD;IACE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,qBAAqB,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,GACD,SAAS,CAmBZ"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { keysOf } from '@bscotch/utility';
|
|
2
|
+
import { isArray, ok } from './util.js';
|
|
3
|
+
export function rhsFrom(item) {
|
|
4
|
+
if (item === undefined) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
if (isArray(item)) {
|
|
8
|
+
return rhsFrom(item[0]?.children);
|
|
9
|
+
}
|
|
10
|
+
if ('name' in item) {
|
|
11
|
+
if (item.name === 'assignmentRightHandSide') {
|
|
12
|
+
return item.children;
|
|
13
|
+
}
|
|
14
|
+
else if (item.name == 'assignment') {
|
|
15
|
+
return rhsFrom(item.children);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
// Unexpected item type
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if ('assignmentRightHandSide' in item) {
|
|
23
|
+
return item.assignmentRightHandSide[0].children;
|
|
24
|
+
}
|
|
25
|
+
return item;
|
|
26
|
+
}
|
|
27
|
+
export function functionFromRhs(rhs) {
|
|
28
|
+
return rhsFrom(rhs)?.functionExpression?.[0].children;
|
|
29
|
+
}
|
|
30
|
+
export function structLiteralFromRhs(rhs) {
|
|
31
|
+
return rhsFrom(rhs)?.structLiteral?.[0].children;
|
|
32
|
+
}
|
|
33
|
+
export function arrayLiteralFromRhs(rhs) {
|
|
34
|
+
return rhsFrom(rhs)?.expression?.[0].children.primaryExpression?.[0].children
|
|
35
|
+
.arrayLiteral?.[0]?.children;
|
|
36
|
+
}
|
|
37
|
+
export function isEmpty(obj) {
|
|
38
|
+
return Object.keys(obj).length === 0;
|
|
39
|
+
}
|
|
40
|
+
export function sortedFunctionCallParts(node) {
|
|
41
|
+
return [
|
|
42
|
+
node.children.StartParen[0],
|
|
43
|
+
...(node.children.functionArgument || []),
|
|
44
|
+
...(node.children.Comma || []),
|
|
45
|
+
node.children.EndParen[0],
|
|
46
|
+
].sort((a, b) => {
|
|
47
|
+
const aLocation = ('location' in a ? a.location : a);
|
|
48
|
+
const bLocation = ('location' in b ? b.location : b);
|
|
49
|
+
return aLocation.startOffset - bLocation.startOffset;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export function stringLiteralAsString(children) {
|
|
53
|
+
const start = 'StringStart' in children
|
|
54
|
+
? children.StringStart[0].image
|
|
55
|
+
: 'MultilineSingleStringStart' in children
|
|
56
|
+
? children.MultilineSingleStringStart[0].image
|
|
57
|
+
: children.MultilineDoubleStringStart[0].image;
|
|
58
|
+
const end = 'StringEnd' in children
|
|
59
|
+
? children.StringEnd[0].image
|
|
60
|
+
: 'MultilineSingleStringEnd' in children
|
|
61
|
+
? children.MultilineSingleStringEnd[0].image
|
|
62
|
+
: children.MultilineDoubleStringEnd[0].image;
|
|
63
|
+
return `${start}${(children.Substring || [])
|
|
64
|
+
.map((s) => s.image)
|
|
65
|
+
.join('')}${end}`;
|
|
66
|
+
}
|
|
67
|
+
function getStartOffset(node) {
|
|
68
|
+
return 'startOffset' in node ? node.startOffset : node.location.startOffset;
|
|
69
|
+
}
|
|
70
|
+
export function sortChildren(records) {
|
|
71
|
+
const sorted = [];
|
|
72
|
+
for (const key of keysOf(records)) {
|
|
73
|
+
sorted.push(...records[key]);
|
|
74
|
+
}
|
|
75
|
+
sorted.sort((a, b) => getStartOffset(a) - getStartOffset(b));
|
|
76
|
+
return sorted;
|
|
77
|
+
}
|
|
78
|
+
export function sortedAccessorSuffixes(suffixNodes) {
|
|
79
|
+
// Convert into a flat array of suffixes, sorted by their position in the source code.
|
|
80
|
+
const sorted = [];
|
|
81
|
+
if (!suffixNodes) {
|
|
82
|
+
return sorted;
|
|
83
|
+
}
|
|
84
|
+
for (const node of suffixNodes) {
|
|
85
|
+
const { children } = node;
|
|
86
|
+
const suffixKinds = keysOf(children);
|
|
87
|
+
for (const kind of suffixKinds) {
|
|
88
|
+
ok(children[kind].length === 1);
|
|
89
|
+
sorted.push(children[kind][0]);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
sorted.sort((a, b) => a.location.startOffset - b.location.startOffset);
|
|
93
|
+
return sorted;
|
|
94
|
+
}
|
|
95
|
+
const identifierCstNames = [
|
|
96
|
+
'All',
|
|
97
|
+
'Global',
|
|
98
|
+
'Identifier',
|
|
99
|
+
'Noone',
|
|
100
|
+
'Other',
|
|
101
|
+
'Self',
|
|
102
|
+
];
|
|
103
|
+
export function identifierFrom(nodes) {
|
|
104
|
+
let node;
|
|
105
|
+
if (Array.isArray(nodes)) {
|
|
106
|
+
node = nodes[0];
|
|
107
|
+
}
|
|
108
|
+
else if ('children' in nodes && 'identifier' in nodes.children) {
|
|
109
|
+
node = nodes.children.identifier[0];
|
|
110
|
+
}
|
|
111
|
+
else if ('identifier' in nodes) {
|
|
112
|
+
node = nodes.identifier[0];
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
node = nodes;
|
|
116
|
+
}
|
|
117
|
+
const children = 'children' in node ? node.children : node;
|
|
118
|
+
const type = identifierCstNames.find((name) => children[name]);
|
|
119
|
+
if (!type) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const token = children[type][0];
|
|
123
|
+
return { token, type, name: token.image };
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=parser.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.utility.js","sourceRoot":"","sources":["../src/parser.utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Pathy } from '@bscotch/pathy';
|
|
2
|
+
import { YyDataStrict, YyResourceType, YySchemas, YypResource } from '@bscotch/yy';
|
|
3
|
+
import type { ObjectEvent, ObjectEventName } from './lib.objects.js';
|
|
4
|
+
import { Code } from './project.code.js';
|
|
5
|
+
import { Project } from './project.js';
|
|
6
|
+
import { Signifier } from './signifiers.js';
|
|
7
|
+
import { StructType, Type } from './types.js';
|
|
8
|
+
export declare function isAssetOfKind<T extends YyResourceType>(asset: any, kind: T): asset is Asset<T>;
|
|
9
|
+
export declare function assertIsAssetOfKind<T extends YyResourceType>(asset: any, kind: T): asserts asset is Asset<T>;
|
|
10
|
+
export declare class Asset<T extends YyResourceType = YyResourceType> {
|
|
11
|
+
readonly project: Project;
|
|
12
|
+
readonly resource: YypResource;
|
|
13
|
+
readonly $tag = "Asset";
|
|
14
|
+
readonly assetKind: T;
|
|
15
|
+
readonly gmlFiles: Map<string, Code>;
|
|
16
|
+
yy: YyDataStrict<T>;
|
|
17
|
+
readonly yyPath: Pathy<YySchemas[T]>;
|
|
18
|
+
readonly signifier: Signifier;
|
|
19
|
+
/** For objects, their instance type. */
|
|
20
|
+
instanceType: Type<'Id.Instance'> | undefined;
|
|
21
|
+
assetType: Type<Asset['assetTypeKind']>;
|
|
22
|
+
variables: StructType | undefined;
|
|
23
|
+
nativeVariables: StructType | undefined;
|
|
24
|
+
/** For objects, their parent */
|
|
25
|
+
protected _parent: Asset<'objects'> | undefined;
|
|
26
|
+
protected initalized: {
|
|
27
|
+
globals: boolean;
|
|
28
|
+
locals: boolean;
|
|
29
|
+
};
|
|
30
|
+
protected constructor(project: Project, resource: YypResource, yyPath: Pathy);
|
|
31
|
+
get typeName(): string;
|
|
32
|
+
get instanceTypeName(): string;
|
|
33
|
+
saveYy(): Promise<void>;
|
|
34
|
+
get isScript(): boolean;
|
|
35
|
+
get isObject(): boolean;
|
|
36
|
+
get isSound(): boolean;
|
|
37
|
+
get isRoom(): boolean;
|
|
38
|
+
get isSprite(): boolean;
|
|
39
|
+
get isSpineSprite(): boolean;
|
|
40
|
+
get soundFile(): Pathy<Buffer>;
|
|
41
|
+
get sprite(): Asset<'sprites'> | undefined;
|
|
42
|
+
set sprite(sprite: Asset<'sprites'> | undefined);
|
|
43
|
+
get children(): Asset<'objects'>[];
|
|
44
|
+
get parent(): Asset<'objects'> | undefined;
|
|
45
|
+
set parent(parent: Asset<'objects'> | undefined);
|
|
46
|
+
/**
|
|
47
|
+
* Get the entire parent heirarchy, with immediate first
|
|
48
|
+
* and most-distant last
|
|
49
|
+
*/
|
|
50
|
+
get parents(): Asset<'objects'>[];
|
|
51
|
+
/**
|
|
52
|
+
* Get the first GML file belonging to this resource.
|
|
53
|
+
* For scripts, this is the *only* GML file.*/
|
|
54
|
+
get gmlFile(): Code;
|
|
55
|
+
get gmlFilesArray(): Code[];
|
|
56
|
+
getEventByName(name: ObjectEventName): Code | undefined;
|
|
57
|
+
get shaderPaths(): T extends 'shaders' ? {
|
|
58
|
+
[K in 'vertex' | 'fragment']: Pathy<string>;
|
|
59
|
+
} : undefined;
|
|
60
|
+
get roomInstances(): {
|
|
61
|
+
instanceId: string;
|
|
62
|
+
object: Asset<'objects'>;
|
|
63
|
+
}[];
|
|
64
|
+
get frameIds(): string[];
|
|
65
|
+
get framePaths(): Pathy<Buffer>[];
|
|
66
|
+
get spinePaths(): {
|
|
67
|
+
json: Pathy<unknown>;
|
|
68
|
+
atlas: Pathy<unknown>;
|
|
69
|
+
} | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* During an Object asset rename, we need to ensure that all references to the
|
|
72
|
+
* old name are updated to the new name. This includes the object's name in rooms.
|
|
73
|
+
*/
|
|
74
|
+
renameRoomInstanceObjects(oldObjectName: string, newObjectName: string): Promise<void>;
|
|
75
|
+
removeRoomInstance(instanceId: string): Promise<void>;
|
|
76
|
+
reorganizeRoomInstances(instanceIds: string[]): Promise<void>;
|
|
77
|
+
addRoomInstance(obj: Asset<'objects'>, x?: number, y?: number): Promise<void>;
|
|
78
|
+
get folder(): string;
|
|
79
|
+
/**
|
|
80
|
+
* Check if this asset is in the given asset group ("folder").
|
|
81
|
+
* @param path E.g. `my/folder/of/stuff`
|
|
82
|
+
*/
|
|
83
|
+
isInFolder(path: string): boolean;
|
|
84
|
+
/** Move to a different, *existing* folder. */
|
|
85
|
+
moveToFolder(path: string): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Re-order the existing frames of a sprite.
|
|
88
|
+
* Any frames not included in the new order will be deleted.
|
|
89
|
+
*/
|
|
90
|
+
reorganizeFrames(newFrameIdOrder: string[]): Promise<void>;
|
|
91
|
+
deleteFrames(frameIds: string[]): Promise<void>;
|
|
92
|
+
addFrames(sourceImages: Pathy[]): Promise<void>;
|
|
93
|
+
createEvent(eventInfo: ObjectEvent): Promise<Code | undefined>;
|
|
94
|
+
readYy(): Promise<YyDataStrict<T>>;
|
|
95
|
+
get dir(): Pathy<unknown>;
|
|
96
|
+
get name(): string;
|
|
97
|
+
/**
|
|
98
|
+
* Reprocess an existing file after it has been modified.
|
|
99
|
+
*/
|
|
100
|
+
reloadFile(path: Pathy, virtualContent?: string): Promise<void>;
|
|
101
|
+
getGmlFile(path: Pathy): Code | undefined;
|
|
102
|
+
protected updateParent(): void;
|
|
103
|
+
updateGlobals(initial?: boolean): void;
|
|
104
|
+
updateAllSymbols(initial?: boolean): void;
|
|
105
|
+
updateDiagnostics(): void;
|
|
106
|
+
protected addGmlFile(path: Pathy<string>): Code;
|
|
107
|
+
reload(): Promise<void>;
|
|
108
|
+
onRemove(): Promise<void>;
|
|
109
|
+
protected addObjectFile(children: Pathy<string>[]): void;
|
|
110
|
+
protected addScriptFile(children: Pathy<string>[]): void;
|
|
111
|
+
protected initiallyReadAndParseGml(): Promise<any[]>;
|
|
112
|
+
get assetTypeKind(): "Any" | "Asset.GMFont" | "Asset.GMObject" | "Asset.GMPath" | "Asset.GMRoom" | "Asset.GMScript" | "Asset.GMShader" | "Asset.GMSound" | "Asset.GMSprite" | "Asset.GMTimeline";
|
|
113
|
+
static from<T extends YyResourceType>(project: Project, resource: YypResource): Promise<Asset<T> | undefined>;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=project.asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.asset.d.ts","sourceRoot":"","sources":["../src/project.asset.ts"],"names":[],"mappings":"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"}
|