Giter Club home page Giter Club logo

prismrefracted's Introduction

prismrefracted's People

Contributors

addstar avatar addstarbot avatar alchemistmatt avatar bobcat00 avatar branicyeti avatar darbyjack avatar dependabot-preview[bot] avatar deprecatednether avatar dmarto avatar dykam avatar envel-nikita-gutsenkov avatar evanjarrett avatar ezeiger92 avatar glguy avatar jikoo avatar joeyahines avatar macil avatar mikroskeem avatar narimm avatar nevergrowup avatar phanaticd avatar rothes avatar roycurtis avatar rumickon avatar sahirshahryar avatar sonarbeserk avatar syokkendesuyo avatar viveleroi avatar westernicelander avatar xephi 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

Watchers

 avatar  avatar  avatar  avatar

prismrefracted's Issues

[BUG] Material cannot be null during inspection wand use

[16:16:17] [Server thread/INFO]: SizzlingBacon5 issued server command: /pr i
[16:16:29] [Craft Scheduler Thread - 2006 - Prism/WARN]: [Prism] Plugin Prism v3.4.0 generated an exception while executing task 5527828
java.lang.IllegalArgumentException: Material cannot be null
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) ~[guava-31.0.1-jre.jar:?]
	at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:97) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:85) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:72) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
	at network.darkhelmet.prism.actions.data.ItemStackActionData.toItem(ItemStackActionData.java:204) ~[Prism-3.4.0-all.jar:?]
	at network.darkhelmet.prism.actions.ItemStackAction.deserialize(ItemStackAction.java:111) ~[Prism-3.4.0-all.jar:?]
	at network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.executeSelect(SqlSelectQueryBuilder.java:626) ~[Prism-3.4.0-all.jar:?]
	at network.darkhelmet.prism.actionlibs.ActionsQuery.lookup(ActionsQuery.java:66) ~[Prism-3.4.0-all.jar:?]
	at network.darkhelmet.prism.wands.QueryWandBase.getResult(QueryWandBase.java:75) ~[Prism-3.4.0-all.jar:?]
	at network.darkhelmet.prism.wands.InspectorWand.lambda$showLocationHistory$0(InspectorWand.java:89) ~[Prism-3.4.0-all.jar:?]
	at org.bukkit.craftbukkit.v1_19_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[purpur-1.19.jar:git-Purpur-1685]
	at org.bukkit.craftbukkit.v1_19_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[purpur-1.19.jar:git-Purpur-1685]
	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[purpur-1.19.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

[BUG] SQL syntax error when using `/pr near`

Describe the bug
When using /pr near no results are returned and upon inspection of the console, I see a SQL syntax error.

To Reproduce
Steps to reproduce the behavior:
Using Prism 3.6.0 (all) in a 1.19.3 Purpur server instance, I broke some stone blocks I placed under my feet using World Edit and attempted to check that it's being registered with Prism using /pr near. It wasn't returning any results, not even showing an error had occurred.

Expected behavior
I expected the command to return some log of the recently broken stone blocks. I was in creative and also OP so I didn't pay much attention at first, then realized after checking the server log.

Screenshots
No screenshots but here's the log of the error from the console.

[05:01:42 INFO]: CribRobber issued server command: /pr near
[05:01:42 WARN]: [Prism] Database connection error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdatabase.prism_data.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[05:01:42 WARN]: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdatabase.prism_data.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[05:01:42 WARN]:        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
[05:01:42 WARN]:        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
[05:01:42 WARN]:        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
[05:01:42 WARN]:        at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
[05:01:42 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
[05:01:42 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
[05:01:42 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.executeSelect(SqlSelectQueryBuilder.java:478)
[05:01:42 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.actionlibs.ActionsQuery.lookup(ActionsQuery.java:66)
[05:01:42 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.commands.NearCommand.lambda$handle$0(NearCommand.java:66)
[05:01:42 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftTask.run(CraftTask.java:101)
[05:01:42 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[05:01:42 WARN]:        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[05:01:42 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[05:01:42 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[05:01:42 WARN]:        at java.base/java.lang.Thread.run(Thread.java:833)
[05:01:48 INFO]: CribRobber issued server command: /pr near
[05:01:48 WARN]: [Prism] Database connection error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdatabase.prism_data.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[05:01:48 WARN]: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdatabase.prism_data.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[05:01:48 WARN]:        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
[05:01:48 WARN]:        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
[05:01:48 WARN]:        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
[05:01:48 WARN]:        at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
[05:01:48 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
[05:01:48 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
[05:01:48 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.executeSelect(SqlSelectQueryBuilder.java:478)
[05:01:48 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.actionlibs.ActionsQuery.lookup(ActionsQuery.java:66)
[05:01:48 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.commands.NearCommand.lambda$handle$0(NearCommand.java:66)
[05:01:48 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftTask.run(CraftTask.java:101)
[05:01:48 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[05:01:48 WARN]:        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[05:01:48 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[05:01:48 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[05:01:48 WARN]:        at java.base/java.lang.Thread.run(Thread.java:833)
[05:01:57 INFO]: CribRobber issued server command: /pr near
[05:01:57 WARN]: [Prism] Database connection error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdatabase.prism_data.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[05:01:57 WARN]: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdatabase.prism_data.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[05:01:57 WARN]:        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
[05:01:57 WARN]:        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
[05:01:57 WARN]:        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
[05:01:57 WARN]:        at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
[05:01:57 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
[05:01:57 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
[05:01:57 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.executeSelect(SqlSelectQueryBuilder.java:478)
[05:01:57 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.actionlibs.ActionsQuery.lookup(ActionsQuery.java:66)
[05:01:57 WARN]:        at Prism-3.6.0-all.jar//network.darkhelmet.prism.commands.NearCommand.lambda$handle$0(NearCommand.java:66)
[05:01:57 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftTask.run(CraftTask.java:101)
[05:01:57 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[05:01:57 WARN]:        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[05:01:57 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[05:01:57 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[05:01:57 WARN]:        at java.base/java.lang.Thread.run(Thread.java:833)

Server (please complete the following information):

  • Prism Version: 3.6.0
  • Server Type: Paper / Purpur
  • Server Version: 1.19.3

Additional context
I have 9 other plugins installed:

  • EssentialsX
  • EssentialsX Chat
  • WorldEdit
  • WorldGuard
  • LuckPerms
  • Vault
  • NametagEdit
  • TradeSystem
  • my own plugin which practically does nothing

[BUG] Clipboard operations of FastAsyncWorldEdit will not be recorded.

Describe the bug
I set prism.tracking.world-edit to true and copied some buildings, then pasted it. /pr near given nothing record near buildings pasted.

To Reproduce

  1. Install FastAsyncWorldEdit and Prism to your server, then config them properly.
  2. Use //copy to copy some buildings.
  3. Paste them.
  4. Execute /pr near near buildings pasted.

Expected behavior
/pr near will display records related to pasting operations.

Server (please complete the following information):

  • Prism Version: 3.6.0
  • Server Type: Purpur
  • Server Version: 1.19.2

[FEATURE]Request support for Folia

Here is a summary of everything made with ChatGPT to save some time:

For plugin developers, there are a few key takeaways from the given text:

Folia introduces regionised multithreading, which means that plugins will require modification to function properly. Plugin developers should expect compatibility with existing plugins to be at zero.

Folia introduces new API additions, such as the RegionisedScheduler and EntityScheduler, which can help plugins run on the correct thread context.

To ensure compatibility with Folia, plugin developers must mark their plugin as compatible by placing "folia-supported: true" in the plugin.yml file. Additionally, plugins must take advantage of the RegionisedScheduler and EntityScheduler API to ensure correct behavior.

Plugins should not assume that they can access or modify data in other regions, as Folia regions tick in parallel and do not share data. Plugin developers should take advantage of the upcoming thread-check API to ensure correct behavior.

There are currently broken API, including the scoreboard API, and planned API changes, such as super aggressive thread checks, which may impact plugin development.

Overall, plugin developers should be prepared for significant changes in their plugins to ensure compatibility with Folia. They should take advantage of the new API additions and mark their plugin as compatible to ensure correct behavior. Additionally, they should be aware of the limitations and rules of Folia's regionised multithreading to avoid bugs and errors in their plugins.

[BUG] Insert logs failed item moving in

Describe the bug
E.g. When opening a furnace, Shift + Click a pickaxe in your inventory, the pickaxe is not put in the furnace, but Prism still logs it.

To Reproduce
Steps to reproduce the behavior:

  1. Open a furnace.
  2. Shift + Click a pickaxe or sth else in your inventory.
  3. Inspect the furnace.

Expected behavior
Not to log it.

Screenshots
N/A

Server (please complete the following information):

  • Prism Version: 3.0.3
  • Server Type: JettPack (Fork of Paper)
  • Server Version: 1.18.1

Track and Rollback Moss Growth 1.18

Prism is not currently tracking anything related to moss other than placing and breaking moss.

Adding in the ability for prism to track moss-growth which would help with new types of grief. If possible it would be ideal if it was also able to rollback and restore moss-growth but since it is similar to bonemeal use and growth I understand if that is not possible.

[BUG] java.lang.StackOverflowError: null in utils.block.Utilities.findConnectedBlocksOfType

[12:50:44] [Server thread/ERROR]: Could not pass event BlockBreakEvent to Prism v3.0.3
java.lang.StackOverflowError: null
	at net.minecraft.world.level.Level.getChunk(Level.java:636) ~[?:?]
	at net.minecraft.world.level.Level.getBlockState(Level.java:975) ~[?:?]
	at org.bukkit.craftbukkit.v1_18_R2.block.CraftBlock.getType(CraftBlock.java:227) ~[purpur-1.18.2.jar:git-Purpur-1628]
	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:605) ~[Prism-3.0.3-all.jar:?]
	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]

[BUG] Lingering potions does not log properly

Describe the bug
Lingering potions when thrown and if the mob gets killed, it only logs who killed it but the name shown is "area effect cloud" which infact is normal but doesn't tell who thrown it to cause the entity to be killed. So it means we can't know who did that.

To Reproduce
Steps to reproduce the behavior:

  • Have Prism installed on the server and spawn a random mob enclosed in a room.
  • Give you a lingering potion (Instant Damage) then throw at the floor where the mob is.
  • Wait until it dies
  • Inspect it with /pr i or /pr lookup, you'll notice it will only say "area effect cloud killed (entity)" but nothing else will tell who thrown it for this cause.

Expected behavior
A clear and concise description of what you expected to happen.

Prism should tell us who thrown it and who killed it (infact its area effect cloud), logging both actions just in case.

Screenshots

  • If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem** via IMG

I used an alt to attempt killing the said entity (Pig), even checking at my alt's position nothing tells me who thrown it.
Server (please complete the following information):

  • Prism Version: 3.3.0
  • Server Type: [Paper]
  • Server Version: 1.18.2

Additional context
Add any other context about the problem here.

[BUG] Resolved Written Book item action may not rollback/restore

Describe the bug
This has been an issue since Spigot 1.8.
Written Book has a attribute resolved(Boolean Type), which we can't get and set from Bukkit API(The API will be added for Spigot 1.20+).
A exist written book that has been opened once by a player, the resolved attribute is always true.
Creating a new Written Book ItemStack, the resolved attribute is null. And we can't set it with Bukkit API(Beyond open the created book for a player).
So, comparing these two item isSimilar will always return false, and rb/rs is going to be skipped.
E.g. breaks here https://github.com/prism/PrismRefracted/blob/917eead38d3500d1678c96c57bd334e7052d89b1/Prism/src/main/java/network/darkhelmet/prism/actions/ItemStackAction.java#LL391C38-L391C47
A possible fix it to use NBTAPI to record/set the resolved nbt of item.

Server

  • Prism Version: 3.6.0
  • Server Type: Spigot
  • Server Version: 1.20

[BUG] Block parameter causes exception

Describe the bug
Using b: causes the following exception:

2022-02-17 19:39:38 [WARN] [Prism] Plugin Prism v3.0.4-SNAPSHOT generated an exception while executing task 381
java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "s" is null
	at java.util.Collections.unmodifiableSet(Collections.java:1132) ~[?:?]
	at network.darkhelmet.prism.utils.MaterialAliases.materialToAllIds(MaterialAliases.java:246) ~[Prism-3.0.4-SNAPSHOT-all.jar:?]
	at network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.blockCondition(SqlSelectQueryBuilder.java:229) ~[Prism-3.0.4-SNAPSHOT-all.jar:?]
	at network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.where(SqlSelectQueryBuilder.java:132) ~[Prism-3.0.4-SNAPSHOT-all.jar:?]
	at network.darkhelmet.prism.database.QueryBuilder.getQuery(QueryBuilder.java:64) ~[Prism-3.0.4-SNAPSHOT-all.jar:?]
	at network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.executeSelect(SqlSelectQueryBuilder.java:467) ~[Prism-3.0.4-SNAPSHOT-all.jar:?]
	at network.darkhelmet.prism.actionlibs.ActionsQuery.lookup(ActionsQuery.java:66) ~[Prism-3.0.4-SNAPSHOT-all.jar:?]
	at network.darkhelmet.prism.commands.LookupCommand.lambda$handle$2(LookupCommand.java:68) ~[Prism-3.0.4-SNAPSHOT-all.jar:?]
	at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[patched_1.17.1.jar:git-Paper-408]
	at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[patched_1.17.1.jar:git-Paper-408]
	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[patched_1.17.1.jar:git-Paper-408]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

To Reproduce
/pr l t:9w r:global b:minecart

Note the following commands work properly:
/pr l t:9w r:global e:creeper
/pr l t:9w r:global

Expected behavior
No exception and the output of the lookup command.

Server (please complete the following information):

  • Prism Version: 3.0.4-SNAPSHOT commit be058bf
  • Server Type: Paper
  • Server Version: Paper version git-Paper-408 (MC: 1.17.1)

Additional context
Problem does not occur with released Prism version 3.0.2

Allow more specificity when performing rollbacks/restores, if possible

Is your feature request related to a problem? Please describe.
There are certain instances when I need to do a very specific restore or rollback with prism, and it currently does not support such specificity to my knowledge (or I am too dumb to figure it out lol)

Describe the solution you'd like
I would like to specify that I am performing a rollback/restore that only affects specific blocks/entities, such as chests that have had items moved/removed, while excluding other blocks/entities. For insance, when I am trying to perform [/pr rb a:item-remove r:# t:# p:(name)], I would like to specify what exactly item-move is being done on without having to do it on every individual chest or shulker. I would also like to see this extended to item-insert functions to specify whether I am doing this to item frames or armor stands as well. I understand that it will be limited to all chests/etc within a specified radius if it can be done, and this is exactly what I am asking for!

Describe alternatives you've considered
An alternative would possibly be to exclude everything that you don't want to target, but I feel like this would be a much more tedious and time consuming solution than the one mentioned above

Additional context
That's just it! If you would like any additional information regarding this request, please feel free to let me know, and I will assist in any way I can!
btw, this is for prism v3 specifically, but perhaps implementing it elsewhere would also be beneficial!

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.