oipage 1.7.0-alpha.7 → 1.7.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 (99) hide show
  1. package/.github/FUNDING.yml +11 -11
  2. package/AUTHORS.txt +6 -6
  3. package/CHANGELOG +156 -159
  4. package/LICENSE +20 -20
  5. package/README.md +95 -95
  6. package/bin/WebSocket/decodeWsFrame.js +43 -43
  7. package/bin/WebSocket/encodeWsFrame.js +28 -28
  8. package/bin/WebSocket/headersToJSON.js +26 -26
  9. package/bin/WebSocket/index.js +80 -80
  10. package/bin/data/mineTypes.json +104 -104
  11. package/bin/disk.js +42 -42
  12. package/bin/help.js +45 -45
  13. package/bin/intercept.js +15 -15
  14. package/bin/network.js +21 -21
  15. package/bin/proxy.js +75 -75
  16. package/bin/run +129 -129
  17. package/bin/serve.d.ts +64 -64
  18. package/bin/serve.js +179 -179
  19. package/bin/template/404.html +186 -186
  20. package/bin/tools/deleteEmptyFolder.js +23 -23
  21. package/bin/tools/format.js +75 -75
  22. package/bin/tools/network.js +42 -42
  23. package/bin/tools/resolve404.js +83 -83
  24. package/bin/tools/resolveImport.js +88 -88
  25. package/bin/website-htmls/components/ui-select-file/index.html +7 -7
  26. package/bin/website-htmls/components/ui-select-file/index.js +37 -37
  27. package/bin/website-htmls/components/ui-select-file/index.scss +44 -44
  28. package/bin/website-htmls/dialogs/imageSize/index.html +54 -54
  29. package/bin/website-htmls/dialogs/imageSize/index.js +53 -53
  30. package/bin/website-htmls/dialogs/imageSize/index.scss +138 -138
  31. package/bin/website-htmls/dialogs/index.js +52 -52
  32. package/bin/website-htmls/images/addFile.svg +1 -1
  33. package/bin/website-htmls/images/img-to-pdf.svg +1 -1
  34. package/bin/website-htmls/index.html +17 -17
  35. package/bin/website-htmls/main.js +13 -13
  36. package/bin/website-htmls/pages/App/index.html +6 -6
  37. package/bin/website-htmls/pages/App/index.js +22 -22
  38. package/bin/website-htmls/pages/App/index.scss +43 -43
  39. package/bin/website-htmls/pages/appStore/index.html +24 -24
  40. package/bin/website-htmls/pages/appStore/index.js +19 -19
  41. package/bin/website-htmls/pages/appStore/index.scss +41 -41
  42. package/bin/website-htmls/pages/chart/index.html +8 -8
  43. package/bin/website-htmls/pages/chart/index.js +72 -72
  44. package/bin/website-htmls/pages/chart/index.scss +72 -72
  45. package/bin/website-htmls/pages/image-editor/index.html +27 -27
  46. package/bin/website-htmls/pages/image-editor/index.js +106 -106
  47. package/bin/website-htmls/pages/image-editor/index.scss +45 -45
  48. package/bin/website-htmls/pages/img-to-pdf/index.html +3 -3
  49. package/bin/website-htmls/pages/img-to-pdf/index.js +44 -44
  50. package/bin/website-htmls/pages/img-to-pdf/index.scss +4 -4
  51. package/bin/website-htmls/router.config.js +19 -19
  52. package/bin/website-htmls/styles/normalize.css +94 -94
  53. package/bin/website-plugins/intercept/chart.js +33 -33
  54. package/bin/website-plugins/intercept/getPackage.js +17 -17
  55. package/bin/website-plugins/intercept/head.js +8 -8
  56. package/bin/website-plugins/intercept/index.js +8 -8
  57. package/bin/website-plugins/intercept/oipage-vislite-intercept.js +30 -30
  58. package/bin/website-plugins/intercept/oipage-zipaper-intercept.js +36 -36
  59. package/bin/website-plugins/loader/index.js +11 -11
  60. package/bin/website-plugins/loader/oipage-html-loader.js +7 -7
  61. package/bin/website-plugins/loader/oipage-scss-loader.js +149 -149
  62. package/nodejs/animation/index.d.ts +19 -19
  63. package/nodejs/animation/index.js +112 -112
  64. package/nodejs/cmdlog/index.d.ts +20 -20
  65. package/nodejs/cmdlog/index.js +75 -75
  66. package/nodejs/disk/index.d.ts +47 -47
  67. package/nodejs/disk/index.js +165 -165
  68. package/nodejs/format/index.d.ts +29 -29
  69. package/nodejs/format/index.js +107 -107
  70. package/nodejs/json/index.d.ts +9 -9
  71. package/nodejs/json/index.js +206 -206
  72. package/nodejs/logform/index.d.ts +18 -18
  73. package/nodejs/logform/index.js +94 -94
  74. package/nodejs/reader/index.d.ts +32 -32
  75. package/nodejs/reader/index.js +20 -20
  76. package/nodejs/throttle/index.d.ts +30 -30
  77. package/nodejs/throttle/index.js +50 -50
  78. package/package.json +45 -45
  79. package/types/index.d.ts +2 -4
  80. package/web/XMLHttpRequest/index.d.ts +17 -17
  81. package/web/XMLHttpRequest/index.js +60 -60
  82. package/web/animation/index.d.ts +19 -19
  83. package/web/animation/index.js +112 -112
  84. package/web/format/index.d.ts +29 -29
  85. package/web/format/index.js +107 -107
  86. package/web/json/index.d.ts +9 -9
  87. package/web/json/index.js +206 -206
  88. package/web/onReady/index.d.ts +7 -7
  89. package/web/onReady/index.js +8 -8
  90. package/web/performChunk/index.d.ts +4 -4
  91. package/web/performChunk/index.js +19 -19
  92. package/web/reader/index.d.ts +32 -32
  93. package/web/reader/index.js +20 -20
  94. package/web/style/index.d.ts +21 -21
  95. package/web/style/index.js +19 -19
  96. package/web/throttle/index.d.ts +30 -30
  97. package/web/throttle/index.js +50 -50
  98. package/nodejs/remote/index.d.ts +0 -39
  99. package/nodejs/remote/index.js +0 -91
