@omnia/tooling-vue 8.0.91-vnext → 8.0.92-dev

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 (26) hide show
  1. package/internal-do-not-import-from-here/config/omnia.fx.core_a2892051-fd9f-4056-ae8d-30d16d48417d.manifest.json +1 -0
  2. package/internal-do-not-import-from-here/config/omnia.fx.ux_dee030cc-4ab3-4158-bb06-8049f5c67542.manifest.json +1 -0
  3. package/internal-do-not-import-from-here/config/omnia.fx_a5a89056-b5f5-475d-8518-a1f55090379d.manifest.json +1 -0
  4. package/internal-do-not-import-from-here/config/omnia.vendor.manifest.json +1 -1
  5. package/internal-do-not-import-from-here/config/tooling.output.json +1 -1
  6. package/internal-do-not-import-from-here/config/wctypings.d.ts +4435 -1498
  7. package/internal-do-not-import-from-here/shared.d.ts +11 -6
  8. package/internal-do-not-import-from-here/shared.js +32 -12
  9. package/internal-do-not-import-from-here/tasks/ComponentDocRegistrations.js +1 -1
  10. package/internal-do-not-import-from-here/tasks/bundle.js +65 -380
  11. package/internal-do-not-import-from-here/tasks/doc.d.ts +3 -1
  12. package/internal-do-not-import-from-here/tasks/doc.js +393 -392
  13. package/internal-do-not-import-from-here/tasks/vendor.js +16 -12
  14. package/internal-do-not-import-from-here/vite/hmr/graph.js +3 -1
  15. package/internal-do-not-import-from-here/vite/plugins/OmniaPlugin.js +1 -1
  16. package/internal-do-not-import-from-here/webpack-loaders/doc-loader.d.ts +1 -0
  17. package/internal-do-not-import-from-here/webpack-loaders/doc-loader.js +11 -0
  18. package/internal-do-not-import-from-here/webpack-loaders/esbuild-custom-loader.d.ts +1 -0
  19. package/internal-do-not-import-from-here/webpack-loaders/esbuild-custom-loader.js +10 -0
  20. package/internal-do-not-import-from-here/webpack-loaders/ts-loader.d.ts +5 -2
  21. package/internal-do-not-import-from-here/webpack-loaders/ts-loader.js +8 -0
  22. package/internal-do-not-import-from-here/webpack-loaders/tsx-loader.d.ts +3 -3
  23. package/internal-do-not-import-from-here/webpack-loaders/tsx-loader.js +3 -0
  24. package/internal-do-not-import-from-here/webpack-loaders/wc-loader.d.ts +1 -1
  25. package/internal-do-not-import-from-here/webpack-loaders/wc-loader.js +5 -1
  26. package/package.json +7 -8
@@ -14,7 +14,7 @@ const fx_models_1 = require("@omnia/fx-models");
14
14
  const $ = tslib_1.__importStar(require("../variables"));
15
15
  const shared_1 = require("../shared");
16
16
  const tooling_1 = require("@omnia/tooling");
17
- const core_1 = require("@swc/core");
17
+ const doc_1 = require("./doc");
18
18
  const MiniCssExtractPlugin = require('mini-css-extract-plugin');
19
19
  const ConcatSource = require('webpack-core/lib/ConcatSource');
20
20
  const CircularDependencyPlugin = require('circular-dependency-plugin');
@@ -40,19 +40,24 @@ $.tooling.core.registerBuildTask({
40
40
  return new Promise(function (resolve, reject) {
41
41
  buildEntries()
42
42
  .then((result) => {
43
- let startTime = new Date().getTime();
44
- tooling_1.utils.log("Typescript checking...");
45
- const spawn = require("child_process").spawn;
46
- spawn("node", [path_1.default.resolve(__dirname, "./tsc.js")], { stdio: "inherit", })
47
- .on('exit', (code) => {
48
- if (code == 0) {
49
- tooling_1.utils.logTime('Done - Typescript', startTime);
50
- resolve(result);
51
- }
52
- else {
53
- process.exit(code);
54
- }
55
- });
43
+ if (process.argv.length > 0 && process.argv.find(argv => argv === "--package") !== undefined) {
44
+ resolve(result);
45
+ }
46
+ else {
47
+ let startTime = new Date().getTime();
48
+ tooling_1.utils.log("Typescript checking...");
49
+ const spawn = require("child_process").spawn;
50
+ spawn("node", [path_1.default.resolve(__dirname, "./tsc.js")], { stdio: "inherit", })
51
+ .on('exit', (code) => {
52
+ if (code == 0) {
53
+ tooling_1.utils.logTime('Done - Typescript', startTime);
54
+ resolve(result);
55
+ }
56
+ else {
57
+ process.exit(code);
58
+ }
59
+ });
60
+ }
56
61
  }, reject);
57
62
  });
58
63
  }
@@ -197,11 +202,12 @@ function buildEntries(serve = false) {
197
202
  var componentRegistry = $.composers.ComponentRegistry;
198
203
  let componentRegistrations = componentRegistry.getRegistrations();
199
204
  const serviceInfo = $.composers.ServiceManifestRegistry.getServiceInfo();
200
- if (serviceInfo.serviceType === tooling_composers_1.ServiceTypes.WebApp) {
201
- await generateComponentTypingsAndDoc(componentRegistrations);
202
- }
203
205
  startTime = new Date().getTime();
204
206
  $.tooling.logTime("Found [" + componentRegistrations.length + "] component registrations", startTime);
207
+ let componentEntries = createVueEntryFormComponentRegistrations(componentRegistrations);
208
+ if (serviceInfo.serviceType === tooling_composers_1.ServiceTypes.WebApp) {
209
+ await (0, doc_1.generateComponentTypingsAndDoc)(componentRegistrations);
210
+ }
205
211
  var resourceRegistry = $.composers.ResourceRegistry;
206
212
  let resourceBundlesWithBuildOptions = resourceRegistry.getRegisteredResourceBundles(shared_1.convertManifestPathToEntryPath);
207
213
  $.tooling.logTime("Found [" + resourceBundlesWithBuildOptions?.size + "] resource bundles", startTime);
@@ -217,7 +223,6 @@ function buildEntries(serve = false) {
217
223
  console.log("debug " + res[0] + " has build options for paths " + resource.paths + " buildoptions: " + JSON.stringify(resource.buildOptions));
218
224
  }
219
225
  }
220
- let componentEntries = createVueEntryFormRegistrations(componentRegistrations);
221
226
  var entries = $.merge(componentEntries, resourceEntries);
222
227
  if (checkDuplicateWebpackEntryPoints(entries)) {
223
228
  $.tooling.log('Build manifests metadata have error that found duplicated resource path', $.tooling.LogTypes.Error);
@@ -252,248 +257,7 @@ function buildEntries(serve = false) {
252
257
  }
253
258
  });
254
259
  }
