@kubb/plugin-zod 5.0.0-alpha.29 → 5.0.0-alpha.30
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/dist/index.cjs +86 -139
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +13 -3
- package/dist/index.js +88 -119
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/generators/zodGenerator.tsx +29 -42
- package/src/generators/zodGeneratorLegacy.tsx +36 -48
- package/src/plugin.ts +23 -49
- package/src/types.ts +12 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import { createPlugin, defineGenerator, definePresets, definePrinter, defineResolver, getBarrelFiles, getMode, getPreset, runGeneratorOperation, runGeneratorOperations, runGeneratorSchema } from "@kubb/core";
|
|
2
|
+
import { caseParams, createProperty, createSchema, extractRefName, narrowSchema, syncSchemaRef } from "@kubb/ast";
|
|
3
|
+
import { createPlugin, defineGenerator, definePresets, definePrinter, defineResolver, getPreset, mergeGenerators } from "@kubb/core";
|
|
5
4
|
import { Const, File, Type } from "@kubb/react-fabric";
|
|
6
5
|
import { Fragment, jsx, jsxs } from "@kubb/react-fabric/jsx-runtime";
|
|
7
6
|
//#region ../../internals/utils/src/casing.ts
|
|
@@ -757,15 +756,13 @@ const printerZodMini = definePrinter((options) => {
|
|
|
757
756
|
//#region src/generators/zodGenerator.tsx
|
|
758
757
|
const zodGenerator = defineGenerator({
|
|
759
758
|
name: "zod",
|
|
760
|
-
|
|
761
|
-
|
|
759
|
+
schema(node, options) {
|
|
760
|
+
const { adapter, config, resolver, root } = this;
|
|
762
761
|
const { output, coercion, guidType, mini, wrapOutput, inferred, importPath, group, printer } = options;
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
const root = path.resolve(config.root, config.output.path);
|
|
766
|
-
const mode = getMode(path.resolve(root, output.path));
|
|
762
|
+
if (!node.name) return;
|
|
763
|
+
const mode = this.getMode(output);
|
|
767
764
|
const isZodImport = ZOD_NAMESPACE_IMPORTS.has(importPath);
|
|
768
|
-
const imports = adapter.getImports(
|
|
765
|
+
const imports = adapter.getImports(node, (schemaName) => ({
|
|
769
766
|
name: resolver.resolveSchemaName(schemaName),
|
|
770
767
|
path: resolver.resolveFile({
|
|
771
768
|
name: schemaName,
|
|
@@ -777,9 +774,9 @@ const zodGenerator = defineGenerator({
|
|
|
777
774
|
}).path
|
|
778
775
|
}));
|
|
779
776
|
const meta = {
|
|
780
|
-
name: resolver.resolveSchemaName(
|
|
777
|
+
name: resolver.resolveSchemaName(node.name),
|
|
781
778
|
file: resolver.resolveFile({
|
|
782
|
-
name:
|
|
779
|
+
name: node.name,
|
|
783
780
|
extname: ".ts"
|
|
784
781
|
}, {
|
|
785
782
|
root,
|
|
@@ -787,7 +784,7 @@ const zodGenerator = defineGenerator({
|
|
|
787
784
|
group
|
|
788
785
|
})
|
|
789
786
|
};
|
|
790
|
-
const inferTypeName = inferred ? resolver.resolveSchemaTypeName(
|
|
787
|
+
const inferTypeName = inferred ? resolver.resolveSchemaTypeName(node.name) : void 0;
|
|
791
788
|
const schemaPrinter = mini ? printerZodMini({
|
|
792
789
|
guidType,
|
|
793
790
|
wrapOutput,
|
|
@@ -824,28 +821,27 @@ const zodGenerator = defineGenerator({
|
|
|
824
821
|
root: meta.file.path,
|
|
825
822
|
path: imp.path,
|
|
826
823
|
name: imp.name
|
|
827
|
-
}, [
|
|
824
|
+
}, [node.name, imp.path].join("-"))),
|
|
828
825
|
/* @__PURE__ */ jsx(Zod, {
|
|
829
826
|
name: meta.name,
|
|
830
|
-
node
|
|
827
|
+
node,
|
|
831
828
|
printer: schemaPrinter,
|
|
832
829
|
inferTypeName
|
|
833
830
|
})
|
|
834
831
|
]
|
|
835
832
|
});
|
|
836
833
|
},
|
|
837
|
-
|
|
834
|
+
operation(node, options) {
|
|
835
|
+
const { adapter, config, resolver, root } = this;
|
|
838
836
|
const { output, coercion, guidType, mini, wrapOutput, inferred, importPath, group, paramsCasing, printer } = options;
|
|
839
|
-
const
|
|
840
|
-
const root = path.resolve(config.root, config.output.path);
|
|
841
|
-
const mode = getMode(path.resolve(root, output.path));
|
|
837
|
+
const mode = this.getMode(output);
|
|
842
838
|
const isZodImport = ZOD_NAMESPACE_IMPORTS.has(importPath);
|
|
843
|
-
const params = caseParams(
|
|
839
|
+
const params = caseParams(node.parameters, paramsCasing);
|
|
844
840
|
const meta = { file: resolver.resolveFile({
|
|
845
|
-
name:
|
|
841
|
+
name: node.operationId,
|
|
846
842
|
extname: ".ts",
|
|
847
|
-
tag:
|
|
848
|
-
path:
|
|
843
|
+
tag: node.tags[0] ?? "default",
|
|
844
|
+
path: node.path
|
|
849
845
|
}, {
|
|
850
846
|
root,
|
|
851
847
|
output,
|
|
@@ -900,18 +896,18 @@ const zodGenerator = defineGenerator({
|
|
|
900
896
|
schema: param.schema,
|
|
901
897
|
name: resolver.resolveParamName(node, param)
|
|
902
898
|
}));
|
|
903
|
-
const responseSchemas =
|
|
899
|
+
const responseSchemas = node.responses.map((res) => renderSchemaEntry({
|
|
904
900
|
schema: res.schema,
|
|
905
|
-
name: resolver.resolveResponseStatusName(
|
|
901
|
+
name: resolver.resolveResponseStatusName(node, res.statusCode),
|
|
906
902
|
keysToOmit: res.keysToOmit
|
|
907
903
|
}));
|
|
908
|
-
const requestSchema =
|
|
904
|
+
const requestSchema = node.requestBody?.schema ? renderSchemaEntry({
|
|
909
905
|
schema: {
|
|
910
|
-
...
|
|
911
|
-
description:
|
|
906
|
+
...node.requestBody.schema,
|
|
907
|
+
description: node.requestBody.description ?? node.requestBody.schema.description
|
|
912
908
|
},
|
|
913
|
-
name: resolver.resolveDataName(
|
|
914
|
-
keysToOmit:
|
|
909
|
+
name: resolver.resolveDataName(node),
|
|
910
|
+
keysToOmit: node.requestBody.keysToOmit
|
|
915
911
|
}) : null;
|
|
916
912
|
return /* @__PURE__ */ jsxs(File, {
|
|
917
913
|
baseName: meta.file.baseName,
|
|
@@ -937,10 +933,10 @@ const zodGenerator = defineGenerator({
|
|
|
937
933
|
]
|
|
938
934
|
});
|
|
939
935
|
},
|
|
940
|
-
|
|
936
|
+
operations(nodes, options) {
|
|
937
|
+
const { adapter, config, resolver, root } = this;
|
|
941
938
|
const { output, importPath, group, operations, paramsCasing } = options;
|
|
942
939
|
if (!operations) return;
|
|
943
|
-
const root = path.resolve(config.root, config.output.path);
|
|
944
940
|
const isZodImport = ZOD_NAMESPACE_IMPORTS.has(importPath);
|
|
945
941
|
const meta = { file: resolver.resolveFile({
|
|
946
942
|
name: "operations",
|
|
@@ -951,11 +947,10 @@ const zodGenerator = defineGenerator({
|
|
|
951
947
|
group
|
|
952
948
|
}) };
|
|
953
949
|
const transformedOperations = nodes.map((node) => {
|
|
954
|
-
const transformedNode = plugin.transformer ? transform(node, plugin.transformer) : node;
|
|
955
950
|
return {
|
|
956
|
-
node
|
|
957
|
-
data: buildSchemaNames(
|
|
958
|
-
params: caseParams(
|
|
951
|
+
node,
|
|
952
|
+
data: buildSchemaNames(node, {
|
|
953
|
+
params: caseParams(node.parameters, paramsCasing),
|
|
959
954
|
resolver
|
|
960
955
|
})
|
|
961
956
|
};
|
|
@@ -1150,15 +1145,13 @@ function buildLegacySchemaNames(node, params, resolver) {
|
|
|
1150
1145
|
}
|
|
1151
1146
|
const zodGeneratorLegacy = defineGenerator({
|
|
1152
1147
|
name: "zod-legacy",
|
|
1153
|
-
|
|
1154
|
-
|
|
1148
|
+
schema(node, options) {
|
|
1149
|
+
const { adapter, config, resolver, root } = this;
|
|
1155
1150
|
const { output, coercion, guidType, mini, wrapOutput, inferred, importPath, group, printer } = options;
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
const root = path.resolve(config.root, config.output.path);
|
|
1159
|
-
const mode = getMode(path.resolve(root, output.path));
|
|
1151
|
+
if (!node.name) return;
|
|
1152
|
+
const mode = this.getMode(output);
|
|
1160
1153
|
const isZodImport = ZOD_NAMESPACE_IMPORTS.has(importPath);
|
|
1161
|
-
const imports = adapter.getImports(
|
|
1154
|
+
const imports = adapter.getImports(node, (schemaName) => ({
|
|
1162
1155
|
name: resolver.resolveSchemaName(schemaName),
|
|
1163
1156
|
path: resolver.resolveFile({
|
|
1164
1157
|
name: schemaName,
|
|
@@ -1169,11 +1162,11 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1169
1162
|
group
|
|
1170
1163
|
}).path
|
|
1171
1164
|
}));
|
|
1172
|
-
const inferTypeName = inferred ? resolver.resolveSchemaTypeName(
|
|
1165
|
+
const inferTypeName = inferred ? resolver.resolveSchemaTypeName(node.name) : void 0;
|
|
1173
1166
|
const meta = {
|
|
1174
|
-
name: resolver.resolveSchemaName(
|
|
1167
|
+
name: resolver.resolveSchemaName(node.name),
|
|
1175
1168
|
file: resolver.resolveFile({
|
|
1176
|
-
name:
|
|
1169
|
+
name: node.name,
|
|
1177
1170
|
extname: ".ts"
|
|
1178
1171
|
}, {
|
|
1179
1172
|
root,
|
|
@@ -1217,28 +1210,27 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1217
1210
|
root: meta.file.path,
|
|
1218
1211
|
path: imp.path,
|
|
1219
1212
|
name: imp.name
|
|
1220
|
-
}, [
|
|
1213
|
+
}, [node.name, imp.path].join("-"))),
|
|
1221
1214
|
/* @__PURE__ */ jsx(Zod, {
|
|
1222
1215
|
name: meta.name,
|
|
1223
|
-
node
|
|
1216
|
+
node,
|
|
1224
1217
|
printer: schemaPrinter,
|
|
1225
1218
|
inferTypeName
|
|
1226
1219
|
})
|
|
1227
1220
|
]
|
|
1228
1221
|
});
|
|
1229
1222
|
},
|
|
1230
|
-
|
|
1223
|
+
operation(node, options) {
|
|
1224
|
+
const { adapter, config, resolver, root } = this;
|
|
1231
1225
|
const { output, coercion, guidType, mini, wrapOutput, inferred, importPath, group, paramsCasing, printer } = options;
|
|
1232
|
-
const
|
|
1233
|
-
const root = path.resolve(config.root, config.output.path);
|
|
1234
|
-
const mode = getMode(path.resolve(root, output.path));
|
|
1226
|
+
const mode = this.getMode(output);
|
|
1235
1227
|
const isZodImport = ZOD_NAMESPACE_IMPORTS.has(importPath);
|
|
1236
|
-
const params = caseParams(
|
|
1228
|
+
const params = caseParams(node.parameters, paramsCasing);
|
|
1237
1229
|
const meta = { file: resolver.resolveFile({
|
|
1238
|
-
name:
|
|
1230
|
+
name: node.operationId,
|
|
1239
1231
|
extname: ".ts",
|
|
1240
|
-
tag:
|
|
1241
|
-
path:
|
|
1232
|
+
tag: node.tags[0] ?? "default",
|
|
1233
|
+
path: node.path
|
|
1242
1234
|
}, {
|
|
1243
1235
|
root,
|
|
1244
1236
|
output,
|
|
@@ -1292,8 +1284,8 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1292
1284
|
const pathParams = params.filter((p) => p.in === "path");
|
|
1293
1285
|
const queryParams = params.filter((p) => p.in === "query");
|
|
1294
1286
|
const headerParams = params.filter((p) => p.in === "header");
|
|
1295
|
-
const responseSchemas =
|
|
1296
|
-
const responseName = resolver.resolveResponseStatusName(
|
|
1287
|
+
const responseSchemas = node.responses.map((res) => {
|
|
1288
|
+
const responseName = resolver.resolveResponseStatusName(node, res.statusCode);
|
|
1297
1289
|
return renderSchemaEntry({
|
|
1298
1290
|
schema: {
|
|
1299
1291
|
...res.schema,
|
|
@@ -1303,13 +1295,13 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1303
1295
|
keysToOmit: res.keysToOmit
|
|
1304
1296
|
});
|
|
1305
1297
|
});
|
|
1306
|
-
const requestSchema =
|
|
1298
|
+
const requestSchema = node.requestBody?.schema ? renderSchemaEntry({
|
|
1307
1299
|
schema: {
|
|
1308
|
-
...
|
|
1309
|
-
description:
|
|
1300
|
+
...node.requestBody.schema,
|
|
1301
|
+
description: node.requestBody.description ?? node.requestBody.schema.description
|
|
1310
1302
|
},
|
|
1311
|
-
name: resolver.resolveDataName(
|
|
1312
|
-
keysToOmit:
|
|
1303
|
+
name: resolver.resolveDataName(node),
|
|
1304
|
+
keysToOmit: node.requestBody.keysToOmit
|
|
1313
1305
|
}) : null;
|
|
1314
1306
|
const legacyParamTypes = [
|
|
1315
1307
|
pathParams.length > 0 ? renderSchemaEntry({
|
|
@@ -1317,30 +1309,30 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1317
1309
|
params: pathParams,
|
|
1318
1310
|
optional: pathParams.every((p) => !p.required)
|
|
1319
1311
|
}),
|
|
1320
|
-
name: resolver.resolvePathParamsName(
|
|
1312
|
+
name: resolver.resolvePathParamsName(node, pathParams[0])
|
|
1321
1313
|
}) : null,
|
|
1322
1314
|
queryParams.length > 0 ? renderSchemaEntry({
|
|
1323
1315
|
schema: buildGroupedParamsSchema({
|
|
1324
1316
|
params: queryParams,
|
|
1325
1317
|
optional: queryParams.every((p) => !p.required)
|
|
1326
1318
|
}),
|
|
1327
|
-
name: resolver.resolveQueryParamsName(
|
|
1319
|
+
name: resolver.resolveQueryParamsName(node, queryParams[0])
|
|
1328
1320
|
}) : null,
|
|
1329
1321
|
headerParams.length > 0 ? renderSchemaEntry({
|
|
1330
1322
|
schema: buildGroupedParamsSchema({
|
|
1331
1323
|
params: headerParams,
|
|
1332
1324
|
optional: headerParams.every((p) => !p.required)
|
|
1333
1325
|
}),
|
|
1334
|
-
name: resolver.resolveHeaderParamsName(
|
|
1326
|
+
name: resolver.resolveHeaderParamsName(node, headerParams[0])
|
|
1335
1327
|
}) : null
|
|
1336
1328
|
];
|
|
1337
1329
|
const legacyResponsesSchema = renderSchemaEntry({
|
|
1338
|
-
schema: buildLegacyResponsesSchemaNode(
|
|
1339
|
-
name: resolver.resolveResponsesName(
|
|
1330
|
+
schema: buildLegacyResponsesSchemaNode(node, { resolver }),
|
|
1331
|
+
name: resolver.resolveResponsesName(node)
|
|
1340
1332
|
});
|
|
1341
1333
|
const legacyResponseSchema = renderSchemaEntry({
|
|
1342
|
-
schema: buildLegacyResponseUnionSchemaNode(
|
|
1343
|
-
name: resolver.resolveResponseName(
|
|
1334
|
+
schema: buildLegacyResponseUnionSchemaNode(node, { resolver }),
|
|
1335
|
+
name: resolver.resolveResponseName(node)
|
|
1344
1336
|
});
|
|
1345
1337
|
return /* @__PURE__ */ jsxs(File, {
|
|
1346
1338
|
baseName: meta.file.baseName,
|
|
@@ -1368,10 +1360,10 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1368
1360
|
]
|
|
1369
1361
|
});
|
|
1370
1362
|
},
|
|
1371
|
-
|
|
1363
|
+
operations(nodes, options) {
|
|
1364
|
+
const { adapter, config, resolver, root } = this;
|
|
1372
1365
|
const { output, importPath, group, operations, paramsCasing } = options;
|
|
1373
1366
|
if (!operations) return;
|
|
1374
|
-
const root = path.resolve(config.root, config.output.path);
|
|
1375
1367
|
const isZodImport = ZOD_NAMESPACE_IMPORTS.has(importPath);
|
|
1376
1368
|
const meta = { file: resolver.resolveFile({
|
|
1377
1369
|
name: "operations",
|
|
@@ -1382,10 +1374,9 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1382
1374
|
group
|
|
1383
1375
|
}) };
|
|
1384
1376
|
const transformedOperations = nodes.map((node) => {
|
|
1385
|
-
const transformedNode = plugin.transformer ? transform(node, plugin.transformer) : node;
|
|
1386
1377
|
return {
|
|
1387
|
-
node
|
|
1388
|
-
data: buildLegacySchemaNames(
|
|
1378
|
+
node,
|
|
1379
|
+
data: buildLegacySchemaNames(node, caseParams(node.parameters, paramsCasing), resolver)
|
|
1389
1380
|
};
|
|
1390
1381
|
});
|
|
1391
1382
|
const imports = transformedOperations.flatMap(({ node, data }) => {
|
|
@@ -1439,6 +1430,9 @@ const zodGeneratorLegacy = defineGenerator({
|
|
|
1439
1430
|
}
|
|
1440
1431
|
});
|
|
1441
1432
|
//#endregion
|
|
1433
|
+
//#region package.json
|
|
1434
|
+
var version = "5.0.0-alpha.30";
|
|
1435
|
+
//#endregion
|
|
1442
1436
|
//#region src/resolvers/resolverZod.ts
|
|
1443
1437
|
/**
|
|
1444
1438
|
* Default resolver for `@kubb/plugin-zod`.
|
|
@@ -1614,10 +1608,12 @@ const pluginZod = createPlugin((options) => {
|
|
|
1614
1608
|
transformer: userTransformer,
|
|
1615
1609
|
generators: userGenerators
|
|
1616
1610
|
});
|
|
1611
|
+
const mergedGenerator = mergeGenerators(preset.generators ?? []);
|
|
1617
1612
|
let resolveNameWarning = false;
|
|
1618
1613
|
let resolvePathWarning = false;
|
|
1619
1614
|
return {
|
|
1620
1615
|
name: pluginZodName,
|
|
1616
|
+
version,
|
|
1621
1617
|
get resolver() {
|
|
1622
1618
|
return preset.resolver;
|
|
1623
1619
|
},
|
|
@@ -1627,6 +1623,9 @@ const pluginZod = createPlugin((options) => {
|
|
|
1627
1623
|
get options() {
|
|
1628
1624
|
return {
|
|
1629
1625
|
output,
|
|
1626
|
+
exclude,
|
|
1627
|
+
include,
|
|
1628
|
+
override,
|
|
1630
1629
|
group: group ? {
|
|
1631
1630
|
...group,
|
|
1632
1631
|
name: (ctx) => {
|
|
@@ -1649,7 +1648,7 @@ const pluginZod = createPlugin((options) => {
|
|
|
1649
1648
|
},
|
|
1650
1649
|
resolvePath(baseName, pathMode, options) {
|
|
1651
1650
|
if (!resolvePathWarning) {
|
|
1652
|
-
this.
|
|
1651
|
+
this.warn("Do not use resolvePath for pluginZod, use resolverZod.resolvePath instead");
|
|
1653
1652
|
resolvePathWarning = true;
|
|
1654
1653
|
}
|
|
1655
1654
|
return this.plugin.resolver.resolvePath({
|
|
@@ -1658,59 +1657,29 @@ const pluginZod = createPlugin((options) => {
|
|
|
1658
1657
|
tag: options?.group?.tag,
|
|
1659
1658
|
path: options?.group?.path
|
|
1660
1659
|
}, {
|
|
1661
|
-
root:
|
|
1660
|
+
root: this.root,
|
|
1662
1661
|
output,
|
|
1663
1662
|
group: this.plugin.options.group
|
|
1664
1663
|
});
|
|
1665
1664
|
},
|
|
1666
1665
|
resolveName(name, type) {
|
|
1667
1666
|
if (!resolveNameWarning) {
|
|
1668
|
-
this.
|
|
1667
|
+
this.warn("Do not use resolveName for pluginZod, use resolverZod.default instead");
|
|
1669
1668
|
resolveNameWarning = true;
|
|
1670
1669
|
}
|
|
1671
1670
|
return this.plugin.resolver.default(name, type);
|
|
1672
1671
|
},
|
|
1673
|
-
async
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
include,
|
|
1685
|
-
override,
|
|
1686
|
-
fabric,
|
|
1687
|
-
adapter,
|
|
1688
|
-
config,
|
|
1689
|
-
driver
|
|
1690
|
-
};
|
|
1691
|
-
await walk(rootNode, {
|
|
1692
|
-
depth: "shallow",
|
|
1693
|
-
async schema(schemaNode) {
|
|
1694
|
-
await runGeneratorSchema(schemaNode, generatorContext);
|
|
1695
|
-
},
|
|
1696
|
-
async operation(operationNode) {
|
|
1697
|
-
if (resolver.resolveOptions(operationNode, {
|
|
1698
|
-
options: plugin.options,
|
|
1699
|
-
exclude,
|
|
1700
|
-
include,
|
|
1701
|
-
override
|
|
1702
|
-
}) !== null) collectedOperations.push(operationNode);
|
|
1703
|
-
await runGeneratorOperation(operationNode, generatorContext);
|
|
1704
|
-
}
|
|
1705
|
-
});
|
|
1706
|
-
await runGeneratorOperations(collectedOperations, generatorContext);
|
|
1707
|
-
const barrelFiles = await getBarrelFiles(this.fabric.files, {
|
|
1708
|
-
type: output.barrelType ?? "named",
|
|
1709
|
-
root,
|
|
1710
|
-
output,
|
|
1711
|
-
meta: { pluginName: this.plugin.name }
|
|
1712
|
-
});
|
|
1713
|
-
await this.upsertFile(...barrelFiles);
|
|
1672
|
+
async schema(node, options) {
|
|
1673
|
+
return mergedGenerator.schema?.call(this, node, options);
|
|
1674
|
+
},
|
|
1675
|
+
async operation(node, options) {
|
|
1676
|
+
return mergedGenerator.operation?.call(this, node, options);
|
|
1677
|
+
},
|
|
1678
|
+
async operations(nodes, options) {
|
|
1679
|
+
return mergedGenerator.operations?.call(this, nodes, options);
|
|
1680
|
+
},
|
|
1681
|
+
async buildStart() {
|
|
1682
|
+
await this.openInStudio({ ast: true });
|
|
1714
1683
|
}
|
|
1715
1684
|
};
|
|
1716
1685
|
});
|