extension-develop 2.0.0-beta.8 → 2.0.0-rc.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/add-hmr-accept-code.js +4 -3
- package/dist/depreacated-shadow-root.js +34 -0
- package/dist/deprecated-shadow-root.js +34 -0
- package/dist/ensure-hmr-for-scripts.js +2 -2
- package/dist/inject-chromium-client-loader.js +2 -2
- package/dist/inject-firefox-client-loader.js +3 -3
- package/dist/module.d.ts +2 -2
- package/dist/module.js +66 -104
- package/dist/resolver-loader.js +1 -1
- package/package.json +19 -27
- package/dist/extensions/safari-manager-extension/background.js +0 -58
- package/dist/extensions/safari-manager-extension/define-initial-tab.js +0 -67
- package/dist/extensions/safari-manager-extension/images/logo.png +0 -0
- package/dist/extensions/safari-manager-extension/manifest.json +0 -17
- package/dist/extensions/safari-manager-extension/pages/sakura-dark.css +0 -268
- package/dist/extensions/safari-manager-extension/pages/sakura.css +0 -267
- package/dist/extensions/safari-manager-extension/pages/welcome.html +0 -49
- package/dist/extensions/safari-manager-extension/pages/welcome.js +0 -34
- package/dist/extensions/safari-manager-extension/reload-service.js +0 -145
- package/dist/extensions/webkit-based-manager-extension/background.js +0 -58
- package/dist/extensions/webkit-based-manager-extension/define-initial-tab.js +0 -67
- package/dist/extensions/webkit-based-manager-extension/images/logo.png +0 -0
- package/dist/extensions/webkit-based-manager-extension/manifest.json +0 -17
- package/dist/extensions/webkit-based-manager-extension/pages/sakura-dark.css +0 -268
- package/dist/extensions/webkit-based-manager-extension/pages/sakura.css +0 -267
- package/dist/extensions/webkit-based-manager-extension/pages/welcome.html +0 -49
- package/dist/extensions/webkit-based-manager-extension/pages/welcome.js +0 -34
- package/dist/extensions/webkit-based-manager-extension/reload-service.js +0 -145
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
const TEN_SECONDS_MS = 10 * 1000
|
|
2
|
-
let webSocket = null
|
|
3
|
-
|
|
4
|
-
export async function connect() {
|
|
5
|
-
if (webSocket) {
|
|
6
|
-
// If already connected, do nothing
|
|
7
|
-
return
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
webSocket = new WebSocket('ws://localhost:__RELOAD_PORT__')
|
|
11
|
-
|
|
12
|
-
webSocket.onerror = (event) => {
|
|
13
|
-
console.error(`[Reload Service] Connection error: ${JSON.stringify(event)}`)
|
|
14
|
-
webSocket.close()
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
webSocket.onopen = () => {
|
|
18
|
-
console.info(`[Reload Service] Connection opened.`)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
webSocket.onmessage = async (event) => {
|
|
22
|
-
const message = JSON.parse(event.data)
|
|
23
|
-
|
|
24
|
-
if (message.status === 'serverReady') {
|
|
25
|
-
console.info('[Reload Service] Connection ready.')
|
|
26
|
-
await requestInitialLoadData()
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (message.changedFile) {
|
|
30
|
-
console.info(
|
|
31
|
-
`[Reload Service] Changes detected on ${message.changedFile}. Reloading extension...`
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
await messageAllExtensions(message.changedFile)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
webSocket.onclose = () => {
|
|
39
|
-
console.info('[Reload Service] Connection closed.')
|
|
40
|
-
webSocket = null
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export function disconnect() {
|
|
45
|
-
if (webSocket) {
|
|
46
|
-
webSocket.close()
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async function getDevExtensions() {
|
|
51
|
-
const allExtensions = await new Promise((resolve) => {
|
|
52
|
-
chrome.management.getAll(resolve)
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
return allExtensions.filter((extension) => {
|
|
56
|
-
return (
|
|
57
|
-
// Do not include itself
|
|
58
|
-
extension.id !== chrome.runtime.id &&
|
|
59
|
-
// Manager extension
|
|
60
|
-
extension.id !== 'hkklidinfhnfidkjiknmmbmcloigimco' &&
|
|
61
|
-
// Show only unpackaged extensions
|
|
62
|
-
extension.installType === 'development'
|
|
63
|
-
)
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
async function messageAllExtensions(changedFile) {
|
|
68
|
-
// Check if the external extension is ready
|
|
69
|
-
const isExtensionReady = await checkExtensionReadiness()
|
|
70
|
-
|
|
71
|
-
if (isExtensionReady) {
|
|
72
|
-
const devExtensions = await getDevExtensions()
|
|
73
|
-
const reloadAll = devExtensions.map((extension) => {
|
|
74
|
-
chrome.runtime.sendMessage(extension.id, {changedFile}, (response) => {
|
|
75
|
-
if (response) {
|
|
76
|
-
console.info('[Reload Service] Extension reloaded and ready.')
|
|
77
|
-
}
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
return true
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
await Promise.all(reloadAll)
|
|
84
|
-
} else {
|
|
85
|
-
console.info('[Reload Service] External extension is not ready.')
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
async function requestInitialLoadData() {
|
|
90
|
-
const devExtensions = await getDevExtensions()
|
|
91
|
-
|
|
92
|
-
const messagePromises = devExtensions.map(async (extension) => {
|
|
93
|
-
return await new Promise((resolve) => {
|
|
94
|
-
chrome.runtime.sendMessage(
|
|
95
|
-
extension.id,
|
|
96
|
-
{initialLoadData: true},
|
|
97
|
-
(response) => {
|
|
98
|
-
if (chrome.runtime.lastError) {
|
|
99
|
-
console.error(
|
|
100
|
-
`Error sending message to ${extension.id}: ${chrome.runtime.lastError.message}`
|
|
101
|
-
)
|
|
102
|
-
resolve(null)
|
|
103
|
-
} else {
|
|
104
|
-
resolve(response)
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
)
|
|
108
|
-
})
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
const responses = await Promise.all(messagePromises)
|
|
112
|
-
|
|
113
|
-
// We received the info from the use extension.
|
|
114
|
-
// All good, client is ready. Inform the server.
|
|
115
|
-
if (webSocket && webSocket.readyState === WebSocket.OPEN) {
|
|
116
|
-
const message = JSON.stringify({
|
|
117
|
-
status: 'clientReady',
|
|
118
|
-
data: responses[0]
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
webSocket.send(message)
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
async function checkExtensionReadiness() {
|
|
126
|
-
// Delay for 1 second
|
|
127
|
-
await delay(1000)
|
|
128
|
-
// Assume the extension is ready
|
|
129
|
-
return true
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
async function delay(ms) {
|
|
133
|
-
return await new Promise((resolve) => setTimeout(resolve, ms))
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export function keepAlive() {
|
|
137
|
-
const keepAliveIntervalId = setInterval(() => {
|
|
138
|
-
if (webSocket) {
|
|
139
|
-
webSocket.send(JSON.stringify({status: 'ping'}))
|
|
140
|
-
console.info('[Reload Service] Listening for changes...')
|
|
141
|
-
} else {
|
|
142
|
-
clearInterval(keepAliveIntervalId)
|
|
143
|
-
}
|
|
144
|
-
}, TEN_SECONDS_MS)
|
|
145
|
-
}
|