next
Version:
The React Framework
68 lines (67 loc) • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
SERVER_REFERENCE_ID_LENGTH: null,
extractInfoFromServerReferenceId: null,
mightBeServerReferenceId: null,
omitUnusedArgs: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
SERVER_REFERENCE_ID_LENGTH: function() {
return SERVER_REFERENCE_ID_LENGTH;
},
extractInfoFromServerReferenceId: function() {
return extractInfoFromServerReferenceId;
},
mightBeServerReferenceId: function() {
return mightBeServerReferenceId;
},
omitUnusedArgs: function() {
return omitUnusedArgs;
}
});
const SERVER_REFERENCE_ID_LENGTH = 42;
function mightBeServerReferenceId(id) {
return id.length === SERVER_REFERENCE_ID_LENGTH;
}
function extractInfoFromServerReferenceId(id) {
const infoByte = parseInt(id.slice(0, 2), 16);
const typeBit = infoByte >> 7 & 0x1;
const argMask = infoByte >> 1 & 0x3f;
const restArgs = infoByte & 0x1;
const usedArgs = Array(6);
for(let index = 0; index < 6; index++){
const bitPosition = 5 - index;
const bit = argMask >> bitPosition & 0x1;
usedArgs[index] = bit === 1;
}
return {
type: typeBit === 1 ? 'use-cache' : 'server-action',
usedArgs: usedArgs,
hasRestArgs: restArgs === 1
};
}
function omitUnusedArgs(args, info) {
const filteredArgs = new Array(args.length);
let length = 0;
for(let index = 0; index < args.length; index++){
if (index < 6 && info.usedArgs[index] || // This assumes that the server reference info byte has the restArgs bit
// set to 1 if there are more than 6 args.
index >= 6 && info.hasRestArgs) {
filteredArgs[index] = args[index];
length = index + 1;
}
}
// Trim trailing unused args from the array.
filteredArgs.length = length;
return filteredArgs;
}
//# sourceMappingURL=server-reference-info.js.map