@lcap/nasl 4.5.0-beta.2 → 4.5.0-beta.3

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 (114) hide show
  1. package/out/generator/genBundleFiles.d.ts.map +1 -1
  2. package/out/generator/genBundleFiles.js +160 -23
  3. package/out/generator/genBundleFiles.js.map +1 -1
  4. package/out/generator/release-body/utils.d.ts +1 -1
  5. package/out/generator/release-body/utils.d.ts.map +1 -1
  6. package/out/generator/release-body/utils.js +8 -6
  7. package/out/generator/release-body/utils.js.map +1 -1
  8. package/out/generator/rspack-broswer/bundle.d.ts +24 -0
  9. package/out/generator/rspack-broswer/bundle.d.ts.map +1 -0
  10. package/out/generator/rspack-broswer/bundle.js +442 -0
  11. package/out/generator/rspack-broswer/bundle.js.map +1 -0
  12. package/out/generator/rspack-broswer/container/client-lazyload-template.d.ts +9 -0
  13. package/out/generator/rspack-broswer/container/client-lazyload-template.d.ts.map +1 -0
  14. package/out/generator/rspack-broswer/container/client-lazyload-template.js +88 -0
  15. package/out/generator/rspack-broswer/container/client-lazyload-template.js.map +1 -0
  16. package/out/generator/rspack-broswer/container/file-system.d.ts +12 -0
  17. package/out/generator/rspack-broswer/container/file-system.d.ts.map +1 -0
  18. package/out/generator/rspack-broswer/container/file-system.js +58 -0
  19. package/out/generator/rspack-broswer/container/file-system.js.map +1 -0
  20. package/out/generator/rspack-broswer/container/index.d.ts +3 -0
  21. package/out/generator/rspack-broswer/container/index.d.ts.map +1 -0
  22. package/out/generator/rspack-broswer/container/index.js +15 -0
  23. package/out/generator/rspack-broswer/container/index.js.map +1 -0
  24. package/out/generator/rspack-broswer/index.d.ts +3 -0
  25. package/out/generator/rspack-broswer/index.d.ts.map +1 -0
  26. package/out/generator/rspack-broswer/index.js +19 -0
  27. package/out/generator/rspack-broswer/index.js.map +1 -0
  28. package/out/generator/rspack-broswer/loaders/vue/index.d.ts +2 -0
  29. package/out/generator/rspack-broswer/loaders/vue/index.d.ts.map +1 -0
  30. package/out/generator/rspack-broswer/loaders/vue/index.js +228 -0
  31. package/out/generator/rspack-broswer/loaders/vue/index.js.map +1 -0
  32. package/out/generator/rspack-broswer/plugins/lcap/constant.d.ts +3 -0
  33. package/out/generator/rspack-broswer/plugins/lcap/constant.d.ts.map +1 -0
  34. package/out/generator/rspack-broswer/plugins/lcap/constant.js +213 -0
  35. package/out/generator/rspack-broswer/plugins/lcap/constant.js.map +1 -0
  36. package/out/generator/rspack-broswer/plugins/lcap/index.d.ts +6 -0
  37. package/out/generator/rspack-broswer/plugins/lcap/index.d.ts.map +1 -0
  38. package/out/generator/rspack-broswer/plugins/lcap/index.js +175 -0
  39. package/out/generator/rspack-broswer/plugins/lcap/index.js.map +1 -0
  40. package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.d.ts +10 -0
  41. package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.d.ts.map +1 -0
  42. package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.js +50 -0
  43. package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.js.map +1 -0
  44. package/out/generator/ui-library-declaration/material.d.ts.map +1 -1
  45. package/out/generator/ui-library-declaration/material.js +1 -0
  46. package/out/generator/ui-library-declaration/material.js.map +1 -1
  47. package/out/natural/exports/doctor/doctorView.d.ts +2 -2
  48. package/out/natural/exports/doctor/doctorView.d.ts.map +1 -1
  49. package/out/natural/exports/doctor/doctorView.js +32 -14
  50. package/out/natural/exports/doctor/doctorView.js.map +1 -1
  51. package/out/natural/exports/doctor/index.d.ts +1 -1
  52. package/out/natural/exports/doctor/index.d.ts.map +1 -1
  53. package/out/natural/exports/doctor/types.d.ts +16 -2
  54. package/out/natural/exports/doctor/types.d.ts.map +1 -1
  55. package/out/natural/exports/doctor/viewGraph.d.ts.map +1 -1
  56. package/out/natural/exports/doctor/viewGraph.js +46 -13
  57. package/out/natural/exports/doctor/viewGraph.js.map +1 -1
  58. package/out/natural/exports/nasl2Files.d.ts.map +1 -1
  59. package/out/natural/exports/nasl2Files.js +78 -8
  60. package/out/natural/exports/nasl2Files.js.map +1 -1
  61. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts +24 -0
  62. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts.map +1 -1
  63. package/out/natural/exports/transform2BatchActions/diff/nodes.js +35 -1
  64. package/out/natural/exports/transform2BatchActions/diff/nodes.js.map +1 -1
  65. package/out/natural/exports/transform2BatchActions/parse.d.ts.map +1 -1
  66. package/out/natural/exports/transform2BatchActions/parse.js +25 -2
  67. package/out/natural/exports/transform2BatchActions/parse.js.map +1 -1
  68. package/out/natural/exports/transform2BatchActions/types.d.ts +2 -2
  69. package/out/natural/exports/transform2BatchActions/types.d.ts.map +1 -1
  70. package/out/natural/parser/parseNaturalTS.d.ts.map +1 -1
  71. package/out/natural/parser/parseNaturalTS.js +45 -1
  72. package/out/natural/parser/parseNaturalTS.js.map +1 -1
  73. package/out/natural/parser/parseNaturalTSXView.d.ts.map +1 -1
  74. package/out/natural/parser/parseNaturalTSXView.js +23 -0
  75. package/out/natural/parser/parseNaturalTSXView.js.map +1 -1
  76. package/out/natural/transforms/transform2AuthLogic.d.ts +4 -0
  77. package/out/natural/transforms/transform2AuthLogic.d.ts.map +1 -0
  78. package/out/natural/transforms/transform2AuthLogic.js +116 -0
  79. package/out/natural/transforms/transform2AuthLogic.js.map +1 -0
  80. package/out/natural/transforms/transform2Enum.d.ts.map +1 -1
  81. package/out/natural/transforms/transform2Enum.js +5 -1
  82. package/out/natural/transforms/transform2Enum.js.map +1 -1
  83. package/out/natural/transforms/transform2ExportInterface.d.ts +3 -0
  84. package/out/natural/transforms/transform2ExportInterface.d.ts.map +1 -0
  85. package/out/natural/transforms/transform2ExportInterface.js +96 -0
  86. package/out/natural/transforms/transform2ExportInterface.js.map +1 -0
  87. package/out/natural/transforms/transform2Logic.d.ts.map +1 -1
  88. package/out/natural/transforms/transform2Logic.js +4 -28
  89. package/out/natural/transforms/transform2Logic.js.map +1 -1
  90. package/out/natural/transforms/transform2LogicItem.d.ts +7 -2
  91. package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
  92. package/out/natural/transforms/transform2LogicItem.js +61 -10
  93. package/out/natural/transforms/transform2LogicItem.js.map +1 -1
  94. package/out/natural/transforms/transform2OverriddenLogic.d.ts +3 -0
  95. package/out/natural/transforms/transform2OverriddenLogic.d.ts.map +1 -0
  96. package/out/natural/transforms/transform2OverriddenLogic.js +83 -0
  97. package/out/natural/transforms/transform2OverriddenLogic.js.map +1 -0
  98. package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -1
  99. package/out/natural/transforms/utils/parseDecorator.js +12 -0
  100. package/out/natural/transforms/utils/parseDecorator.js.map +1 -1
  101. package/out/natural/transforms/utils/parseLogicBody.d.ts +17 -0
  102. package/out/natural/transforms/utils/parseLogicBody.d.ts.map +1 -0
  103. package/out/natural/transforms/utils/parseLogicBody.js +47 -0
  104. package/out/natural/transforms/utils/parseLogicBody.js.map +1 -0
  105. package/out/natural/utils/nasl-file-types.d.ts.map +1 -1
  106. package/out/natural/utils/nasl-file-types.js +28 -0
  107. package/out/natural/utils/nasl-file-types.js.map +1 -1
  108. package/out/server/naslServer.d.ts.map +1 -1
  109. package/out/server/naslServer.js +1 -0
  110. package/out/server/naslServer.js.map +1 -1
  111. package/out/service/storage/specTools.d.ts.map +1 -1
  112. package/out/service/storage/specTools.js +10 -7
  113. package/out/service/storage/specTools.js.map +1 -1
  114. package/package.json +14 -9
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var FileSystemPlugin_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.FileSystemPlugin = void 0;
11
+ const inversify_1 = require("inversify");
12
+ const nasl_unified_frontend_generator_1 = require("@lcap/nasl-unified-frontend-generator");
13
+ // @ts-ignore
14
+ const browser_1 = require("@rspack/browser");
15
+ let FileSystemPlugin = FileSystemPlugin_1 = class FileSystemPlugin {
16
+ constructor() {
17
+ this.vol = browser_1.builtinMemFs.volume;
18
+ }
19
+ read(path) {
20
+ if (this.vol.existsSync(path)) {
21
+ return this.vol.readFileSync(path);
22
+ }
23
+ return undefined;
24
+ }
25
+ write(path, content) {
26
+ let data = content;
27
+ // 浏览器环境下 ArrayBuffer 需要转换为 Buffer
28
+ if (content instanceof ArrayBuffer) {
29
+ data = Buffer.from(content);
30
+ }
31
+ // 确保父目录存在
32
+ const dirname = path.substring(0, path.lastIndexOf('/'));
33
+ if (dirname && !this.vol.existsSync(dirname)) {
34
+ this.vol.mkdirSync(dirname, { recursive: true });
35
+ }
36
+ // 使用标准文件系统 API
37
+ this.vol.writeFileSync(path, data);
38
+ }
39
+ remove(key) {
40
+ this.vol.unlinkSync(key);
41
+ }
42
+ toJSON() {
43
+ return this.vol.toJSON(undefined, undefined, undefined, true);
44
+ }
45
+ static install(container) {
46
+ // 卸载原来的FileSystemProvider
47
+ if (container.isBound(nasl_unified_frontend_generator_1.ServiceMetaKind.FileSystemProvider)) {
48
+ container.unbind(nasl_unified_frontend_generator_1.ServiceMetaKind.FileSystemProvider);
49
+ }
50
+ // 绑定新的FileSystemProvider
51
+ container.bind(nasl_unified_frontend_generator_1.ServiceMetaKind.FileSystemProvider).to(FileSystemPlugin_1).inSingletonScope();
52
+ }
53
+ };
54
+ exports.FileSystemPlugin = FileSystemPlugin;
55
+ exports.FileSystemPlugin = FileSystemPlugin = FileSystemPlugin_1 = __decorate([
56
+ (0, inversify_1.injectable)()
57
+ ], FileSystemPlugin);
58
+ //# sourceMappingURL=file-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../../../src/generator/rspack-broswer/container/file-system.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,yCAAkD;AAClD,2FAAuG;AACvG,aAAa;AACb,6CAA+C;AAIxC,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAAtB;QACG,QAAG,GAAG,sBAAY,CAAC,MAAM,CAAC;IAuCpC,CAAC;IAtCC,IAAI,CAAC,IAAY;QACf,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,CAAC,IAAY,EAAE,OAAsC;QACxD,IAAI,IAAI,GAAoB,OAA0B,CAAC;QAEvD,kCAAkC;QAClC,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;YACnC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,UAAU;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,SAAoB;QACjC,0BAA0B;QAC1B,IAAI,SAAS,CAAC,OAAO,CAAC,iDAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1D,SAAS,CAAC,MAAM,CAAC,iDAAe,CAAC,kBAAkB,CAAC,CAAC;QACvD,CAAC;QACD,yBAAyB;QACzB,SAAS,CAAC,IAAI,CAAC,iDAAe,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,kBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7F,CAAC;CACF,CAAA;AAxCY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,sBAAU,GAAE;GACA,gBAAgB,CAwC5B"}
@@ -0,0 +1,3 @@
1
+ import { Container } from 'inversify';
2
+ export declare function makeContainer(): Container;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generator/rspack-broswer/container/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAKtC,wBAAgB,aAAa,cAO5B"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeContainer = void 0;
4
+ const inversify_1 = require("inversify");
5
+ const nasl_unified_frontend_generator_1 = require("@lcap/nasl-unified-frontend-generator");
6
+ const file_system_1 = require("./file-system");
7
+ const client_lazyload_template_1 = require("./client-lazyload-template");
8
+ function makeContainer() {
9
+ let container = nasl_unified_frontend_generator_1.Vue3PresetPlugin.install(new inversify_1.Container());
10
+ file_system_1.FileSystemPlugin.install(container);
11
+ client_lazyload_template_1.ClientLazyloadTemplateBuilderPlugin.install(container);
12
+ return container;
13
+ }
14
+ exports.makeContainer = makeContainer;
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generator/rspack-broswer/container/index.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AACtC,2FAAyE;AACzE,+CAAiD;AACjD,yEAAiF;AAEjF,SAAgB,aAAa;IAC3B,IAAI,SAAS,GAAG,kDAAgB,CAAC,OAAO,CAAC,IAAI,qBAAS,EAAE,CAAC,CAAC;IAE1D,8BAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,8DAAmC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAPD,sCAOC"}
@@ -0,0 +1,3 @@
1
+ export * from './bundle';
2
+ export * from './container';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/rspack-broswer/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./bundle"), exports);
18
+ __exportStar(require("./container"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/rspack-broswer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,8CAA2B"}
@@ -0,0 +1,2 @@
1
+ export default function loader(source: any): string;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/generator/rspack-broswer/loaders/vue/index.js"],"names":[],"mappings":"AA4HA,oDAgGC"}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ /**
27
+ * 兼容浏览器端@rspack/browser的vue-loader
28
+ */
29
+ const browser_1 = require("@rspack/browser");
30
+ const compiler = __importStar(require("@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js"));
31
+ function genScriptCode(descriptor, scopeId, options, hasTemplate) {
32
+ if (!descriptor.script && !descriptor.scriptSetup) {
33
+ return 'const __default__ = {}';
34
+ }
35
+ try {
36
+ // 使用 compileScript 编译 script 和 script setup
37
+ // 关键:当有 template 时,不使用 inlineTemplate
38
+ const script = compiler.compileScript(descriptor, {
39
+ id: scopeId,
40
+ isProd: options.isProd || false,
41
+ inlineTemplate: false, // 始终分开编译,以便我们控制组装
42
+ templateOptions: hasTemplate ? {
43
+ id: scopeId,
44
+ scoped: descriptor.styles.some(s => s.scoped),
45
+ slotted: descriptor.slotted,
46
+ } : undefined,
47
+ });
48
+ // compileScript 返回的 content 包含所有必要的代码
49
+ let content = script.content;
50
+ // 对于 script setup,content 会包含 setup() 函数定义
51
+ // 我们需要确保正确导出这个定义
52
+ // 替换 export default 为变量赋值
53
+ content = content.replace(/\nexport default\s+/, '\nconst __default__ = ');
54
+ // 确保有 __default__ 定义
55
+ if (!content.includes('const __default__')) {
56
+ content += '\nconst __default__ = {};';
57
+ }
58
+ console.log('Vue Loader - Compiled script preview:', content.substring(0, 500));
59
+ return content;
60
+ }
61
+ catch (e) {
62
+ console.error('Script compilation error:', e);
63
+ return 'const __default__ = {}';
64
+ }
65
+ }
66
+ function genTemplateCode(descriptor, scopeId, options) {
67
+ if (!descriptor.template) {
68
+ return '';
69
+ }
70
+ try {
71
+ // 编译 template 成 render 函数
72
+ const templateResult = compiler.compileTemplate({
73
+ source: descriptor.template.content,
74
+ filename: descriptor.filename,
75
+ id: scopeId,
76
+ scoped: descriptor.styles.some(s => s.scoped),
77
+ slotted: descriptor.slotted,
78
+ isProd: options.isProd || false,
79
+ compilerOptions: {
80
+ mode: 'module',
81
+ ...options.compilerOptions,
82
+ },
83
+ });
84
+ if (templateResult.errors && templateResult.errors.length) {
85
+ console.error('Template compilation errors:', templateResult.errors);
86
+ templateResult.errors.forEach(err => {
87
+ console.error(' -', err);
88
+ });
89
+ }
90
+ if (templateResult.tips && templateResult.tips.length) {
91
+ templateResult.tips.forEach(tip => {
92
+ console.warn('Template tip:', tip);
93
+ });
94
+ }
95
+ return templateResult.code;
96
+ }
97
+ catch (e) {
98
+ console.error('Template compilation error:', e);
99
+ return '';
100
+ }
101
+ }
102
+ function genStyleCode(descriptor, scopeId, filename, loaderContext) {
103
+ if (!descriptor.styles || descriptor.styles.length === 0) {
104
+ return { imports: [], files: [] };
105
+ }
106
+ const imports = [];
107
+ const files = [];
108
+ descriptor.styles.forEach((style, i) => {
109
+ const scoped = style.scoped ? `[data-v-${scopeId}]` : '';
110
+ let content = style.content;
111
+ // 如果是 scoped,需要添加属性选择器(简化版)
112
+ if (scoped) {
113
+ content = content.replace(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g, `$1${scoped}$2`);
114
+ }
115
+ // 生成样式文件名
116
+ const ext = style.lang || 'css';
117
+ const styleFilename = `${filename}.${i}.${ext}`;
118
+ // 写入 memfs
119
+ try {
120
+ browser_1.builtinMemFs.volume.writeFileSync(styleFilename, content);
121
+ }
122
+ catch (e) {
123
+ console.error(`Vue Loader - Failed to write style to memfs:`, e);
124
+ }
125
+ // 生成 import 语句
126
+ imports.push(`import '${styleFilename}';`);
127
+ files.push({ filename: styleFilename, content });
128
+ });
129
+ return { imports, files };
130
+ }
131
+ function loader(source) {
132
+ let options = this.getOptions() || {};
133
+ const filename = this.resourcePath.replace(/\?.*$/, '');
134
+ const { descriptor, errors } = compiler.parse(source, {
135
+ filename,
136
+ sourceMap: false,
137
+ templateParseOptions: options.compilerOptions || {},
138
+ });
139
+ if (errors.length) {
140
+ console.error("Vue Loader - Parse errors:", errors);
141
+ errors.forEach(err => this.emitError(err));
142
+ return '';
143
+ }
144
+ // 生成唯一的 scope id
145
+ const scopeId = 'data-v-' + hashCode(filename);
146
+ const hasTemplate = !!descriptor.template;
147
+ const hasScriptSetup = !!descriptor.scriptSetup;
148
+ // 对于 script setup + template,使用 inlineTemplate 选项
149
+ // 让 compileScript 自动处理模板编译
150
+ let code = '';
151
+ // 添加注释说明
152
+ code += `/* Vue Component compiled by browser vue-loader */\n`;
153
+ code += `/* Source: ${filename} */\n\n`;
154
+ // 先处理样式
155
+ const styleResult = genStyleCode(descriptor, scopeId, filename, this);
156
+ if (styleResult.imports.length > 0) {
157
+ code += styleResult.imports.join('\n') + '\n\n';
158
+ }
159
+ if (hasScriptSetup && hasTemplate) {
160
+ // Script Setup + Template: 使用 inlineTemplate 让 compileScript 处理一切
161
+ try {
162
+ const script = compiler.compileScript(descriptor, {
163
+ id: scopeId,
164
+ isProd: options.isProd || false,
165
+ inlineTemplate: true, // 自动内联模板编译
166
+ templateOptions: {
167
+ scoped: descriptor.styles.some(s => s.scoped),
168
+ compilerOptions: options.compilerOptions || {},
169
+ },
170
+ });
171
+ // 转换 export default 为变量赋值
172
+ let content = script.content;
173
+ content = content.replace(/\nexport default\s+/, '\nconst __default__ = ');
174
+ if (!content.includes('const __default__')) {
175
+ content += '\nconst __default__ = {};';
176
+ }
177
+ code += content + '\n\n';
178
+ code += `__default__.__scopeId = "${scopeId}";\n`;
179
+ code += `__default__.__file = ${JSON.stringify(filename)};\n\n`;
180
+ code += `export default __default__;\n`;
181
+ }
182
+ catch (e) {
183
+ console.error('Script compilation with inline template error:', e);
184
+ code += 'export default {};\n';
185
+ }
186
+ }
187
+ else {
188
+ // 传统方式:分别编译 script 和 template
189
+ const scriptCode = genScriptCode(descriptor, scopeId, options, hasTemplate);
190
+ const templateCode = genTemplateCode(descriptor, scopeId, options);
191
+ code += scriptCode + '\n\n';
192
+ if (templateCode) {
193
+ code += templateCode + '\n\n';
194
+ }
195
+ // 组装组件
196
+ if (templateCode) {
197
+ code += `
198
+ // 组装组件
199
+ __default__.render = render;
200
+ __default__.__scopeId = "${scopeId}";
201
+ __default__.__file = ${JSON.stringify(filename)};
202
+
203
+ export default __default__;
204
+ `;
205
+ }
206
+ else {
207
+ code += `
208
+ __default__.__scopeId = "${scopeId}";
209
+ __default__.__file = ${JSON.stringify(filename)};
210
+
211
+ export default __default__;
212
+ `;
213
+ }
214
+ }
215
+ return code;
216
+ }
217
+ exports.default = loader;
218
+ // 简单的 hash 函数
219
+ function hashCode(str) {
220
+ let hash = 0;
221
+ for (let i = 0; i < str.length; i++) {
222
+ const char = str.charCodeAt(i);
223
+ hash = ((hash << 5) - hash) + char;
224
+ hash = hash & hash;
225
+ }
226
+ return Math.abs(hash).toString(36).substring(0, 8);
227
+ }
228
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/generator/rspack-broswer/loaders/vue/index.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export default lazyLoadCode;
2
+ declare const lazyLoadCode: "var LazyLoad = (function (doc) {\n var env,\n head,\n pending = {},\n pollCount = 0,\n queue = {\n css: [],\n js: []\n },\n styleSheets = doc.styleSheets;\n\n function createNode(name, attrs) {\n var node = doc.createElement(name),\n attr;\n for (attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n node.setAttribute(attr, attrs[attr]);\n }\n }\n return node;\n }\n\n function finish(type) {\n var p = pending[type],\n callback,\n urls;\n if (p) {\n callback = p.callback;\n urls = p.urls;\n urls.shift();\n pollCount = 0;\n if (!urls.length) {\n callback && callback.call(p.context, p.obj);\n pending[type] = null;\n queue[type].length && load(type);\n }\n }\n }\n\n function getEnv() {\n var ua = navigator.userAgent;\n env = {\n async: doc.createElement('script').async === true\n };\n (env.webkit = /AppleWebKit\\//.test(ua)) || (env.ie = /MSIE|Trident/.test(ua)) || (env.opera = /Opera/.test(ua)) || (env.gecko = /Gecko\\//.test(ua)) || (env.unknown = true);\n }\n\n function load(type, urls, callback, obj, context) {\n var _finish = function () {\n finish(type);\n },\n isCSS = type === 'css',\n nodes = [],\n i,\n len,\n node,\n p,\n pendingUrls,\n url;\n env || getEnv();\n if (urls) {\n urls = typeof urls === 'string' ? [urls] : urls.concat();\n if (isCSS || env.async || env.gecko || env.opera) {\n queue[type].push({\n urls: urls,\n callback: callback,\n obj: obj,\n context: context\n });\n } else {\n for (i = 0, len = urls.length; i < len; ++i) {\n queue[type].push({\n urls: [urls[i]],\n callback: i === len - 1 ? callback : null,\n obj: obj,\n context: context\n });\n }\n }\n }\n if (pending[type] || !(p = pending[type] = queue[type].shift())) {\n return;\n }\n head || (head = doc.head || doc.getElementsByTagName('head')[0]);\n pendingUrls = p.urls.concat();\n for (i = 0, len = pendingUrls.length; i < len; ++i) {\n url = pendingUrls[i];\n if (isCSS) {\n node = env.gecko\n ? createNode('style')\n : createNode('link', {\n href: url,\n rel: 'stylesheet'\n });\n } else {\n node = createNode('script', {\n src: url\n });\n node.async = false;\n }\n node.className = 'lazyload';\n node.setAttribute('charset', 'utf-8');\n if (env.ie && !isCSS && 'onreadystatechange' in node && !('draggable' in node)) {\n node.onreadystatechange = function () {\n if (/loaded|complete/.test(node.readyState)) {\n node.onreadystatechange = null;\n _finish();\n }\n };\n } else if (isCSS && (env.gecko || env.webkit)) {\n if (env.webkit) {\n p.urls[i] = node.href;\n pollWebKit();\n } else {\n node.innerHTML = '@import \"' + url + '\";';\n pollGecko(node);\n }\n } else {\n node.onload = node.onerror = _finish;\n }\n nodes.push(node);\n }\n for (i = 0, len = nodes.length; i < len; ++i) {\n head.appendChild(nodes[i]);\n }\n }\n\n function pollGecko(node) {\n var hasRules;\n try {\n hasRules = !!node.sheet.cssRules;\n } catch (ex) {\n pollCount += 1;\n if (pollCount < 200) {\n setTimeout(function () {\n pollGecko(node);\n }, 50);\n } else {\n hasRules && finish('css');\n }\n return;\n }\n finish('css');\n }\n\n function pollWebKit() {\n var css = pending.css,\n i;\n if (css) {\n i = styleSheets.length;\n while (--i >= 0) {\n if (styleSheets[i].href === css.urls[0]) {\n finish('css');\n break;\n }\n }\n pollCount += 1;\n if (css) {\n if (pollCount < 200) {\n setTimeout(pollWebKit, 50);\n } else {\n finish('css');\n }\n }\n }\n }\n function preload(url) {\n var asAttr = '';\n if (/\\.js$/.test(url)) {\n asAttr = 'script';\n } else if (/\\.css$/.test(url)) {\n asAttr = 'style';\n }\n var node = createNode('link', {\n href: url,\n as: asAttr,\n rel: 'preload'\n });\n head.appendChild(node);\n }\n return {\n css: function (urls, callback, obj, context) {\n load('css', urls, callback, obj, context);\n },\n js: function (urls, callback, obj, context) {\n load('js', urls, callback, obj, context);\n },\n preload: function (urls) {\n if (Object.prototype.toString.call(urls) === '[object Array]') {\n for (var i = 0; i < urls.length; i++) {\n urls[i] && preload(urls[i]);\n }\n } else {\n urls && preload(urls);\n }\n },\n reset: function () {\n env = undefined;\n head = undefined;\n pending = {};\n pollCount = 0;\n queue = {\n css: [],\n js: []\n };\n styleSheets = doc.styleSheets;\n }\n };\n })(document);";
3
+ //# sourceMappingURL=constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../../../src/generator/rspack-broswer/plugins/lcap/constant.js"],"names":[],"mappings":";AAAA,utLAgNgB"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lazyLoadCode = `var LazyLoad = (function (doc) {
4
+ var env,
5
+ head,
6
+ pending = {},
7
+ pollCount = 0,
8
+ queue = {
9
+ css: [],
10
+ js: []
11
+ },
12
+ styleSheets = doc.styleSheets;
13
+
14
+ function createNode(name, attrs) {
15
+ var node = doc.createElement(name),
16
+ attr;
17
+ for (attr in attrs) {
18
+ if (attrs.hasOwnProperty(attr)) {
19
+ node.setAttribute(attr, attrs[attr]);
20
+ }
21
+ }
22
+ return node;
23
+ }
24
+
25
+ function finish(type) {
26
+ var p = pending[type],
27
+ callback,
28
+ urls;
29
+ if (p) {
30
+ callback = p.callback;
31
+ urls = p.urls;
32
+ urls.shift();
33
+ pollCount = 0;
34
+ if (!urls.length) {
35
+ callback && callback.call(p.context, p.obj);
36
+ pending[type] = null;
37
+ queue[type].length && load(type);
38
+ }
39
+ }
40
+ }
41
+
42
+ function getEnv() {
43
+ var ua = navigator.userAgent;
44
+ env = {
45
+ async: doc.createElement('script').async === true
46
+ };
47
+ (env.webkit = /AppleWebKit\\//.test(ua)) || (env.ie = /MSIE|Trident/.test(ua)) || (env.opera = /Opera/.test(ua)) || (env.gecko = /Gecko\\//.test(ua)) || (env.unknown = true);
48
+ }
49
+
50
+ function load(type, urls, callback, obj, context) {
51
+ var _finish = function () {
52
+ finish(type);
53
+ },
54
+ isCSS = type === 'css',
55
+ nodes = [],
56
+ i,
57
+ len,
58
+ node,
59
+ p,
60
+ pendingUrls,
61
+ url;
62
+ env || getEnv();
63
+ if (urls) {
64
+ urls = typeof urls === 'string' ? [urls] : urls.concat();
65
+ if (isCSS || env.async || env.gecko || env.opera) {
66
+ queue[type].push({
67
+ urls: urls,
68
+ callback: callback,
69
+ obj: obj,
70
+ context: context
71
+ });
72
+ } else {
73
+ for (i = 0, len = urls.length; i < len; ++i) {
74
+ queue[type].push({
75
+ urls: [urls[i]],
76
+ callback: i === len - 1 ? callback : null,
77
+ obj: obj,
78
+ context: context
79
+ });
80
+ }
81
+ }
82
+ }
83
+ if (pending[type] || !(p = pending[type] = queue[type].shift())) {
84
+ return;
85
+ }
86
+ head || (head = doc.head || doc.getElementsByTagName('head')[0]);
87
+ pendingUrls = p.urls.concat();
88
+ for (i = 0, len = pendingUrls.length; i < len; ++i) {
89
+ url = pendingUrls[i];
90
+ if (isCSS) {
91
+ node = env.gecko
92
+ ? createNode('style')
93
+ : createNode('link', {
94
+ href: url,
95
+ rel: 'stylesheet'
96
+ });
97
+ } else {
98
+ node = createNode('script', {
99
+ src: url
100
+ });
101
+ node.async = false;
102
+ }
103
+ node.className = 'lazyload';
104
+ node.setAttribute('charset', 'utf-8');
105
+ if (env.ie && !isCSS && 'onreadystatechange' in node && !('draggable' in node)) {
106
+ node.onreadystatechange = function () {
107
+ if (/loaded|complete/.test(node.readyState)) {
108
+ node.onreadystatechange = null;
109
+ _finish();
110
+ }
111
+ };
112
+ } else if (isCSS && (env.gecko || env.webkit)) {
113
+ if (env.webkit) {
114
+ p.urls[i] = node.href;
115
+ pollWebKit();
116
+ } else {
117
+ node.innerHTML = '@import "' + url + '";';
118
+ pollGecko(node);
119
+ }
120
+ } else {
121
+ node.onload = node.onerror = _finish;
122
+ }
123
+ nodes.push(node);
124
+ }
125
+ for (i = 0, len = nodes.length; i < len; ++i) {
126
+ head.appendChild(nodes[i]);
127
+ }
128
+ }
129
+
130
+ function pollGecko(node) {
131
+ var hasRules;
132
+ try {
133
+ hasRules = !!node.sheet.cssRules;
134
+ } catch (ex) {
135
+ pollCount += 1;
136
+ if (pollCount < 200) {
137
+ setTimeout(function () {
138
+ pollGecko(node);
139
+ }, 50);
140
+ } else {
141
+ hasRules && finish('css');
142
+ }
143
+ return;
144
+ }
145
+ finish('css');
146
+ }
147
+
148
+ function pollWebKit() {
149
+ var css = pending.css,
150
+ i;
151
+ if (css) {
152
+ i = styleSheets.length;
153
+ while (--i >= 0) {
154
+ if (styleSheets[i].href === css.urls[0]) {
155
+ finish('css');
156
+ break;
157
+ }
158
+ }
159
+ pollCount += 1;
160
+ if (css) {
161
+ if (pollCount < 200) {
162
+ setTimeout(pollWebKit, 50);
163
+ } else {
164
+ finish('css');
165
+ }
166
+ }
167
+ }
168
+ }
169
+ function preload(url) {
170
+ var asAttr = '';
171
+ if (/\\.js$/.test(url)) {
172
+ asAttr = 'script';
173
+ } else if (/\\.css$/.test(url)) {
174
+ asAttr = 'style';
175
+ }
176
+ var node = createNode('link', {
177
+ href: url,
178
+ as: asAttr,
179
+ rel: 'preload'
180
+ });
181
+ head.appendChild(node);
182
+ }
183
+ return {
184
+ css: function (urls, callback, obj, context) {
185
+ load('css', urls, callback, obj, context);
186
+ },
187
+ js: function (urls, callback, obj, context) {
188
+ load('js', urls, callback, obj, context);
189
+ },
190
+ preload: function (urls) {
191
+ if (Object.prototype.toString.call(urls) === '[object Array]') {
192
+ for (var i = 0; i < urls.length; i++) {
193
+ urls[i] && preload(urls[i]);
194
+ }
195
+ } else {
196
+ urls && preload(urls);
197
+ }
198
+ },
199
+ reset: function () {
200
+ env = undefined;
201
+ head = undefined;
202
+ pending = {};
203
+ pollCount = 0;
204
+ queue = {
205
+ css: [],
206
+ js: []
207
+ };
208
+ styleSheets = doc.styleSheets;
209
+ }
210
+ };
211
+ })(document);`;
212
+ exports.default = lazyLoadCode;
213
+ //# sourceMappingURL=constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../../../../src/generator/rspack-broswer/plugins/lcap/constant.js"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgNL,CAAA;AAEhB,kBAAe,YAAY,CAAA"}
@@ -0,0 +1,6 @@
1
+ export default class LcapPlugin {
2
+ constructor(options: any);
3
+ options: any;
4
+ apply(compiler: any): void;
5
+ }
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/generator/rspack-broswer/plugins/lcap/index.js"],"names":[],"mappings":"AAKA;IACE,0BAEC;IADC,aAAsB;IAExB,2BAuBC;CACF"}