mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-06-27 03:11:24 +00:00
101 lines
2.3 KiB
JavaScript
101 lines
2.3 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
const {
|
|
prepareMessage
|
|
} = require("devtools/client/webconsole/new-console-output/utils/messages");
|
|
const { IdGenerator } = require("devtools/client/webconsole/new-console-output/utils/id-generator");
|
|
const { batchActions } = require("devtools/client/webconsole/new-console-output/actions/enhancers");
|
|
const {
|
|
MESSAGE_ADD,
|
|
MESSAGES_CLEAR,
|
|
MESSAGE_OPEN,
|
|
MESSAGE_CLOSE,
|
|
MESSAGE_TYPE,
|
|
MESSAGE_TABLE_RECEIVE,
|
|
} = require("../constants");
|
|
|
|
const defaultIdGenerator = new IdGenerator();
|
|
|
|
function messageAdd(packet, idGenerator = null) {
|
|
if (idGenerator == null) {
|
|
idGenerator = defaultIdGenerator;
|
|
}
|
|
let message = prepareMessage(packet, idGenerator);
|
|
const addMessageAction = {
|
|
type: MESSAGE_ADD,
|
|
message
|
|
};
|
|
|
|
if (message.type === MESSAGE_TYPE.CLEAR) {
|
|
return batchActions([
|
|
messagesClear(),
|
|
addMessageAction,
|
|
]);
|
|
}
|
|
return addMessageAction;
|
|
}
|
|
|
|
function messagesClear() {
|
|
return {
|
|
type: MESSAGES_CLEAR
|
|
};
|
|
}
|
|
|
|
function messageOpen(id) {
|
|
return {
|
|
type: MESSAGE_OPEN,
|
|
id
|
|
};
|
|
}
|
|
|
|
function messageClose(id) {
|
|
return {
|
|
type: MESSAGE_CLOSE,
|
|
id
|
|
};
|
|
}
|
|
|
|
function messageTableDataGet(id, client, dataType) {
|
|
return (dispatch) => {
|
|
let fetchObjectActorData;
|
|
if (["Map", "WeakMap", "Set", "WeakSet"].includes(dataType)) {
|
|
fetchObjectActorData = (cb) => client.enumEntries(cb);
|
|
} else {
|
|
fetchObjectActorData = (cb) => client.enumProperties({
|
|
ignoreNonIndexedProperties: dataType === "Array"
|
|
}, cb);
|
|
}
|
|
|
|
fetchObjectActorData(enumResponse => {
|
|
const {iterator} = enumResponse;
|
|
iterator.slice(0, iterator.count, sliceResponse => {
|
|
let {ownProperties} = sliceResponse;
|
|
dispatch(messageTableDataReceive(id, ownProperties));
|
|
});
|
|
});
|
|
};
|
|
}
|
|
|
|
function messageTableDataReceive(id, data) {
|
|
return {
|
|
type: MESSAGE_TABLE_RECEIVE,
|
|
id,
|
|
data
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
messageAdd,
|
|
messagesClear,
|
|
messageOpen,
|
|
messageClose,
|
|
messageTableDataGet,
|
|
};
|
|
|