Giter VIP home page Giter VIP logo

console-feed's Introduction

Hi there πŸ‘‹ welcome to my profile :)

console-feed's People

Contributors

abdullahtariq1171 avatar abunsen avatar ambar avatar arthurdenner avatar ashifa454 avatar chrtze avatar dfsq avatar elrumordelaluz avatar giacomocerquone avatar iamgrawal avatar jooy2 avatar mikealowe-codesignal avatar moklick avatar mudssrali avatar mweststrate avatar nvh avatar pixelass avatar qsc-jhndnn avatar realpeha avatar rgov avatar ryum91 avatar samdenty avatar steve8708 avatar steveluscher avatar tomhooijenga avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

console-feed's Issues

Use with srcdoc

Issue:

console-feed does not seem to work with src-doc attribute.

Reproduction: https://codesandbox.io/s/5wx6qlox1n

When the same content is provided as src attribute (you can test by changing srcdoc to src=iframe.html), it shows logs.

Text and icon are misaligned when changing font size

When you change font size of the console, icons are not lined with text or in other words icons are not centered vertically. Changing Icon height with font size doesn't solve issue. I tried to multiply icon height with some number (like 1.5*fontsize) to align it vertically but it is not working for all sizes.

Here is demo

Support for console.group

Hey!

I can not find information in this repository about console.group and console.groupCollapsed

After using in my Sandbox and researching examples of use, I made a preliminary conclusion that there is no support for this functionalityπŸ˜₯

Whether such functionality is needed in this module and whether support for this will be added in the future?

Console is not re-rendering when trying to change font or theme

When trying to rerender the console the component the variant, BASE_FONT_FAMILY, BASE_FONT_SIZE are note getting affected.

<div style={{ backgroundColor: '#242424' }}>
            <Console
              style={{ fontFamily }}
              styles={{
                BASE_FONT_FAMILY: 'Cousine',
                BASE_FONT_SIZE: fontSize,
                OBJECT_VALUE_STRING_COLOR: '#D0273D',
                LOG_RESULT_COLOR: '#000000',
                BASE_COLOR: theme.toLowerCase() === 'light' ? '#000000' : '#ffffff',
                LOG_COLOR: theme.toLowerCase() === 'light' ? '#000000' : '#ffffff',
                BASE_BACKGROUND_COLOR: 'transparent',
                LOG_BACKGROUND: 'transparent',
              }}
              logs={this.state.logs} variant={theme.toLowerCase()} />
          </div>

theme can have values 'light' & 'dark'

Code breaks for objects created with Object.create(null)

When an object is created using Object.create(null) it does not contain properties that are inherited from Object for example hasOwnProperty or __proto__

Inside EncodingTransformer.prototype._handlePlainObject this causes an issue where in we depend on hasOwnProperty and also on __proto__.
https://github.com/samdenty/console-feed/blob/master/src/Transform/replicator/index.ts#L98

This becomes an issue when someone is using query-string npm package
https://www.npmjs.com/package/query-string
This packages parse method creates a parsed object with Object.create(null);

I think we will have to place in a check for the existence of these properties on an object and only then handle them correctly.

@samdenty If it's alright then I would like to pick up this issue and propose a solution around the same.

Method of undefined issues in new versions

I'm investigating what was reported on #61 within CodeSandbox. I tried to upgrade to the newest version (3.1.9) and now we're getting Cannot read property 'toUpperCase' of undefined in some cases.

I think that instead of 9acd017, we should check for !error in the Error component and return The error you provided does not contain a stack trace..

The original issue that triggered my investigation is codesandbox/codesandbox-client#4963 - we were getting a blank error message there, then we got indexOf of undefined and now toUpperCase of undefined.

What do you think about my suggestion? The error you provided does not contain a stack trace. is what we get in the browser console inside CodeSandbox, so the behaviour would match in our case I think.

I tried to create a reproducible example in the demo app to verify the behaviour with more scenarios but I couldn't get to the state reported in codesandbox/codesandbox-client#4963.

Using react hooks does not respect immutability inside the data object

We were creating a Function Component with useState and useEffect to see if the ConsoleFeed showed correctly. Seems like if the console.log calls are separated in time we will see all correctly, but, when calling many of them together, like before rendering in a component, we will only see the last call even though we can see in the console that the Functional component did re-render.

