MCPcopy Create free account
hub / github.com/ClydeTime/Surge / setItem

Method setItem

Script/Env.js:139–177  ·  view source on GitHub ↗
(keyName = new String, keyValue = new String)

Source from the content-addressed store, hash-verified

137 }
138
139 setItem(keyName = new String, keyValue = new String) {
140 let result = false
141 switch (typeof keyValue) {
142 case "object":
143 keyValue = JSON.stringify(keyValue)
144 break
145 default:
146 keyValue = String(keyValue)
147 break
148 }
149 switch (keyName.startsWith('@')) {
150 case true:
151 const { key, path } = keyName.match(/^@(?<key>[^.]+)(?:\.(?<path>.*))?$/)?.groups
152 keyName = key
153 let value = this.getItem(keyName, {})
154 if (typeof value !== "object") value = {}
155 this.lodash_set(value, path, keyValue)
156 result = this.setItem(keyName, value)
157 break
158 default:
159 switch (this.platform()) {
160 case 'Surge':
161 case 'Loon':
162 case 'Stash':
163 case 'Egern':
164 case 'Shadowrocket':
165 result = $persistentStore.write(keyValue, keyName)
166 break
167 case 'Quantumult X':
168 result =$prefs.setValueForKey(keyValue, keyName)
169 break
170 default:
171 result = this.data?.[keyName] || null
172 break
173 }
174 break
175 }
176 return result
177 }
178
179 async fetch(request = {} || "", option = {}) {
180 // 初始化参数

Callers

nothing calls this directly

Calls 5

stringifyMethod · 0.45
getItemMethod · 0.45
lodash_setMethod · 0.45
platformMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected