@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,242 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { logger } from './logger.js';
|
|
3
|
+
const objectAlarmEvents = [];
|
|
4
|
+
for (let i = 0; i < 10; i++) {
|
|
5
|
+
objectAlarmEvents.push({
|
|
6
|
+
label: `Alarm ${i}`,
|
|
7
|
+
name: `Alarm_${i}`,
|
|
8
|
+
eventNum: i,
|
|
9
|
+
eventType: 2,
|
|
10
|
+
group: 'alarm',
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Mapping of GameMaker filenames to their corresponding
|
|
15
|
+
* human-friendly event names.
|
|
16
|
+
*/
|
|
17
|
+
export const objectEvents = [
|
|
18
|
+
{
|
|
19
|
+
label: 'Create',
|
|
20
|
+
name: 'Create_0',
|
|
21
|
+
eventNum: 0,
|
|
22
|
+
eventType: 0,
|
|
23
|
+
group: 'main',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: 'Destroy',
|
|
27
|
+
name: 'Destroy_0',
|
|
28
|
+
eventNum: 0,
|
|
29
|
+
eventType: 1,
|
|
30
|
+
group: 'cleanup',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
label: 'CleanUp',
|
|
34
|
+
name: 'CleanUp_0',
|
|
35
|
+
eventNum: 0,
|
|
36
|
+
eventType: 12,
|
|
37
|
+
group: 'cleanup',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
label: 'Room Start',
|
|
41
|
+
name: 'Other_4',
|
|
42
|
+
eventNum: 4,
|
|
43
|
+
eventType: 7,
|
|
44
|
+
group: 'cleanup',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: 'Room End',
|
|
48
|
+
name: 'Other_5',
|
|
49
|
+
eventNum: 5,
|
|
50
|
+
eventType: 7,
|
|
51
|
+
group: 'cleanup',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
label: 'Game End',
|
|
55
|
+
name: 'Other_3',
|
|
56
|
+
eventNum: 3,
|
|
57
|
+
eventType: 7,
|
|
58
|
+
group: 'cleanup',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
label: 'Pre-Draw',
|
|
62
|
+
name: 'Draw_76',
|
|
63
|
+
eventNum: 76,
|
|
64
|
+
eventType: 8,
|
|
65
|
+
group: 'draw',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
label: 'Draw Begin',
|
|
69
|
+
name: 'Draw_72',
|
|
70
|
+
eventNum: 72,
|
|
71
|
+
eventType: 8,
|
|
72
|
+
group: 'draw',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
label: 'Draw',
|
|
76
|
+
name: 'Draw_0',
|
|
77
|
+
eventNum: 0,
|
|
78
|
+
eventType: 8,
|
|
79
|
+
group: 'draw',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
label: 'Draw End',
|
|
83
|
+
name: 'Draw_63',
|
|
84
|
+
eventNum: 63,
|
|
85
|
+
eventType: 8,
|
|
86
|
+
group: 'draw',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
label: 'Post-Draw',
|
|
90
|
+
name: 'Draw_77',
|
|
91
|
+
eventNum: 77,
|
|
92
|
+
eventType: 8,
|
|
93
|
+
group: 'draw',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
label: 'Draw GUI Begin',
|
|
97
|
+
name: 'Draw_74',
|
|
98
|
+
eventNum: 74,
|
|
99
|
+
eventType: 8,
|
|
100
|
+
group: 'draw-gui',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
label: 'Draw GUI',
|
|
104
|
+
name: 'Draw_64',
|
|
105
|
+
eventNum: 64,
|
|
106
|
+
eventType: 8,
|
|
107
|
+
group: 'draw-gui',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
label: 'Draw GUI End',
|
|
111
|
+
name: 'Draw_75',
|
|
112
|
+
eventNum: 75,
|
|
113
|
+
eventType: 8,
|
|
114
|
+
group: 'draw-gui',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
label: 'Begin Step',
|
|
118
|
+
name: 'Step_1',
|
|
119
|
+
eventNum: 1,
|
|
120
|
+
eventType: 3,
|
|
121
|
+
group: 'step',
|
|
122
|
+
},
|
|
123
|
+
{ label: 'Step', name: 'Step_0', eventNum: 0, eventType: 3, group: 'step' },
|
|
124
|
+
{
|
|
125
|
+
label: 'End Step',
|
|
126
|
+
name: 'Step_2',
|
|
127
|
+
eventNum: 2,
|
|
128
|
+
eventType: 3,
|
|
129
|
+
group: 'step',
|
|
130
|
+
},
|
|
131
|
+
...[Array(16)].map((_, i) => ({
|
|
132
|
+
label: `User Event ${i}`,
|
|
133
|
+
name: `Other_${i + 10}`,
|
|
134
|
+
eventNum: i + 10,
|
|
135
|
+
eventType: 7,
|
|
136
|
+
group: 'user',
|
|
137
|
+
})),
|
|
138
|
+
{
|
|
139
|
+
label: 'Animation Update',
|
|
140
|
+
name: 'Other_58',
|
|
141
|
+
eventNum: 58,
|
|
142
|
+
eventType: 7,
|
|
143
|
+
group: 'animation',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
label: 'Animation Event',
|
|
147
|
+
name: 'Other_59',
|
|
148
|
+
eventNum: 59,
|
|
149
|
+
eventType: 7,
|
|
150
|
+
group: 'animation',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
label: 'Async - HTTP',
|
|
154
|
+
name: 'Other_62',
|
|
155
|
+
eventNum: 62,
|
|
156
|
+
eventType: 7,
|
|
157
|
+
group: 'async',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
label: 'Async - System',
|
|
161
|
+
name: 'Other_75',
|
|
162
|
+
eventNum: 75,
|
|
163
|
+
eventType: 7,
|
|
164
|
+
group: 'async',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
label: 'Async - Social',
|
|
168
|
+
name: 'Other_70',
|
|
169
|
+
eventNum: 70,
|
|
170
|
+
eventType: 7,
|
|
171
|
+
group: 'async',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
label: 'Async - Save/Load',
|
|
175
|
+
name: 'Other_72',
|
|
176
|
+
eventNum: 72,
|
|
177
|
+
eventType: 7,
|
|
178
|
+
group: 'async',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
label: 'Async - Steam',
|
|
182
|
+
name: 'Other_69',
|
|
183
|
+
eventNum: 69,
|
|
184
|
+
eventType: 7,
|
|
185
|
+
group: 'async',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
label: 'Async - Dialog',
|
|
189
|
+
name: 'Other_63',
|
|
190
|
+
eventNum: 63,
|
|
191
|
+
eventType: 7,
|
|
192
|
+
group: 'async',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
label: 'Broadcast Message',
|
|
196
|
+
name: 'Other_76',
|
|
197
|
+
eventNum: 76,
|
|
198
|
+
eventType: 7,
|
|
199
|
+
group: 'broadcast message',
|
|
200
|
+
},
|
|
201
|
+
...objectAlarmEvents,
|
|
202
|
+
];
|
|
203
|
+
Object.freeze(Object.seal(objectEvents));
|
|
204
|
+
/**
|
|
205
|
+
* Given a GameMaker object event filename, get its human-friendly name. */
|
|
206
|
+
export function getEventFromFilename(filename) {
|
|
207
|
+
const name = path.basename(filename, '.gml');
|
|
208
|
+
const collisionParts = name.match(/^Collision_(?<name>.+)$/);
|
|
209
|
+
if (collisionParts) {
|
|
210
|
+
// These are named per object they collide with
|
|
211
|
+
return {
|
|
212
|
+
eventNum: 0,
|
|
213
|
+
eventType: 4,
|
|
214
|
+
label: `Collision (${collisionParts.groups.name})`,
|
|
215
|
+
name: name,
|
|
216
|
+
group: 'collision',
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const event = objectEvents.find((x) => x.name === name);
|
|
220
|
+
if (!event) {
|
|
221
|
+
logger.warn(`Could not find event for filename: ${filename}`);
|
|
222
|
+
}
|
|
223
|
+
return event;
|
|
224
|
+
}
|
|
225
|
+
export function getEventFromLabel(label) {
|
|
226
|
+
const collisionParts = label.match(/^Collision \((?<name>.+)\)$/);
|
|
227
|
+
if (collisionParts) {
|
|
228
|
+
// These are named per object they collide with
|
|
229
|
+
return {
|
|
230
|
+
eventNum: 0,
|
|
231
|
+
eventType: 4,
|
|
232
|
+
label: `Collision (${collisionParts.groups.name})`,
|
|
233
|
+
name: `Collision_${collisionParts.groups.name}`,
|
|
234
|
+
group: 'collision',
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
return objectEvents.find((x) => x.label === label);
|
|
238
|
+
}
|
|
239
|
+
export function getEventFrom(eventNum, eventType) {
|
|
240
|
+
return objectEvents.find((x) => x.eventNum === eventNum && x.eventType === eventType);
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=lib.objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.objects.js","sourceRoot":"","sources":["../src/lib.objects.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA6BrC,MAAM,iBAAiB,GAA+B,EAAE,CAAC;AACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5B,iBAAiB,CAAC,IAAI,CAAC;QACrB,KAAK,EAAE,SAAS,CAAC,EAAE;QACnB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,SAAS;KACjB;IACD;QACE,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,SAAS;KACjB;IACD;QACE,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,SAAS;KACjB;IACD;QACE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,SAAS;KACjB;IACD;QACE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,SAAS;KACjB;IACD;QACE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,UAAU;KAClB;IACD;QACE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,UAAU;KAClB;IACD;QACE,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,UAAU;KAClB;IACD;QACE,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3E;QACE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd;IACD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,cAAc,CAAC,EAAE;QACxB,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE;QACvB,QAAQ,EAAE,CAAC,GAAG,EAAE;QAChB,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IACH;QACE,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,WAAW;KACnB;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,WAAW;KACnB;IACD;QACE,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,mBAAmB;KAC3B;IACD,GAAG,iBAAiB;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAEzC;2EAC2E;AAC3E,MAAM,UAAU,oBAAoB,CAClC,QAAgB;IAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7D,IAAI,cAAc,EAAE,CAAC;QACnB,+CAA+C;QAC/C,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,cAAc,cAAc,CAAC,MAAO,CAAC,IAAI,GAAG;YACnD,IAAI,EAAE,IAA6B;YACnC,KAAK,EAAE,WAAW;SACoB,CAAC;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAClE,IAAI,cAAc,EAAE,CAAC;QACnB,+CAA+C;QAC/C,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,cAAc,cAAc,CAAC,MAAO,CAAC,IAAI,GAAG;YACnD,IAAI,EAAE,aAAa,cAAc,CAAC,MAAO,CAAC,IAAI,EAA2B;YACzE,KAAK,EAAE,WAAW;SACoB,CAAC;IAC3C,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,SAAiB;IAEjB,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAC5D,CAAC;AACJ,CAAC"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { InspectOptions } from 'util';
|
|
2
|
+
export type Log = (...args: any[]) => void;
|
|
3
|
+
export interface Logger {
|
|
4
|
+
info: Log;
|
|
5
|
+
log: Log;
|
|
6
|
+
debug: Log;
|
|
7
|
+
warn: Log;
|
|
8
|
+
error: Log;
|
|
9
|
+
dir: (obj: any, options?: InspectOptions) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function setLogger(logger: Logger): void;
|
|
12
|
+
export declare const logger: Logger;
|
|
13
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE3C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAC3C,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,GAAG,CAAC;IACV,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,QAEvC;AAED,eAAO,MAAM,MAAM,QAQjB,CAAC"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
let loggerUtilitiy = console;
|
|
2
|
+
export function setLogger(logger) {
|
|
3
|
+
loggerUtilitiy = logger;
|
|
4
|
+
}
|
|
5
|
+
export const logger = new Proxy({}, {
|
|
6
|
+
get: (target, prop) => {
|
|
7
|
+
const log = loggerUtilitiy[prop];
|
|
8
|
+
if (typeof log === 'function') {
|
|
9
|
+
return log.bind(loggerUtilitiy);
|
|
10
|
+
}
|
|
11
|
+
return log;
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAWA,IAAI,cAAc,GAAW,OAAO,CAAC;AAErC,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,cAAc,GAAG,MAAM,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,EAAS,EAAE;IACjD,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,GAAG,GAAI,cAAsB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Dependency, ImportModuleOptions } from './modules.types.js';
|
|
2
|
+
import { Asset } from './project.asset.js';
|
|
3
|
+
import type { Project } from './project.js';
|
|
4
|
+
export type * from './modules.types.js';
|
|
5
|
+
/**
|
|
6
|
+
* @param sourceFolder Full folder path to import from (e.g. `Scripts/MainMenu`)
|
|
7
|
+
*/
|
|
8
|
+
export declare function importAssets(sourceProject: Project, targetProject: Project, options?: ImportModuleOptions): Promise<{
|
|
9
|
+
created: string[];
|
|
10
|
+
updated: string[];
|
|
11
|
+
errors: string[];
|
|
12
|
+
skipped: string[];
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Create a map listing all assets in a project and how they
|
|
16
|
+
* depend on other assets in same.
|
|
17
|
+
*/
|
|
18
|
+
export declare function computeAssetDeps(project: Project): Map<Asset, Dependency[]>;
|
|
19
|
+
//# sourceMappingURL=modules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,KAAK,EAAiB,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,mBAAmB,oBAAoB,CAAC;AAExC;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,OAAO,EACtB,OAAO,GAAE,mBAAwB;aAgHhB,MAAM,EAAE;aACR,MAAM,EAAE;YACT,MAAM,EAAE;aACP,MAAM,EAAE;GAmE1B;AAyFD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAgF3E"}
|
package/dist/modules.js
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { StitchImportError, assertStitchImportClaim } from './modules.util.js';
|
|
2
|
+
import { Asset, isAssetOfKind } from './project.asset.js';
|
|
3
|
+
import { findYyFile, groupPathToPosix, neither, xor } from './util.js';
|
|
4
|
+
/**
|
|
5
|
+
* @param sourceFolder Full folder path to import from (e.g. `Scripts/MainMenu`)
|
|
6
|
+
*/
|
|
7
|
+
export async function importAssets(sourceProject, targetProject, options = {}) {
|
|
8
|
+
const logFile = targetProject.dir.join('stitch-import.log.yaml');
|
|
9
|
+
assertStitchImportClaim(neither(options.sourceFolder, options.sourceAsset) ||
|
|
10
|
+
xor(options.sourceAsset, options.sourceFolder), 'Can specify either sourceFolder or sourceAsset, or neither, but not both.');
|
|
11
|
+
// Identify all assets we want to import
|
|
12
|
+
const intendedImports = new Map();
|
|
13
|
+
if (options.sourceAsset) {
|
|
14
|
+
const asset = sourceProject.getAssetByName(options.sourceAsset, {
|
|
15
|
+
assertExists: true,
|
|
16
|
+
});
|
|
17
|
+
intendedImports.set(asset.name, asset);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
for (const [name, asset] of sourceProject.assets) {
|
|
21
|
+
if (!options.sourceFolder || asset.isInFolder(options.sourceFolder)) {
|
|
22
|
+
intendedImports.set(name, asset);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Remove any assets that are not of the specified types
|
|
27
|
+
if (options.types?.length) {
|
|
28
|
+
for (const [name, asset] of intendedImports) {
|
|
29
|
+
if (!options.types.includes(asset.assetKind)) {
|
|
30
|
+
intendedImports.delete(name);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Identify all dependencies of those assets that would be
|
|
35
|
+
// missing in the target project *after import*
|
|
36
|
+
const sourceDeps = computeAssetDeps(sourceProject);
|
|
37
|
+
const missingDeps = new Set();
|
|
38
|
+
const conflictingDeps = new Set();
|
|
39
|
+
let newMissingAssets = [];
|
|
40
|
+
for (const depList of sourceDeps.values()) {
|
|
41
|
+
newMissingAssets.push(...updateMissingDeps(depList, intendedImports, missingDeps, conflictingDeps, targetProject, sourceProject));
|
|
42
|
+
}
|
|
43
|
+
// We now have our first-layer deep of missing deps. To recursively
|
|
44
|
+
// populate *all* missing deps we need to repeat this process on the
|
|
45
|
+
// missing deps we find until we have no more missing deps. Preventing
|
|
46
|
+
// infinite loops here is essential!
|
|
47
|
+
// To do this, create a new list of "intended imports" representing
|
|
48
|
+
// if we were to import *everything* connected to the originally-desired
|
|
49
|
+
// imports.
|
|
50
|
+
const derivedImports = new Map();
|
|
51
|
+
// Start with the original intended imports
|
|
52
|
+
for (const [name, asset] of intendedImports) {
|
|
53
|
+
derivedImports.set(name, asset);
|
|
54
|
+
}
|
|
55
|
+
while (newMissingAssets.length) {
|
|
56
|
+
for (const asset of newMissingAssets) {
|
|
57
|
+
derivedImports.set(asset.name, asset);
|
|
58
|
+
}
|
|
59
|
+
const newMissingDeps = newMissingAssets
|
|
60
|
+
.map((a) => sourceDeps.get(a))
|
|
61
|
+
.flat();
|
|
62
|
+
// Find the *newly* missing deps from this new list
|
|
63
|
+
newMissingAssets = updateMissingDeps(newMissingDeps, derivedImports, missingDeps, conflictingDeps, targetProject, sourceProject);
|
|
64
|
+
}
|
|
65
|
+
// Conflicting deps should not be allowed at all.
|
|
66
|
+
if (conflictingDeps.size > 0) {
|
|
67
|
+
await logFile.write({
|
|
68
|
+
conflicts: conflictingDeps,
|
|
69
|
+
});
|
|
70
|
+
throw new StitchImportError(`Cannot import because of conflicting dependencies. See the logs for details: "${logFile}"`);
|
|
71
|
+
}
|
|
72
|
+
// By default, missing deps should cause an error
|
|
73
|
+
const { onMissingDependency } = options;
|
|
74
|
+
if (missingDeps.size &&
|
|
75
|
+
(!onMissingDependency || onMissingDependency === 'error')) {
|
|
76
|
+
await logFile.write({
|
|
77
|
+
missing: missingDeps,
|
|
78
|
+
});
|
|
79
|
+
throw new StitchImportError(`Cannot import because of conflicting dependencies. See the logs for details: "${logFile}"`);
|
|
80
|
+
}
|
|
81
|
+
const sourceFolder = groupPathToPosix(options.sourceFolder || '');
|
|
82
|
+
const targetFolder = groupPathToPosix(options.targetFolder || sourceFolder);
|
|
83
|
+
const waits = [];
|
|
84
|
+
const summary = {
|
|
85
|
+
created: [],
|
|
86
|
+
updated: [],
|
|
87
|
+
errors: [],
|
|
88
|
+
skipped: [],
|
|
89
|
+
};
|
|
90
|
+
const newAssets = [];
|
|
91
|
+
for (const [name, asset] of derivedImports) {
|
|
92
|
+
const skip = onMissingDependency !== 'include' && !intendedImports.has(asset.name);
|
|
93
|
+
if (skip) {
|
|
94
|
+
summary.skipped.push(asset.name);
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
// Ensure we have the target folder
|
|
98
|
+
let folder = groupPathToPosix(asset.folder);
|
|
99
|
+
if (sourceFolder && targetFolder) {
|
|
100
|
+
folder =
|
|
101
|
+
folder === sourceFolder
|
|
102
|
+
? targetFolder
|
|
103
|
+
: folder.replace(sourceFolder + '/', targetFolder + '/');
|
|
104
|
+
}
|
|
105
|
+
// Copy over the asset files
|
|
106
|
+
const targetDir = targetProject.dir.join(asset.dir.relativeFrom(sourceProject.dir));
|
|
107
|
+
waits.push(targetDir
|
|
108
|
+
.ensureDir()
|
|
109
|
+
.then(() => targetDir.rm({ recursive: true, maxRetries: 5 }))
|
|
110
|
+
.then(() => asset.dir.copy(targetDir))
|
|
111
|
+
.then(() => targetProject.createFolder(folder, { skipSave: true }))
|
|
112
|
+
.then(async () => {
|
|
113
|
+
let existingAsset = targetProject.getAssetByName(asset.name);
|
|
114
|
+
if (!existingAsset) {
|
|
115
|
+
const yyFile = await findYyFile(targetDir);
|
|
116
|
+
const info = await targetProject.addAssetToYyp(yyFile.absolute, {
|
|
117
|
+
skipSave: true,
|
|
118
|
+
});
|
|
119
|
+
// Create and add the asset
|
|
120
|
+
existingAsset = await Asset.from(targetProject, info);
|
|
121
|
+
if (existingAsset) {
|
|
122
|
+
newAssets.push(existingAsset);
|
|
123
|
+
targetProject.registerAsset(existingAsset);
|
|
124
|
+
summary.created.push(existingAsset.name);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
summary.errors.push(`Failed to create asset for ${asset.name}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
await existingAsset.reload();
|
|
132
|
+
}
|
|
133
|
+
// Ensure the correct folder
|
|
134
|
+
await existingAsset?.moveToFolder(folder);
|
|
135
|
+
return existingAsset;
|
|
136
|
+
})
|
|
137
|
+
.catch((err) => {
|
|
138
|
+
summary.errors.push(`Failed to import asset ${asset.name}: ${err.message}`);
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
await Promise.all(waits);
|
|
142
|
+
await targetProject.saveYyp();
|
|
143
|
+
targetProject.initiallyParseAssetCode(newAssets);
|
|
144
|
+
await logFile.write(summary);
|
|
145
|
+
return summary;
|
|
146
|
+
}
|
|
147
|
+
function updateMissingDeps(depList, intendedImports, missingDeps, conflictingDeps, targetProject, sourceProject) {
|
|
148
|
+
const newMissingDeps = [];
|
|
149
|
+
const addMissingDep = (dep) => {
|
|
150
|
+
if (!missingDeps.has(dep)) {
|
|
151
|
+
newMissingDeps.push(sourceProject.getAssetByName(dep.requirement.name, {
|
|
152
|
+
assertExists: true,
|
|
153
|
+
}));
|
|
154
|
+
missingDeps.add(dep);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
for (const dep of depList) {
|
|
158
|
+
// Wrap this in a function so it can recurse on missing deps
|
|
159
|
+
if (!intendedImports.has(dep.requiredBy.name)) {
|
|
160
|
+
// Then it doesn't matter what is being required, since
|
|
161
|
+
// we're not trying to import this.
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (intendedImports.has(dep.requirement.name)) {
|
|
165
|
+
// Then we're already intending to import this, so it's not missing. BUT. It may create conflicts if it replaces something!
|
|
166
|
+
// Is there a globalvar with the same name?
|
|
167
|
+
const targetVar = targetProject.self.getMember(dep.requirement.name);
|
|
168
|
+
if (targetVar && !targetVar.asset) {
|
|
169
|
+
// Then this is a variable that is being replaced by an asset. This is not allowed.
|
|
170
|
+
conflictingDeps.add(dep);
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
// Is there an asset with the same name but different type?
|
|
174
|
+
const targetAsset = targetProject.getAssetByName(dep.requirement.name);
|
|
175
|
+
if (targetAsset && targetAsset.assetKind !== dep.requirement.kind) {
|
|
176
|
+
conflictingDeps.add(dep);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
// If we replace the target asset, will we lose anything
|
|
180
|
+
// that is required by something else in the target?
|
|
181
|
+
if (targetAsset?.gmlFiles.size) {
|
|
182
|
+
// Then we're replacing an asset that has code, so we need to check if any of the things it defines are required by other *target* assets and *not* included in the import.
|
|
183
|
+
const varsDefinedByTarget = listGlobalvarsDefinedByAsset(targetAsset);
|
|
184
|
+
for (const targetVar of varsDefinedByTarget) {
|
|
185
|
+
// Do any intended imports include this?
|
|
186
|
+
const inSource = sourceProject.self.getMember(targetVar.name);
|
|
187
|
+
const fromSourceAsset = inSource && inSource.def?.file?.asset;
|
|
188
|
+
if (!fromSourceAsset || !intendedImports.has(fromSourceAsset.name)) {
|
|
189
|
+
// Then we're losing a variable that is required by something else in the target project.
|
|
190
|
+
conflictingDeps.add(dep);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// If this is a parent/child/ref relationship, we just
|
|
196
|
+
// need to ensure that the target has an asset of the same
|
|
197
|
+
// type with that name.
|
|
198
|
+
if (['parent', 'child', 'ref'].includes(dep.relationship)) {
|
|
199
|
+
const targetAsset = targetProject.getAssetByName(dep.requirement.name);
|
|
200
|
+
if (!targetAsset) {
|
|
201
|
+
addMissingDep(dep);
|
|
202
|
+
}
|
|
203
|
+
else if (targetAsset.assetKind !== dep.requirement.kind) {
|
|
204
|
+
conflictingDeps.add(dep);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else if (dep.relationship === 'code') {
|
|
208
|
+
// For simplicity, just see if any global entity with the
|
|
209
|
+
// same name exists (could check types in the future).
|
|
210
|
+
const existsInTarget = targetProject.self.getMember(dep.signifier) ||
|
|
211
|
+
targetProject.getAssetByName(dep.signifier);
|
|
212
|
+
if (!existsInTarget) {
|
|
213
|
+
addMissingDep(dep);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return newMissingDeps;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Create a map listing all assets in a project and how they
|
|
221
|
+
* depend on other assets in same.
|
|
222
|
+
*/
|
|
223
|
+
export function computeAssetDeps(project) {
|
|
224
|
+
const dependencies = new Map();
|
|
225
|
+
for (const [, asset] of project.assets) {
|
|
226
|
+
const deps = [];
|
|
227
|
+
dependencies.set(asset, deps);
|
|
228
|
+
// Handle object-specific dependencies (parent objects and sprite assignments)
|
|
229
|
+
if (isAssetOfKind(asset, 'objects')) {
|
|
230
|
+
if (asset.parent) {
|
|
231
|
+
deps.push({
|
|
232
|
+
relationship: 'parent',
|
|
233
|
+
requiredBy: { name: asset.name, kind: 'objects' },
|
|
234
|
+
requirement: { name: asset.parent.name, kind: 'objects' },
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (asset.sprite) {
|
|
238
|
+
deps.push({
|
|
239
|
+
relationship: 'child',
|
|
240
|
+
requiredBy: { name: asset.name, kind: 'objects' },
|
|
241
|
+
requirement: { name: asset.sprite.name, kind: 'sprites' },
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Handle code dependencies (referenced signifiers)
|
|
246
|
+
for (const gmlFile of asset.gmlFiles.values()) {
|
|
247
|
+
for (const ref of gmlFile.refs) {
|
|
248
|
+
// This could be a child of something, so get to the root-most
|
|
249
|
+
// signifier.
|
|
250
|
+
const seenItems = new Set();
|
|
251
|
+
let item = ref.item;
|
|
252
|
+
while (item.parent) {
|
|
253
|
+
if (item.parent.signifier?.name === 'global')
|
|
254
|
+
break;
|
|
255
|
+
item = item.parent.signifier || item;
|
|
256
|
+
// Prevent circularity!
|
|
257
|
+
if (!item.parent.signifier || seenItems.has(item))
|
|
258
|
+
break;
|
|
259
|
+
seenItems.add(item);
|
|
260
|
+
}
|
|
261
|
+
// Skip native, local, and janky signifiers
|
|
262
|
+
if (item.native || item.local || !item.def?.file)
|
|
263
|
+
continue;
|
|
264
|
+
const itemAsset = item.def.file.asset;
|
|
265
|
+
// Skip intra-asset references
|
|
266
|
+
if (itemAsset === asset)
|
|
267
|
+
continue;
|
|
268
|
+
if (item.asset) {
|
|
269
|
+
// Then this is a reference to an asset, not a code signifier
|
|
270
|
+
deps.push({
|
|
271
|
+
relationship: 'ref',
|
|
272
|
+
requiredBy: { name: asset.name, kind: asset.assetKind },
|
|
273
|
+
requirement: {
|
|
274
|
+
name: itemAsset.name,
|
|
275
|
+
kind: itemAsset.assetKind,
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// It's a code signifier
|
|
281
|
+
deps.push({
|
|
282
|
+
relationship: 'code',
|
|
283
|
+
requiredBy: { name: asset.name, kind: asset.assetKind },
|
|
284
|
+
requirement: { name: itemAsset.name, kind: itemAsset.assetKind },
|
|
285
|
+
signifier: item.name,
|
|
286
|
+
def: {
|
|
287
|
+
file: item.def.file.path.relative,
|
|
288
|
+
line: item.def.start.line,
|
|
289
|
+
column: item.def.start.column,
|
|
290
|
+
},
|
|
291
|
+
ref: {
|
|
292
|
+
file: ref.file.path.relative,
|
|
293
|
+
line: ref.start.line,
|
|
294
|
+
column: ref.start.column,
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return dependencies;
|
|
302
|
+
}
|
|
303
|
+
function listGlobalvarsDefinedByAsset(asset) {
|
|
304
|
+
const vars = new Set();
|
|
305
|
+
for (const gmlFile of asset.gmlFiles.values()) {
|
|
306
|
+
for (const ref of gmlFile.refs) {
|
|
307
|
+
const { item } = ref;
|
|
308
|
+
if (item.local ||
|
|
309
|
+
item.native ||
|
|
310
|
+
!item.global ||
|
|
311
|
+
!item.def?.file ||
|
|
312
|
+
item.def.file.asset !== asset) {
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
vars.add(item);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return vars;
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.test.d.ts","sourceRoot":"","sources":["../src/modules.test.ts"],"names":[],"mappings":""}
|