export const ConsoleFeed: FunctionComponent = () => {
	const [logs, setLogs] = useState([]);
	const [visible, setVisibility] = useState(false);

	const handleKeyDown = (evt: KeyboardEvent) => {
		switch (getKeyFromEvent(evt)) {
			case Keys.YELLOW:
				evt.preventDefault();
				console.log('ALLO', visible);
				setVisibility(!visible);
				break;
		}
	};

	useEffect(
		() => {
			console.log('hook', logs);
			Hook(window.console, log => {
				setLogs([...logs, Decode(log)]);
			});
			scrollConsoleToBottom();

			return () => {
				Unhook(window.console);
				console.log('unhooking', logs);
			};
		},
		[logs]
	);

	useEffect(
		() => {
			document.addEventListener('keydown', handleKeyDown);

			return () => {
				document.removeEventListener('keydown', handleKeyDown);
			};
		},
		[visible]
	);

	return (
		<div ref={consoleRef} className={`console-feed ${visible ? 'visible' : 'hidden'}`}>
			<Console logs={logs} variant="dark" />
		</div>
	);
};

In the hooking and unhooking logs we will see 4 calls, so it is updating logs 4 times, and that is good. But the object in the data will get overwritten with the next object until the last one is done.

Might be related to: #15

console.log(event) doesn't print all the key value pairs

I am using console-feed in my custom code editor. It is working fine with all other things, but showing only one key for an event object and some other responses with larger objects.

This is the JS code I have used

js_code_for_console_bug

This is the console-feed output I got,

custom_console_output

This is the output in the chrome console

chrome_console_output

Is there any workaround or am I missing something?

Incorrect logs after sorting array twice

Send the following to the console:

let betterNow = [1,2000,3000,4]
//ascending
betterNow.sort((a,b) => a-b)
console.log(betterNow)
//descending
betterNow.sort((a,b) => b-a)
console.log(betterNow)

results in:
image

console-feed not working with user generated logs for online code editor

I am using console-feed with an online code editor like code sandbox but I am having trouble with console logs generated by the user (I am not using it with code sandbox but an editor I am writing myself).

Update:

I was able to get this working but I had to use a different pattern than the basic usage suggested on your readme. The pattern on the readme worked for console logs if they had been saved with the code base and loaded when the component with the console-feed was mounted, but not dynamic console logs the user wrote. I used an unhook, rehook pattern for every update the user made to their code to capture each new console log. This can be closed and sorry for the trouble.

how to log the console from VM

hey there i am building an IDE for JS and i am trying to console.log from it and the Console components does't update.
this text is showing in the browser console but not in the Console Component when trying to console from my IDE

Screenshot from 2021-02-20 17-30-36

i want only know how to make console-feed Component listen when console in the virtual machine log

i am using esbuild to build the code from the ide

Not detecting console logs for online editor

I am developing an online code editor (similar to codesandbox.io) and I am trying to incorporate console-feed after reading codesandbox use it however it does not seem to detect console.log statements in the editor even though I see the console logs in google chrome. I've followed your README to setup console-feed... Is there some extra or special configuration I need to do to get it to work in this way? Here is my code:

// code editor component.
// setConsoles updates an array in redux.

...
  useEffect(() => {
    Hook(window.console, log => setConsoles({ log }), false);
    return () => Unhook(window.console);
  }, []);

// reducer

...
  [actions.setConsoles]: (state, { payload: { log } }) => {
    return {
      ...state,
      consoles: [...state.consoles, log],
    };
  },

// console component - consoles comes from reducer state

...
return (
  <ConsoleFeed logs={consoles} variant="dark" />
);

Missing d.ts files in npm package

Hi,

I believe you forgot to include d.ts files in your latest npm package.
I looked through every folder in the console-feed node_module and it doesn't seem to have it.

Here's what I have for the latest console-feed npm package.

