page2pdf_server 1.0.2 → 1.1.0

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 (48) hide show
  1. package/.babelrc +3 -3
  2. package/.eslintrc +32 -32
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +28 -28
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +15 -15
  5. package/.github/ISSUE_TEMPLATE/refactoring.md +15 -15
  6. package/.github/PULL_REQUEST_TEMPLATE.md +18 -18
  7. package/.github/stale.yml +17 -17
  8. package/.github/workflows/cd.yml +75 -75
  9. package/.github/workflows/ci.yml +36 -36
  10. package/.husky/pre-commit +6 -6
  11. package/.husky/pre-push +4 -4
  12. package/.prettierrc +8 -8
  13. package/.vscode/settings.json +3 -3
  14. package/LICENSE +17 -17
  15. package/README.md +54 -23
  16. package/ecosystem.config.js +41 -41
  17. package/jest.config.js +35 -35
  18. package/nodemon.json +6 -6
  19. package/package.json +8 -10
  20. package/src/CSS/345/205/274/345/256/271/346/200/247.txt +69 -0
  21. package/src/app.ts +7 -2
  22. package/src/components/home/controller.ts +2 -2
  23. package/src/components/home/pdfController.ts +9 -5
  24. package/src/components/home/services.ts +3 -3
  25. package/src/components/home/splitController.ts +9 -5
  26. package/src/components/home/validators.ts +1 -1
  27. package/src/db/home.ts +3 -3
  28. package/src/helpers/apiResponse.ts +1 -1
  29. package/src/helpers/error/TimeOutError.ts +1 -1
  30. package/src/helpers/loggers.ts +1 -1
  31. package/src/index.ts +4 -1
  32. package/src/middlewares/errorHandler.ts +1 -1
  33. package/src/routes/index.ts +2 -2
  34. package/src/types/request/config.ts +10 -5
  35. package/src/types/request/home.ts +1 -1
  36. package/src/utils/pdfgen.ts +66 -16
  37. package/src//346/265/213/350/257/225.txt +26 -2
  38. package/test//346/211/223/345/215/260/346/234/215/345/212/241.http +17 -0
  39. package/tsconfig.json +41 -41
  40. package/tslint.json +22 -22
  41. package/.idea/codeStyles/Project.xml +0 -58
  42. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  43. package/.idea/encodings.xml +0 -7
  44. package/.idea/inspectionProfiles/Project_Default.xml +0 -7
  45. package/.idea/modules.xml +0 -8
  46. package/.idea/page2pdf-server.iml +0 -12
  47. package/.idea/tenstack-starter-main.iml +0 -12
  48. package/.idea/vcs.xml +0 -6
@@ -5,9 +5,13 @@ import CDP from "chrome-remote-interface";
5
5
  import _ from "lodash";
6
6
  // @ts-ignore
7
7
  import config from "config";
8
- import CONFIG from "@/configEnv";
9
- import { ConfigRoot, FileTransform, MyPaperSize } from "@/types/request/config";
10
- import { filePathToUrl } from "@/utils/url";
8
+ import CONFIG from "../configEnv";
9
+ import {
10
+ ConfigRoot,
11
+ FileTransform,
12
+ MyPaperSize,
13
+ } from "../types/request/config";
14
+ import { filePathToUrl } from "../utils/url";
11
15
 
12
16
  //自定义纸张系列的:
13
17
  const paperSZs = config.get("size") as MyPaperSize[];