255
- async function generateComponentTypingsAndDoc(componentRegistrations) {
256
- tooling_1.utils.log("Generate components typings and documentation running...");
257
- var startTime = new Date().getTime();
258
- let DefineVueType;
259
- (function (DefineVueType) {
260
- DefineVueType[DefineVueType["Prop"] = 0] = "Prop";
261
- DefineVueType[DefineVueType["Model"] = 1] = "Model";
262
- DefineVueType[DefineVueType["Slot"] = 2] = "Slot";
263
- DefineVueType[DefineVueType["Emit"] = 4] = "Emit";
264
- })(DefineVueType || (DefineVueType = {}));
265
- const docResult = {};
266
- function getPropertyFunctionTypeAsString(type) {
267
- let params = "";
268
- if (type.params?.length > 0) {
269
- type.params.forEach(p => {
270
- params += `${p.value}:${getPropertyType(p.typeAnnotation)}, `;
271
- });
272
- params = params.replace(/,\s*$/, "");
273
- }
274
- return `(${params}) => ${getPropertyType(type.typeAnnotation)}`;
275
- }
276
- function getPropertyType(tsType) {
277
- let result = "";
278
- if (tsType.type === "TsTypeAnnotation") {
279
- return getPropertyType(tsType.typeAnnotation);
280
- }
281
- switch (tsType.type) {
282
- case "TsLiteralType":
283
- result = tsType.literal.value;
284
- break;
285
- case "TsKeywordType":
286
- result = tsType.kind;
287
- break;
288
- case "TsTypeReference":
289
- result = tsType.typeName.value;
290
- break;
291
- case "TsFunctionType":
292
- result = getPropertyFunctionTypeAsString(tsType);
293
- break;
294
- default:
295
- break;
296
- }
297
- return result;
298
- }
299
- function getNameProperty(ce, result) {
300
- const identifier = ce.callee?.property?.value;
301
- if (identifier) {
302
- switch (identifier) {
303
- case "name":
304
- result.name = ce.arguments[0].expression.value;
305
- getNameProperty(ce.callee.object, result);
306
- break;
307
- case "vModel":
308
- result.type = DefineVueType.Model;
309
- result.propertyTypeAsString = getPropertyType(ce.typeArguments.params[0]);
310
- result.name = result.name ? `v-model:${result.name}` : result.name;
311
- break;
312
- case "slots":
313
- result.type = DefineVueType.Slot;
314
- result.propertyTypeAsObject = {};
315
- ce.typeArguments.params[0].members
316
- .forEach(m => {
317
- result.propertyTypeAsObject[m.key.value] = getPropertyType(m.typeAnnotation);
318
- });
319
- break;
320
- case "prop":
321
- result.type = DefineVueType.Prop;
322
- result.propertyTypeAsString = getPropertyType(ce.typeArguments.params[0]);
323
- break;
324
- case "emit":
325
- result.type = DefineVueType.Emit;
326
- result.propertyTypeAsString = getPropertyType(ce.typeArguments.params[0]);
327
- break;
328
- default:
329
- getNameProperty(ce.callee.object, result);
330
- }
331
- }
332
- }
333
- async function buildDoc(wc) {
334
- try {
335
- const wcPath = (0, shared_1.convertManifestPathToEntryPath)(wc.manifestPath, [wc.componentOptions.entryPoint])[0];
336
- const wcParseResult = await (0, core_1.parseFile)(wcPath, {
337
- syntax: 'typescript',
338
- target: 'es2020',
339
- tsx: true,
340
- decorators: true,
341
- dynamicImport: true
342
- });
343
- wcParseResult.body.forEach(b => {
344
- if (b.type === 'ExportDefaultExpression'
345
- && b.expression.callee?.value === "defineVueWebComponent") {
346
- b.expression.arguments[0].expression
347
- .properties?.filter(p => p.key.value === "props"
348
- || p.key.value === "emits")
349
- ?.forEach(propsIdentifier => {
350
- if (propsIdentifier) {
351
- propsIdentifier.value
352
- .properties?.forEach(p => {
353
- const em = p.arguments;
354
- if (em?.callee?.property?.value === "doc$") {
355
- const PropertyResult = {
356
- type: null,
357
- propertyTypeAsString: "",
358
- name: ""
359
- };
360
- getNameProperty(em, PropertyResult);
361
- if (!docResult[wc.componentOptions.elementName]) {
362
- docResult[wc.componentOptions.elementName] = {
363
- emits: {},
364
- models: {},
365
- props: {},
366
- slots: {}
367
- };
368
- }
369
- switch (PropertyResult.type) {
370
- case DefineVueType.Prop:
371
- docResult[wc.componentOptions.elementName].props[PropertyResult.name] = {
372
- type: PropertyResult.propertyTypeAsString,
373
- description: em.arguments[0].expression.value
374
- };
375
- break;
376
- case DefineVueType.Model:
377
- docResult[wc.componentOptions.elementName].models[PropertyResult.name] = {
378
- type: PropertyResult.propertyTypeAsString,
379
- description: em.arguments[0].expression.value
380
- };
381
- break;
382
- case DefineVueType.Emit:
383
- docResult[wc.componentOptions.elementName].emits[PropertyResult.name] = {
384
- type: PropertyResult.propertyTypeAsString,
385
- description: em.arguments[0].expression.value
386
- };
387
- break;
388
- case DefineVueType.Slot:
389
- em.arguments[0].expression
390
- .properties
391
- .forEach(p => {
392
- const slotName = p.key.value;
393
- docResult[wc.componentOptions.elementName].slots[slotName] = {
394
- type: PropertyResult.propertyTypeAsObject[slotName],
395
- description: p.value.value
396
- };
397
- });
398
- break;
399
- default:
400
- break;
401
- }
402
- }
403
- });
404
- }
405
- });
406
- }
407
- });
408
- }
409
- catch (ex) {
410
- tooling_1.utils.log(`Have a exception when extract doc$ for web component manifest -> ${wc.manifestPath}`, tooling_1.utils.LogTypes.Error);
411
- console.error(ex);
412
- throw new Error("Exit, have an exception.");
413
- }
414
- }
415
- let docPath = $.path.resolve(__dirname, "ComponentDocRegistrations.ts");
416
- ;
417
- const wcNamespace = getBuildOption()?.webComponentNamespace;
418
- const info = shared_1.ConfigurationManager.outputInfo.get();
419
- info.wc = {
420
- namespace: wcNamespace,
421
- mappings: {}
422
- };
423
- let wcTypings = wcNamespace ? `
424
- //{{importWC}}
425
- declare global {
426
- namespace JSX {
427
- interface Element { }
428
- interface ElementClass { }
429
-
430
- interface IntrinsicElements {
431
- //{{elementName}}
432
- }
433
- }
434
- }
435
-
436
- declare global {
437
- let ${wcNamespace}: {
438
- //{{nselementName}}
439
- };
440
- }
441
- `
442
- : `
443
- //{{importWC}}
444
- declare global {
445
- namespace JSX {
446
- interface Element { }
447
- interface ElementClass { }
448
-
449
- interface IntrinsicElements {
450
- //{{elementName}}
451
- }
452
- }
453
- }`;
454
- if ($.isExtensionEnv) {
455
- wcTypings = `import { VueComponentBaseProps } from "@omnia/fx/ux";
456
- ${wcTypings}`;
457
- }
458
- else {
459
- wcTypings = `import { VueComponentBaseProps } from "../../../../client/fx/ux/index";
460
- ${wcTypings}`;
461
- }
462
- await tooling_1.utils.asyncForEach(componentRegistrations, async (wc) => {
463
- wcTypings = generateWebComponentTypings(wc, wcTypings, info);
464
- await buildDoc(wc);
465
- });
466
- if (Object.keys(docResult).length > 0) {
467
- fsExtra.outputFileSync(docPath, `
468
- import { extendApi } from "@omnia/fx";
469
- import { ComponentDoc } from "@omnia/fx-models";
470
-
471
- extendApi(api => api.fx.docs.registrations, api => {
472
-
473
- const registrations: { [elementName: string]: ComponentDoc } = ${JSON.stringify(docResult)}
474
-
475
- Object.keys(registrations).forEach(elementName => {
476
- api.register(elementName, registrations[elementName]);
477
- });
478
- });
479
- `);
480
- // create dynamic doc manifest
481
- $.composers.ManifestRegistry.setCurrentManifestPath(`${path_1.default.relative(tooling_1.utils.root(""), path_1.default.resolve(__dirname))}/`);
482
- $.composers
483
- .Composer
484
- .registerManifest(getBuildOption().docResourceManifestId || new fx_models_1.Guid(`${tooling_1.utils.generateGuid()}`), "omnia.fx.docs.components.registraions")
485
- .registerResources({
486
- resourcePaths: ["./ComponentDocRegistrations.ts"]
487
- })
488
- .withTarget(fx_models_1.ClientManifestTargetTypes.Docs)
489
- .extendApi(api => api.fx.docs.registrations);
490
- $.composers.ManifestRegistry.setCurrentManifestPath();
491
- }
492
- shared_1.ConfigurationManager.webComponentTypings.update(wcTypings);
493
- shared_1.ConfigurationManager.outputInfo.update(info);
494
- tooling_1.utils.logTime('Done - Generate components typings and documentation', startTime);
495
- }
496
- function buildManifestMetadatas(entries) {
260
+ function buildManifestMetadata(entries) {
497
261
  return new Promise(function (resolve, reject) {
498
262
  try {
499
263
  var startTime = new Date().getTime();
@@ -580,7 +344,7 @@ function beforeBundleManifest(entries) {
580
344
  // isRunBuildMetadata = !isEqual(entries, cachedEntries);
581
345
  // }
582
346
  // }
583
- if ($.fs.existsSync(cachedEntriesPath)) {
347
+ if (!isBuildWebpackManifestOnly() && $.fs.existsSync(cachedEntriesPath)) {
584
348
  let cachedEntries = require(cachedEntriesPath);
585
349
  isRunBuildMetadata = !isEqual(entries, cachedEntries);
586
350
  }
@@ -612,9 +376,14 @@ function beforeBundleManifest(entries) {
612
376
  fsExtra.writeJsonSync(manifestPath, content);
613
377
  }
614
378
  });
615
- buildManifestMetadatas(entriesToBuild).then(() => {
379
+ buildManifestMetadata(entriesToBuild).then(() => {
616
380
  fsExtra.ensureFileSync(cachedEntriesPath);
617
381
  fsExtra.writeJsonSync(cachedEntriesPath, entries);
382
+ if (isBuildWebpackManifestOnly()) {
383
+ fsExtra.copyFileSync(`${outDirManifestMetadata}/omnia.fx.core_a2892051-fd9f-4056-ae8d-30d16d48417d.manifest.json`, "client/tooling/vue/config/omnia.fx.core_a2892051-fd9f-4056-ae8d-30d16d48417d.manifest.json");
384
+ fsExtra.copyFileSync(`${outDirManifestMetadata}/omnia.fx_a5a89056-b5f5-475d-8518-a1f55090379d.manifest.json`, "client/tooling/vue/config/omnia.fx_a5a89056-b5f5-475d-8518-a1f55090379d.manifest.json");
385
+ fsExtra.copyFileSync(`${outDirManifestMetadata}/omnia.fx.ux_dee030cc-4ab3-4158-bb06-8049f5c67542.manifest.json`, "client/tooling/vue/config/omnia.fx.ux_dee030cc-4ab3-4158-bb06-8049f5c67542.manifest.json");
386
+ }
618
387
  resolve(entries);
619
388
  });
620
389
  }
@@ -754,6 +523,9 @@ function afterGenerateManifestsMetadata() {
754
523
  .then(resolve, reject);
755
524
  });
756
525
  }
526
+ function isBuildWebpackManifestOnly() {
527
+ return process.argv?.find(argv => argv === "--webpackManifest") !== undefined;
528
+ }
757
529
  function minifyBundles() {
758
530
  return new Promise(function (resolve, reject) {
759
531
  if (process.argv.length > 0 && process.argv.find(argv => argv === "--minify") !== undefined) {
@@ -919,7 +691,7 @@ function createVueWebpackConfig(currentEntry, entries, bundleOutputDir, viteHmrO
919
691
  '@microsoft/signalr$': '@microsoft/signalr/dist/webworker/signalr.js',
920
692
  }),
921
693
  },
922
- target: ['web', 'es2022'],
694
+ target: ['web', 'es2022'], // Will change ES6 when stop support IE11
923
695
  output: {
924
696
  //library: {
925
697
  // type: "umd"
@@ -954,8 +726,8 @@ function createVueWebpackConfig(currentEntry, entries, bundleOutputDir, viteHmrO
954
726
  }
955
727
  return false;
956
728
  },
957
- // use: 'null-loader',
958
729
  use: [
730
+ // 'null-loader',
959
731
  {
960
732
  loader: path_1.default.resolve(__dirname, $.isExtensionEnv ? '../webpack-loaders/ingore-vuetify-locale.js' : '../webpack-loaders/ingore-vuetify-locale.ts'),
961
733
  }
@@ -1069,7 +841,7 @@ function createWebpackConfigForManifestMetadata(entry, metadataOutputDir) {
1069
841
  var entensionId = getServiceId();
1070
842
  return Object.assign({}, getBaseWebpackConfigForManifestMetadata(entry, metadataOutputDir), {
1071
843
  plugins: [
1072
- ...buildReferenceManifestFromConfig(),
844
+ ...buildReferenceManifestFromConfig(Object.keys(entry)[0]),
1073
845
  new $.omniaWebpackPlugins.NamedModulesPlugin(buildModuleName()),
1074
846
  new $.webpack.DllPlugin({
1075
847
  entryOnly: false,
@@ -1439,12 +1211,17 @@ function buildReferenceManifest(currentEntry, entries) {
1439
1211
  var manifests = [];
1440
1212
  var dynamicReferenceManifests = [];
1441
1213
  let buildOptions = getBuildOption();
1442
- if (buildOptions && buildOptions.bundleOptions && buildOptions.bundleOptions.commonsChunk)
1443
- return dynamicReferenceManifests.concat(buildReferenceManifestFromConfig());
1444
1214
  var currentEntryName = Object.keys(currentEntry)[0];
1445
- // exclude omnia vendor
1446
- if (currentEntryName.indexOf(fx_models_1.OmniaResourceManifests.Vendor.toString()) === -1
1447
- && currentEntryName.indexOf(vendorProdId) === -1) {
1215
+ if (buildOptions && buildOptions.bundleOptions && buildOptions.bundleOptions.commonsChunk)
1216
+ return dynamicReferenceManifests.concat(buildReferenceManifestFromConfig(currentEntryName));
1217
+ // exclude pre-built webpack manifest
1218
+ if ($.isExtensionEnv
1219
+ || (currentEntryName.indexOf(fx_models_1.OmniaResourceManifests.Vendor.toString()) === -1
1220
+ && currentEntryName.indexOf(vendorProdId) === -1
1221
+ // && currentEntryName.indexOf(OmniaResourceManifests.FxCore.toString()) === -1
1222
+ // && currentEntryName.indexOf(OmniaResourceManifests.Fx.toString()) === -1
1223
+ // && currentEntryName.indexOf(OmniaResourceManifests.FxUx.toString()) === -1
1224
+ )) {
1448
1225
  Object.keys(entries).forEach((entryName) => {
1449
1226
  if (entryName !== currentEntryName) {
1450
1227
  if ($.fs.existsSync($.tooling.utils.root(outDirManifestMetadata + "/" + entryName + ".manifest.json"))) {
@@ -1458,14 +1235,14 @@ function buildReferenceManifest(currentEntry, entries) {
1458
1235
  }
1459
1236
  });
1460
1237
  }
1461
- manifests = buildReferenceManifestFromConfig().concat(dynamicReferenceManifests).concat(manifests);
1238
+ manifests = buildReferenceManifestFromConfig(currentEntryName).concat(dynamicReferenceManifests).concat(manifests);
1462
1239
  return manifests;
1463
1240
  }
1464
1241
  function cleanUpComposer() {
1465
1242
  $.composers.ManifestRegistry.clearState();
1466
1243
  }
1467
1244
  exports.cleanUpComposer = cleanUpComposer;
1468
- function buildReferenceManifestFromConfig() {
1245
+ function buildReferenceManifestFromConfig(entryName) {
1469
1246
  var manifests = [];
1470
1247
  let buildOptions = getBuildOption();
1471
1248
  if (buildOptions.reference) {
@@ -1477,6 +1254,17 @@ function buildReferenceManifestFromConfig() {
1477
1254
  }));
1478
1255
  }
1479
1256
  }
1257
+ if (!isBuildWebpackManifestOnly() && buildOptions.webpackManifests) {
1258
+ for (let manifestPath of buildOptions.webpackManifests) {
1259
+ if (manifestPath.indexOf(entryName) === -1) {
1260
+ manifests.push(new $.omniaWebpackPlugins.DllReferencePlugin({
1261
+ context: $.tooling.utils.root(""),
1262
+ manifest: $.tooling.utils.root(manifestPath),
1263
+ // name: `md${++trackingModuleRefId}` //require('md5')(manifestPath)
1264
+ }));
1265
+ }
1266
+ }
1267
+ }
1480
1268
  if ($.isExtensionEnv) {
1481
1269
  _registeredReferenceManifests.forEach(manifest => {
1482
1270
  manifests.push(new $.omniaWebpackPlugins.DllReferencePlugin({
@@ -1556,89 +1344,18 @@ function getServiceId() {
1556
1344
  return serviceId;
1557
1345
  }
1558
1346
  exports.getServiceId = getServiceId;
1559
- function extractTypingsForComponents(componentRegistrations) {
1560
- let foundTypes = {};
1561
- componentRegistrations.forEach((comp) => {
1562
- let defPaths = comp.componentOptions.typings;
1563
- if (defPaths) {
1564
- let isChildSpec = false;
1565
- defPaths.forEach((defPath) => {
1566
- let entryPointPath = (0, shared_1.convertManifestPathToEntryPath)(comp.manifestPath, [defPath])[0];
1567
- let contents = $.fs.readFileSync(entryPointPath, 'utf8');
1568
- let wcEl = getWcElement(contents, isChildSpec);
1569
- if (wcEl) {
1570
- //Now lets find the interface mapped to element
1571
- //example /*@WebComponentInterface("omfx-dialog")*/
1572
- let interfaceToken = `/*@WebComponentInterface("${wcEl}")*/`;
1573
- let interfaceIndex = contents.indexOf(interfaceToken);
1574
- if (interfaceIndex > -1) {
1575
- let wcProps = [];
1576
- let intf = contents.substring(interfaceIndex);
1577
- let nextIsDomProp = false;
1578
- intf = intf
1579
- .substring(intf.indexOf("{") + 1, intf.indexOf("}"))
1580
- .replace(/\?/g, '')
1581
- .trim()
1582
- .split(/\r\n|\r|\n/g).forEach((group) => {
1583
- /*@DomProperty*/
1584
- let sub = group.trim();
1585
- if (sub.indexOf("/*@DomProperty*/") > -1) {
1586
- nextIsDomProp = true;
1587
- return;
1588
- }
1589
- if (nextIsDomProp) {
1590
- if (sub.indexOf(':')) {
1591
- sub = sub.split(':')[0];
1592
- }
1593
- if (sub) {
1594
- if (!foundTypes[wcEl]) {
1595
- foundTypes[wcEl] = [];
1596
- }
1597
- foundTypes[wcEl].push(sub);
1598
- }
1599
- nextIsDomProp = false;
1600
- }
1601
- });
1602
- }
1603
- }
1604
- isChildSpec = true;
1605
- });
1606
- }
1607
- });
1608
- return foundTypes;
1609
- }
1610
- var lastWcElement = "";
1611
- function getWcElement(contents, isChildSpec) {
1612
- if (isChildSpec) {
1613
- if (lastWcElement === "") {
1614
- new Error("Cant find the /*@DomProperty*/ on the parent interface for the WebComponent definition");
1615
- }
1616
- return lastWcElement;
1617
- }
1618
- else {
1619
- lastWcElement = "";
1620
- }
1621
- let wcElToken = "/*@WebComponent*/";
1622
- let wcElIndex = contents.indexOf(wcElToken);
1623
- let wcEl = "";
1624
- if (wcElIndex > -1) {
1625
- wcEl = contents.substring(wcElIndex);
1626
- wcEl = wcEl.substring(wcEl.indexOf('"') + 1);
1627
- wcEl = wcEl.substring(0, wcEl.indexOf('"'));
1628
- lastWcElement = wcEl;
1629
- }
1630
- return lastWcElement;
1631
- }
1632
- function createVueEntryFormRegistrations(registrations) {
1347
+ function createVueEntryFormComponentRegistrations(registrations) {
1633
1348
  let entryPaths = {};
1634
1349
  for (let r of registrations) {
1635
- if (r.componentOptions.entryPoint.endsWith('.jsx') || r.componentOptions.entryPoint.endsWith('.vue') || r.componentOptions.entryPoint.endsWith('.tsx') || r.componentOptions.entryPoint.endsWith('.ts')) {
1350
+ if (r.componentOptions.entryPoint.endsWith('.tsx')
1351
+ || r.componentOptions.entryPoint.endsWith('.vue')) {
1636
1352
  let entryPointPath = (0, shared_1.convertManifestPathToEntryPath)(r.manifestPath, [r.componentOptions.entryPoint]);
1637
1353
  let entryId = r.manifest.resourceId;
1638
1354
  if (r.manifest.resourceName) {
1639
1355
  entryId = `${r.manifest.resourceName}_${entryId}`;
1640
1356
  }
1641
- entryPaths[entryId] = entryPointPath;
1357
+ r.componentOptions.entryPointPath = entryPointPath[0];
1358
+ entryPaths[entryId.toString()] = entryPointPath;
1642
1359
  }
1643
1360
  else {
1644
1361
  $.tooling.log('The OmniaFx build system only supports .jsx, .vue and .tsx based components at the moment ', $.tooling.LogTypes.Error);
@@ -1958,35 +1675,3 @@ function sortString(a, b) {
1958
1675
  }
1959
1676
  return -1;
1960
1677
  }
1961
- function generateWebComponentTypings(wc, template, info) {
1962
- // export default defineVueWebComponent
1963
- let wcPath = (0, shared_1.convertManifestPathToEntryPath)(wc.manifestPath, [wc.componentOptions.entryPoint])[0];
1964
- let content = fsExtra.readFileSync(wcPath, 'utf8');
1965
- if (content.indexOf("defineVueWebComponent") > -1) {
1966
- if (!new RegExp('export\\s+default\\s+').test(content)) {
1967
- throw new Error(`Missing statement 'export default a vue web component' in ${wcPath}`);
1968
- }
1969
- let friendlyManifestId = `wc${wc.manifest.resourceId.toString().replace(/-/g, '').toLowerCase()}`;
1970
- let importPath = wcPath.substring(0, wcPath.lastIndexOf('.tsx'));
1971
- if (importPath.indexOf("./") === 0) {
1972
- importPath = importPath.replace("./", "");
1973
- }
1974
- if ($.isExtensionEnv) {
1975
- importPath = `../../../../${importPath}`;
1976
- }
1977
- else {
1978
- importPath = `../../../../${importPath}`;
1979
- }
1980
- let elementNamePascalCase = wc.componentOptions.elementName.replace("omfx-", "").replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
1981
- elementNamePascalCase = elementNamePascalCase[0].toUpperCase() + elementNamePascalCase.substring(1, elementNamePascalCase.length);
1982
- info.wc.mappings[elementNamePascalCase] = wc.componentOptions.elementName;
1983
- return template
1984
- .replace(/\/\/{{importWC}}/, `import ${friendlyManifestId} from '${importPath}';
1985
- //{{importWC}}`)
1986
- .replace(/\/\/{{elementName}}/, `"${wc.componentOptions.elementName}": typeof ${friendlyManifestId}.propsDefinition & VueComponentBaseProps
1987
- //{{elementName}}`)
1988
- .replace(/\/\/{{nselementName}}/, `"${elementNamePascalCase}": { new(...args: any[]): { $props: typeof ${friendlyManifestId}.propsDefinition & VueComponentBaseProps } }
1989
- //{{nselementName}}`);
1990
- }
1991
- return template;
1992
- }
@@ -1 +1,3 @@
1
- export {};
1
+ import { ComponentRegistration } from "@omnia/tooling-composers";
2
+ export declare function generateComponentTypingsAndDoc(componentRegistrations: ComponentRegistration[]): Promise<void>;
3
+ export declare function importSnippetCode(content: string, filePath: string): string;