console-feed
β”œβ”€β”€ lib
β”‚Β Β  β”œβ”€β”€ Component
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ devtools-parser
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ format-message.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── string-utils.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ elements.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Message.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ message-parsers
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Error.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Formatted.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Object.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ react-inspector
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ elements.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── util.js
β”‚Β Β  β”‚Β Β  └── theme
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ default.js
β”‚Β Β  β”‚Β Β      └── index.js
β”‚Β Β  β”œβ”€β”€ definitions
β”‚Β Β  β”‚Β Β  └── Methods.js
β”‚Β Β  β”œβ”€β”€ Hook
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ construct.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ parse
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ GUID.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── methods
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ assert.js
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ count.js
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── timing.js
β”‚Β Β  β”‚Β Β  └── store
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ actions.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ dispatch.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ reducer.js
β”‚Β Β  β”‚Β Β      └── state.js
β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”œβ”€β”€ Transform
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ arithmetic.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Function.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ HTML.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Map.js
β”‚Β Β  β”‚Β Β  └── replicator
β”‚Β Β  β”‚Β Β      └── index.js
β”‚Β Β  └── Unhook
β”‚Β Β      └── index.js
β”œβ”€β”€ package.json
└── README.md

Thanks,
Sam L.

[bug] variant="light" not work.

First of all you did great job!

I change example code just 'dark' to 'light'
it only affected after one depth object.
root level object display as 'dark' themeed.

It doesn't print correct output for Map

let myMap = new Map();
myMap.set({}, "value associated with obj")

console.log(myMap)

Output:
screen shot 2018-10-13 at 7 15 33 pm


I believe this is not the expected behavior. It doen't output key/value of map.

Upgrade emotion v11

Hey!

It would be great if you could upgrade to the latest emotion version.
This project is no longer compatible with emotion v11.

Support for emotion v10

Hey, I just wanted to start a discussion about support for emotion v10 and I’ve been unable to get two packages one depending on v9 and the other v10 running side-by-side.

Fortunately the upgrade was straight forward. I’ve a fork of the project working with v10 let me know if you’d like me to open a PR against this repo. Though I don’t know how you’d like to handle backwards compatibility.

Cheers,
Aron

Changing object's property values during console log causes a bug

Expected Behaviour

let x = {
  a: 1
};

console.log(x.a); //1
console.log(x); //{a: 1}

x.a = 2;
console.log(x.a); //2
console.log(x); //{a: 2}

Chrome and Mozilla show additional info to warn users about the new evaluated value, but Safari does not.

image

Current Behaviour

image

When console-feed is used to console click event target e, some times it will cause the page to crash

Codesanbox: https://codesandbox.io/s/elegant-maxwell-sjem1?file=/index.js

Hello, I found that sometimes the page crashes when console.log(e) when I use a public component library like ant-design.
But I don’t think this is a problem with the component library like ant-design.
Because when I use other component libraries, if console.log(e), I also have this problem.
Even when my project has a little complexity, even if I use the native tag, the problem will occur.
But when the project is very simple, if console.log(e), the page will just be stuck for a while, about a few seconds.
So I guess it’s because when the project becomes more complex, the parent-child relationship between the elements leads to the circular reference of e.target, which leads to an endless loop.

Encode does not work with window object

I am making a console log input (very similar to the one on code sandbox) and I am using the Encode function for the data property of the log object like this:

      const result = eval(`${this.state.code}`);

      const logs = [{
        method: 'log',
        id: shortid.generate(),
        data: Encode(result),
      }];
      this.props.appendToConsoles({ logs });

This seems to work fine for other objects but if I type window I get a warning and Encode kills my app.

The warning:

[Deprecation] 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.

which seems to be coming from:

EncodingTransformer.prototype._handlePlainObject = function (obj) {
        var result = Object.create(null);
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                var resultKey = KEY_REQUIRE_ESCAPING_RE.test(key) ? "#" + key : key;
                result[resultKey] = this._handleValue(obj[key], result, resultKey); // <------- this line

I understand the issue now; the window object has circular references which cannot be serialized without some help. I had a peek into your library and you seem to be handling this so I'm not sure what my next move is. I found a little snippet I can use to pass as a replacer function to JSON.serialize but that is pointless if you are already handling this case.

Feature similar to Chrome console 'show timestamps'?

The Chrome developer tools have a feature to enable timestamps on all entries. This also includes hover text with a full timestamp.

image

Is there anyway to accomplish this with console-feed? In my case I would prefer to supply the timestamps for my log messages and not have them auto generated when the items are added.

Missing License File

Hey @samdenty this is a fantastic project!

I've noticed that this repository does not have a License attached. Do you intend to add an open-source license of some sort to the repo?

console.log(this) is not working.

function sum(){
    console.log(this);
}

console.log(sum.prototype);

when I tried console.log(this) my app was crashed and I tried console.log(sum.prototype) printed empty like this sum{}

Virtualization

How about adding virtualization to the message list? This is a big performance issue.

is it possible to get the built artifact?

I am new to npm and don't know the full ecosystem required to build these types of projects. Ideally I would like to download the javascript that has been built for the browser, then I hope to simply reference that js file in my html and be able to use the component on my site. Please let me know if this is possible.

Issues with some type of Map keys

Hi! πŸ‘‹

Problem

We added support for Map a while ago, but there are some issues with it when you set a key to be an object or a function.

When it's a function, it renders empty and we get a warning from React about children being of type function. When it's an object, it breaks because children can't be an object.

Demo

https://codesandbox.io/s/staging-worker-wrhqp

Solution

I'm not sure about what the expected output should be in this case, but if you want to, we can add a method to stringify object and functions, like:

getCustomName(name: any) {
  if (typeof name === 'object') {
    let customName: string

    try {
      customName = JSON.stringify(name)
    } catch (e) {
      customName = String(name)
    }

    return customName
  }

  if (typeof name === 'function') {
    return '' + name
  }

  return name
}

The output to the failing logs on the demo would be:

image

How to use hooks with TypeScript?

There are multiple types called "Message", one in console.d.ts and one in component.d.ts. Console component takes props of type Message[] (the readme states is takes Log[] I think) and this is the type from component.d.ts, but the Hook takes the type from console.d.ts. I have something like this:

import { useState, useEffect } from "react";
import { Console, Hook, Unhook } from "console-feed";
import { Message as MessageComponent } from "console-feed/lib/definitions/Component";
import { Message as MessageConsole } from "console-feed/lib/definitions/Console";

const LogsContainer = () => {
  const [logs, setLogs] = useState<MessageConsole[]>([]);

  // run once!
  useEffect(() => {
    Hook(
      window.console,
      (log) => setLogs((currLogs) => [...currLogs, log]),
      false
    );
    return () => {Unhook(window.console as any)};
  }, []);

  return <Console logs={logs as MessageComponent[]} variant="dark" />;
};

export { LogsContainer };

I wonder if something should be done to make the experience more seamless in TS? Error is thrown when copy pasting from the example.

Ambiguous Usage of Unhook method

Hi,

I am just curious about the intended usage of Unhook method.

Currently, I have the following inside my component:

const [logs, setLogs] = useState<Message[]>([]);

useEffect(() => {
        Hook(
            window.console,
            (log) => setLogs(currLogs => [...currLogs, log]),
            false,
        );

        return () => {
            Unhook(window.console as any);
        }
}, []);

This matches the usage example in the README and I think this would pass in a JavaScript project. However, in TypeScript, I need to cast window.console to any type when passing it to Unhook otherwise the following error occurs:

Argument of type 'Console' is not assignable to parameter of type 'HookedConsole'.
  Property 'feed' is missing in type 'Console' but required in type 'HookedConsole'.  TS2345

    21 | 
    22 |         return () => {
  > 23 |             Unhook(window.console);
       |                    ^
    24 |         }
    25 |     }, []);
    26 | 

Casting as any would be an acceptable solution (but not a desirable one) to me, but I also noticed that Hook method returns the console back as a HookedConsole object (whose type is basically the same as Console but with feed property).

Is there any difference in using the return value of Hook and passing that into Unhook instead? Like this:

const [logs, setLogs] = useState<Message[]>([]);

useEffect(() => {
        const hookedConsole = Hook(
            window.console,
            (log) => setLogs(currLogs => [...currLogs, log]),
            false,
        );

        return () => {
            Unhook(hookedConsole);
        }
}, []);

After viewing the implementation, this should work the same as the previous, since window.console has the feed property injected into it and a reference to the same object is returned from the Hook method. But this doesn't seem to be documented. Is there a caveat to this approach? Or could the documentation be updated to reflect this approach instead? This is more desirable for a TypeScript project IMO since it avoids a cast to any.

edit: User could also cast window.console to HookedConsole directly, but this requires the user to have read the code and understood what it does to the window.console object to verify that this type conversion is valid. Not sure what the best approach is here from documentation standpoint.

Getting console logs from iframe error

I am trying to get the logs from an iframe and have run into several major issues. I have not been able to find a example of getting logs from one anywhere, so I found a way to get them but I am not sure it is the proper way. That leads to my core issue is getting the Hook() to work correctly. It will either never run or it will run in a infinite loop. Here is the component I am making to show the iframe and the logs below. I have a operation in the setLogs hook to prevent the endless empty data arrays from being added to the state.

Here is a video I made of the error and how it happens. https://drive.google.com/file/d/1qtrsCLr8RTC1TirnpXKuGkDkwVpfTRL4/view

My React Component:

`
import React, { useState, useEffect } from "react";
import { Hook, Console, Decode, Unhook } from "console-feed";
import SplitPane from "components/SplitPane/SplitPane";

const WebViewer = ({ webTemplate }) => {
const [contentRef, setContentRef] = useState(null);

const useFrameObject = () => {
const [logs, setLogs] = useState([]);
const frameData = contentRef?.contentWindow?.console;

useEffect(() => {
  function grabConsoleData() {
    console.log("grab console data", frameData);
    if (frameData) {
      Hook(frameData, (log) =>
        setLogs((curLogs) =>
          log[0].data.length ? [...curLogs, Decode(log)] : [...curLogs]
        )
      );
      console.log("hook ran now unhook");
      return () => Unhook(contentRef);
    }
  }

  // For some reason the loop will not run unless this function is called but is always a undefined value so I have it called as a unused varible
  // eslint-disable-next-line
  let foundLog = frameData?.feed?.pointers.log();
  console.log("add"); // To keep track of when event listener is added
  document
    .getElementById("webPreviewFrame")
    .addEventListener("load", grabConsoleData);

  grabConsoleData();

  return () => {
    console.log("remove");// To keep track of when the event listener is removed
    document
      .getElementById("webPreviewFrame")
      .removeEventListener("load", grabConsoleData);
  };
}, [frameData]); // If I have a dependency array it never catches logs, without it logs appear in logs state but endless loop
console.log("return logs", logs);
return logs;

};

return (

<iframe
id="webPreviewFrame"
title="Web Preview"
className="editor_console_panel"
srcDoc={${webTemplate}}
referrerPolicy="origin"
width="100%"
ref={setContentRef}
/>
<div
style={{ backgroundColor: "#242424", height: "100%", width: "100%" }}
>



);
};

export default WebViewer;
`

SrcDoc string being fed into the iframe:

<!DOCTYPE html><html><body><h1>Hey Buddy</h1><script>console.log("hey",2);console.log("Bro")<script/></body></html

How to use with React Hooks

I'm trying to use this component in a project which uses React Hooks, and wondering if there's a pattern that makes more sense. Here's what I have now:

function MyComponent() {
  const [logs, setLogs] = useState([]);

  useEffect(() => {
    Hook(window.console, log => {
      setLogs([...logs, Decode(log)]);
    });
  });

  return <Console logs={logs} variant="dark" />;
}

I think this is either wasteful or just wrong. The console-feed Hook will run on every render, which is why it works at all. If I make it run only once, the logs state value would not update. Any thoughts on the right pattern for this?

Log message index-based key assumes logs are append-only

When the Console is rendered, each Message component is given a key based on its message type and position in the list:

<Message log={log} key={`${log.method}-${i}`} />

However, if you try to remove old log entries, it will not work as expected because another Message will get the same key.

I think you are already adding a GUID to the Message objects for hooked console.log() calls, so this could be used instead. Maybe something like this:

<Message log={log} key={log.id || `${log.method}-${i}`} />

Can't clear the console

When I call concole.clear() I have the following error in the console:

[console-feed] Failed to parse message! log.data was not an array!

How to clear console silently without any other messages?

Object in "real" console is null in console-feed

console-feed version: 2.8

I'm investigating a CodeSandbox bug someone reported where a Proxy{} object (Vue) gets output as null in the CodeSandbox console, and this might be a bug in console-feed?

The linked issue has more details, and I'm happy to help dive into it more if I can (or pass it on to one of our frontend developers - who are perhaps more useful than me as a backend dev)

Thanks!

logs props: should it expect Log[] or Message[] ?

From README.md:

logs: Log[]

An array consisting of Log objects. Required

But from the code in my node_modules (@3.0.0):

export interface Props {
  logs: Message[]
  // ...
}

Is it the case that the Log object was changed to Message at some point and the documentation became outdated? If so I would be happy to submit a PR updating the docs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.