@omnia/tooling-vue 8.0.93-vnext → 8.0.94-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.
- package/internal-do-not-import-from-here/config/omnia.fx.core_a2892051-fd9f-4056-ae8d-30d16d48417d.manifest.json +1 -0
- package/internal-do-not-import-from-here/config/omnia.fx.ux_dee030cc-4ab3-4158-bb06-8049f5c67542.manifest.json +1 -0
- package/internal-do-not-import-from-here/config/omnia.fx_a5a89056-b5f5-475d-8518-a1f55090379d.manifest.json +1 -0
- package/internal-do-not-import-from-here/config/omnia.vendor.manifest.json +1 -1
- package/internal-do-not-import-from-here/config/tooling.output.json +1 -1
- package/internal-do-not-import-from-here/config/wctypings.d.ts +4433 -1503
- package/internal-do-not-import-from-here/shared.d.ts +11 -6
- package/internal-do-not-import-from-here/shared.js +32 -12
- package/internal-do-not-import-from-here/tasks/ComponentDocRegistrations.js +1 -1
- package/internal-do-not-import-from-here/tasks/bundle.js +89 -384
- package/internal-do-not-import-from-here/tasks/doc.d.ts +3 -1
- package/internal-do-not-import-from-here/tasks/doc.js +393 -392
- package/internal-do-not-import-from-here/tasks/vendor.js +18 -12
- package/internal-do-not-import-from-here/vite/hmr/graph.js +3 -1
- package/internal-do-not-import-from-here/vite/plugins/OmniaPlugin.js +1 -1
- package/internal-do-not-import-from-here/webpack-loaders/doc-loader.d.ts +1 -0
- package/internal-do-not-import-from-here/webpack-loaders/doc-loader.js +11 -0
- package/internal-do-not-import-from-here/webpack-loaders/esbuild-custom-loader.d.ts +1 -0
- package/internal-do-not-import-from-here/webpack-loaders/esbuild-custom-loader.js +10 -0
- package/internal-do-not-import-from-here/webpack-loaders/ts-loader.d.ts +5 -2
- package/internal-do-not-import-from-here/webpack-loaders/ts-loader.js +8 -0
- package/internal-do-not-import-from-here/webpack-loaders/tsx-loader.d.ts +3 -3
- package/internal-do-not-import-from-here/webpack-loaders/tsx-loader.js +3 -0
- package/internal-do-not-import-from-here/webpack-loaders/wc-loader.d.ts +1 -1
- package/internal-do-not-import-from-here/webpack-loaders/wc-loader.js +5 -1
- package/package.json +10 -9
|
@@ -14,7 +14,8 @@ 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
|
|
17
|
+
const doc_1 = require("./doc");
|
|
18
|
+
const webpack_plugin_1 = tslib_1.__importDefault(require("@stylexjs/webpack-plugin"));
|
|
18
19
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
19
20
|
const ConcatSource = require('webpack-core/lib/ConcatSource');
|
|
20
21
|
const CircularDependencyPlugin = require('circular-dependency-plugin');
|
|
@@ -40,19 +41,24 @@ $.tooling.core.registerBuildTask({
|
|
|
40
41
|
return new Promise(function (resolve, reject) {
|
|
41
42
|
buildEntries()
|
|
42
43
|
.then((result) => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
44
|
+
if (process.argv.length > 0 && process.argv.find(argv => argv === "--package") !== undefined) {
|
|
45
|
+
resolve(result);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
let startTime = new Date().getTime();
|
|
49
|
+
tooling_1.utils.log("Typescript checking...");
|
|
50
|
+
const spawn = require("child_process").spawn;
|
|
51
|
+
spawn("node", [path_1.default.resolve(__dirname, "./tsc.js")], { stdio: "inherit", })
|
|
52
|
+
.on('exit', (code) => {
|
|
53
|
+
if (code == 0) {
|
|
54
|
+
tooling_1.utils.logTime('Done - Typescript', startTime);
|
|
55
|
+
resolve(result);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
process.exit(code);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
56
62
|
}, reject);
|
|
57
63
|
});
|
|
58
64
|
}
|
|
@@ -197,11 +203,12 @@ function buildEntries(serve = false) {
|
|
|
197
203
|
var componentRegistry = $.composers.ComponentRegistry;
|
|
198
204
|
let componentRegistrations = componentRegistry.getRegistrations();
|
|
199
205
|
const serviceInfo = $.composers.ServiceManifestRegistry.getServiceInfo();
|
|
200
|
-
if (serviceInfo.serviceType === tooling_composers_1.ServiceTypes.WebApp) {
|
|
201
|
-
await generateComponentTypingsAndDoc(componentRegistrations);
|
|
202
|
-
}
|
|
203
206
|
startTime = new Date().getTime();
|
|
204
207
|
$.tooling.logTime("Found [" + componentRegistrations.length + "] component registrations", startTime);
|
|
208
|
+
let componentEntries = createVueEntryFormComponentRegistrations(componentRegistrations);
|
|
209
|
+
if (serviceInfo.serviceType === tooling_composers_1.ServiceTypes.WebApp) {
|
|
210
|
+
await (0, doc_1.generateComponentTypingsAndDoc)(componentRegistrations);
|
|
211
|
+
}
|
|
205
212
|
var resourceRegistry = $.composers.ResourceRegistry;
|
|
206
213
|
let resourceBundlesWithBuildOptions = resourceRegistry.getRegisteredResourceBundles(shared_1.convertManifestPathToEntryPath);
|
|
207
214
|
$.tooling.logTime("Found [" + resourceBundlesWithBuildOptions?.size + "] resource bundles", startTime);
|
|
@@ -217,7 +224,6 @@ function buildEntries(serve = false) {
|
|
|
217
224
|
console.log("debug " + res[0] + " has build options for paths " + resource.paths + " buildoptions: " + JSON.stringify(resource.buildOptions));
|
|
218
225
|
}
|
|
219
226
|
}
|
|
220
|
-
let componentEntries = createVueEntryFormRegistrations(componentRegistrations);
|
|
221
227
|
var entries = $.merge(componentEntries, resourceEntries);
|
|
222
228
|
if (checkDuplicateWebpackEntryPoints(entries)) {
|
|
223
229
|
$.tooling.log('Build manifests metadata have error that found duplicated resource path', $.tooling.LogTypes.Error);
|
|
@@ -252,248 +258,7 @@ function buildEntries(serve = false) {
|
|
|
252
258
|
}
|
|
253
259
|
});
|
|
254
260
|
}
|
|
255
|
-
|
|
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) {
|
|
261
|
+
function buildManifestMetadata(entries) {
|
|
497
262
|
return new Promise(function (resolve, reject) {
|
|
498
263
|
try {
|
|
499
264
|
var startTime = new Date().getTime();
|
|
@@ -580,7 +345,7 @@ function beforeBundleManifest(entries) {
|
|
|
580
345
|
// isRunBuildMetadata = !isEqual(entries, cachedEntries);
|
|
581
346
|
// }
|
|
582
347
|
// }
|
|
583
|
-
if ($.fs.existsSync(cachedEntriesPath)) {
|
|
348
|
+
if (!isBuildWebpackManifestOnly() && $.fs.existsSync(cachedEntriesPath)) {
|
|
584
349
|
let cachedEntries = require(cachedEntriesPath);
|
|
585
350
|
isRunBuildMetadata = !isEqual(entries, cachedEntries);
|
|
586
351
|
}
|
|
@@ -612,9 +377,14 @@ function beforeBundleManifest(entries) {
|
|
|
612
377
|
fsExtra.writeJsonSync(manifestPath, content);
|
|
613
378
|
}
|
|
614
379
|
});
|
|
615
|
-
|
|
380
|
+
buildManifestMetadata(entriesToBuild).then(() => {
|
|
616
381
|
fsExtra.ensureFileSync(cachedEntriesPath);
|
|
617
382
|
fsExtra.writeJsonSync(cachedEntriesPath, entries);
|
|
383
|
+
if (isBuildWebpackManifestOnly()) {
|
|
384
|
+
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");
|
|
385
|
+
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");
|
|
386
|
+
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");
|
|
387
|
+
}
|
|
618
388
|
resolve(entries);
|
|
619
389
|
});
|
|
620
390
|
}
|
|
@@ -754,6 +524,9 @@ function afterGenerateManifestsMetadata() {
|
|
|
754
524
|
.then(resolve, reject);
|
|
755
525
|
});
|
|
756
526
|
}
|
|
527
|
+
function isBuildWebpackManifestOnly() {
|
|
528
|
+
return process.argv?.find(argv => argv === "--webpackManifest") !== undefined;
|
|
529
|
+
}
|
|
757
530
|
function minifyBundles() {
|
|
758
531
|
return new Promise(function (resolve, reject) {
|
|
759
532
|
if (process.argv.length > 0 && process.argv.find(argv => argv === "--minify") !== undefined) {
|
|
@@ -816,6 +589,25 @@ function createVueWebpackConfig(currentEntry, entries, bundleOutputDir, viteHmrO
|
|
|
816
589
|
...referenceManifests,
|
|
817
590
|
extractCss,
|
|
818
591
|
new $.omniaWebpackPlugins.NamedModulesPlugin(buildModuleName()),
|
|
592
|
+
new webpack_plugin_1.default({
|
|
593
|
+
// filename: 'styles.[contenthash].css',
|
|
594
|
+
filename: `${Object.keys(entry)[0]}.css`, //"[name].css",
|
|
595
|
+
// get webpack mode and set value for dev
|
|
596
|
+
dev: false,
|
|
597
|
+
// Use statically generated CSS files and not runtime injected CSS.
|
|
598
|
+
// Even in development.
|
|
599
|
+
runtimeInjection: false,
|
|
600
|
+
// optional. default: 'x'
|
|
601
|
+
classNamePrefix: 'o',
|
|
602
|
+
// Required for CSS variable support
|
|
603
|
+
unstable_moduleResolution: {
|
|
604
|
+
// type: 'commonJS' | 'haste'
|
|
605
|
+
// default: 'commonJS'
|
|
606
|
+
type: 'commonJS',
|
|
607
|
+
// The absolute path to the root directory of your project
|
|
608
|
+
rootDir: __dirname,
|
|
609
|
+
},
|
|
610
|
+
}),
|
|
819
611
|
];
|
|
820
612
|
if (!buildOption.detectCircularDependencyOptions || buildOption.detectCircularDependencyOptions.disable !== true) {
|
|
821
613
|
plugins.unshift(new CircularDependencyPlugin({
|
|
@@ -888,10 +680,10 @@ function createVueWebpackConfig(currentEntry, entries, bundleOutputDir, viteHmrO
|
|
|
888
680
|
plugins.push(new $.omniaWebpackPlugins.ChunkAssets(function (compilation, fileName) {
|
|
889
681
|
chunkAsset(entries, compilation, fileName, viteHmrOption);
|
|
890
682
|
}));
|
|
891
|
-
let webpackEntries = {};
|
|
892
|
-
Object.keys(entry).forEach(name => {
|
|
893
|
-
|
|
894
|
-
})
|
|
683
|
+
// let webpackEntries = {};
|
|
684
|
+
// Object.keys(entry).forEach(name => {
|
|
685
|
+
// webpackEntries[name] = { import: entry[name] }
|
|
686
|
+
// })
|
|
895
687
|
return {
|
|
896
688
|
mode: 'production',
|
|
897
689
|
devtool: false,
|
|
@@ -919,7 +711,7 @@ function createVueWebpackConfig(currentEntry, entries, bundleOutputDir, viteHmrO
|
|
|
919
711
|
'@microsoft/signalr$': '@microsoft/signalr/dist/webworker/signalr.js',
|
|
920
712
|
}),
|
|
921
713
|
},
|
|
922
|
-
target: ['web', 'es2022'],
|
|
714
|
+
target: ['web', 'es2022'], // Will change ES6 when stop support IE11
|
|
923
715
|
output: {
|
|
924
716
|
//library: {
|
|
925
717
|
// type: "umd"
|
|
@@ -954,8 +746,8 @@ function createVueWebpackConfig(currentEntry, entries, bundleOutputDir, viteHmrO
|
|
|
954
746
|
}
|
|
955
747
|
return false;
|
|
956
748
|
},
|
|
957
|
-
// use: 'null-loader',
|
|
958
749
|
use: [
|
|
750
|
+
// 'null-loader',
|
|
959
751
|
{
|
|
960
752
|
loader: path_1.default.resolve(__dirname, $.isExtensionEnv ? '../webpack-loaders/ingore-vuetify-locale.js' : '../webpack-loaders/ingore-vuetify-locale.ts'),
|
|
961
753
|
}
|
|
@@ -1069,7 +861,7 @@ function createWebpackConfigForManifestMetadata(entry, metadataOutputDir) {
|
|
|
1069
861
|
var entensionId = getServiceId();
|
|
1070
862
|
return Object.assign({}, getBaseWebpackConfigForManifestMetadata(entry, metadataOutputDir), {
|
|
1071
863
|
plugins: [
|
|
1072
|
-
...buildReferenceManifestFromConfig(),
|
|
864
|
+
...buildReferenceManifestFromConfig(Object.keys(entry)[0]),
|
|
1073
865
|
new $.omniaWebpackPlugins.NamedModulesPlugin(buildModuleName()),
|
|
1074
866
|
new $.webpack.DllPlugin({
|
|
1075
867
|
entryOnly: false,
|
|
@@ -1439,12 +1231,17 @@ function buildReferenceManifest(currentEntry, entries) {
|
|
|
1439
1231
|
var manifests = [];
|
|
1440
1232
|
var dynamicReferenceManifests = [];
|
|
1441
1233
|
let buildOptions = getBuildOption();
|
|
1442
|
-
if (buildOptions && buildOptions.bundleOptions && buildOptions.bundleOptions.commonsChunk)
|
|
1443
|
-
return dynamicReferenceManifests.concat(buildReferenceManifestFromConfig());
|
|
1444
1234
|
var currentEntryName = Object.keys(currentEntry)[0];
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1235
|
+
if (buildOptions && buildOptions.bundleOptions && buildOptions.bundleOptions.commonsChunk)
|
|
1236
|
+
return dynamicReferenceManifests.concat(buildReferenceManifestFromConfig(currentEntryName));
|
|
1237
|
+
// exclude pre-built webpack manifest
|
|
1238
|
+
if ($.isExtensionEnv
|
|
1239
|
+
|| (currentEntryName.indexOf(fx_models_1.OmniaResourceManifests.Vendor.toString()) === -1
|
|
1240
|
+
&& currentEntryName.indexOf(vendorProdId) === -1
|
|
1241
|
+
// && currentEntryName.indexOf(OmniaResourceManifests.FxCore.toString()) === -1
|
|
1242
|
+
// && currentEntryName.indexOf(OmniaResourceManifests.Fx.toString()) === -1
|
|
1243
|
+
// && currentEntryName.indexOf(OmniaResourceManifests.FxUx.toString()) === -1
|
|
1244
|
+
)) {
|
|
1448
1245
|
Object.keys(entries).forEach((entryName) => {
|
|
1449
1246
|
if (entryName !== currentEntryName) {
|
|
1450
1247
|
if ($.fs.existsSync($.tooling.utils.root(outDirManifestMetadata + "/" + entryName + ".manifest.json"))) {
|
|
@@ -1458,14 +1255,14 @@ function buildReferenceManifest(currentEntry, entries) {
|
|
|
1458
1255
|
}
|
|
1459
1256
|
});
|
|
1460
1257
|
}
|
|
1461
|
-
manifests = buildReferenceManifestFromConfig().concat(dynamicReferenceManifests).concat(manifests);
|
|
1258
|
+
manifests = buildReferenceManifestFromConfig(currentEntryName).concat(dynamicReferenceManifests).concat(manifests);
|
|
1462
1259
|
return manifests;
|
|
1463
1260
|
}
|
|
1464
1261
|
function cleanUpComposer() {
|
|
1465
1262
|
$.composers.ManifestRegistry.clearState();
|
|
1466
1263
|
}
|
|
1467
1264
|
exports.cleanUpComposer = cleanUpComposer;
|
|
1468
|
-
function buildReferenceManifestFromConfig() {
|
|
1265
|
+
function buildReferenceManifestFromConfig(entryName) {
|
|
1469
1266
|
var manifests = [];
|
|
1470
1267
|
let buildOptions = getBuildOption();
|
|
1471
1268
|
if (buildOptions.reference) {
|
|
@@ -1477,6 +1274,17 @@ function buildReferenceManifestFromConfig() {
|
|
|
1477
1274
|
}));
|
|
1478
1275
|
}
|
|
1479
1276
|
}
|
|
1277
|
+
if (!isBuildWebpackManifestOnly() && buildOptions.webpackManifests) {
|
|
1278
|
+
for (let manifestPath of buildOptions.webpackManifests) {
|
|
1279
|
+
if (manifestPath.indexOf(entryName) === -1) {
|
|
1280
|
+
manifests.push(new $.omniaWebpackPlugins.DllReferencePlugin({
|
|
1281
|
+
context: $.tooling.utils.root(""),
|
|
1282
|
+
manifest: $.tooling.utils.root(manifestPath),
|
|
1283
|
+
// name: `md${++trackingModuleRefId}` //require('md5')(manifestPath)
|
|
1284
|
+
}));
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1480
1288
|
if ($.isExtensionEnv) {
|
|
1481
1289
|
_registeredReferenceManifests.forEach(manifest => {
|
|
1482
1290
|
manifests.push(new $.omniaWebpackPlugins.DllReferencePlugin({
|
|
@@ -1556,89 +1364,18 @@ function getServiceId() {
|
|
|
1556
1364
|
return serviceId;
|
|
1557
1365
|
}
|
|
1558
1366
|
exports.getServiceId = getServiceId;
|
|
1559
|
-
function
|
|
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) {
|
|
1367
|
+
function createVueEntryFormComponentRegistrations(registrations) {
|
|
1633
1368
|
let entryPaths = {};
|
|
1634
1369
|
for (let r of registrations) {
|
|
1635
|
-
if (r.componentOptions.entryPoint.endsWith('.
|
|
1370
|
+
if (r.componentOptions.entryPoint.endsWith('.tsx')
|
|
1371
|
+
|| r.componentOptions.entryPoint.endsWith('.vue')) {
|
|
1636
1372
|
let entryPointPath = (0, shared_1.convertManifestPathToEntryPath)(r.manifestPath, [r.componentOptions.entryPoint]);
|
|
1637
1373
|
let entryId = r.manifest.resourceId;
|
|
1638
1374
|
if (r.manifest.resourceName) {
|
|
1639
1375
|
entryId = `${r.manifest.resourceName}_${entryId}`;
|
|
1640
1376
|
}
|
|
1641
|
-
|
|
1377
|
+
r.componentOptions.entryPointPath = entryPointPath[0];
|
|
1378
|
+
entryPaths[entryId.toString()] = entryPointPath;
|
|
1642
1379
|
}
|
|
1643
1380
|
else {
|
|
1644
1381
|
$.tooling.log('The OmniaFx build system only supports .jsx, .vue and .tsx based components at the moment ', $.tooling.LogTypes.Error);
|
|
@@ -1958,35 +1695,3 @@ function sortString(a, b) {
|
|
|
1958
1695
|
}
|
|
1959
1696
|
return -1;
|
|
1960
1697
|
}
|
|
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
|
-
|
|
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;
|