@@ -1,34 +1,34 @@
1
- const headFactory = require("./head.js");
2
-
3
- const head = headFactory();
4
-
5
- // 聊天
6
- module.exports = {
7
- test: /^\/chart\//,
8
- handler(request, response, wsHandler) {
9
- let url = decodeURIComponent(request.url);
10
-
11
- let requestData = "";
12
-
13
- request.on('data', (chunk) => {
14
- requestData += chunk;
15
- });
16
-
17
- request.on('end', () => {
18
-
19
- if (/sendMsg$/.test(url)) {
20
- wsHandler.notifyBrowser({
21
- payloadData: requestData
22
- });
23
- }
24
-
25
- head["Content-Type"] = "application/json;charset=utf-8";
26
- response.writeHead(200, head);
27
- response.write(JSON.stringify({
28
- code: "000000"
29
- }));
30
- response.end();
31
-
32
- });
33
- }
1
+ const headFactory = require("./head.js");
2
+
3
+ const head = headFactory();
4
+
5
+ // 聊天
6
+ module.exports = {
7
+ test: /^\/chart\//,
8
+ handler(request, response, wsHandler) {
9
+ let url = decodeURIComponent(request.url);
10
+
11
+ let requestData = "";
12
+
13
+ request.on('data', (chunk) => {
14
+ requestData += chunk;
15
+ });
16
+
17
+ request.on('end', () => {
18
+
19
+ if (/sendMsg$/.test(url)) {
20
+ wsHandler.notifyBrowser({
21
+ payloadData: requestData
22
+ });
23
+ }
24
+
25
+ head["Content-Type"] = "application/json;charset=utf-8";
26
+ response.writeHead(200, head);
27
+ response.write(JSON.stringify({
28
+ code: "000000"
29
+ }));
30
+ response.end();
31
+
32
+ });
33
+ }
34
34
  };
@@ -1,18 +1,18 @@
1
- const { readFileSync } = require("fs");
2
- const { join } = require("path");
3
- const { existsSync } = require("fs");
4
-
5
- module.exports = function (filpath) {
6
-
7
- let node_modulesPath = join(__dirname, "../../../node_modules");
8
-
9
- while (!existsSync(join(node_modulesPath, filpath)) && node_modulesPath != join(node_modulesPath, "../")) {
10
- node_modulesPath = join(node_modulesPath, "../");
11
- }
12
-
13
- let source = readFileSync(join(node_modulesPath, filpath), {
14
- encoding: "utf8"
15
- });
16
-
17
- return source;
1
+ const { readFileSync } = require("fs");
2
+ const { join } = require("path");
3
+ const { existsSync } = require("fs");
4
+
5
+ module.exports = function (filpath) {
6
+
7
+ let node_modulesPath = join(__dirname, "../../../node_modules");
8
+
9
+ while (!existsSync(join(node_modulesPath, filpath)) && node_modulesPath != join(node_modulesPath, "../")) {
10
+ node_modulesPath = join(node_modulesPath, "../");
11
+ }
12
+
13
+ let source = readFileSync(join(node_modulesPath, filpath), {
14
+ encoding: "utf8"
15
+ });
16
+
17
+ return source;
18
18
  };
@@ -1,9 +1,9 @@
1
- const pkg = require("../../../package.json");
2
-
3
- module.exports = function () {
4
- return {
5
- 'Access-Control-Allow-Origin': '*',
6
- 'Server': 'Powered by OIPage:website@' + pkg.version,
7
- 'Content-Type': 'text/plain;charset=utf-8'
8
- };
1
+ const pkg = require("../../../package.json");
2
+
3
+ module.exports = function () {
4
+ return {
5
+ 'Access-Control-Allow-Origin': '*',
6
+ 'Server': 'Powered by OIPage:website@' + pkg.version,
7
+ 'Content-Type': 'text/plain;charset=utf-8'
8
+ };
9
9
  };
@@ -1,9 +1,9 @@
1
- const OIPageZipaperIntercept = require("./oipage-zipaper-intercept.js");
2
- const OIPageVISLiteIntercept = require("./oipage-vislite-intercept.js");
3
- const ChartIntercept = require("./chart.js");
4
-
5
- module.exports = [
6
- OIPageZipaperIntercept,
7
- OIPageVISLiteIntercept,
8
- ChartIntercept
1
+ const OIPageZipaperIntercept = require("./oipage-zipaper-intercept.js");
2
+ const OIPageVISLiteIntercept = require("./oipage-vislite-intercept.js");
3
+ const ChartIntercept = require("./chart.js");
4
+
5
+ module.exports = [
6
+ OIPageZipaperIntercept,
7
+ OIPageVISLiteIntercept,
8
+ ChartIntercept
9
9
  ];
@@ -1,31 +1,31 @@
1
- const headFactory = require("./head.js");
2
- const getPackage = require("./getPackage.js");
3
-
4
- const head = headFactory();
5
-
6
- // VISLite库
7
- module.exports = {
8
- test: /^vislite$/,
9
- handler(request, response) {
10
- head["Content-Type"] = "application/javascript;charset=utf-8";
11
- head["ETag"] = "VISLite@v" + require("vislite/package.json").version;
12
-
13
- if (request.headers["if-none-match"] === head["ETag"]) {
14
- response.writeHead('304', head);
15
- response.end();
16
- console.log("<i> \x1b[1m\x1b[32m[OIPage-http-server] Cache File: VISLite\x1b[0m " + new Date().toLocaleString() + "\x1b[33m\x1b[1m 304\x1b[0m");;
17
- return;
18
- }
19
-
20
- response.writeHead(200, head);
21
-
22
- let source =getPackage("vislite/lib/index.umd.min.js");
23
-
24
- response.write(`let module = { exports: {} };
25
- let exports = module.exports;
26
- ${source}
27
- export let Canvas = module.exports.Canvas;
28
- `);
29
- response.end();
30
- }
1
+ const headFactory = require("./head.js");
2
+ const getPackage = require("./getPackage.js");
3
+
4
+ const head = headFactory();
5
+
6
+ // VISLite库
7
+ module.exports = {
8
+ test: /^vislite$/,
9
+ handler(request, response) {
10
+ head["Content-Type"] = "application/javascript;charset=utf-8";
11
+ head["ETag"] = "VISLite@v" + require("vislite/package.json").version;
12
+
13
+ if (request.headers["if-none-match"] === head["ETag"]) {
14
+ response.writeHead('304', head);
15
+ response.end();
16
+ console.log("<i> \x1b[1m\x1b[32m[OIPage-http-server] Cache File: VISLite\x1b[0m " + new Date().toLocaleString() + "\x1b[33m\x1b[1m 304\x1b[0m");;
17
+ return;
18
+ }
19
+
20
+ response.writeHead(200, head);
21
+
22
+ let source =getPackage("vislite/lib/index.umd.min.js");
23
+
24
+ response.write(`let module = { exports: {} };
25
+ let exports = module.exports;
26
+ ${source}
27
+ export let Canvas = module.exports.Canvas;
28
+ `);
29
+ response.end();
30
+ }
31
31
  };
@@ -1,37 +1,37 @@
1
- const headFactory = require("./head.js");
2
- const getPackage = require("./getPackage.js");
3
-
4
- const head = headFactory();
5
-
6
- // Zipaper框架
7
- module.exports = {
8
- test: /^zipaper$/,
9
- handler(request, response) {
10
- head["Content-Type"] = "application/javascript;charset=utf-8";
11
- head["ETag"] = "Zipaper@v" + require("zipaper/package.json").version;
12
-
13
- if (request.headers["if-none-match"] === head["ETag"]) {
14
- response.writeHead('304', head);
15
- response.end();
16
- console.log("<i> \x1b[1m\x1b[32m[OIPage-http-server] Cache File: Zipaper\x1b[0m " + new Date().toLocaleString() + "\x1b[33m\x1b[1m 304\x1b[0m");;
17
- return;
18
- }
19
-
20
- response.writeHead(200, head);
21
-
22
- let source = getPackage("zipaper/dist/Zipaper.min.js");
23
-
24
- response.write(`let module = { exports: {} };
25
- let exports = module.exports;
26
- ${source}
27
- export let createApp = exports.createApp;
28
- export let defineDirective = exports.defineDirective;
29
- export let defineElement = exports.defineElement;
30
- export let defineRouter = exports.defineRouter;
31
- export let ref = exports.ref;
32
- export let reactive = exports.reactive;
33
- export let watcher = exports.watcher;
34
- `);
35
- response.end();
36
- }
1
+ const headFactory = require("./head.js");
2
+ const getPackage = require("./getPackage.js");
3
+
4
+ const head = headFactory();
5
+
6
+ // Zipaper框架
7
+ module.exports = {
8
+ test: /^zipaper$/,
9
+ handler(request, response) {
10
+ head["Content-Type"] = "application/javascript;charset=utf-8";
11
+ head["ETag"] = "Zipaper@v" + require("zipaper/package.json").version;
12
+
13
+ if (request.headers["if-none-match"] === head["ETag"]) {
14
+ response.writeHead('304', head);
15
+ response.end();
16
+ console.log("<i> \x1b[1m\x1b[32m[OIPage-http-server] Cache File: Zipaper\x1b[0m " + new Date().toLocaleString() + "\x1b[33m\x1b[1m 304\x1b[0m");;
17
+ return;
18
+ }
19
+
20
+ response.writeHead(200, head);
21
+
22
+ let source = getPackage("zipaper/dist/Zipaper.min.js");
23
+
24
+ response.write(`let module = { exports: {} };
25
+ let exports = module.exports;
26
+ ${source}
27
+ export let createApp = exports.createApp;
28
+ export let defineDirective = exports.defineDirective;
29
+ export let defineElement = exports.defineElement;
30
+ export let defineRouter = exports.defineRouter;
31
+ export let ref = exports.ref;
32
+ export let reactive = exports.reactive;
33
+ export let watcher = exports.watcher;
34
+ `);
35
+ response.end();
36
+ }
37
37
  };
@@ -1,12 +1,12 @@
1
- const OIPageScssLoader = require("./oipage-scss-loader.js");
2
- const OIPageHtmlLoader = require("./oipage-html-loader.js");
3
-
4
- module.exports = {
5
- rules: [{
6
- test: /\.scss$/,
7
- use: OIPageScssLoader
8
- }, {
9
- test: /\.html$/,
10
- use: OIPageHtmlLoader
11
- }]
1
+ const OIPageScssLoader = require("./oipage-scss-loader.js");
2
+ const OIPageHtmlLoader = require("./oipage-html-loader.js");
3
+
4
+ module.exports = {
5
+ rules: [{
6
+ test: /\.scss$/,
7
+ use: OIPageScssLoader
8
+ }, {
9
+ test: /\.html$/,
10
+ use: OIPageHtmlLoader
11
+ }]
12
12
  };
@@ -1,8 +1,8 @@
1
- const { parseTemplate } = require("xhtml-to-json");
2
-
3
- module.exports = function (source) {
4
- if (this.entry) return source;
5
-
6
- this.setFileType("application/javascript");
7
- return `export default ${JSON.stringify(parseTemplate(source).toJson())}`;
1
+ const { parseTemplate } = require("xhtml-to-json");
2
+
3
+ module.exports = function (source) {
4
+ if (this.entry) return source;
5
+
6
+ this.setFileType("application/javascript");
7
+ return `export default ${JSON.stringify(parseTemplate(source).toJson())}`;
8
8
  };
@@ -1,150 +1,150 @@
1
- // 参考:https://github.com/zxl20070701/zxl20070701.github.io/blob/master/bin/loader/scss.js
2
- let toSelector = function (preSelectorArray, deep) {
3
- let selectors = preSelectorArray[0], i, j, k;
4
- for (i = 1; i < deep; i++) {
5
- let temp = [];
6
- for (j = 0; j < selectors.length; j++) {
7
- for (k = 0; k < preSelectorArray[i].length; k++) {
8
- temp.push(selectors[j] + preSelectorArray[i][k]);
9
- }
10
- }
11
- selectors = temp;
12
- }
13
- return "\n" + (selectors.join(',')) + "{\n";
14
- };
15
- let analyseBlock = function (source) {
16
- let i = -1, currentChar = null;
17
- let next = function () {
18
- currentChar = i++ < source.length - 1 ? source[i] : null;
19
- return currentChar;
20
- }
21
- let nextNValue = function (n) {
22
- return source.substring(i, n + i > source.length ? source.length : n + i);
23
- }
24
- let blocks = [];
25
- let currentBlock = "";
26
- next();
27
- while (true) {
28
- while (new RegExp("[\\x20\\t\\r\\n\\f]").test(currentChar)) {
29
- next();
30
- }
31
- if (currentChar == null) break;
32
- if (nextNValue(2) == '/*') {
33
-
34
- next();
35
- next();
36
- currentBlock = "/*";
37
-
38
- while (nextNValue(2) != '*/' && currentChar != null) {
39
- currentBlock += currentChar;
40
- next();
41
- }
42
- if (currentChar == null) {
43
- throw new Error('The comment is not closed.');
44
- }
45
- currentBlock += "*/";
46
- next();
47
- next();
48
- blocks.push({
49
- value: currentBlock,
50
- type: "comment-double"
51
- });
52
- }
53
- else if (nextNValue(2) == '//') {
54
- currentBlock = '';
55
-
56
- while (currentChar != '\n' && currentChar != null) {
57
- currentBlock += currentChar;
58
- next();
59
- }
60
-
61
- blocks.push({
62
- value: currentBlock,
63
- type: "comment-single"
64
- });
65
-
66
- }
67
- else if (currentChar == '}') {
68
-
69
- blocks.push({
70
- value: "}",
71
- type: "end"
72
- });
73
-
74
- next();
75
-
76
- }
77
- else {
78
-
79
- currentBlock = '';
80
- while (currentChar != '{' && currentChar != ';' && currentChar != null) {
81
- currentBlock += currentChar;
82
- next();
83
- }
84
- if (currentChar == null) {
85
- throw new Error('Statement or code block missing closure.');
86
- }
87
- blocks.push({
88
- value: currentBlock + currentChar,
89
- type: {
90
- '{': "begin",
91
- ';': 'statement'
92
- }[currentChar]
93
- });
94
- next();
95
- }
96
- }
97
- return blocks;
98
- };
99
- module.exports = function (source) {
100
- this.setFileType("application/javascript");
101
- let blocks = analyseBlock(source + "");
102
- let i, j, cssCode = "", preSelectorArray = [], deep = 0;
103
- for (i = 0; i < blocks.length; i++) {
104
- if (blocks[i].type == 'comment-double') {
105
- cssCode += blocks[i].value;
106
- }
107
- else if (blocks[i].type == 'comment-single') {
108
- cssCode += "\n/* " + blocks[i].value + " */\n";
109
- }
110
- else if (blocks[i].type == 'begin') {
111
- let preSplit = blocks[i].value.split(',');
112
- let preSelect = [];
113
- for (j = 0; j < preSplit.length; j++) {
114
- preSelect[j] = preSplit[j].replace(/\{$/, '').trim();
115
- if (/^&/.test(preSelect[j])) {
116
- preSelect[j] = preSelect[j].replace(/^&/, '');
117
- } else {
118
- preSelect[j] = " " + preSelect[j];
119
- }
120
- }
121
- preSelectorArray[deep] = preSelect;
122
- deep += 1;
123
- }
124
- else if (blocks[i].type == 'end') {
125
- deep -= 1;
126
- }
127
- else if (blocks[i].type == 'statement') {
128
- j = 1;
129
- let preType = blocks[i - j].type;
130
- while (['comment-double', 'comment-single'].indexOf(preType) > -1) {
131
- j += 1;
132
- preType = blocks[i - j].type;
133
- }
134
- if (['end', 'begin'].indexOf(preType) > -1) {
135
- cssCode += toSelector(preSelectorArray, deep);
136
- }
137
- cssCode += "\n" + blocks[i].value + "\n";
138
- j = 1;
139
- let nextType = blocks[i + j].type;
140
- while (['comment-double', 'comment-single'].indexOf(nextType) > -1) {
141
- j += 1;
142
- nextType = blocks[i + j].type;
143
- }
144
- if (['end', 'begin'].indexOf(nextType) > -1) {
145
- cssCode += "\n}\n";
146
- }
147
- }
148
- }
149
- return `export default ${JSON.stringify(cssCode)}`;
1
+ // 参考:https://github.com/zxl20070701/zxl20070701.github.io/blob/master/bin/loader/scss.js
2
+ let toSelector = function (preSelectorArray, deep) {
3
+ let selectors = preSelectorArray[0], i, j, k;
4
+ for (i = 1; i < deep; i++) {
5
+ let temp = [];
6
+ for (j = 0; j < selectors.length; j++) {
7
+ for (k = 0; k < preSelectorArray[i].length; k++) {
8
+ temp.push(selectors[j] + preSelectorArray[i][k]);
9
+ }
10
+ }
11
+ selectors = temp;
12
+ }
13
+ return "\n" + (selectors.join(',')) + "{\n";
14
+ };
15
+ let analyseBlock = function (source) {
16
+ let i = -1, currentChar = null;
17
+ let next = function () {
18
+ currentChar = i++ < source.length - 1 ? source[i] : null;
19
+ return currentChar;
20
+ }
21
+ let nextNValue = function (n) {
22
+ return source.substring(i, n + i > source.length ? source.length : n + i);
23
+ }
24
+ let blocks = [];
25
+ let currentBlock = "";
26
+ next();
27
+ while (true) {
28
+ while (new RegExp("[\\x20\\t\\r\\n\\f]").test(currentChar)) {
29
+ next();
30
+ }
31
+ if (currentChar == null) break;
32
+ if (nextNValue(2) == '/*') {
33
+
34
+ next();
35
+ next();
36
+ currentBlock = "/*";
37
+
38
+ while (nextNValue(2) != '*/' && currentChar != null) {
39
+ currentBlock += currentChar;
40
+ next();
41
+ }
42
+ if (currentChar == null) {
43
+ throw new Error('The comment is not closed.');
44
+ }
45
+ currentBlock += "*/";
46
+ next();
47
+ next();
48
+ blocks.push({
49
+ value: currentBlock,
50
+ type: "comment-double"
51
+ });
52
+ }
53
+ else if (nextNValue(2) == '//') {
54
+ currentBlock = '';
55
+
56
+ while (currentChar != '\n' && currentChar != null) {
57
+ currentBlock += currentChar;
58
+ next();
59
+ }
60
+
61
+ blocks.push({
62
+ value: currentBlock,
63
+ type: "comment-single"
64
+ });
65
+
66
+ }
67
+ else if (currentChar == '}') {
68
+
69
+ blocks.push({
70
+ value: "}",
71
+ type: "end"
72
+ });
73
+
74
+ next();
75
+
76
+ }
77
+ else {
78
+
79
+ currentBlock = '';
80
+ while (currentChar != '{' && currentChar != ';' && currentChar != null) {
81
+ currentBlock += currentChar;
82
+ next();
83
+ }
84
+ if (currentChar == null) {
85
+ throw new Error('Statement or code block missing closure.');
86
+ }
87
+ blocks.push({
88
+ value: currentBlock + currentChar,
89
+ type: {
90
+ '{': "begin",
91
+ ';': 'statement'
92
+ }[currentChar]
93
+ });
94
+ next();
95
+ }
96
+ }
97
+ return blocks;
98
+ };
99
+ module.exports = function (source) {
100
+ this.setFileType("application/javascript");
101
+ let blocks = analyseBlock(source + "");
102
+ let i, j, cssCode = "", preSelectorArray = [], deep = 0;
103
+ for (i = 0; i < blocks.length; i++) {
104
+ if (blocks[i].type == 'comment-double') {
105
+ cssCode += blocks[i].value;
106
+ }
107
+ else if (blocks[i].type == 'comment-single') {
108
+ cssCode += "\n/* " + blocks[i].value + " */\n";
109
+ }
110
+ else if (blocks[i].type == 'begin') {
111
+ let preSplit = blocks[i].value.split(',');
112
+ let preSelect = [];
113
+ for (j = 0; j < preSplit.length; j++) {
114
+ preSelect[j] = preSplit[j].replace(/\{$/, '').trim();
115
+ if (/^&/.test(preSelect[j])) {
116
+ preSelect[j] = preSelect[j].replace(/^&/, '');
117
+ } else {
118
+ preSelect[j] = " " + preSelect[j];
119
+ }
120
+ }
121
+ preSelectorArray[deep] = preSelect;
122
+ deep += 1;
123
+ }
124
+ else if (blocks[i].type == 'end') {
125
+ deep -= 1;
126
+ }
127
+ else if (blocks[i].type == 'statement') {
128
+ j = 1;
129
+ let preType = blocks[i - j].type;
130
+ while (['comment-double', 'comment-single'].indexOf(preType) > -1) {
131
+ j += 1;
132
+ preType = blocks[i - j].type;
133
+ }
134
+ if (['end', 'begin'].indexOf(preType) > -1) {
135
+ cssCode += toSelector(preSelectorArray, deep);
136
+ }
137
+ cssCode += "\n" + blocks[i].value + "\n";
138
+ j = 1;
139
+ let nextType = blocks[i + j].type;
140
+ while (['comment-double', 'comment-single'].indexOf(nextType) > -1) {
141
+ j += 1;
142
+ nextType = blocks[i + j].type;
143
+ }
144
+ if (['end', 'begin'].indexOf(nextType) > -1) {
145
+ cssCode += "\n}\n";
146
+ }
147
+ }
148
+ }
149
+ return `export default ${JSON.stringify(cssCode)}`;
150
150
  };
@@ -1,20 +1,20 @@
1
- interface animationResult {
2
-
3
- /**
4
- * 一个函数,调用该函数,可以提前结束动画
5
- */
6
- stop(): void
7
- }
8
-
9
- interface animationFun {
10
- (deep: number): void
11
- }
12
-
13
- /**
14
- * 轮询动画
15
- */
16
- export interface animationType {
17
- (doback: animationFun, duration?: number, callback?: animationFun): animationResult
18
- }
19
-
1
+ interface animationResult {
2
+
3
+ /**
4
+ * 一个函数,调用该函数,可以提前结束动画
5
+ */
6
+ stop(): void
7
+ }
8
+
9
+ interface animationFun {
10
+ (deep: number): void
11
+ }
12
+
13
+ /**
14
+ * 轮询动画
15
+ */
16
+ export interface animationType {
17
+ (doback: animationFun, duration?: number, callback?: animationFun): animationResult
18
+ }
19
+
20
20
  export let animation: animationType