xframelib 0.5.7 → 0.6.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.
package/dist/public/sw.js CHANGED
@@ -1,128 +1,128 @@
1
- /* global self ReadableStream Response */
2
-
3
- self.addEventListener('install', () => {
4
- self.skipWaiting()
5
- })
6
-
7
- self.addEventListener('activate', event => {
8
- event.waitUntil(self.clients.claim())
9
- })
10
-
11
- const map = new Map()
12
-
13
- // This should be called once per download
14
- // Each event has a dataChannel that the data will be piped through
15
- self.onmessage = event => {
16
- // We send a heartbeat every x secound to keep the
17
- // service worker alive if a transferable stream is not sent
18
- if (event.data === 'ping') {
19
- return
20
- }
21
-
22
- const data = event.data
23
- const downloadUrl = data.url || self.registration.scope + Math.random() + '/' + (typeof data === 'string' ? data : data.filename)
24
- const port = event.ports[0]
25
- const metadata = new Array(3) // [stream, data, port]
26
-
27
- metadata[1] = data
28
- metadata[2] = port
29
-
30
- // Note to self:
31
- // old streamsaver v1.2.0 might still use `readableStream`...
32
- // but v2.0.0 will always transfer the stream throught MessageChannel #94
33
- if (event.data.readableStream) {
34
- metadata[0] = event.data.readableStream
35
- } else if (event.data.transferringReadable) {
36
- port.onmessage = evt => {
37
- port.onmessage = null
38
- metadata[0] = evt.data.readableStream
39
- }
40
- } else {
41
- metadata[0] = createStream(port)
42
- }
43
-
44
- map.set(downloadUrl, metadata)
45
- port.postMessage({ download: downloadUrl })
46
- }
47
-
48
- function createStream (port) {
49
- // ReadableStream is only supported by chrome 52
50
- return new ReadableStream({
51
- start (controller) {
52
- // When we receive data on the messageChannel, we write
53
- port.onmessage = ({ data }) => {
54
- if (data === 'end') {
55
- return controller.close()
56
- }
57
-
58
- if (data === 'abort') {
59
- controller.error('Aborted the download')
60
- return
61
- }
62
-
63
- controller.enqueue(data)
64
- }
65
- },
66
- cancel () {
67
- console.log('user aborted')
68
- }
69
- })
70
- }
71
-
72
- self.onfetch = event => {
73
- const url = event.request.url
74
-
75
- // this only works for Firefox
76
- if (url.endsWith('/ping')) {
77
- return event.respondWith(new Response('pong'))
78
- }
79
-
80
- const hijacke = map.get(url)
81
-
82
- if (!hijacke) return null
83
-
84
- const [ stream, data, port ] = hijacke
85
-
86
- map.delete(url)
87
-
88
- // Not comfortable letting any user control all headers
89
- // so we only copy over the length & disposition
90
- const responseHeaders = new Headers({
91
- 'Content-Type': 'application/octet-stream; charset=utf-8',
92
-
93
- // To be on the safe side, The link can be opened in a iframe.
94
- // but octet-stream should stop it.
95
- 'Content-Security-Policy': "default-src 'none'",
96
- 'X-Content-Security-Policy': "default-src 'none'",
97
- 'X-WebKit-CSP': "default-src 'none'",
98
- 'X-XSS-Protection': '1; mode=block'
99
- })
100
-
101
- let headers = new Headers(data.headers || {})
102
-
103
- if (headers.has('Content-Length')) {
104
- responseHeaders.set('Content-Length', headers.get('Content-Length'))
105
- }
106
-
107
- if (headers.has('Content-Disposition')) {
108
- responseHeaders.set('Content-Disposition', headers.get('Content-Disposition'))
109
- }
110
-
111
- // data, data.filename and size should not be used anymore
112
- if (data.size) {
113
- console.warn('Depricated')
114
- responseHeaders.set('Content-Length', data.size)
115
- }
116
-
117
- let fileName = typeof data === 'string' ? data : data.filename
118
- if (fileName) {
119
- console.warn('Depricated')
120
- // Make filename RFC5987 compatible
121
- fileName = encodeURIComponent(fileName).replace(/['()]/g, escape).replace(/\*/g, '%2A')
122
- responseHeaders.set('Content-Disposition', "attachment; filename*=UTF-8''" + fileName)
123
- }
124
-
125
- event.respondWith(new Response(stream, { headers: responseHeaders }))
126
-
127
- port.postMessage({ debug: 'Download started' })
128
- }
1
+ /* global self ReadableStream Response */
2
+
3
+ self.addEventListener('install', () => {
4
+ self.skipWaiting()
5
+ })
6
+
7
+ self.addEventListener('activate', event => {
8
+ event.waitUntil(self.clients.claim())
9
+ })
10
+
11
+ const map = new Map()
12
+
13
+ // This should be called once per download
14
+ // Each event has a dataChannel that the data will be piped through
15
+ self.onmessage = event => {
16
+ // We send a heartbeat every x secound to keep the
17
+ // service worker alive if a transferable stream is not sent
18
+ if (event.data === 'ping') {
19
+ return
20
+ }
21
+
22
+ const data = event.data
23
+ const downloadUrl = data.url || self.registration.scope + Math.random() + '/' + (typeof data === 'string' ? data : data.filename)
24
+ const port = event.ports[0]
25
+ const metadata = new Array(3) // [stream, data, port]
26
+
27
+ metadata[1] = data
28
+ metadata[2] = port
29
+
30
+ // Note to self:
31
+ // old streamsaver v1.2.0 might still use `readableStream`...
32
+ // but v2.0.0 will always transfer the stream throught MessageChannel #94
33
+ if (event.data.readableStream) {
34
+ metadata[0] = event.data.readableStream
35
+ } else if (event.data.transferringReadable) {
36
+ port.onmessage = evt => {
37
+ port.onmessage = null
38
+ metadata[0] = evt.data.readableStream
39
+ }
40
+ } else {
41
+ metadata[0] = createStream(port)
42
+ }
43
+
44
+ map.set(downloadUrl, metadata)
45
+ port.postMessage({ download: downloadUrl })
46
+ }
47
+
48
+ function createStream (port) {
49
+ // ReadableStream is only supported by chrome 52
50
+ return new ReadableStream({
51
+ start (controller) {
52
+ // When we receive data on the messageChannel, we write
53
+ port.onmessage = ({ data }) => {
54
+ if (data === 'end') {
55
+ return controller.close()
56
+ }
57
+
58
+ if (data === 'abort') {
59
+ controller.error('Aborted the download')
60
+ return
61
+ }
62
+
63
+ controller.enqueue(data)
64
+ }
65
+ },
66
+ cancel () {
67
+ console.log('user aborted')
68
+ }
69
+ })
70
+ }
71
+
72
+ self.onfetch = event => {
73
+ const url = event.request.url
74
+
75
+ // this only works for Firefox
76
+ if (url.endsWith('/ping')) {
77
+ return event.respondWith(new Response('pong'))
78
+ }
79
+
80
+ const hijacke = map.get(url)
81
+
82
+ if (!hijacke) return null
83
+
84
+ const [ stream, data, port ] = hijacke
85
+
86
+ map.delete(url)
87
+
88
+ // Not comfortable letting any user control all headers
89
+ // so we only copy over the length & disposition
90
+ const responseHeaders = new Headers({
91
+ 'Content-Type': 'application/octet-stream; charset=utf-8',
92
+
93
+ // To be on the safe side, The link can be opened in a iframe.
94
+ // but octet-stream should stop it.
95
+ 'Content-Security-Policy': "default-src 'none'",
96
+ 'X-Content-Security-Policy': "default-src 'none'",
97
+ 'X-WebKit-CSP': "default-src 'none'",
98
+ 'X-XSS-Protection': '1; mode=block'
99
+ })
100
+
101
+ let headers = new Headers(data.headers || {})
102
+
103
+ if (headers.has('Content-Length')) {
104
+ responseHeaders.set('Content-Length', headers.get('Content-Length'))
105
+ }
106
+
107
+ if (headers.has('Content-Disposition')) {
108
+ responseHeaders.set('Content-Disposition', headers.get('Content-Disposition'))
109
+ }
110
+
111
+ // data, data.filename and size should not be used anymore
112
+ if (data.size) {
113
+ console.warn('Depricated')
114
+ responseHeaders.set('Content-Length', data.size)
115
+ }
116
+
117
+ let fileName = typeof data === 'string' ? data : data.filename
118
+ if (fileName) {
119
+ console.warn('Depricated')
120
+ // Make filename RFC5987 compatible
121
+ fileName = encodeURIComponent(fileName).replace(/['()]/g, escape).replace(/\*/g, '%2A')
122
+ responseHeaders.set('Content-Disposition', "attachment; filename*=UTF-8''" + fileName)
123
+ }
124
+
125
+ event.respondWith(new Response(stream, { headers: responseHeaders }))
126
+
127
+ port.postMessage({ debug: 'Download started' })
128
+ }
@@ -1,4 +1,4 @@
1
- import { ITokenInfo } from '../model/Token';
1
+ import { ITokenInfo } from '../model/IUserModel';
2
2
  import StorageHelper from '../utils/Storage';
3
3
  export declare const storageHelper: StorageHelper;
4
4
  /**
@@ -0,0 +1,15 @@
1
+ declare function toBytes(str: any): Uint8Array;
2
+ declare function toString(bytes: any): string;
3
+ declare function encrypt(data: any, key: any): any;
4
+ declare function encryptToString(data: any, key: any): string;
5
+ declare function decrypt(data: any, key: any): any;
6
+ declare function decryptToString(data: any, key: any): string;
7
+ declare const XXTEA: {
8
+ toBytes: typeof toBytes;
9
+ toString: typeof toString;
10
+ encrypt: typeof encrypt;
11
+ encryptToString: typeof encryptToString;
12
+ decrypt: typeof decrypt;
13
+ decryptToString: typeof decryptToString;
14
+ };
15
+ export default XXTEA;
@@ -15,3 +15,4 @@ export * from './BigFileDownload';
15
15
  export * from './IsTool';
16
16
  export * from './URLTool';
17
17
  export * from './CodeHelper';
18
+ export * from './XXTEA';
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "xframelib",
3
- "version": "0.5.7",
3
+ "version": "0.6.0",
4
4
  "description": "积累的前端开发基础库",
5
5
  "main": "dist/index.js",
6
6
  "common": "dist/index.cjs",
7
7
  "typings": "dist/index.d.ts",
8
8
  "scripts": {
9
- "dev": "vite",
9
+ "dev": "vite --port 8099",
10
10
  "build": "vite build",
11
11
  "lib": "rollup -c ",
12
12
  "serve": "vite preview",
@@ -34,26 +34,26 @@
34
34
  },
35
35
  "devDependencies": {
36
36
  "@rollup/plugin-alias": "^3.1.9",
37
- "@rollup/plugin-commonjs": "^21.0.3",
37
+ "@rollup/plugin-commonjs": "^22.0.0",
38
38
  "@rollup/plugin-json": "^4.1.0",
39
- "@rollup/plugin-node-resolve": "^13.1.3",
40
- "@rollup/plugin-typescript": "^8.3.1",
39
+ "@rollup/plugin-node-resolve": "^13.2.1",
40
+ "@rollup/plugin-typescript": "^8.3.2",
41
41
  "@types/streamsaver": "^2.0.1",
42
- "@vitejs/plugin-vue": "^2.2.4",
43
- "@vue/compiler-sfc": "^3.2.31",
44
- "esbuild": "^0.14.28",
42
+ "@vitejs/plugin-vue": "^2.3.1",
43
+ "@vue/compiler-sfc": "^3.2.33",
44
+ "esbuild": "^0.14.38",
45
45
  "rimraf": "^3.0.2",
46
46
  "rollup-plugin-copy": "^3.4.0",
47
- "rollup-plugin-esbuild": "^4.8.2",
47
+ "rollup-plugin-esbuild": "^4.9.1",
48
48
  "rollup-plugin-scss": "^3.0.0",
49
49
  "rollup-plugin-terser": "^7.0.2",
50
50
  "rollup-plugin-typescript2": "^0.31.2",
51
51
  "rollup-plugin-vue": "^6.0.0",
52
- "sass": "^1.49.9",
52
+ "sass": "^1.50.1",
53
53
  "typescript": "^4.6.3",
54
- "vite": "^2.8.6",
55
- "vue": "^3.2.31",
54
+ "vite": "^2.9.5",
55
+ "vue": "^3.2.33",
56
56
  "vue-router": "^4.0.14",
57
- "vue-tsc": "^0.33.9"
57
+ "vue-tsc": "^0.34.10"
58
58
  }
59
59
  }