@@ -78,6 +82,7 @@ interface IRenderPdfOptions {
78
82
  landscape?: boolean;
79
83
  includeBackground?: boolean;
80
84
  windowSize?: boolean;
85
+ //纸张 英寸为单位的。 限制打印输出的用
81
86
  paperWidth?: number;
82
87
  paperHeight?: number;
83
88
  pageRanges?: string;
@@ -92,6 +97,7 @@ interface IRenderPdfOptions {
92
97
  marginBottom?: number;
93
98
  marginLeft?: number;
94
99
  marginRight?: number;
100
+ //有些 要打印 背景图片的需要?
95
101
  printBackground?: boolean;
96
102
  }
97
103
 
@@ -124,6 +130,7 @@ export class RenderPDF {
124
130
  * 奇数页还是偶数页的,双面打印对页码位置可能会调整位置的,而单独一个URL生成pdf时刻有可能没法就一定能够正确打印页码文字的是定位位置啊。抛弃支持:纯静态html横竖方向混合的场景,独立转换抽取部分纸张到过渡的pdf或拆解组合来做。
125
131
  * 还是考虑:保留第一阶段页眉页脚的打印能力,但是仅仅针对:特殊url:file[url:{ 只能是独立的页码编码和页码合计数独自计数,不涉及到其它的URL的 }],双面打印:页码只能放在中间位置为好,页码必须从第一页开始编码的,而且这种情况目标是不采用叠加页眉页脚两次pdf方案(一次性,不提取出CSS纸张方向)。
126
132
  * 最终采用引入reverseRanges参数设置部分纸张反转纸张方向,需要配置某某页并和CSS打印第一阶段生成的pdf能够吻合纸张方向的话,就能确保页眉页脚叠加正常位置。这里步骤就免于处理页眉页脚的生成了。
133
+ * CDP【Target】才是开启URL的。浏览器初始化; Page是打印输出的。
127
134
  * */
128
135
  async renderPdf(task: ConfigRoot<FileTransform>, tsobj: FileTransform) {
129
136
  let options = {} as IRenderPdfOptions;
@@ -139,6 +146,7 @@ export class RenderPDF {
139
146
  const { CDPclient, targetId } = await this.newTabOrPage(
140
147
  this.getCDPhostPort(),
141
148
  url,
149
+ tsobj.brwidth,
142
150
  );
143
151
  // await RenderPDF.newTabOrPage(this.getCDPhostPort(), url);
144
152
  // const client = await CDP({ host: this.host, port: this.port });
@@ -343,7 +351,9 @@ export class RenderPDF {
343
351
  // renderer.killChrome();
344
352
  }
345
353
 
346
- /**关键的: 某一个url的转换步骤 */
354
+ /**关键的: 某一个url的转换步骤
355
+ * @param tsobj 每一个独立URL生成 FileTransform 配置的
356
+ * */
347
357
  async generateSinglePdf(
348
358
  tsobj: FileTransform,
349
359
  task: ConfigRoot<FileTransform>,
@@ -512,7 +522,9 @@ export class RenderPDF {
512
522
  return ret;
513
523
  }
514
524
 
515
- /**汇总步骤入口: 前提 :前面已经生成独立的多个pdf */
525
+ /**汇总步骤入口: 前提 :前面已经生成独立的多个pdf
526
+ * 另外 还有await renderer.newTabOrPage(/ renderer.yemeiyejiaoPageGen( 是用于生成页眉页脚的每一页都有独立临时pdf。
527
+ * */
516
528
  static async MergeAllPdfs(
517
529
  task: ConfigRoot<FileTransform>,
518
530
  options: IRenderPdfOptions,
@@ -737,12 +749,12 @@ export class RenderPDF {
737
749
  headerTemplate0 = headerTemplate0?.replace("-NOT_DISPLAY-", "");
738
750
  headerTemplate0 = headerTemplate0
739
751
  ?.replace(
740
- "${pageNumber}",
752
+ "~pageNumber~",
741
753
  tsobj.roman && pageNumber > 0 && pageNumber < 13
742
754
  ? ROMA_NUMS[pageNumber]
743
755
  : "" + pageNumber,
744
756
  )
745
- .replace("${totalPages}", "" + totalPages);
757
+ .replace("~totalPages~", "" + totalPages);
746
758
  }
747
759
  options.headerTemplate = headerTemplate0;
748
760
  let footerTemplate0;
@@ -769,12 +781,12 @@ export class RenderPDF {
769
781
  footerTemplate0 = footerTemplate0?.replace("-NOT_DISPLAY-", "");
770
782
  footerTemplate0 = footerTemplate0
771
783
  ?.replace(
772
- "${pageNumber}",
784
+ "~pageNumber~",
773
785
  tsobj.roman && pageNumber > 0 && pageNumber < 13
774
786
  ? ROMA_NUMS[pageNumber]
775
787
  : "" + pageNumber,
776
788
  )
777
- .replace("${totalPages}", "" + totalPages);
789
+ .replace("~totalPages~", "" + totalPages);
778
790
  }
779
791
  options.footerTemplate = footerTemplate0;
780
792
 
@@ -792,16 +804,17 @@ export class RenderPDF {
792
804
  return null;
793
805
  }
794
806
 
795
- /**直接嵌入用户打开的浏览器的模式下,独立的开启新的浏览器窗口需要:
796
- * 问题:刚用createTarget立刻获取targetId(frameId)没法正常工作,
797
- * 这里await CDP(options)必须做两次!!:没法避免,否则干扰用户窗口,要么新Tab没有实际准备好的。
798
- * */
799
- async newTabOrPage(options: CDPbeginParam, url: string) {
807
+ async newTabPageInner(options: CDPbeginParam, url: string, brwidth?: number) {
800
808
  const client1 = await CDP(options); // await CDP({ host: options.host, port: options.port });
801
- const { Target } = client1;
809
+ const { Target, Browser } = client1;
810
+ //页眉页脚也会开动新的Tab; 没尝试出来:用这个入口就可控制浏览器窗口的宽度的办法。
802
811
  await Target.createTarget({
803
812
  url: url,
804
813
  background: true,
814
+ width: 719, //无效:(headless chrome only)不算无头模式的,有展示交互式窗口啊。
815
+ newWindow: true,
816
+ // enableBeginFrameControl: true,
817
+ forTab: true,
805
818
  });
806
819
  //前端编码之escape、encodeURI对的, 和 encodeURIComponent
807
820
  const { targetInfos } = await Target.getTargets();
@@ -809,12 +822,49 @@ export class RenderPDF {
809
822
  //"type": "webview", iframe, background_page, ...
810
823
  return tab.type === "page" && tab.url === url;
811
824
  });
812
- client1.close(); //原先每次关闭的:
825
+ //targetId就是目标窗口的实例。
813
826
  if (!target.targetId) throw new Error("没开启窗口:" + url);
827
+ if (brwidth) {
828
+ //需要约束浏览器 来避免打印页数不正常的,web页面的动态布局导致的,打印结果太少太多页数。
829
+ const { windowId, bounds } = await Browser.getWindowForTarget({
830
+ targetId: target.targetId,
831
+ });
832
+ const objectWidth = brwidth;
833
+ const newbounds = {
834
+ ...bounds,
835
+ width: objectWidth,
836
+ windowState: "normal",
837
+ };
838
+ await Browser.setWindowBounds({ windowId, bounds: newbounds });
839
+ const { bounds: realBound } = await Browser.getWindowBounds({ windowId });
840
+ const newRealWidth = realBound?.width;
841
+ if (objectWidth !== newRealWidth)
842
+ throw new Error("开窗口宽度不适当:" + newRealWidth);
843
+ }
844
+ client1.close(); //原先每次关闭的:
814
845
  const client = await CDP(options);
846
+
815
847
  //这些用例简易网页:frameId实际等同targetId;因没有嵌套<iframe />标签的。
816
848
  return { CDPclient: client, targetId: target.targetId };
817
849
  }
850
+ /**直接嵌入用户打开的浏览器的模式下,独立的开启新的浏览器窗口需要:
851
+ * 问题:刚用createTarget立刻获取targetId(frameId)没法正常工作,
852
+ * 这里await CDP(options)必须做两次!!:没法避免,否则干扰用户窗口,要么新Tab没有实际准备好的。
853
+ * 另外入口是:页眉页脚是使用纯粹 静态的 yemeiyejiaoHtml 来生成的每一页的独立页眉页脚pdf再合并的,不需要考虑浏览器宽度大小会影响到(不是动态布局的内容)。
854
+ * */
855
+ async newTabOrPage(options: CDPbeginParam, url: string, brwidth?: number) {
856
+ //多尝试一次, 浏览器宽度设置可能不能一次性成功的。
857
+ for (let i = 0; i < 2; i++) {
858
+ try {
859
+ const result = await this.newTabPageInner(options, url, brwidth);
860
+ return result;
861
+ } catch (e) {
862
+ // @ts-ignore
863
+ if (!e.message.startsWith("开窗口宽度不适当:")) console.error(e);
864
+ }
865
+ }
866
+ throw new Error("开启窗口尝试2次失败:" + url);
867
+ }
818
868
  /**假如不是当前刚刚操作的Tab的话?:
819
869
  * */
820
870
  async closeTabOrPage(client: any, target: string) {
@@ -1,4 +1,4 @@
1
- 工程目录:page2pdf-server/执行 npm publish 发布到npm
1
+ 工具包需要发布,工程目录:page2pdf-server/执行 npm publish 发布到npm
2
2
  后端没有单步调试模式太不好了,原本直接start就能单步调试,后来不行了,jest来解决:
3
3
  __test__/./generatePdf.test.ts问题:jest用Run模式正常,可是若Debug模式单步调试的,.post(`/api/pdf`).send就会提前中止!原因xxxController容不下多个接口函数?
4
4
  /?有断点运行卡着的并且xxxController类里有两个函数的?提前中止啊;非得拆分两个文件。
@@ -171,6 +171,8 @@ headerTemplate = `<div style="position: relative; width:100%; text-align:center;
171
171
  <div style="position: absolute; width:100%; text-align: center; bottom: 5px;"><span class=title></div>
172
172
  <div style="position: absolute; text-align: right; bottom: 5px;right: 20px;">version: 1.0</div>
173
173
  </div>`;
174
+
175
+ 默认标题 '<div style=\\"position: absolute; width:100%; text-align: center; bottom: 5px;\\"><span id=\\"titlespan\\" class=title></div>',
174
176
  使用chrome, 不能以root账号直接使用 https://www.cnblogs.com/kk1893/p/14985512.html
175
177
  let browserOptions = { args: ['--no-sandbox', '--disable-setuid-sandbox'] };
176
178
  物理打印机系统对话框设置:可能能配置装订线宽度和页码输出的{套中套}可分拆却就不能文件合并。
@@ -241,4 +243,26 @@ package.json:: start 又能使用单步调试模式运行了,奇怪,为何
241
243
  }
242
244
  BD1CE5AD1D724197A177AC4E50DDB4A6
243
245
 
244
- 去掉bcrypt包 @mapbox/node-pre-gyp node-gyp 依賴python啊
246
+ 去掉bcrypt包 @mapbox/node-pre-gyp node-gyp 依賴python啊
247
+ useMeasure(dynctRef0)?.height 所获得尺寸实际针对屏幕的,在打印机场景该取值还是来自屏幕的,并非纸张打印语义的尺寸;没法测量打印时刻的div高度?。
248
+
249
+ 新电脑,不是管理员账户跑的开发环境,POST http://localhost:9389/api/pdf 出现error: Error: connect ECONNREFUSED 127.0.0.1:9872
250
+ 只好另外管理员用户启动浏览器窗口。当前打印服务器的为何却要调用管理员账户启动的浏览器?不能直接用当前用户启动浏览器,非要windows管理员窗口的。
251
+ 奇怪浏览器手动去打印必须勾选页眉页脚才正常,没选的表格最右边会不见了,但是打印服务器不受此困扰,两者看似能确保页数一致性的。
252
+ 去掉了: 没法在生产版本中用,没包报错
253
+ "devDependencies": {
254
+ "@types/module-alias": "^2.0.1",
255
+ "module-alias": "^2.2.3",
256
+ }
257
+ 不是module-alias的问题,而是node_modules在生产目录底下也不能缺少啊!直接拷贝也行! https://blog.csdn.net/qq_35624642/article/details/128960311
258
+ windows用户若非管理员账户的:桌面上的Chrome快捷方式右键点属性在“兼容性”设置中:必须勾选“管理员身份运行”!否则端口remote-debugging-port没开启。
259
+ 【浏览器有BUG】
260
+ 预览打印的,若没有勾选页眉页脚的话可能导致表格输出的右边边框被裁剪看不见表格右边线了,就只能勾选页眉页脚,但是我这个打印转换服务器没有这个毛病。
261
+ 但问题是:勾不勾选页眉页脚会不会影响到了实际打印输出的页数啊?目前还未发现这个影响存在的。
262
+ 如何限制打印时刻浏览器宽的:
263
+ 入口代码:src/utils/pdfgen.ts 的 async renderPdf(task: ConfigRoot<FileTransform>, tsobj: FileTransform) 浏览器打印主入口:
264
+ 【CDP文档】 https://chromedevtools.github.io/devtools-protocol/tot/Target/
265
+ 首先必须手动开启chrome浏览器;而且这个浏览器窗体宽度直接影响打印输出!可能会漏打,动态div测量调整布局问题。影响到浏览器其它用途体验。
266
+ yarn又失败: 无法访问上 https://registry.npmjs.org/
267
+ 问题:有些URL网页,一直在等待加载好,死等打印命令没结果,估计CDP依据页面的网络消息决定加载结束与否的。
268
+ 端口已经被占用,启动不能访问预定端口的:查进程 netstat -ano | findstr :9872 #找出 LISTENING 10972 =进程ID;杀掉
@@ -0,0 +1,17 @@
1
+ POST http://localhost:9389/api/pdf
2
+ Accept: application/json
3
+ Content-Type: application/json; charset=utf-8
4
+
5
+ {
6
+ "merge": true,
7
+ "name": "asjsak啊实打实2",
8
+ "lay": {
9
+ },
10
+ "files": [
11
+ {
12
+ "url": "http://192.168.1.102:3765/originalView/CR-JJ/ver/1/-3kfCWcBRx66P8YA7EOkXFJlcG9ydA/printAll",
13
+ "out": "横页脚的VS2"
14
+ }
15
+ ]
16
+ }
17
+ ###
package/tsconfig.json CHANGED
@@ -1,41 +1,41 @@
1
- {
2
- "compilerOptions": {
3
- /* Basic Options */
4
- "incremental": true,
5
- "target": "ESNext",
6
- "module": "commonjs",
7
- "outDir": "dist",
8
- "pretty": true,
9
- "removeComments": true,
10
-
11
- /* Strict Type-Checking Options */
12
- "strict": true,
13
- "noImplicitAny": true,
14
- "strictNullChecks": true,
15
- "strictFunctionTypes": true,
16
- "strictBindCallApply": true,
17
- "strictPropertyInitialization": true,
18
- "noImplicitThis": false,
19
- "alwaysStrict": true,
20
-
21
- /* Additional Checks */
22
- "noUnusedLocals": true,
23
- "noUnusedParameters": true,
24
- "noImplicitReturns": true,
25
- "noFallthroughCasesInSwitch": true,
26
-
27
- /* Module Resolution Options */
28
- "moduleResolution": "node",
29
- "esModuleInterop": true,
30
- "resolveJsonModule": true,
31
- "sourceMap": true,
32
- "forceConsistentCasingInFileNames": true,
33
- "types": ["jest", "node"],
34
- "baseUrl": "src",
35
- "paths": {
36
- "@/*": ["./*"]
37
- },
38
- },
39
- "include": ["src/**/*", "**/__tests__/**/*"],
40
- "exclude": ["node_modules"]
41
- }
1
+ {
2
+ "compilerOptions": {
3
+ /* Basic Options */
4
+ "incremental": true,
5
+ "target": "ESNext",
6
+ "module": "commonjs",
7
+ "outDir": "dist",
8
+ "pretty": true,
9
+ "removeComments": true,
10
+
11
+ /* Strict Type-Checking Options */
12
+ "strict": true,
13
+ "noImplicitAny": true,
14
+ "strictNullChecks": true,
15
+ "strictFunctionTypes": true,
16
+ "strictBindCallApply": true,
17
+ "strictPropertyInitialization": true,
18
+ "noImplicitThis": false,
19
+ "alwaysStrict": true,
20
+
21
+ /* Additional Checks */
22
+ "noUnusedLocals": true,
23
+ "noUnusedParameters": true,
24
+ "noImplicitReturns": true,
25
+ "noFallthroughCasesInSwitch": true,
26
+
27
+ /* Module Resolution Options */
28
+ "moduleResolution": "node",
29
+ "esModuleInterop": true,
30
+ "resolveJsonModule": true,
31
+ "sourceMap": true,
32
+ "forceConsistentCasingInFileNames": true,
33
+ "types": ["jest", "node"],
34
+ "baseUrl": "src",
35
+ "paths": {
36
+ "@/*": ["./*"]
37
+ },
38
+ },
39
+ "include": ["src/**/*", "**/__tests__/**/*"],
40
+ "exclude": ["node_modules"]
41
+ }
package/tslint.json CHANGED
@@ -1,22 +1,22 @@
1
- {
2
- "defaultSeverity": "error",
3
- "extends": ["tslint:recommended"],
4
- "jsRules": {
5
- "object-literal-sort-keys": false
6
- },
7
- "rules": {
8
- "ordered-imports": false,
9
- "object-literal-sort-keys": false,
10
- "quotemark": [true, "single"],
11
- "trailing-comma": [
12
- true,
13
- {
14
- "multiline": "never",
15
- "singleline": "never"
16
- }
17
- ],
18
- "arrow-parens": [true, "ban-single-arg-parens"],
19
- "interface-name": [true, "never-prefix"]
20
- },
21
- "rulesDirectory": []
22
- }
1
+ {
2
+ "defaultSeverity": "error",
3
+ "extends": ["tslint:recommended"],
4
+ "jsRules": {
5
+ "object-literal-sort-keys": false
6
+ },
7
+ "rules": {
8
+ "ordered-imports": false,
9
+ "object-literal-sort-keys": false,
10
+ "quotemark": [true, "single"],
11
+ "trailing-comma": [
12
+ true,
13
+ {
14
+ "multiline": "never",
15
+ "singleline": "never"
16
+ }
17
+ ],
18
+ "arrow-parens": [true, "ban-single-arg-parens"],
19
+ "interface-name": [true, "never-prefix"]
20
+ },
21
+ "rulesDirectory": []
22
+ }
@@ -1,58 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <HTMLCodeStyleSettings>
4
- <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
5
- <option name="HTML_ENFORCE_QUOTES" value="true" />
6
- </HTMLCodeStyleSettings>
7
- <JSCodeStyleSettings version="0">
8
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
9
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
10
- <option name="FORCE_QUOTE_STYlE" value="true" />
11
- <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
12
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
13
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
14
- </JSCodeStyleSettings>
15
- <TypeScriptCodeStyleSettings version="0">
16
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
17
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
18
- <option name="FORCE_QUOTE_STYlE" value="true" />
19
- <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
20
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
21
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
22
- </TypeScriptCodeStyleSettings>
23
- <VueCodeStyleSettings>
24
- <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
25
- <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
26
- </VueCodeStyleSettings>
27
- <codeStyleSettings language="HTML">
28
- <option name="SOFT_MARGINS" value="80" />
29
- <indentOptions>
30
- <option name="INDENT_SIZE" value="2" />
31
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
32
- <option name="TAB_SIZE" value="2" />
33
- </indentOptions>
34
- </codeStyleSettings>
35
- <codeStyleSettings language="JavaScript">
36
- <option name="SOFT_MARGINS" value="80" />
37
- <indentOptions>
38
- <option name="INDENT_SIZE" value="2" />
39
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
40
- <option name="TAB_SIZE" value="2" />
41
- </indentOptions>
42
- </codeStyleSettings>
43
- <codeStyleSettings language="TypeScript">
44
- <option name="SOFT_MARGINS" value="80" />
45
- <indentOptions>
46
- <option name="INDENT_SIZE" value="2" />
47
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
48
- <option name="TAB_SIZE" value="2" />
49
- </indentOptions>
50
- </codeStyleSettings>
51
- <codeStyleSettings language="Vue">
52
- <option name="SOFT_MARGINS" value="80" />
53
- <indentOptions>
54
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
55
- </indentOptions>
56
- </codeStyleSettings>
57
- </code_scheme>
58
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
- </state>
5
- </component>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Encoding">
4
- <file url="file://$PROJECT_DIR$/eslintrc.json" charset="GBK" />
5
- <file url="file://$PROJECT_DIR$/src/testCSS.html" charset="GBK" />
6
- </component>
7
- </project>
@@ -1,7 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
- <inspection_tool class="TsLint" enabled="true" level="WARNING" enabled_by_default="true" />
6
- </profile>
7
- </component>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/tenstack-starter-main.iml" filepath="$PROJECT_DIR$/.idea/tenstack-starter-main.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
6
- <excludeFolder url="file://$MODULE_DIR$/temp" />
7
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
- </content>
9
- <orderEntry type="inheritedJdk" />
10
- <orderEntry type="sourceFolder" forTests="false" />
11
- </component>
12
- </module>
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
6
- <excludeFolder url="file://$MODULE_DIR$/temp" />
7
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
- </content>
9
- <orderEntry type="inheritedJdk" />
10
- <orderEntry type="sourceFolder" forTests="false" />
11
- </component>
12
- </module>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>