diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..c22302dc3a97d97950c9f0c438b8dddd644daedd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +./neo4j/ +.idea/ \ No newline at end of file diff --git a/README.md b/README.md index e2798fbe13ea69858deb442ca75c3f3a066b185f..5ef08c0e12ed9cb9cd59b9f486a13a1dc05b2ab9 100644 --- a/README.md +++ b/README.md @@ -1 +1,8 @@ -# the-software-graph \ No newline at end of file +# the-software-graph + +## En cas d'erreur +`neo4j | Folder /data is not accessible for user: 7474 or group 7474 or groups 7474, this is commonly a file permissions issue on the mounted folder.` + +Solution: + +`sudo chmod -R 777 neo4j/data` \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..43d0a2b14c4884a5bc5ce99baf9ec2c5429a402f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.7' + +services: + database: + build: ./neo4j + environment: + - NEO4J_AUTH=neo4j/test + ports: + - "7474:7474" + - "7687:7687" + volumes: + - ./neo4j/import:/var/lib/neo4j/import + - ./neo4j/data:/var/lib/neo4j/data + container_name: neo4j + redis: + image: "redis:alpine" + ports: + - "6379:6379" + sg-backend: + build: ./sg-backend + command: sh -c "/wait && uvicorn main:app --reload --host 0.0.0.0" + environment: + - FRONTEND_URL="http://localhost" + - NEO4J_URI=neo4j://database:7687 + - NEO4J_USER=neo4j + - NEO4J_PASSWORD=test + - WAIT_HOSTS=database:7474 + - WAIT_HOSTS_TIMEOUT=300 + - WAIT_SLEEP_INTERVAL=5 + - WAIT_HOST_CONNECT_TIMEOUT=30 + volumes: + - ./sg-backend:/code + depends_on: + - database + - redis + ports: + - "8000:8000" + sg-frontend: + build: ./sg-frontend + environment: + - VITE_BACKEND_URL=http://localhost:8000 + volumes: + - ./sg-frontend:/app + - node_modules:/app/node_modules + ports: + - "5173:5173" + depends_on: + - sg-backend +volumes: + node_modules: \ No newline at end of file diff --git a/neo4j/Dockerfile b/neo4j/Dockerfile new file mode 100755 index 0000000000000000000000000000000000000000..2b3baebe60847c2487208260856ec0b1e3772e75 --- /dev/null +++ b/neo4j/Dockerfile @@ -0,0 +1,19 @@ +FROM neo4j:4.4.0 + + +#ARG UID +#ARG GID +# +#ENV UID=${UID} +#ENV GID=${GID} +# +#RUN addgroup -g ${GID} --system neo4j +#RUN adduser -G neo4j --system -D -s /bin/sh -u ${UID} neo4j +#COPY import/* import/ +#RUN bash -c "neo4j-admin load --from=/import/software-graph.dump --verbose --database=software-graph" +#RUN bash -c "neo4j-admin load --from=import/software-graph.dump --database=data --force --verbose" +#RUN bash -c "cypher-shell -u neo4j -p test --non-interactive -f import/data_cypher.cypher" + +USER neo4j + +EXPOSE 7474 7473 7687 \ No newline at end of file diff --git a/neo4j/conf/neo4j.conf b/neo4j/conf/neo4j.conf new file mode 100644 index 0000000000000000000000000000000000000000..62533b8417141cf26155a7e50f934a504a7be55b --- /dev/null +++ b/neo4j/conf/neo4j.conf @@ -0,0 +1,7 @@ + +dbms.tx_log.rotation.retention_policy=100M size + +dbms.memory.pagecache.size=512M + +dbms.default_listen_address=0.0.0.0 +dbms.directories.logs=/logs diff --git a/sg-backend/test.json b/neo4j/data/databases/neo4j/database_lock old mode 100644 new mode 100755 similarity index 100% rename from sg-backend/test.json rename to neo4j/data/databases/neo4j/database_lock diff --git a/neo4j/data/databases/neo4j/neostore b/neo4j/data/databases/neo4j/neostore new file mode 100755 index 0000000000000000000000000000000000000000..981eab4d85821684af01e263928ab40121c5023c Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore differ diff --git a/neo4j/data/databases/neo4j/neostore.counts.db b/neo4j/data/databases/neo4j/neostore.counts.db new file mode 100755 index 0000000000000000000000000000000000000000..5babc14e22e71cb88d528cceb648c8a1e7c81486 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.counts.db differ diff --git a/neo4j/data/databases/neo4j/neostore.indexstats.db b/neo4j/data/databases/neo4j/neostore.indexstats.db new file mode 100755 index 0000000000000000000000000000000000000000..f12166e751b289b063b483f743ceb19781104e51 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.indexstats.db differ diff --git a/neo4j/data/databases/neo4j/neostore.labelscanstore.db b/neo4j/data/databases/neo4j/neostore.labelscanstore.db new file mode 100755 index 0000000000000000000000000000000000000000..d52eb27dad1d35452123f8b649c1e55a48e936fb Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.labelscanstore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.labeltokenstore.db b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db new file mode 100755 index 0000000000000000000000000000000000000000..707ccdc3fe8064438ccec94943d69b5592498609 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.id b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..0aaa39af74b06e38860e95741f5dd972d5731a83 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.id differ diff --git a/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.names b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.names new file mode 100755 index 0000000000000000000000000000000000000000..dbfc3b08fa8932b68adf54071508c35495367bc6 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.names differ diff --git a/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.names.id b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.names.id new file mode 100755 index 0000000000000000000000000000000000000000..5efd8d0066c8d1bb9d9059c256d317fccae1ae5e Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.labeltokenstore.db.names.id differ diff --git a/neo4j/data/databases/neo4j/neostore.nodestore.db b/neo4j/data/databases/neo4j/neostore.nodestore.db new file mode 100755 index 0000000000000000000000000000000000000000..19f417153d8e62413d63cf9dcb025dca1d48f73e Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.nodestore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.nodestore.db.id b/neo4j/data/databases/neo4j/neostore.nodestore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..a625a263e5976d0bc60a8bcb307489d0d4686dbf Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.nodestore.db.id differ diff --git a/neo4j/data/databases/neo4j/neostore.nodestore.db.labels b/neo4j/data/databases/neo4j/neostore.nodestore.db.labels new file mode 100755 index 0000000000000000000000000000000000000000..df8ce2a58c7337a0be82febc80d3e0e21c414f96 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.nodestore.db.labels differ diff --git a/neo4j/data/databases/neo4j/neostore.nodestore.db.labels.id b/neo4j/data/databases/neo4j/neostore.nodestore.db.labels.id new file mode 100755 index 0000000000000000000000000000000000000000..04d482c29fbe5fc8929bcf8097d05e04e6fce0c8 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.nodestore.db.labels.id differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db b/neo4j/data/databases/neo4j/neostore.propertystore.db new file mode 100755 index 0000000000000000000000000000000000000000..d9bf0b2004b88a8af3101925350bc68695348c9c Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.arrays b/neo4j/data/databases/neo4j/neostore.propertystore.db.arrays new file mode 100755 index 0000000000000000000000000000000000000000..bae49621466737c0cbedd1d7bfe3c4f13dba925c Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.arrays differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.arrays.id b/neo4j/data/databases/neo4j/neostore.propertystore.db.arrays.id new file mode 100755 index 0000000000000000000000000000000000000000..84e800788a1a1b96abd3d7bacd9a65a3877c286d Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.arrays.id differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.id b/neo4j/data/databases/neo4j/neostore.propertystore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..84a98336c38e0a1a70eb3f196079ef3faebb04b9 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.id differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.index b/neo4j/data/databases/neo4j/neostore.propertystore.db.index new file mode 100755 index 0000000000000000000000000000000000000000..b002d509834e8a83ec01c6f530b2524131bdc994 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.index differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.index.id b/neo4j/data/databases/neo4j/neostore.propertystore.db.index.id new file mode 100755 index 0000000000000000000000000000000000000000..fc1043af1f086d4aad7eb5988e4f5dd7b5a0614c Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.index.id differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.index.keys b/neo4j/data/databases/neo4j/neostore.propertystore.db.index.keys new file mode 100755 index 0000000000000000000000000000000000000000..8d15c9f98a47e64d88ef6857bfa7f71717e2f7bc Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.index.keys differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.index.keys.id b/neo4j/data/databases/neo4j/neostore.propertystore.db.index.keys.id new file mode 100755 index 0000000000000000000000000000000000000000..053263cdcdb3ba8b4a2f07f4ba3d96a0db599749 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.index.keys.id differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.strings b/neo4j/data/databases/neo4j/neostore.propertystore.db.strings new file mode 100755 index 0000000000000000000000000000000000000000..1d85cb6f6e0451d848d6fdfeb743256251380a75 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.strings differ diff --git a/neo4j/data/databases/neo4j/neostore.propertystore.db.strings.id b/neo4j/data/databases/neo4j/neostore.propertystore.db.strings.id new file mode 100755 index 0000000000000000000000000000000000000000..fb3f13ed4b857ec03f5db8f66e4b11c2d1373981 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.propertystore.db.strings.id differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.db b/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.db new file mode 100755 index 0000000000000000000000000000000000000000..b72840ef50b6a432f92ecd6edaaf539fae606949 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.db.id b/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..04d482c29fbe5fc8929bcf8097d05e04e6fce0c8 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.db.id differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.degrees.db b/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.degrees.db new file mode 100755 index 0000000000000000000000000000000000000000..5b40d263efc4778462ca31927d92e809997729bb Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshipgroupstore.degrees.db differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshipstore.db b/neo4j/data/databases/neo4j/neostore.relationshipstore.db new file mode 100755 index 0000000000000000000000000000000000000000..2b066d2a6b361afca198d2269e95e07030b93698 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshipstore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshipstore.db.id b/neo4j/data/databases/neo4j/neostore.relationshipstore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..b4755b6da83abd065b530e9b54010284001faf88 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshipstore.db.id differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshiptypescanstore.db b/neo4j/data/databases/neo4j/neostore.relationshiptypescanstore.db new file mode 100755 index 0000000000000000000000000000000000000000..04dfec0af1bb28a25602c81861e6e15907b8ae8b Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshiptypescanstore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db new file mode 100755 index 0000000000000000000000000000000000000000..909cb7fe5e0802e236674c307fae0b332140eb5b Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.id b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..2db4345fe9cffa19af5e435452316c11a3011fb0 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.id differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.names b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.names new file mode 100755 index 0000000000000000000000000000000000000000..948c0f8dd89a5a59e5d182e549b1610871e5ccb1 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.names differ diff --git a/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.names.id b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.names.id new file mode 100755 index 0000000000000000000000000000000000000000..60ac3e23a1b7bf176dd399da9db3f9c014deba6b Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.relationshiptypestore.db.names.id differ diff --git a/neo4j/data/databases/neo4j/neostore.schemastore.db b/neo4j/data/databases/neo4j/neostore.schemastore.db new file mode 100755 index 0000000000000000000000000000000000000000..e1e48989e6d5d5685b2c3a6de7ee0898d6152ce9 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.schemastore.db differ diff --git a/neo4j/data/databases/neo4j/neostore.schemastore.db.id b/neo4j/data/databases/neo4j/neostore.schemastore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..d02951bd3963e6bd5cea00152f7d79814dc83844 Binary files /dev/null and b/neo4j/data/databases/neo4j/neostore.schemastore.db.id differ diff --git a/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/3/index-3 b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/3/index-3 new file mode 100755 index 0000000000000000000000000000000000000000..3fe26211679f34ea4410da861f5c2937b85b6998 Binary files /dev/null and b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/3/index-3 differ diff --git a/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/4/index-4 b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/4/index-4 new file mode 100755 index 0000000000000000000000000000000000000000..24ed26b67665210957b21ee3193546bc098e0f98 Binary files /dev/null and b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/4/index-4 differ diff --git a/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/5/index-5 b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/5/index-5 new file mode 100755 index 0000000000000000000000000000000000000000..f58fa9374943e65f80f1661612133e4ac7ea0c76 Binary files /dev/null and b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/5/index-5 differ diff --git a/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/6/index-6 b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/6/index-6 new file mode 100755 index 0000000000000000000000000000000000000000..9e4e1ebf9fc8e46c59a1a19459f73cc0d2224fd6 Binary files /dev/null and b/neo4j/data/databases/neo4j/schema/index/native-btree-1.0/6/index-6 differ diff --git a/neo4j/data/databases/store_lock b/neo4j/data/databases/store_lock new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/neo4j/data/databases/system/database_lock b/neo4j/data/databases/system/database_lock new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/neo4j/data/databases/system/neostore b/neo4j/data/databases/system/neostore new file mode 100755 index 0000000000000000000000000000000000000000..770ae3281f150364f44097b0a57e792c3bbe8aa5 Binary files /dev/null and b/neo4j/data/databases/system/neostore differ diff --git a/neo4j/data/databases/system/neostore.counts.db b/neo4j/data/databases/system/neostore.counts.db new file mode 100755 index 0000000000000000000000000000000000000000..e87b6fb3d5268fc1fe79938cda8b56a0f3ac3a42 Binary files /dev/null and b/neo4j/data/databases/system/neostore.counts.db differ diff --git a/neo4j/data/databases/system/neostore.indexstats.db b/neo4j/data/databases/system/neostore.indexstats.db new file mode 100755 index 0000000000000000000000000000000000000000..1b90709f73c4f870a44cb8f18773326a7147b518 Binary files /dev/null and b/neo4j/data/databases/system/neostore.indexstats.db differ diff --git a/neo4j/data/databases/system/neostore.labelscanstore.db b/neo4j/data/databases/system/neostore.labelscanstore.db new file mode 100755 index 0000000000000000000000000000000000000000..72da8b2652c2929c89666aa9da6e57c430f6f911 Binary files /dev/null and b/neo4j/data/databases/system/neostore.labelscanstore.db differ diff --git a/neo4j/data/databases/system/neostore.labeltokenstore.db b/neo4j/data/databases/system/neostore.labeltokenstore.db new file mode 100755 index 0000000000000000000000000000000000000000..707ccdc3fe8064438ccec94943d69b5592498609 Binary files /dev/null and b/neo4j/data/databases/system/neostore.labeltokenstore.db differ diff --git a/neo4j/data/databases/system/neostore.labeltokenstore.db.id b/neo4j/data/databases/system/neostore.labeltokenstore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..922e21f726b52bd2294bfc42be4ef2c4e436e8cb Binary files /dev/null and b/neo4j/data/databases/system/neostore.labeltokenstore.db.id differ diff --git a/neo4j/data/databases/system/neostore.labeltokenstore.db.names b/neo4j/data/databases/system/neostore.labeltokenstore.db.names new file mode 100755 index 0000000000000000000000000000000000000000..a37891527b9757aee491508d3a03eaafe74d4cff Binary files /dev/null and b/neo4j/data/databases/system/neostore.labeltokenstore.db.names differ diff --git a/neo4j/data/databases/system/neostore.labeltokenstore.db.names.id b/neo4j/data/databases/system/neostore.labeltokenstore.db.names.id new file mode 100755 index 0000000000000000000000000000000000000000..c3502e8f309fee015cf6168da420b803220065b3 Binary files /dev/null and b/neo4j/data/databases/system/neostore.labeltokenstore.db.names.id differ diff --git a/neo4j/data/databases/system/neostore.nodestore.db b/neo4j/data/databases/system/neostore.nodestore.db new file mode 100755 index 0000000000000000000000000000000000000000..b95067581b4e27c4abccc763974b683018c04fbc Binary files /dev/null and b/neo4j/data/databases/system/neostore.nodestore.db differ diff --git a/neo4j/data/databases/system/neostore.nodestore.db.id b/neo4j/data/databases/system/neostore.nodestore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..a4350252a698d5003897e09d476c1474eddfce37 Binary files /dev/null and b/neo4j/data/databases/system/neostore.nodestore.db.id differ diff --git a/neo4j/data/databases/system/neostore.nodestore.db.labels b/neo4j/data/databases/system/neostore.nodestore.db.labels new file mode 100755 index 0000000000000000000000000000000000000000..df8ce2a58c7337a0be82febc80d3e0e21c414f96 Binary files /dev/null and b/neo4j/data/databases/system/neostore.nodestore.db.labels differ diff --git a/neo4j/data/databases/system/neostore.nodestore.db.labels.id b/neo4j/data/databases/system/neostore.nodestore.db.labels.id new file mode 100755 index 0000000000000000000000000000000000000000..9c7e828663fb5a93eee1f0f57aaf94a50a8b1b69 Binary files /dev/null and b/neo4j/data/databases/system/neostore.nodestore.db.labels.id differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db b/neo4j/data/databases/system/neostore.propertystore.db new file mode 100755 index 0000000000000000000000000000000000000000..222f27032ca94062fe54b7ebac9b1bb3c864ad2a Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.arrays b/neo4j/data/databases/system/neostore.propertystore.db.arrays new file mode 100755 index 0000000000000000000000000000000000000000..d19598d74e5c5046e0090285895b3443642008be Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.arrays differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.arrays.id b/neo4j/data/databases/system/neostore.propertystore.db.arrays.id new file mode 100755 index 0000000000000000000000000000000000000000..9c7e828663fb5a93eee1f0f57aaf94a50a8b1b69 Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.arrays.id differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.id b/neo4j/data/databases/system/neostore.propertystore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..b9fe50ea14dfbaa0b0d8e36fe876f8df027bac14 Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.id differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.index b/neo4j/data/databases/system/neostore.propertystore.db.index new file mode 100755 index 0000000000000000000000000000000000000000..de68d5b28d794b4e2674c12ac2517c310f62a561 Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.index differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.index.id b/neo4j/data/databases/system/neostore.propertystore.db.index.id new file mode 100755 index 0000000000000000000000000000000000000000..44f0ed7261f91bf74a4d120ab8d9048455fc2abc Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.index.id differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.index.keys b/neo4j/data/databases/system/neostore.propertystore.db.index.keys new file mode 100755 index 0000000000000000000000000000000000000000..e5605ce8b8a820dbb85f030d8acd0a776ab662b8 Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.index.keys differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.index.keys.id b/neo4j/data/databases/system/neostore.propertystore.db.index.keys.id new file mode 100755 index 0000000000000000000000000000000000000000..e33cbbab8d85c37b0dee0f9fd0be520fc9dfe1f8 Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.index.keys.id differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.strings b/neo4j/data/databases/system/neostore.propertystore.db.strings new file mode 100755 index 0000000000000000000000000000000000000000..a91a48e13129e9c348e2224cad54a8d318456991 Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.strings differ diff --git a/neo4j/data/databases/system/neostore.propertystore.db.strings.id b/neo4j/data/databases/system/neostore.propertystore.db.strings.id new file mode 100755 index 0000000000000000000000000000000000000000..f44372f843be8097336a6aba1b944c573542fb3e Binary files /dev/null and b/neo4j/data/databases/system/neostore.propertystore.db.strings.id differ diff --git a/neo4j/data/databases/system/neostore.relationshipgroupstore.db b/neo4j/data/databases/system/neostore.relationshipgroupstore.db new file mode 100755 index 0000000000000000000000000000000000000000..b72840ef50b6a432f92ecd6edaaf539fae606949 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshipgroupstore.db differ diff --git a/neo4j/data/databases/system/neostore.relationshipgroupstore.db.id b/neo4j/data/databases/system/neostore.relationshipgroupstore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..9c7e828663fb5a93eee1f0f57aaf94a50a8b1b69 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshipgroupstore.db.id differ diff --git a/neo4j/data/databases/system/neostore.relationshipgroupstore.degrees.db b/neo4j/data/databases/system/neostore.relationshipgroupstore.degrees.db new file mode 100755 index 0000000000000000000000000000000000000000..44a3958209441d1cb5e04f5f72a5c1a2049f3f58 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshipgroupstore.degrees.db differ diff --git a/neo4j/data/databases/system/neostore.relationshipstore.db b/neo4j/data/databases/system/neostore.relationshipstore.db new file mode 100755 index 0000000000000000000000000000000000000000..14bd74b1d74a664fc474194c6ac3b01222ccb276 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshipstore.db differ diff --git a/neo4j/data/databases/system/neostore.relationshipstore.db.id b/neo4j/data/databases/system/neostore.relationshipstore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..5c4f85d1ca0179601c0a46101004d7db97dc5431 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshipstore.db.id differ diff --git a/neo4j/data/databases/system/neostore.relationshiptypescanstore.db b/neo4j/data/databases/system/neostore.relationshiptypescanstore.db new file mode 100755 index 0000000000000000000000000000000000000000..31569c49ccdf77da552681057d8410a3baca0e10 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshiptypescanstore.db differ diff --git a/neo4j/data/databases/system/neostore.relationshiptypestore.db b/neo4j/data/databases/system/neostore.relationshiptypestore.db new file mode 100755 index 0000000000000000000000000000000000000000..5a7a0b60b80e1df73f96b4c78484d7ec7c783620 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshiptypestore.db differ diff --git a/neo4j/data/databases/system/neostore.relationshiptypestore.db.id b/neo4j/data/databases/system/neostore.relationshiptypestore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..9c7e828663fb5a93eee1f0f57aaf94a50a8b1b69 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshiptypestore.db.id differ diff --git a/neo4j/data/databases/system/neostore.relationshiptypestore.db.names b/neo4j/data/databases/system/neostore.relationshiptypestore.db.names new file mode 100755 index 0000000000000000000000000000000000000000..1aa8cf651908b749d5e27d1bc899e72eee93dc0a Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshiptypestore.db.names differ diff --git a/neo4j/data/databases/system/neostore.relationshiptypestore.db.names.id b/neo4j/data/databases/system/neostore.relationshiptypestore.db.names.id new file mode 100755 index 0000000000000000000000000000000000000000..5c4f85d1ca0179601c0a46101004d7db97dc5431 Binary files /dev/null and b/neo4j/data/databases/system/neostore.relationshiptypestore.db.names.id differ diff --git a/neo4j/data/databases/system/neostore.schemastore.db b/neo4j/data/databases/system/neostore.schemastore.db new file mode 100755 index 0000000000000000000000000000000000000000..8e31522a58180d5c3ff275636085e244cbf34def Binary files /dev/null and b/neo4j/data/databases/system/neostore.schemastore.db differ diff --git a/neo4j/data/databases/system/neostore.schemastore.db.id b/neo4j/data/databases/system/neostore.schemastore.db.id new file mode 100755 index 0000000000000000000000000000000000000000..b9c6494f4fbc44ea3b69b8e517381d379c37aefe Binary files /dev/null and b/neo4j/data/databases/system/neostore.schemastore.db.id differ diff --git a/neo4j/data/databases/system/schema/index/native-btree-1.0/3/index-3 b/neo4j/data/databases/system/schema/index/native-btree-1.0/3/index-3 new file mode 100755 index 0000000000000000000000000000000000000000..75474a6934bcc753f63eb9d768828b542c609e3a Binary files /dev/null and b/neo4j/data/databases/system/schema/index/native-btree-1.0/3/index-3 differ diff --git a/neo4j/data/databases/system/schema/index/native-btree-1.0/4/index-4 b/neo4j/data/databases/system/schema/index/native-btree-1.0/4/index-4 new file mode 100755 index 0000000000000000000000000000000000000000..45143b74df3e07e863f7a17dce841ffdf07bc938 Binary files /dev/null and b/neo4j/data/databases/system/schema/index/native-btree-1.0/4/index-4 differ diff --git a/neo4j/data/databases/system/schema/index/native-btree-1.0/7/index-7 b/neo4j/data/databases/system/schema/index/native-btree-1.0/7/index-7 new file mode 100755 index 0000000000000000000000000000000000000000..84bbb106a293d4122448099b6a5cad7930262a07 Binary files /dev/null and b/neo4j/data/databases/system/schema/index/native-btree-1.0/7/index-7 differ diff --git a/neo4j/data/dbms/auth.ini b/neo4j/data/dbms/auth.ini new file mode 100644 index 0000000000000000000000000000000000000000..1b24e9c596f65f066f5afc002057e429887f9a55 --- /dev/null +++ b/neo4j/data/dbms/auth.ini @@ -0,0 +1 @@ +neo4j:SHA-256,906719f6da0ad46d3082df3e1b8b94748c421a50715d5b0c272352fe07f800b8,9e0db27dc9ab2a017f801384f24c47b7c0eea36916a0b907dbee8ad32533b1c3,1024: diff --git a/neo4j/data/server_id b/neo4j/data/server_id new file mode 100755 index 0000000000000000000000000000000000000000..79c9d047b202d753b2b172752c1aa3e2a94a54b5 --- /dev/null +++ b/neo4j/data/server_id @@ -0,0 +1 @@ +jA#*bCFƒ2±Û]k»± \ No newline at end of file diff --git a/neo4j/data/transactions/neo4j/checkpoint.0 b/neo4j/data/transactions/neo4j/checkpoint.0 new file mode 100755 index 0000000000000000000000000000000000000000..a9f5b87cdeebc04eef63e5067da20ddf8aad46a5 Binary files /dev/null and b/neo4j/data/transactions/neo4j/checkpoint.0 differ diff --git a/neo4j/data/transactions/neo4j/neostore.transaction.db.0 b/neo4j/data/transactions/neo4j/neostore.transaction.db.0 new file mode 100755 index 0000000000000000000000000000000000000000..0c8a119a7fb9610d88a35e52274d0a344123040c Binary files /dev/null and b/neo4j/data/transactions/neo4j/neostore.transaction.db.0 differ diff --git a/neo4j/data/transactions/system/checkpoint.0 b/neo4j/data/transactions/system/checkpoint.0 new file mode 100755 index 0000000000000000000000000000000000000000..94ce862967002de98fd2880ffb4dad286933334d Binary files /dev/null and b/neo4j/data/transactions/system/checkpoint.0 differ diff --git a/neo4j/data/transactions/system/neostore.transaction.db.0 b/neo4j/data/transactions/system/neostore.transaction.db.0 new file mode 100755 index 0000000000000000000000000000000000000000..a9045c9667be60eeeaa3d2475235de615732df00 Binary files /dev/null and b/neo4j/data/transactions/system/neostore.transaction.db.0 differ diff --git a/neo4j/data_cypher b/neo4j/data_cypher new file mode 100755 index 0000000000000000000000000000000000000000..210a94eaddb5768b1e570d4f6677929b876f17d4 --- /dev/null +++ b/neo4j/data_cypher @@ -0,0 +1,110 @@ +:begin +CREATE INDEX FOR (node:Person) ON (node.born); +CREATE INDEX FOR (node:Movie) ON (node.released); +CREATE CONSTRAINT ON (node:Person) ASSERT (node.name) IS UNIQUE; +CREATE CONSTRAINT ON (node:Movie) ASSERT (node.title) IS UNIQUE; +CREATE CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit +CALL db.awaitIndexes(300); +:begin +UNWIND [{name:"Keanu Reeves", properties:{born:1964}}, {name:"Carrie-Anne Moss", properties:{born:1967}}, {name:"Laurence Fishburne", properties:{born:1961}}, {name:"Hugo Weaving", properties:{born:1960}}, {name:"Lilly Wachowski", properties:{born:1967}}, {name:"Lana Wachowski", properties:{born:1965}}, {name:"Joel Silver", properties:{born:1952}}, {name:"Emil Eifrem", properties:{born:1978}}, {name:"Charlize Theron", properties:{born:1975}}, {name:"Al Pacino", properties:{born:1940}}, {name:"Taylor Hackford", properties:{born:1944}}, {name:"Tom Cruise", properties:{born:1962}}, {name:"Jack Nicholson", properties:{born:1937}}, {name:"Demi Moore", properties:{born:1962}}, {name:"Kevin Bacon", properties:{born:1958}}, {name:"Kiefer Sutherland", properties:{born:1966}}, {name:"Noah Wyle", properties:{born:1971}}, {name:"Cuba Gooding Jr.", properties:{born:1968}}, {name:"Kevin Pollak", properties:{born:1957}}, {name:"J.T. Walsh", properties:{born:1943}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"James Marshall", properties:{born:1967}}, {name:"Christopher Guest", properties:{born:1948}}, {name:"Rob Reiner", properties:{born:1947}}, {name:"Aaron Sorkin", properties:{born:1961}}, {name:"Kelly McGillis", properties:{born:1957}}, {name:"Val Kilmer", properties:{born:1959}}, {name:"Anthony Edwards", properties:{born:1962}}, {name:"Tom Skerritt", properties:{born:1933}}, {name:"Meg Ryan", properties:{born:1961}}, {name:"Tony Scott", properties:{born:1944}}, {name:"Jim Cash", properties:{born:1941}}, {name:"Renee Zellweger", properties:{born:1969}}, {name:"Kelly Preston", properties:{born:1962}}, {name:"Jerry O'Connell", properties:{born:1974}}, {name:"Jay Mohr", properties:{born:1970}}, {name:"Bonnie Hunt", properties:{born:1961}}, {name:"Regina King", properties:{born:1971}}, {name:"Jonathan Lipnicki", properties:{born:1996}}, {name:"Cameron Crowe", properties:{born:1957}}, {name:"River Phoenix", properties:{born:1970}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Corey Feldman", properties:{born:1971}}, {name:"Wil Wheaton", properties:{born:1972}}, {name:"John Cusack", properties:{born:1966}}, {name:"Marshall Bell", properties:{born:1942}}, {name:"Helen Hunt", properties:{born:1963}}, {name:"Greg Kinnear", properties:{born:1963}}, {name:"James L. Brooks", properties:{born:1940}}, {name:"Annabella Sciorra", properties:{born:1960}}, {name:"Max von Sydow", properties:{born:1929}}, {name:"Werner Herzog", properties:{born:1942}}, {name:"Robin Williams", properties:{born:1951}}, {name:"Vincent Ward", properties:{born:1956}}, {name:"Ethan Hawke", properties:{born:1970}}, {name:"Rick Yune", properties:{born:1971}}, {name:"James Cromwell", properties:{born:1940}}, {name:"Scott Hicks", properties:{born:1953}}, {name:"Parker Posey", properties:{born:1968}}, {name:"Dave Chappelle", properties:{born:1973}}, {name:"Steve Zahn", properties:{born:1967}}, {name:"Tom Hanks", properties:{born:1956}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Nora Ephron", properties:{born:1941}}, {name:"Rita Wilson", properties:{born:1956}}, {name:"Bill Pullman", properties:{born:1953}}, {name:"Victor Garber", properties:{born:1949}}, {name:"Rosie O'Donnell", properties:{born:1962}}, {name:"John Patrick Stanley", properties:{born:1950}}, {name:"Nathan Lane", properties:{born:1956}}, {name:"Billy Crystal", properties:{born:1948}}, {name:"Carrie Fisher", properties:{born:1956}}, {name:"Bruno Kirby", properties:{born:1949}}, {name:"Liv Tyler", properties:{born:1977}}, {name:"Brooke Langton", properties:{born:1970}}, {name:"Gene Hackman", properties:{born:1930}}, {name:"Orlando Jones", properties:{born:1968}}, {name:"Howard Deutch", properties:{born:1950}}, {name:"Christian Bale", properties:{born:1974}}, {name:"Zach Grenier", properties:{born:1954}}, {name:"Mike Nichols", properties:{born:1931}}, {name:"Richard Harris", properties:{born:1930}}, {name:"Clint Eastwood", properties:{born:1930}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Takeshi Kitano", properties:{born:1947}}, {name:"Dina Meyer", properties:{born:1968}}, {name:"Ice-T", properties:{born:1958}}, {name:"Robert Longo", properties:{born:1953}}, {name:"Halle Berry", properties:{born:1966}}, {name:"Jim Broadbent", properties:{born:1949}}, {name:"Tom Tykwer", properties:{born:1965}}, {name:"David Mitchell", properties:{born:1969}}, {name:"Stefan Arndt", properties:{born:1961}}, {name:"Ian McKellen", properties:{born:1939}}, {name:"Audrey Tautou", properties:{born:1976}}, {name:"Paul Bettany", properties:{born:1971}}, {name:"Ron Howard", properties:{born:1954}}, {name:"Natalie Portman", properties:{born:1981}}, {name:"Stephen Rea", properties:{born:1946}}, {name:"John Hurt", properties:{born:1940}}, {name:"Ben Miles", properties:{born:1967}}, {name:"Emile Hirsch", properties:{born:1985}}, {name:"John Goodman", properties:{born:1960}}, {name:"Susan Sarandon", properties:{born:1946}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Matthew Fox", properties:{born:1966}}, {name:"Christina Ricci", properties:{born:1980}}, {name:"Rain", properties:{born:1982}}, {name:"Naomie Harris", properties:{}}, {name:"Michael Clarke Duncan", properties:{born:1957}}, {name:"David Morse", properties:{born:1953}}, {name:"Sam Rockwell", properties:{born:1968}}, {name:"Gary Sinise", properties:{born:1955}}, {name:"Patricia Clarkson", properties:{born:1959}}, {name:"Frank Darabont", properties:{born:1959}}, {name:"Frank Langella", properties:{born:1938}}, {name:"Michael Sheen", properties:{born:1969}}, {name:"Oliver Platt", properties:{born:1960}}, {name:"Danny DeVito", properties:{born:1944}}, {name:"John C. Reilly", properties:{born:1965}}, {name:"Ed Harris", properties:{born:1950}}, {name:"Bill Paxton", properties:{born:1955}}, {name:"Philip Seymour Hoffman", properties:{born:1967}}, {name:"Jan de Bont", properties:{born:1943}}, {name:"Robert Zemeckis", properties:{born:1951}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Milos Forman", properties:{born:1932}}, {name:"Diane Keaton", properties:{born:1946}}, {name:"Nancy Meyers", properties:{born:1949}}, {name:"Chris Columbus", properties:{born:1958}}, {name:"Julia Roberts", properties:{born:1967}}, {name:"Madonna", properties:{born:1954}}, {name:"Geena Davis", properties:{born:1956}}, {name:"Lori Petty", properties:{born:1963}}, {name:"Penny Marshall", properties:{born:1943}}, {name:"Paul Blythe", properties:{}}, {name:"Angela Scope", properties:{}}, {name:"Jessica Thompson", properties:{}}, {name:"James Thompson", properties:{}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{_id:171, properties:{license:"proprietary", price:"freemium", name:"Notion"}}, {_id:172, properties:{name:"Libreoffice Calc\n"}}, {_id:173, properties:{name:"Trello"}}, {_id:174, properties:{name:"Word"}}, {_id:175, properties:{name:"Google Slides"}}, {_id:176, properties:{name:"Google Sheets"}}, {_id:177, properties:{name:"Excel"}}, {_id:178, properties:{name:"Libreoffice Writer\n"}}, {_id:179, properties:{name:"Libreoffice Impress\n"}}, {_id:180, properties:{name:"Powerpoint"}}, {_id:181, properties:{name:"Google Docs\n"}}] AS row +CREATE (n:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row._id}) SET n += row.properties SET n:Software; +UNWIND [{title:"The Matrix", properties:{tagline:"Welcome to the Real World", released:1999}}, {title:"The Matrix Reloaded", properties:{tagline:"Free your mind", released:2003}}, {title:"The Matrix Revolutions", properties:{tagline:"Everything that has a beginning has an end", released:2003}}, {title:"The Devil's Advocate", properties:{tagline:"Evil has its winning ways", released:1997}}, {title:"A Few Good Men", properties:{tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth.", released:1992}}, {title:"Top Gun", properties:{tagline:"I feel the need, the need for speed.", released:1986}}, {title:"Jerry Maguire", properties:{tagline:"The rest of his life begins now.", released:2000}}, {title:"Stand By Me", properties:{tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of.", released:1986}}, {title:"As Good as It Gets", properties:{tagline:"A comedy from the heart that goes for the throat.", released:1997}}, {title:"What Dreams May Come", properties:{tagline:"After life there is more. The end is just the beginning.", released:1998}}, {title:"Snow Falling on Cedars", properties:{tagline:"First loves last. Forever.", released:1999}}, {title:"You've Got Mail", properties:{tagline:"At odds in life... in love on-line.", released:1998}}, {title:"Sleepless in Seattle", properties:{tagline:"What if someone you never met, someone you never saw, someone you never knew was the only someone for you?", released:1993}}, {title:"Joe Versus the Volcano", properties:{tagline:"A story of love, lava and burning desire.", released:1990}}, {title:"When Harry Met Sally", properties:{tagline:"Can two friends sleep together and still love each other in the morning?", released:1998}}, {title:"That Thing You Do", properties:{tagline:"In every life there comes a time when that thing you dream becomes that thing you do", released:1996}}, {title:"The Replacements", properties:{tagline:"Pain heals, Chicks dig scars... Glory lasts forever", released:2000}}, {title:"RescueDawn", properties:{tagline:"Based on the extraordinary true story of one man's fight for freedom", released:2006}}, {title:"The Birdcage", properties:{tagline:"Come as you are", released:1996}}, {title:"Unforgiven", properties:{tagline:"It's a hell of a thing, killing a man", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +UNWIND [{title:"Johnny Mnemonic", properties:{tagline:"The hottest data on earth. In the coolest head in town", released:1995}}, {title:"Cloud Atlas", properties:{tagline:"Everything is connected", released:2012}}, {title:"The Da Vinci Code", properties:{tagline:"Break The Codes", released:2006}}, {title:"V for Vendetta", properties:{tagline:"Freedom! Forever!", released:2006}}, {title:"Speed Racer", properties:{tagline:"Speed has no limits", released:2008}}, {title:"Ninja Assassin", properties:{tagline:"Prepare to enter a secret world of assassins", released:2009}}, {title:"The Green Mile", properties:{tagline:"Walk a mile you'll never forget.", released:1999}}, {title:"Frost/Nixon", properties:{tagline:"400 million people were waiting for the truth.", released:2008}}, {title:"Hoffa", properties:{tagline:"He didn't want law. He wanted justice.", released:1992}}, {title:"Apollo 13", properties:{tagline:"Houston, we have a problem.", released:1995}}, {title:"Twister", properties:{tagline:"Don't Breathe. Don't Look Back.", released:1996}}, {title:"Cast Away", properties:{tagline:"At the edge of the world, his journey begins.", released:2000}}, {title:"One Flew Over the Cuckoo's Nest", properties:{tagline:"If he's crazy, what does that make you?", released:1975}}, {title:"Something's Gotta Give", properties:{released:2003}}, {title:"Bicentennial Man", properties:{tagline:"One robot's 200 year journey to become an ordinary man.", released:1999}}, {title:"Charlie Wilson's War", properties:{tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire.", released:2007}}, {title:"The Polar Express", properties:{tagline:"This Holiday Season… Believe", released:2004}}, {title:"A League of Their Own", properties:{tagline:"Once in a lifetime you get a chance to do something different.", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +:commit +:begin +UNWIND [{start: {name:"Joel Silver"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Stefan Arndt"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:PRODUCED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Jim Cash"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"David Mitchell"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:WROTE]->(end) SET r += row.properties; +UNWIND [{start: {_id:172}, end: {_id:177}, properties:{}}, {start: {_id:173}, end: {_id:171}, properties:{}}, {start: {_id:171}, end: {_id:181}, properties:{}}, {start: {_id:181}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:171}, properties:{}}, {start: {_id:178}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:175}, properties:{}}, {start: {_id:179}, end: {_id:180}, properties:{}}, {start: {_id:180}, end: {_id:175}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:SIMILAR]->(end) SET r += row.properties; +UNWIND [{start: {name:"Keanu Reeves"}, end: {title:"The Matrix"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Emil Eifrem"}, end: {title:"The Matrix"}, properties:{roles:["Emil"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Kevin Lomax"]}}, {start: {name:"Charlize Theron"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Mary Ann Lomax"]}}, {start: {name:"Al Pacino"}, end: {title:"The Devil's Advocate"}, properties:{roles:["John Milton"]}}, {start: {name:"Tom Cruise"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Daniel Kaffee"]}}, {start: {name:"Jack Nicholson"}, end: {title:"A Few Good Men"}, properties:{roles:["Col. Nathan R. Jessup"]}}, {start: {name:"Demi Moore"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Cdr. JoAnne Galloway"]}}, {start: {name:"Kevin Bacon"}, end: {title:"A Few Good Men"}, properties:{roles:["Capt. Jack Ross"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Kiefer Sutherland"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Jonathan Kendrick"]}}, {start: {name:"Noah Wyle"}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Jeffrey Barnes"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Carl Hammaker"]}}, {start: {name:"Kevin Pollak"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Sam Weinberg"]}}, {start: {name:"J.T. Walsh"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Col. Matthew Andrew Markinson"]}}, {start: {name:"James Marshall"}, end: {title:"A Few Good Men"}, properties:{roles:["Pfc. Louden Downey"]}}, {start: {name:"Christopher Guest"}, end: {title:"A Few Good Men"}, properties:{roles:["Dr. Stone"]}}, {start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{roles:["Man in Bar"]}}, {start: {name:"Tom Cruise"}, end: {title:"Top Gun"}, properties:{roles:["Maverick"]}}, {start: {name:"Kelly McGillis"}, end: {title:"Top Gun"}, properties:{roles:["Charlie"]}}, {start: {name:"Val Kilmer"}, end: {title:"Top Gun"}, properties:{roles:["Iceman"]}}, {start: {name:"Anthony Edwards"}, end: {title:"Top Gun"}, properties:{roles:["Goose"]}}, {start: {name:"Tom Skerritt"}, end: {title:"Top Gun"}, properties:{roles:["Viper"]}}, {start: {name:"Meg Ryan"}, end: {title:"Top Gun"}, properties:{roles:["Carole"]}}, {start: {name:"Tom Cruise"}, end: {title:"Jerry Maguire"}, properties:{roles:["Jerry Maguire"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"Jerry Maguire"}, properties:{roles:["Rod Tidwell"]}}, {start: {name:"Renee Zellweger"}, end: {title:"Jerry Maguire"}, properties:{roles:["Dorothy Boyd"]}}, {start: {name:"Kelly Preston"}, end: {title:"Jerry Maguire"}, properties:{roles:["Avery Bishop"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Jerry Maguire"}, properties:{roles:["Frank Cushman"]}}, {start: {name:"Jay Mohr"}, end: {title:"Jerry Maguire"}, properties:{roles:["Bob Sugar"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Bonnie Hunt"}, end: {title:"Jerry Maguire"}, properties:{roles:["Laurel Boyd"]}}, {start: {name:"Regina King"}, end: {title:"Jerry Maguire"}, properties:{roles:["Marcee Tidwell"]}}, {start: {name:"Jonathan Lipnicki"}, end: {title:"Jerry Maguire"}, properties:{roles:["Ray Boyd"]}}, {start: {name:"Wil Wheaton"}, end: {title:"Stand By Me"}, properties:{roles:["Gordie Lachance"]}}, {start: {name:"River Phoenix"}, end: {title:"Stand By Me"}, properties:{roles:["Chris Chambers"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Stand By Me"}, properties:{roles:["Vern Tessio"]}}, {start: {name:"Corey Feldman"}, end: {title:"Stand By Me"}, properties:{roles:["Teddy Duchamp"]}}, {start: {name:"John Cusack"}, end: {title:"Stand By Me"}, properties:{roles:["Denny Lachance"]}}, {start: {name:"Kiefer Sutherland"}, end: {title:"Stand By Me"}, properties:{roles:["Ace Merrill"]}}, {start: {name:"Marshall Bell"}, end: {title:"Stand By Me"}, properties:{roles:["Mr. Lachance"]}}, {start: {name:"Jack Nicholson"}, end: {title:"As Good as It Gets"}, properties:{roles:["Melvin Udall"]}}, {start: {name:"Helen Hunt"}, end: {title:"As Good as It Gets"}, properties:{roles:["Carol Connelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"As Good as It Gets"}, properties:{roles:["Simon Bishop"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"As Good as It Gets"}, properties:{roles:["Frank Sachs"]}}, {start: {name:"Robin Williams"}, end: {title:"What Dreams May Come"}, properties:{roles:["Chris Nielsen"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"What Dreams May Come"}, properties:{roles:["Albert Lewis"]}}, {start: {name:"Annabella Sciorra"}, end: {title:"What Dreams May Come"}, properties:{roles:["Annie Collins-Nielsen"]}}, {start: {name:"Max von Sydow"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Tracker"]}}, {start: {name:"Werner Herzog"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Face"]}}, {start: {name:"Ethan Hawke"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Ishmael Chambers"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Rick Yune"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Kazuo Miyamoto"]}}, {start: {name:"Max von Sydow"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Nels Gudmundsson"]}}, {start: {name:"James Cromwell"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Judge Fielding"]}}, {start: {name:"Tom Hanks"}, end: {title:"You've Got Mail"}, properties:{roles:["Joe Fox"]}}, {start: {name:"Meg Ryan"}, end: {title:"You've Got Mail"}, properties:{roles:["Kathleen Kelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"You've Got Mail"}, properties:{roles:["Frank Navasky"]}}, {start: {name:"Parker Posey"}, end: {title:"You've Got Mail"}, properties:{roles:["Patricia Eden"]}}, {start: {name:"Dave Chappelle"}, end: {title:"You've Got Mail"}, properties:{roles:["Kevin Jackson"]}}, {start: {name:"Steve Zahn"}, end: {title:"You've Got Mail"}, properties:{roles:["George Pappas"]}}, {start: {name:"Tom Hanks"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Sam Baldwin"]}}, {start: {name:"Meg Ryan"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Annie Reed"]}}, {start: {name:"Rita Wilson"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Suzy"]}}, {start: {name:"Bill Pullman"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Walter"]}}, {start: {name:"Victor Garber"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Greg"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Becky"]}}, {start: {name:"Tom Hanks"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Joe Banks"]}}, {start: {name:"Meg Ryan"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["DeDe", "Angelica Graynamore", "Patricia Graynamore"]}}, {start: {name:"Nathan Lane"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Baw"]}}, {start: {name:"Billy Crystal"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Harry Burns"]}}, {start: {name:"Meg Ryan"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Sally Albright"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Carrie Fisher"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Marie"]}}, {start: {name:"Bruno Kirby"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Jess"]}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{roles:["Mr. White"]}}, {start: {name:"Liv Tyler"}, end: {title:"That Thing You Do"}, properties:{roles:["Faye Dolan"]}}, {start: {name:"Charlize Theron"}, end: {title:"That Thing You Do"}, properties:{roles:["Tina"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Replacements"}, properties:{roles:["Shane Falco"]}}, {start: {name:"Brooke Langton"}, end: {title:"The Replacements"}, properties:{roles:["Annabelle Farrell"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Replacements"}, properties:{roles:["Jimmy McGinty"]}}, {start: {name:"Orlando Jones"}, end: {title:"The Replacements"}, properties:{roles:["Clifford Franklin"]}}, {start: {name:"Marshall Bell"}, end: {title:"RescueDawn"}, properties:{roles:["Admiral"]}}, {start: {name:"Christian Bale"}, end: {title:"RescueDawn"}, properties:{roles:["Dieter Dengler"]}}, {start: {name:"Zach Grenier"}, end: {title:"RescueDawn"}, properties:{roles:["Squad Leader"]}}, {start: {name:"Steve Zahn"}, end: {title:"RescueDawn"}, properties:{roles:["Duane"]}}, {start: {name:"Robin Williams"}, end: {title:"The Birdcage"}, properties:{roles:["Armand Goldman"]}}, {start: {name:"Nathan Lane"}, end: {title:"The Birdcage"}, properties:{roles:["Albert Goldman"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Birdcage"}, properties:{roles:["Sen. Kevin Keeley"]}}, {start: {name:"Richard Harris"}, end: {title:"Unforgiven"}, properties:{roles:["English Bob"]}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{roles:["Bill Munny"]}}, {start: {name:"Gene Hackman"}, end: {title:"Unforgiven"}, properties:{roles:["Little Bill Daggett"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Johnny Mnemonic"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Takeshi Kitano"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Takahashi"]}}, {start: {name:"Dina Meyer"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Jane"]}}, {start: {name:"Ice-T"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["J-Bone"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cloud Atlas"}, properties:{roles:["Zachry", "Dr. Henry Goose", "Isaac Sachs", "Dermot Hoggins"]}}, {start: {name:"Hugo Weaving"}, end: {title:"Cloud Atlas"}, properties:{roles:["Bill Smoke", "Haskell Moore", "Tadeusz Kesselring", "Nurse Noakes", "Boardman Mephi", "Old Georgie"]}}, {start: {name:"Halle Berry"}, end: {title:"Cloud Atlas"}, properties:{roles:["Luisa Rey", "Jocasta Ayrs", "Ovid", "Meronym"]}}, {start: {name:"Jim Broadbent"}, end: {title:"Cloud Atlas"}, properties:{roles:["Vyvyan Ayrs", "Captain Molyneux", "Timothy Cavendish"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Dr. Robert Langdon"]}}, {start: {name:"Ian McKellen"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sir Leight Teabing"]}}, {start: {name:"Audrey Tautou"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sophie Neveu"]}}, {start: {name:"Paul Bettany"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Silas"]}}, {start: {name:"Hugo Weaving"}, end: {title:"V for Vendetta"}, properties:{roles:["V"]}}, {start: {name:"Natalie Portman"}, end: {title:"V for Vendetta"}, properties:{roles:["Evey Hammond"]}}, {start: {name:"Stephen Rea"}, end: {title:"V for Vendetta"}, properties:{roles:["Eric Finch"]}}, {start: {name:"John Hurt"}, end: {title:"V for Vendetta"}, properties:{roles:["High Chancellor Adam Sutler"]}}, {start: {name:"Ben Miles"}, end: {title:"V for Vendetta"}, properties:{roles:["Dascomb"]}}, {start: {name:"Emile Hirsch"}, end: {title:"Speed Racer"}, properties:{roles:["Speed Racer"]}}, {start: {name:"John Goodman"}, end: {title:"Speed Racer"}, properties:{roles:["Pops"]}}, {start: {name:"Susan Sarandon"}, end: {title:"Speed Racer"}, properties:{roles:["Mom"]}}, {start: {name:"Matthew Fox"}, end: {title:"Speed Racer"}, properties:{roles:["Racer X"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Christina Ricci"}, end: {title:"Speed Racer"}, properties:{roles:["Trixie"]}}, {start: {name:"Rain"}, end: {title:"Speed Racer"}, properties:{roles:["Taejo Togokahn"]}}, {start: {name:"Ben Miles"}, end: {title:"Speed Racer"}, properties:{roles:["Cass Jones"]}}, {start: {name:"Rain"}, end: {title:"Ninja Assassin"}, properties:{roles:["Raizo"]}}, {start: {name:"Naomie Harris"}, end: {title:"Ninja Assassin"}, properties:{roles:["Mika Coretti"]}}, {start: {name:"Rick Yune"}, end: {title:"Ninja Assassin"}, properties:{roles:["Takeshi"]}}, {start: {name:"Ben Miles"}, end: {title:"Ninja Assassin"}, properties:{roles:["Ryan Maslow"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Green Mile"}, properties:{roles:["Paul Edgecomb"]}}, {start: {name:"Michael Clarke Duncan"}, end: {title:"The Green Mile"}, properties:{roles:["John Coffey"]}}, {start: {name:"David Morse"}, end: {title:"The Green Mile"}, properties:{roles:["Brutus \"Brutal\" Howell"]}}, {start: {name:"Bonnie Hunt"}, end: {title:"The Green Mile"}, properties:{roles:["Jan Edgecomb"]}}, {start: {name:"James Cromwell"}, end: {title:"The Green Mile"}, properties:{roles:["Warden Hal Moores"]}}, {start: {name:"Sam Rockwell"}, end: {title:"The Green Mile"}, properties:{roles:["\"Wild Bill\" Wharton"]}}, {start: {name:"Gary Sinise"}, end: {title:"The Green Mile"}, properties:{roles:["Burt Hammersmith"]}}, {start: {name:"Patricia Clarkson"}, end: {title:"The Green Mile"}, properties:{roles:["Melinda Moores"]}}, {start: {name:"Frank Langella"}, end: {title:"Frost/Nixon"}, properties:{roles:["Richard Nixon"]}}, {start: {name:"Michael Sheen"}, end: {title:"Frost/Nixon"}, properties:{roles:["David Frost"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Frost/Nixon"}, properties:{roles:["Jack Brennan"]}}, {start: {name:"Oliver Platt"}, end: {title:"Frost/Nixon"}, properties:{roles:["Bob Zelnick"]}}, {start: {name:"Sam Rockwell"}, end: {title:"Frost/Nixon"}, properties:{roles:["James Reston, Jr."]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jack Nicholson"}, end: {title:"Hoffa"}, properties:{roles:["Hoffa"]}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{roles:["Robert \"Bobby\" Ciaro"]}}, {start: {name:"J.T. Walsh"}, end: {title:"Hoffa"}, properties:{roles:["Frank Fitzsimmons"]}}, {start: {name:"John C. Reilly"}, end: {title:"Hoffa"}, properties:{roles:["Peter \"Pete\" Connelly"]}}, {start: {name:"Tom Hanks"}, end: {title:"Apollo 13"}, properties:{roles:["Jim Lovell"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Apollo 13"}, properties:{roles:["Jack Swigert"]}}, {start: {name:"Ed Harris"}, end: {title:"Apollo 13"}, properties:{roles:["Gene Kranz"]}}, {start: {name:"Bill Paxton"}, end: {title:"Apollo 13"}, properties:{roles:["Fred Haise"]}}, {start: {name:"Gary Sinise"}, end: {title:"Apollo 13"}, properties:{roles:["Ken Mattingly"]}}, {start: {name:"Bill Paxton"}, end: {title:"Twister"}, properties:{roles:["Bill Harding"]}}, {start: {name:"Helen Hunt"}, end: {title:"Twister"}, properties:{roles:["Dr. Jo Harding"]}}, {start: {name:"Zach Grenier"}, end: {title:"Twister"}, properties:{roles:["Eddie"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Twister"}, properties:{roles:["Dustin \"Dusty\" Davis"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cast Away"}, properties:{roles:["Chuck Noland"]}}, {start: {name:"Helen Hunt"}, end: {title:"Cast Away"}, properties:{roles:["Kelly Frears"]}}, {start: {name:"Jack Nicholson"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Randle McMurphy"]}}, {start: {name:"Danny DeVito"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Martini"]}}, {start: {name:"Jack Nicholson"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Harry Sanborn"]}}, {start: {name:"Diane Keaton"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Erica Barry"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Julian Mercer"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Robin Williams"}, end: {title:"Bicentennial Man"}, properties:{roles:["Andrew Marin"]}}, {start: {name:"Oliver Platt"}, end: {title:"Bicentennial Man"}, properties:{roles:["Rupert Burns"]}}, {start: {name:"Tom Hanks"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Rep. Charlie Wilson"]}}, {start: {name:"Julia Roberts"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Joanne Herring"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Gust Avrakotos"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Polar Express"}, properties:{roles:["Hero Boy", "Father", "Conductor", "Hobo", "Scrooge", "Santa Claus"]}}, {start: {name:"Tom Hanks"}, end: {title:"A League of Their Own"}, properties:{roles:["Jimmy Dugan"]}}, {start: {name:"Geena Davis"}, end: {title:"A League of Their Own"}, properties:{roles:["Dottie Hinson"]}}, {start: {name:"Lori Petty"}, end: {title:"A League of Their Own"}, properties:{roles:["Kit Keller"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"A League of Their Own"}, properties:{roles:["Doris Murphy"]}}, {start: {name:"Madonna"}, end: {title:"A League of Their Own"}, properties:{roles:["\"All the Way\" Mae Mordabito"]}}, {start: {name:"Bill Paxton"}, end: {title:"A League of Their Own"}, properties:{roles:["Bob Hinson"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jessica Thompson"}, end: {title:"Cloud Atlas"}, properties:{summary:"An amazing journey", rating:95}}, {start: {name:"Jessica Thompson"}, end: {title:"The Replacements"}, properties:{summary:"Silly, but fun", rating:65}}, {start: {name:"James Thompson"}, end: {title:"The Replacements"}, properties:{summary:"The coolest football movie ever", rating:100}}, {start: {name:"Angela Scope"}, end: {title:"The Replacements"}, properties:{summary:"Pretty funny at times", rating:62}}, {start: {name:"Jessica Thompson"}, end: {title:"Unforgiven"}, properties:{summary:"Dark, but compelling", rating:85}}, {start: {name:"Jessica Thompson"}, end: {title:"The Birdcage"}, properties:{summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}}, {start: {name:"Jessica Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"A solid romp", rating:68}}, {start: {name:"James Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"Fun, but a little far fetched", rating:65}}, {start: {name:"Jessica Thompson"}, end: {title:"Jerry Maguire"}, properties:{summary:"You had me at Jerry", rating:92}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:REVIEWED]->(end) SET r += row.properties; +UNWIND [{start: {name:"James Thompson"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Angela Scope"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Paul Blythe"}, end: {name:"Angela Scope"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Person{name: row.end.name}) +CREATE (start)-[r:FOLLOWS]->(end) SET r += row.properties; +UNWIND [{start: {name:"Lilly Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Taylor Hackford"}, end: {title:"The Devil's Advocate"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Tony Scott"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"Stand By Me"}, properties:{}}, {start: {name:"James L. Brooks"}, end: {title:"As Good as It Gets"}, properties:{}}, {start: {name:"Vincent Ward"}, end: {title:"What Dreams May Come"}, properties:{}}, {start: {name:"Scott Hicks"}, end: {title:"Snow Falling on Cedars"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"You've Got Mail"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"Sleepless in Seattle"}, properties:{}}, {start: {name:"John Patrick Stanley"}, end: {title:"Joe Versus the Volcano"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{}}, {start: {name:"Howard Deutch"}, end: {title:"The Replacements"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Werner Herzog"}, end: {title:"RescueDawn"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"The Birdcage"}, properties:{}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{}}, {start: {name:"Robert Longo"}, end: {title:"Johnny Mnemonic"}, properties:{}}, {start: {name:"Tom Tykwer"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"The Da Vinci Code"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Frank Darabont"}, end: {title:"The Green Mile"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Frost/Nixon"}, properties:{}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Apollo 13"}, properties:{}}, {start: {name:"Jan de Bont"}, end: {title:"Twister"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"Cast Away"}, properties:{}}, {start: {name:"Milos Forman"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Chris Columbus"}, end: {title:"Bicentennial Man"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"Charlie Wilson's War"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"The Polar Express"}, properties:{}}, {start: {name:"Penny Marshall"}, end: {title:"A League of Their Own"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {_id:176}, end: {_id:175}, properties:{}}, {start: {_id:174}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:178}, properties:{}}, {start: {_id:180}, end: {_id:177}, properties:{}}, {start: {_id:174}, end: {_id:180}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:HAS_SAME_CREATOR]->(end) SET r += row.properties; +:commit +:begin +MATCH (n:`UNIQUE IMPORT LABEL`) WITH n LIMIT 20000 REMOVE n:`UNIQUE IMPORT LABEL` REMOVE n.`UNIQUE IMPORT ID`; +:commit +:begin +DROP CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit \ No newline at end of file diff --git a/neo4j/import/data_cypher.cypher b/neo4j/import/data_cypher.cypher new file mode 100644 index 0000000000000000000000000000000000000000..c6b32eeb6386b4df9eac495e5e3658cfd2562936 --- /dev/null +++ b/neo4j/import/data_cypher.cypher @@ -0,0 +1,2 @@ +match (a) -[r] -> () delete a, r; +match (a) delete a; \ No newline at end of file diff --git a/neo4j/import/index.cypher b/neo4j/import/index.cypher new file mode 100644 index 0000000000000000000000000000000000000000..cd57dbd6587c08bc64da00227f34d28c47375484 --- /dev/null +++ b/neo4j/import/index.cypher @@ -0,0 +1,8 @@ +:begin +CREATE INDEX FOR (node:Person) ON (node.born); +CREATE INDEX FOR (node:Movie) ON (node.released); +CREATE CONSTRAINT ON (node:Person) ASSERT (node.name) IS UNIQUE; +CREATE CONSTRAINT ON (node:Movie) ASSERT (node.title) IS UNIQUE; +CREATE CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit +CALL db.awaitIndexes(300); \ No newline at end of file diff --git a/neo4j/import/insert.cypher b/neo4j/import/insert.cypher new file mode 100644 index 0000000000000000000000000000000000000000..ba4cc7bc3e6db76c36975395df80a88af1e38504 --- /dev/null +++ b/neo4j/import/insert.cypher @@ -0,0 +1,103 @@ + +:begin +UNWIND [{name:"Keanu Reeves", properties:{born:1964}}, {name:"Carrie-Anne Moss", properties:{born:1967}}, {name:"Laurence Fishburne", properties:{born:1961}}, {name:"Hugo Weaving", properties:{born:1960}}, {name:"Lilly Wachowski", properties:{born:1967}}, {name:"Lana Wachowski", properties:{born:1965}}, {name:"Joel Silver", properties:{born:1952}}, {name:"Emil Eifrem", properties:{born:1978}}, {name:"Charlize Theron", properties:{born:1975}}, {name:"Al Pacino", properties:{born:1940}}, {name:"Taylor Hackford", properties:{born:1944}}, {name:"Tom Cruise", properties:{born:1962}}, {name:"Jack Nicholson", properties:{born:1937}}, {name:"Demi Moore", properties:{born:1962}}, {name:"Kevin Bacon", properties:{born:1958}}, {name:"Kiefer Sutherland", properties:{born:1966}}, {name:"Noah Wyle", properties:{born:1971}}, {name:"Cuba Gooding Jr.", properties:{born:1968}}, {name:"Kevin Pollak", properties:{born:1957}}, {name:"J.T. Walsh", properties:{born:1943}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"James Marshall", properties:{born:1967}}, {name:"Christopher Guest", properties:{born:1948}}, {name:"Rob Reiner", properties:{born:1947}}, {name:"Aaron Sorkin", properties:{born:1961}}, {name:"Kelly McGillis", properties:{born:1957}}, {name:"Val Kilmer", properties:{born:1959}}, {name:"Anthony Edwards", properties:{born:1962}}, {name:"Tom Skerritt", properties:{born:1933}}, {name:"Meg Ryan", properties:{born:1961}}, {name:"Tony Scott", properties:{born:1944}}, {name:"Jim Cash", properties:{born:1941}}, {name:"Renee Zellweger", properties:{born:1969}}, {name:"Kelly Preston", properties:{born:1962}}, {name:"Jerry O'Connell", properties:{born:1974}}, {name:"Jay Mohr", properties:{born:1970}}, {name:"Bonnie Hunt", properties:{born:1961}}, {name:"Regina King", properties:{born:1971}}, {name:"Jonathan Lipnicki", properties:{born:1996}}, {name:"Cameron Crowe", properties:{born:1957}}, {name:"River Phoenix", properties:{born:1970}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Corey Feldman", properties:{born:1971}}, {name:"Wil Wheaton", properties:{born:1972}}, {name:"John Cusack", properties:{born:1966}}, {name:"Marshall Bell", properties:{born:1942}}, {name:"Helen Hunt", properties:{born:1963}}, {name:"Greg Kinnear", properties:{born:1963}}, {name:"James L. Brooks", properties:{born:1940}}, {name:"Annabella Sciorra", properties:{born:1960}}, {name:"Max von Sydow", properties:{born:1929}}, {name:"Werner Herzog", properties:{born:1942}}, {name:"Robin Williams", properties:{born:1951}}, {name:"Vincent Ward", properties:{born:1956}}, {name:"Ethan Hawke", properties:{born:1970}}, {name:"Rick Yune", properties:{born:1971}}, {name:"James Cromwell", properties:{born:1940}}, {name:"Scott Hicks", properties:{born:1953}}, {name:"Parker Posey", properties:{born:1968}}, {name:"Dave Chappelle", properties:{born:1973}}, {name:"Steve Zahn", properties:{born:1967}}, {name:"Tom Hanks", properties:{born:1956}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Nora Ephron", properties:{born:1941}}, {name:"Rita Wilson", properties:{born:1956}}, {name:"Bill Pullman", properties:{born:1953}}, {name:"Victor Garber", properties:{born:1949}}, {name:"Rosie O'Donnell", properties:{born:1962}}, {name:"John Patrick Stanley", properties:{born:1950}}, {name:"Nathan Lane", properties:{born:1956}}, {name:"Billy Crystal", properties:{born:1948}}, {name:"Carrie Fisher", properties:{born:1956}}, {name:"Bruno Kirby", properties:{born:1949}}, {name:"Liv Tyler", properties:{born:1977}}, {name:"Brooke Langton", properties:{born:1970}}, {name:"Gene Hackman", properties:{born:1930}}, {name:"Orlando Jones", properties:{born:1968}}, {name:"Howard Deutch", properties:{born:1950}}, {name:"Christian Bale", properties:{born:1974}}, {name:"Zach Grenier", properties:{born:1954}}, {name:"Mike Nichols", properties:{born:1931}}, {name:"Richard Harris", properties:{born:1930}}, {name:"Clint Eastwood", properties:{born:1930}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Takeshi Kitano", properties:{born:1947}}, {name:"Dina Meyer", properties:{born:1968}}, {name:"Ice-T", properties:{born:1958}}, {name:"Robert Longo", properties:{born:1953}}, {name:"Halle Berry", properties:{born:1966}}, {name:"Jim Broadbent", properties:{born:1949}}, {name:"Tom Tykwer", properties:{born:1965}}, {name:"David Mitchell", properties:{born:1969}}, {name:"Stefan Arndt", properties:{born:1961}}, {name:"Ian McKellen", properties:{born:1939}}, {name:"Audrey Tautou", properties:{born:1976}}, {name:"Paul Bettany", properties:{born:1971}}, {name:"Ron Howard", properties:{born:1954}}, {name:"Natalie Portman", properties:{born:1981}}, {name:"Stephen Rea", properties:{born:1946}}, {name:"John Hurt", properties:{born:1940}}, {name:"Ben Miles", properties:{born:1967}}, {name:"Emile Hirsch", properties:{born:1985}}, {name:"John Goodman", properties:{born:1960}}, {name:"Susan Sarandon", properties:{born:1946}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Matthew Fox", properties:{born:1966}}, {name:"Christina Ricci", properties:{born:1980}}, {name:"Rain", properties:{born:1982}}, {name:"Naomie Harris", properties:{}}, {name:"Michael Clarke Duncan", properties:{born:1957}}, {name:"David Morse", properties:{born:1953}}, {name:"Sam Rockwell", properties:{born:1968}}, {name:"Gary Sinise", properties:{born:1955}}, {name:"Patricia Clarkson", properties:{born:1959}}, {name:"Frank Darabont", properties:{born:1959}}, {name:"Frank Langella", properties:{born:1938}}, {name:"Michael Sheen", properties:{born:1969}}, {name:"Oliver Platt", properties:{born:1960}}, {name:"Danny DeVito", properties:{born:1944}}, {name:"John C. Reilly", properties:{born:1965}}, {name:"Ed Harris", properties:{born:1950}}, {name:"Bill Paxton", properties:{born:1955}}, {name:"Philip Seymour Hoffman", properties:{born:1967}}, {name:"Jan de Bont", properties:{born:1943}}, {name:"Robert Zemeckis", properties:{born:1951}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Milos Forman", properties:{born:1932}}, {name:"Diane Keaton", properties:{born:1946}}, {name:"Nancy Meyers", properties:{born:1949}}, {name:"Chris Columbus", properties:{born:1958}}, {name:"Julia Roberts", properties:{born:1967}}, {name:"Madonna", properties:{born:1954}}, {name:"Geena Davis", properties:{born:1956}}, {name:"Lori Petty", properties:{born:1963}}, {name:"Penny Marshall", properties:{born:1943}}, {name:"Paul Blythe", properties:{}}, {name:"Angela Scope", properties:{}}, {name:"Jessica Thompson", properties:{}}, {name:"James Thompson", properties:{}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{_id:171, properties:{license:"proprietary", price:"freemium", name:"Notion"}}, {_id:172, properties:{name:"Libreoffice Calc\n"}}, {_id:173, properties:{name:"Trello"}}, {_id:174, properties:{name:"Word"}}, {_id:175, properties:{name:"Google Slides"}}, {_id:176, properties:{name:"Google Sheets"}}, {_id:177, properties:{name:"Excel"}}, {_id:178, properties:{name:"Libreoffice Writer\n"}}, {_id:179, properties:{name:"Libreoffice Impress\n"}}, {_id:180, properties:{name:"Powerpoint"}}, {_id:181, properties:{name:"Google Docs\n"}}] AS row +CREATE (n:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row._id}) SET n += row.properties SET n:Software; +UNWIND [{title:"The Matrix", properties:{tagline:"Welcome to the Real World", released:1999}}, {title:"The Matrix Reloaded", properties:{tagline:"Free your mind", released:2003}}, {title:"The Matrix Revolutions", properties:{tagline:"Everything that has a beginning has an end", released:2003}}, {title:"The Devil's Advocate", properties:{tagline:"Evil has its winning ways", released:1997}}, {title:"A Few Good Men", properties:{tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth.", released:1992}}, {title:"Top Gun", properties:{tagline:"I feel the need, the need for speed.", released:1986}}, {title:"Jerry Maguire", properties:{tagline:"The rest of his life begins now.", released:2000}}, {title:"Stand By Me", properties:{tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of.", released:1986}}, {title:"As Good as It Gets", properties:{tagline:"A comedy from the heart that goes for the throat.", released:1997}}, {title:"What Dreams May Come", properties:{tagline:"After life there is more. The end is just the beginning.", released:1998}}, {title:"Snow Falling on Cedars", properties:{tagline:"First loves last. Forever.", released:1999}}, {title:"You've Got Mail", properties:{tagline:"At odds in life... in love on-line.", released:1998}}, {title:"Sleepless in Seattle", properties:{tagline:"What if someone you never met, someone you never saw, someone you never knew was the only someone for you?", released:1993}}, {title:"Joe Versus the Volcano", properties:{tagline:"A story of love, lava and burning desire.", released:1990}}, {title:"When Harry Met Sally", properties:{tagline:"Can two friends sleep together and still love each other in the morning?", released:1998}}, {title:"That Thing You Do", properties:{tagline:"In every life there comes a time when that thing you dream becomes that thing you do", released:1996}}, {title:"The Replacements", properties:{tagline:"Pain heals, Chicks dig scars... Glory lasts forever", released:2000}}, {title:"RescueDawn", properties:{tagline:"Based on the extraordinary true story of one man's fight for freedom", released:2006}}, {title:"The Birdcage", properties:{tagline:"Come as you are", released:1996}}, {title:"Unforgiven", properties:{tagline:"It's a hell of a thing, killing a man", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +UNWIND [{title:"Johnny Mnemonic", properties:{tagline:"The hottest data on earth. In the coolest head in town", released:1995}}, {title:"Cloud Atlas", properties:{tagline:"Everything is connected", released:2012}}, {title:"The Da Vinci Code", properties:{tagline:"Break The Codes", released:2006}}, {title:"V for Vendetta", properties:{tagline:"Freedom! Forever!", released:2006}}, {title:"Speed Racer", properties:{tagline:"Speed has no limits", released:2008}}, {title:"Ninja Assassin", properties:{tagline:"Prepare to enter a secret world of assassins", released:2009}}, {title:"The Green Mile", properties:{tagline:"Walk a mile you'll never forget.", released:1999}}, {title:"Frost/Nixon", properties:{tagline:"400 million people were waiting for the truth.", released:2008}}, {title:"Hoffa", properties:{tagline:"He didn't want law. He wanted justice.", released:1992}}, {title:"Apollo 13", properties:{tagline:"Houston, we have a problem.", released:1995}}, {title:"Twister", properties:{tagline:"Don't Breathe. Don't Look Back.", released:1996}}, {title:"Cast Away", properties:{tagline:"At the edge of the world, his journey begins.", released:2000}}, {title:"One Flew Over the Cuckoo's Nest", properties:{tagline:"If he's crazy, what does that make you?", released:1975}}, {title:"Something's Gotta Give", properties:{released:2003}}, {title:"Bicentennial Man", properties:{tagline:"One robot's 200 year journey to become an ordinary man.", released:1999}}, {title:"Charlie Wilson's War", properties:{tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire.", released:2007}}, {title:"The Polar Express", properties:{tagline:"This Holiday Season… Believe", released:2004}}, {title:"A League of Their Own", properties:{tagline:"Once in a lifetime you get a chance to do something different.", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +:commit +:begin +UNWIND [{start: {name:"Joel Silver"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Stefan Arndt"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:PRODUCED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Jim Cash"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"David Mitchell"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:WROTE]->(end) SET r += row.properties; +UNWIND [{start: {_id:172}, end: {_id:177}, properties:{}}, {start: {_id:173}, end: {_id:171}, properties:{}}, {start: {_id:171}, end: {_id:181}, properties:{}}, {start: {_id:181}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:171}, properties:{}}, {start: {_id:178}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:175}, properties:{}}, {start: {_id:179}, end: {_id:180}, properties:{}}, {start: {_id:180}, end: {_id:175}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:SIMILAR]->(end) SET r += row.properties; +UNWIND [{start: {name:"Keanu Reeves"}, end: {title:"The Matrix"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Emil Eifrem"}, end: {title:"The Matrix"}, properties:{roles:["Emil"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Kevin Lomax"]}}, {start: {name:"Charlize Theron"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Mary Ann Lomax"]}}, {start: {name:"Al Pacino"}, end: {title:"The Devil's Advocate"}, properties:{roles:["John Milton"]}}, {start: {name:"Tom Cruise"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Daniel Kaffee"]}}, {start: {name:"Jack Nicholson"}, end: {title:"A Few Good Men"}, properties:{roles:["Col. Nathan R. Jessup"]}}, {start: {name:"Demi Moore"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Cdr. JoAnne Galloway"]}}, {start: {name:"Kevin Bacon"}, end: {title:"A Few Good Men"}, properties:{roles:["Capt. Jack Ross"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Kiefer Sutherland"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Jonathan Kendrick"]}}, {start: {name:"Noah Wyle"}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Jeffrey Barnes"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Carl Hammaker"]}}, {start: {name:"Kevin Pollak"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Sam Weinberg"]}}, {start: {name:"J.T. Walsh"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Col. Matthew Andrew Markinson"]}}, {start: {name:"James Marshall"}, end: {title:"A Few Good Men"}, properties:{roles:["Pfc. Louden Downey"]}}, {start: {name:"Christopher Guest"}, end: {title:"A Few Good Men"}, properties:{roles:["Dr. Stone"]}}, {start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{roles:["Man in Bar"]}}, {start: {name:"Tom Cruise"}, end: {title:"Top Gun"}, properties:{roles:["Maverick"]}}, {start: {name:"Kelly McGillis"}, end: {title:"Top Gun"}, properties:{roles:["Charlie"]}}, {start: {name:"Val Kilmer"}, end: {title:"Top Gun"}, properties:{roles:["Iceman"]}}, {start: {name:"Anthony Edwards"}, end: {title:"Top Gun"}, properties:{roles:["Goose"]}}, {start: {name:"Tom Skerritt"}, end: {title:"Top Gun"}, properties:{roles:["Viper"]}}, {start: {name:"Meg Ryan"}, end: {title:"Top Gun"}, properties:{roles:["Carole"]}}, {start: {name:"Tom Cruise"}, end: {title:"Jerry Maguire"}, properties:{roles:["Jerry Maguire"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"Jerry Maguire"}, properties:{roles:["Rod Tidwell"]}}, {start: {name:"Renee Zellweger"}, end: {title:"Jerry Maguire"}, properties:{roles:["Dorothy Boyd"]}}, {start: {name:"Kelly Preston"}, end: {title:"Jerry Maguire"}, properties:{roles:["Avery Bishop"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Jerry Maguire"}, properties:{roles:["Frank Cushman"]}}, {start: {name:"Jay Mohr"}, end: {title:"Jerry Maguire"}, properties:{roles:["Bob Sugar"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Bonnie Hunt"}, end: {title:"Jerry Maguire"}, properties:{roles:["Laurel Boyd"]}}, {start: {name:"Regina King"}, end: {title:"Jerry Maguire"}, properties:{roles:["Marcee Tidwell"]}}, {start: {name:"Jonathan Lipnicki"}, end: {title:"Jerry Maguire"}, properties:{roles:["Ray Boyd"]}}, {start: {name:"Wil Wheaton"}, end: {title:"Stand By Me"}, properties:{roles:["Gordie Lachance"]}}, {start: {name:"River Phoenix"}, end: {title:"Stand By Me"}, properties:{roles:["Chris Chambers"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Stand By Me"}, properties:{roles:["Vern Tessio"]}}, {start: {name:"Corey Feldman"}, end: {title:"Stand By Me"}, properties:{roles:["Teddy Duchamp"]}}, {start: {name:"John Cusack"}, end: {title:"Stand By Me"}, properties:{roles:["Denny Lachance"]}}, {start: {name:"Kiefer Sutherland"}, end: {title:"Stand By Me"}, properties:{roles:["Ace Merrill"]}}, {start: {name:"Marshall Bell"}, end: {title:"Stand By Me"}, properties:{roles:["Mr. Lachance"]}}, {start: {name:"Jack Nicholson"}, end: {title:"As Good as It Gets"}, properties:{roles:["Melvin Udall"]}}, {start: {name:"Helen Hunt"}, end: {title:"As Good as It Gets"}, properties:{roles:["Carol Connelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"As Good as It Gets"}, properties:{roles:["Simon Bishop"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"As Good as It Gets"}, properties:{roles:["Frank Sachs"]}}, {start: {name:"Robin Williams"}, end: {title:"What Dreams May Come"}, properties:{roles:["Chris Nielsen"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"What Dreams May Come"}, properties:{roles:["Albert Lewis"]}}, {start: {name:"Annabella Sciorra"}, end: {title:"What Dreams May Come"}, properties:{roles:["Annie Collins-Nielsen"]}}, {start: {name:"Max von Sydow"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Tracker"]}}, {start: {name:"Werner Herzog"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Face"]}}, {start: {name:"Ethan Hawke"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Ishmael Chambers"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Rick Yune"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Kazuo Miyamoto"]}}, {start: {name:"Max von Sydow"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Nels Gudmundsson"]}}, {start: {name:"James Cromwell"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Judge Fielding"]}}, {start: {name:"Tom Hanks"}, end: {title:"You've Got Mail"}, properties:{roles:["Joe Fox"]}}, {start: {name:"Meg Ryan"}, end: {title:"You've Got Mail"}, properties:{roles:["Kathleen Kelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"You've Got Mail"}, properties:{roles:["Frank Navasky"]}}, {start: {name:"Parker Posey"}, end: {title:"You've Got Mail"}, properties:{roles:["Patricia Eden"]}}, {start: {name:"Dave Chappelle"}, end: {title:"You've Got Mail"}, properties:{roles:["Kevin Jackson"]}}, {start: {name:"Steve Zahn"}, end: {title:"You've Got Mail"}, properties:{roles:["George Pappas"]}}, {start: {name:"Tom Hanks"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Sam Baldwin"]}}, {start: {name:"Meg Ryan"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Annie Reed"]}}, {start: {name:"Rita Wilson"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Suzy"]}}, {start: {name:"Bill Pullman"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Walter"]}}, {start: {name:"Victor Garber"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Greg"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Becky"]}}, {start: {name:"Tom Hanks"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Joe Banks"]}}, {start: {name:"Meg Ryan"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["DeDe", "Angelica Graynamore", "Patricia Graynamore"]}}, {start: {name:"Nathan Lane"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Baw"]}}, {start: {name:"Billy Crystal"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Harry Burns"]}}, {start: {name:"Meg Ryan"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Sally Albright"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Carrie Fisher"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Marie"]}}, {start: {name:"Bruno Kirby"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Jess"]}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{roles:["Mr. White"]}}, {start: {name:"Liv Tyler"}, end: {title:"That Thing You Do"}, properties:{roles:["Faye Dolan"]}}, {start: {name:"Charlize Theron"}, end: {title:"That Thing You Do"}, properties:{roles:["Tina"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Replacements"}, properties:{roles:["Shane Falco"]}}, {start: {name:"Brooke Langton"}, end: {title:"The Replacements"}, properties:{roles:["Annabelle Farrell"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Replacements"}, properties:{roles:["Jimmy McGinty"]}}, {start: {name:"Orlando Jones"}, end: {title:"The Replacements"}, properties:{roles:["Clifford Franklin"]}}, {start: {name:"Marshall Bell"}, end: {title:"RescueDawn"}, properties:{roles:["Admiral"]}}, {start: {name:"Christian Bale"}, end: {title:"RescueDawn"}, properties:{roles:["Dieter Dengler"]}}, {start: {name:"Zach Grenier"}, end: {title:"RescueDawn"}, properties:{roles:["Squad Leader"]}}, {start: {name:"Steve Zahn"}, end: {title:"RescueDawn"}, properties:{roles:["Duane"]}}, {start: {name:"Robin Williams"}, end: {title:"The Birdcage"}, properties:{roles:["Armand Goldman"]}}, {start: {name:"Nathan Lane"}, end: {title:"The Birdcage"}, properties:{roles:["Albert Goldman"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Birdcage"}, properties:{roles:["Sen. Kevin Keeley"]}}, {start: {name:"Richard Harris"}, end: {title:"Unforgiven"}, properties:{roles:["English Bob"]}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{roles:["Bill Munny"]}}, {start: {name:"Gene Hackman"}, end: {title:"Unforgiven"}, properties:{roles:["Little Bill Daggett"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Johnny Mnemonic"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Takeshi Kitano"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Takahashi"]}}, {start: {name:"Dina Meyer"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Jane"]}}, {start: {name:"Ice-T"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["J-Bone"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cloud Atlas"}, properties:{roles:["Zachry", "Dr. Henry Goose", "Isaac Sachs", "Dermot Hoggins"]}}, {start: {name:"Hugo Weaving"}, end: {title:"Cloud Atlas"}, properties:{roles:["Bill Smoke", "Haskell Moore", "Tadeusz Kesselring", "Nurse Noakes", "Boardman Mephi", "Old Georgie"]}}, {start: {name:"Halle Berry"}, end: {title:"Cloud Atlas"}, properties:{roles:["Luisa Rey", "Jocasta Ayrs", "Ovid", "Meronym"]}}, {start: {name:"Jim Broadbent"}, end: {title:"Cloud Atlas"}, properties:{roles:["Vyvyan Ayrs", "Captain Molyneux", "Timothy Cavendish"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Dr. Robert Langdon"]}}, {start: {name:"Ian McKellen"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sir Leight Teabing"]}}, {start: {name:"Audrey Tautou"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sophie Neveu"]}}, {start: {name:"Paul Bettany"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Silas"]}}, {start: {name:"Hugo Weaving"}, end: {title:"V for Vendetta"}, properties:{roles:["V"]}}, {start: {name:"Natalie Portman"}, end: {title:"V for Vendetta"}, properties:{roles:["Evey Hammond"]}}, {start: {name:"Stephen Rea"}, end: {title:"V for Vendetta"}, properties:{roles:["Eric Finch"]}}, {start: {name:"John Hurt"}, end: {title:"V for Vendetta"}, properties:{roles:["High Chancellor Adam Sutler"]}}, {start: {name:"Ben Miles"}, end: {title:"V for Vendetta"}, properties:{roles:["Dascomb"]}}, {start: {name:"Emile Hirsch"}, end: {title:"Speed Racer"}, properties:{roles:["Speed Racer"]}}, {start: {name:"John Goodman"}, end: {title:"Speed Racer"}, properties:{roles:["Pops"]}}, {start: {name:"Susan Sarandon"}, end: {title:"Speed Racer"}, properties:{roles:["Mom"]}}, {start: {name:"Matthew Fox"}, end: {title:"Speed Racer"}, properties:{roles:["Racer X"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Christina Ricci"}, end: {title:"Speed Racer"}, properties:{roles:["Trixie"]}}, {start: {name:"Rain"}, end: {title:"Speed Racer"}, properties:{roles:["Taejo Togokahn"]}}, {start: {name:"Ben Miles"}, end: {title:"Speed Racer"}, properties:{roles:["Cass Jones"]}}, {start: {name:"Rain"}, end: {title:"Ninja Assassin"}, properties:{roles:["Raizo"]}}, {start: {name:"Naomie Harris"}, end: {title:"Ninja Assassin"}, properties:{roles:["Mika Coretti"]}}, {start: {name:"Rick Yune"}, end: {title:"Ninja Assassin"}, properties:{roles:["Takeshi"]}}, {start: {name:"Ben Miles"}, end: {title:"Ninja Assassin"}, properties:{roles:["Ryan Maslow"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Green Mile"}, properties:{roles:["Paul Edgecomb"]}}, {start: {name:"Michael Clarke Duncan"}, end: {title:"The Green Mile"}, properties:{roles:["John Coffey"]}}, {start: {name:"David Morse"}, end: {title:"The Green Mile"}, properties:{roles:["Brutus \"Brutal\" Howell"]}}, {start: {name:"Bonnie Hunt"}, end: {title:"The Green Mile"}, properties:{roles:["Jan Edgecomb"]}}, {start: {name:"James Cromwell"}, end: {title:"The Green Mile"}, properties:{roles:["Warden Hal Moores"]}}, {start: {name:"Sam Rockwell"}, end: {title:"The Green Mile"}, properties:{roles:["\"Wild Bill\" Wharton"]}}, {start: {name:"Gary Sinise"}, end: {title:"The Green Mile"}, properties:{roles:["Burt Hammersmith"]}}, {start: {name:"Patricia Clarkson"}, end: {title:"The Green Mile"}, properties:{roles:["Melinda Moores"]}}, {start: {name:"Frank Langella"}, end: {title:"Frost/Nixon"}, properties:{roles:["Richard Nixon"]}}, {start: {name:"Michael Sheen"}, end: {title:"Frost/Nixon"}, properties:{roles:["David Frost"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Frost/Nixon"}, properties:{roles:["Jack Brennan"]}}, {start: {name:"Oliver Platt"}, end: {title:"Frost/Nixon"}, properties:{roles:["Bob Zelnick"]}}, {start: {name:"Sam Rockwell"}, end: {title:"Frost/Nixon"}, properties:{roles:["James Reston, Jr."]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jack Nicholson"}, end: {title:"Hoffa"}, properties:{roles:["Hoffa"]}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{roles:["Robert \"Bobby\" Ciaro"]}}, {start: {name:"J.T. Walsh"}, end: {title:"Hoffa"}, properties:{roles:["Frank Fitzsimmons"]}}, {start: {name:"John C. Reilly"}, end: {title:"Hoffa"}, properties:{roles:["Peter \"Pete\" Connelly"]}}, {start: {name:"Tom Hanks"}, end: {title:"Apollo 13"}, properties:{roles:["Jim Lovell"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Apollo 13"}, properties:{roles:["Jack Swigert"]}}, {start: {name:"Ed Harris"}, end: {title:"Apollo 13"}, properties:{roles:["Gene Kranz"]}}, {start: {name:"Bill Paxton"}, end: {title:"Apollo 13"}, properties:{roles:["Fred Haise"]}}, {start: {name:"Gary Sinise"}, end: {title:"Apollo 13"}, properties:{roles:["Ken Mattingly"]}}, {start: {name:"Bill Paxton"}, end: {title:"Twister"}, properties:{roles:["Bill Harding"]}}, {start: {name:"Helen Hunt"}, end: {title:"Twister"}, properties:{roles:["Dr. Jo Harding"]}}, {start: {name:"Zach Grenier"}, end: {title:"Twister"}, properties:{roles:["Eddie"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Twister"}, properties:{roles:["Dustin \"Dusty\" Davis"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cast Away"}, properties:{roles:["Chuck Noland"]}}, {start: {name:"Helen Hunt"}, end: {title:"Cast Away"}, properties:{roles:["Kelly Frears"]}}, {start: {name:"Jack Nicholson"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Randle McMurphy"]}}, {start: {name:"Danny DeVito"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Martini"]}}, {start: {name:"Jack Nicholson"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Harry Sanborn"]}}, {start: {name:"Diane Keaton"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Erica Barry"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Julian Mercer"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Robin Williams"}, end: {title:"Bicentennial Man"}, properties:{roles:["Andrew Marin"]}}, {start: {name:"Oliver Platt"}, end: {title:"Bicentennial Man"}, properties:{roles:["Rupert Burns"]}}, {start: {name:"Tom Hanks"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Rep. Charlie Wilson"]}}, {start: {name:"Julia Roberts"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Joanne Herring"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Gust Avrakotos"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Polar Express"}, properties:{roles:["Hero Boy", "Father", "Conductor", "Hobo", "Scrooge", "Santa Claus"]}}, {start: {name:"Tom Hanks"}, end: {title:"A League of Their Own"}, properties:{roles:["Jimmy Dugan"]}}, {start: {name:"Geena Davis"}, end: {title:"A League of Their Own"}, properties:{roles:["Dottie Hinson"]}}, {start: {name:"Lori Petty"}, end: {title:"A League of Their Own"}, properties:{roles:["Kit Keller"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"A League of Their Own"}, properties:{roles:["Doris Murphy"]}}, {start: {name:"Madonna"}, end: {title:"A League of Their Own"}, properties:{roles:["\"All the Way\" Mae Mordabito"]}}, {start: {name:"Bill Paxton"}, end: {title:"A League of Their Own"}, properties:{roles:["Bob Hinson"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jessica Thompson"}, end: {title:"Cloud Atlas"}, properties:{summary:"An amazing journey", rating:95}}, {start: {name:"Jessica Thompson"}, end: {title:"The Replacements"}, properties:{summary:"Silly, but fun", rating:65}}, {start: {name:"James Thompson"}, end: {title:"The Replacements"}, properties:{summary:"The coolest football movie ever", rating:100}}, {start: {name:"Angela Scope"}, end: {title:"The Replacements"}, properties:{summary:"Pretty funny at times", rating:62}}, {start: {name:"Jessica Thompson"}, end: {title:"Unforgiven"}, properties:{summary:"Dark, but compelling", rating:85}}, {start: {name:"Jessica Thompson"}, end: {title:"The Birdcage"}, properties:{summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}}, {start: {name:"Jessica Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"A solid romp", rating:68}}, {start: {name:"James Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"Fun, but a little far fetched", rating:65}}, {start: {name:"Jessica Thompson"}, end: {title:"Jerry Maguire"}, properties:{summary:"You had me at Jerry", rating:92}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:REVIEWED]->(end) SET r += row.properties; +UNWIND [{start: {name:"James Thompson"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Angela Scope"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Paul Blythe"}, end: {name:"Angela Scope"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Person{name: row.end.name}) +CREATE (start)-[r:FOLLOWS]->(end) SET r += row.properties; +UNWIND [{start: {name:"Lilly Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Taylor Hackford"}, end: {title:"The Devil's Advocate"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Tony Scott"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"Stand By Me"}, properties:{}}, {start: {name:"James L. Brooks"}, end: {title:"As Good as It Gets"}, properties:{}}, {start: {name:"Vincent Ward"}, end: {title:"What Dreams May Come"}, properties:{}}, {start: {name:"Scott Hicks"}, end: {title:"Snow Falling on Cedars"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"You've Got Mail"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"Sleepless in Seattle"}, properties:{}}, {start: {name:"John Patrick Stanley"}, end: {title:"Joe Versus the Volcano"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{}}, {start: {name:"Howard Deutch"}, end: {title:"The Replacements"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Werner Herzog"}, end: {title:"RescueDawn"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"The Birdcage"}, properties:{}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{}}, {start: {name:"Robert Longo"}, end: {title:"Johnny Mnemonic"}, properties:{}}, {start: {name:"Tom Tykwer"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"The Da Vinci Code"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Frank Darabont"}, end: {title:"The Green Mile"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Frost/Nixon"}, properties:{}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Apollo 13"}, properties:{}}, {start: {name:"Jan de Bont"}, end: {title:"Twister"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"Cast Away"}, properties:{}}, {start: {name:"Milos Forman"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Chris Columbus"}, end: {title:"Bicentennial Man"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"Charlie Wilson's War"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"The Polar Express"}, properties:{}}, {start: {name:"Penny Marshall"}, end: {title:"A League of Their Own"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {_id:176}, end: {_id:175}, properties:{}}, {start: {_id:174}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:178}, properties:{}}, {start: {_id:180}, end: {_id:177}, properties:{}}, {start: {_id:174}, end: {_id:180}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:HAS_SAME_CREATOR]->(end) SET r += row.properties; +:commit +:begin +MATCH (n:`UNIQUE IMPORT LABEL`) WITH n LIMIT 20000 REMOVE n:`UNIQUE IMPORT LABEL` REMOVE n.`UNIQUE IMPORT ID`; +:commit +:begin +DROP CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit \ No newline at end of file diff --git a/neo4j/import/reset.cypher b/neo4j/import/reset.cypher new file mode 100644 index 0000000000000000000000000000000000000000..c6b32eeb6386b4df9eac495e5e3658cfd2562936 --- /dev/null +++ b/neo4j/import/reset.cypher @@ -0,0 +1,2 @@ +match (a) -[r] -> () delete a, r; +match (a) delete a; \ No newline at end of file diff --git a/neo4j/import_old/data.csv b/neo4j/import_old/data.csv new file mode 100755 index 0000000000000000000000000000000000000000..69ab40c239269db06b4489ed5df6820f9fa4b07b --- /dev/null +++ b/neo4j/import_old/data.csv @@ -0,0 +1,455 @@ +"_id","_labels","born","license","name","price","released","tagline","title","_start","_end","_type","rating","roles","summary" +"0",":Movie","","","","","1999","Welcome to the Real World","The Matrix",,,,,, +"1",":Person","1964","","Keanu Reeves","","","","",,,,,, +"2",":Person","1967","","Carrie-Anne Moss","","","","",,,,,, +"3",":Person","1961","","Laurence Fishburne","","","","",,,,,, +"4",":Person","1960","","Hugo Weaving","","","","",,,,,, +"5",":Person","1967","","Lilly Wachowski","","","","",,,,,, +"6",":Person","1965","","Lana Wachowski","","","","",,,,,, +"7",":Person","1952","","Joel Silver","","","","",,,,,, +"8",":Person","1978","","Emil Eifrem","","","","",,,,,, +"9",":Movie","","","","","2003","Free your mind","The Matrix Reloaded",,,,,, +"10",":Movie","","","","","2003","Everything that has a beginning has an end","The Matrix Revolutions",,,,,, +"11",":Movie","","","","","1997","Evil has its winning ways","The Devil's Advocate",,,,,, +"12",":Person","1975","","Charlize Theron","","","","",,,,,, +"13",":Person","1940","","Al Pacino","","","","",,,,,, +"14",":Person","1944","","Taylor Hackford","","","","",,,,,, +"15",":Movie","","","","","1992","In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth.","A Few Good Men",,,,,, +"16",":Person","1962","","Tom Cruise","","","","",,,,,, +"17",":Person","1937","","Jack Nicholson","","","","",,,,,, +"18",":Person","1962","","Demi Moore","","","","",,,,,, +"19",":Person","1958","","Kevin Bacon","","","","",,,,,, +"20",":Person","1966","","Kiefer Sutherland","","","","",,,,,, +"21",":Person","1971","","Noah Wyle","","","","",,,,,, +"22",":Person","1968","","Cuba Gooding Jr.","","","","",,,,,, +"23",":Person","1957","","Kevin Pollak","","","","",,,,,, +"24",":Person","1943","","J.T. Walsh","","","","",,,,,, +"25",":Person","1967","","James Marshall","","","","",,,,,, +"26",":Person","1948","","Christopher Guest","","","","",,,,,, +"27",":Person","1947","","Rob Reiner","","","","",,,,,, +"28",":Person","1961","","Aaron Sorkin","","","","",,,,,, +"29",":Movie","","","","","1986","I feel the need, the need for speed.","Top Gun",,,,,, +"30",":Person","1957","","Kelly McGillis","","","","",,,,,, +"31",":Person","1959","","Val Kilmer","","","","",,,,,, +"32",":Person","1962","","Anthony Edwards","","","","",,,,,, +"33",":Person","1933","","Tom Skerritt","","","","",,,,,, +"34",":Person","1961","","Meg Ryan","","","","",,,,,, +"35",":Person","1944","","Tony Scott","","","","",,,,,, +"36",":Person","1941","","Jim Cash","","","","",,,,,, +"37",":Movie","","","","","2000","The rest of his life begins now.","Jerry Maguire",,,,,, +"38",":Person","1969","","Renee Zellweger","","","","",,,,,, +"39",":Person","1962","","Kelly Preston","","","","",,,,,, +"40",":Person","1974","","Jerry O'Connell","","","","",,,,,, +"41",":Person","1970","","Jay Mohr","","","","",,,,,, +"42",":Person","1961","","Bonnie Hunt","","","","",,,,,, +"43",":Person","1971","","Regina King","","","","",,,,,, +"44",":Person","1996","","Jonathan Lipnicki","","","","",,,,,, +"45",":Person","1957","","Cameron Crowe","","","","",,,,,, +"46",":Movie","","","","","1986","For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of.","Stand By Me",,,,,, +"47",":Person","1970","","River Phoenix","","","","",,,,,, +"48",":Person","1971","","Corey Feldman","","","","",,,,,, +"49",":Person","1972","","Wil Wheaton","","","","",,,,,, +"50",":Person","1966","","John Cusack","","","","",,,,,, +"51",":Person","1942","","Marshall Bell","","","","",,,,,, +"52",":Movie","","","","","1997","A comedy from the heart that goes for the throat.","As Good as It Gets",,,,,, +"53",":Person","1963","","Helen Hunt","","","","",,,,,, +"54",":Person","1963","","Greg Kinnear","","","","",,,,,, +"55",":Person","1940","","James L. Brooks","","","","",,,,,, +"56",":Movie","","","","","1998","After life there is more. The end is just the beginning.","What Dreams May Come",,,,,, +"57",":Person","1960","","Annabella Sciorra","","","","",,,,,, +"58",":Person","1929","","Max von Sydow","","","","",,,,,, +"59",":Person","1942","","Werner Herzog","","","","",,,,,, +"60",":Person","1951","","Robin Williams","","","","",,,,,, +"61",":Person","1956","","Vincent Ward","","","","",,,,,, +"62",":Movie","","","","","1999","First loves last. Forever.","Snow Falling on Cedars",,,,,, +"63",":Person","1970","","Ethan Hawke","","","","",,,,,, +"64",":Person","1971","","Rick Yune","","","","",,,,,, +"65",":Person","1940","","James Cromwell","","","","",,,,,, +"66",":Person","1953","","Scott Hicks","","","","",,,,,, +"67",":Movie","","","","","1998","At odds in life... in love on-line.","You've Got Mail",,,,,, +"68",":Person","1968","","Parker Posey","","","","",,,,,, +"69",":Person","1973","","Dave Chappelle","","","","",,,,,, +"70",":Person","1967","","Steve Zahn","","","","",,,,,, +"71",":Person","1956","","Tom Hanks","","","","",,,,,, +"72",":Person","1941","","Nora Ephron","","","","",,,,,, +"73",":Movie","","","","","1993","What if someone you never met, someone you never saw, someone you never knew was the only someone for you?","Sleepless in Seattle",,,,,, +"74",":Person","1956","","Rita Wilson","","","","",,,,,, +"75",":Person","1953","","Bill Pullman","","","","",,,,,, +"76",":Person","1949","","Victor Garber","","","","",,,,,, +"77",":Person","1962","","Rosie O'Donnell","","","","",,,,,, +"78",":Movie","","","","","1990","A story of love, lava and burning desire.","Joe Versus the Volcano",,,,,, +"79",":Person","1950","","John Patrick Stanley","","","","",,,,,, +"80",":Person","1956","","Nathan Lane","","","","",,,,,, +"81",":Movie","","","","","1998","Can two friends sleep together and still love each other in the morning?","When Harry Met Sally",,,,,, +"82",":Person","1948","","Billy Crystal","","","","",,,,,, +"83",":Person","1956","","Carrie Fisher","","","","",,,,,, +"84",":Person","1949","","Bruno Kirby","","","","",,,,,, +"85",":Movie","","","","","1996","In every life there comes a time when that thing you dream becomes that thing you do","That Thing You Do",,,,,, +"86",":Person","1977","","Liv Tyler","","","","",,,,,, +"87",":Movie","","","","","2000","Pain heals, Chicks dig scars... Glory lasts forever","The Replacements",,,,,, +"88",":Person","1970","","Brooke Langton","","","","",,,,,, +"89",":Person","1930","","Gene Hackman","","","","",,,,,, +"90",":Person","1968","","Orlando Jones","","","","",,,,,, +"91",":Person","1950","","Howard Deutch","","","","",,,,,, +"92",":Movie","","","","","2006","Based on the extraordinary true story of one man's fight for freedom","RescueDawn",,,,,, +"93",":Person","1974","","Christian Bale","","","","",,,,,, +"94",":Person","1954","","Zach Grenier","","","","",,,,,, +"95",":Movie","","","","","1996","Come as you are","The Birdcage",,,,,, +"96",":Person","1931","","Mike Nichols","","","","",,,,,, +"97",":Movie","","","","","1992","It's a hell of a thing, killing a man","Unforgiven",,,,,, +"98",":Person","1930","","Richard Harris","","","","",,,,,, +"99",":Person","1930","","Clint Eastwood","","","","",,,,,, +"100",":Movie","","","","","1995","The hottest data on earth. In the coolest head in town","Johnny Mnemonic",,,,,, +"101",":Person","1947","","Takeshi Kitano","","","","",,,,,, +"102",":Person","1968","","Dina Meyer","","","","",,,,,, +"103",":Person","1958","","Ice-T","","","","",,,,,, +"104",":Person","1953","","Robert Longo","","","","",,,,,, +"105",":Movie","","","","","2012","Everything is connected","Cloud Atlas",,,,,, +"106",":Person","1966","","Halle Berry","","","","",,,,,, +"107",":Person","1949","","Jim Broadbent","","","","",,,,,, +"108",":Person","1965","","Tom Tykwer","","","","",,,,,, +"109",":Person","1969","","David Mitchell","","","","",,,,,, +"110",":Person","1961","","Stefan Arndt","","","","",,,,,, +"111",":Movie","","","","","2006","Break The Codes","The Da Vinci Code",,,,,, +"112",":Person","1939","","Ian McKellen","","","","",,,,,, +"113",":Person","1976","","Audrey Tautou","","","","",,,,,, +"114",":Person","1971","","Paul Bettany","","","","",,,,,, +"115",":Person","1954","","Ron Howard","","","","",,,,,, +"116",":Movie","","","","","2006","Freedom! Forever!","V for Vendetta",,,,,, +"117",":Person","1981","","Natalie Portman","","","","",,,,,, +"118",":Person","1946","","Stephen Rea","","","","",,,,,, +"119",":Person","1940","","John Hurt","","","","",,,,,, +"120",":Person","1967","","Ben Miles","","","","",,,,,, +"121",":Movie","","","","","2008","Speed has no limits","Speed Racer",,,,,, +"122",":Person","1985","","Emile Hirsch","","","","",,,,,, +"123",":Person","1960","","John Goodman","","","","",,,,,, +"124",":Person","1946","","Susan Sarandon","","","","",,,,,, +"125",":Person","1966","","Matthew Fox","","","","",,,,,, +"126",":Person","1980","","Christina Ricci","","","","",,,,,, +"127",":Person","1982","","Rain","","","","",,,,,, +"128",":Movie","","","","","2009","Prepare to enter a secret world of assassins","Ninja Assassin",,,,,, +"129",":Person","","","Naomie Harris","","","","",,,,,, +"130",":Movie","","","","","1999","Walk a mile you'll never forget.","The Green Mile",,,,,, +"131",":Person","1957","","Michael Clarke Duncan","","","","",,,,,, +"132",":Person","1953","","David Morse","","","","",,,,,, +"133",":Person","1968","","Sam Rockwell","","","","",,,,,, +"134",":Person","1955","","Gary Sinise","","","","",,,,,, +"135",":Person","1959","","Patricia Clarkson","","","","",,,,,, +"136",":Person","1959","","Frank Darabont","","","","",,,,,, +"137",":Movie","","","","","2008","400 million people were waiting for the truth.","Frost/Nixon",,,,,, +"138",":Person","1938","","Frank Langella","","","","",,,,,, +"139",":Person","1969","","Michael Sheen","","","","",,,,,, +"140",":Person","1960","","Oliver Platt","","","","",,,,,, +"141",":Movie","","","","","1992","He didn't want law. He wanted justice.","Hoffa",,,,,, +"142",":Person","1944","","Danny DeVito","","","","",,,,,, +"143",":Person","1965","","John C. Reilly","","","","",,,,,, +"144",":Movie","","","","","1995","Houston, we have a problem.","Apollo 13",,,,,, +"145",":Person","1950","","Ed Harris","","","","",,,,,, +"146",":Person","1955","","Bill Paxton","","","","",,,,,, +"147",":Movie","","","","","1996","Don't Breathe. Don't Look Back.","Twister",,,,,, +"148",":Person","1967","","Philip Seymour Hoffman","","","","",,,,,, +"149",":Person","1943","","Jan de Bont","","","","",,,,,, +"150",":Movie","","","","","2000","At the edge of the world, his journey begins.","Cast Away",,,,,, +"151",":Person","1951","","Robert Zemeckis","","","","",,,,,, +"152",":Movie","","","","","1975","If he's crazy, what does that make you?","One Flew Over the Cuckoo's Nest",,,,,, +"153",":Person","1932","","Milos Forman","","","","",,,,,, +"154",":Movie","","","","","2003","","Something's Gotta Give",,,,,, +"155",":Person","1946","","Diane Keaton","","","","",,,,,, +"156",":Person","1949","","Nancy Meyers","","","","",,,,,, +"157",":Movie","","","","","1999","One robot's 200 year journey to become an ordinary man.","Bicentennial Man",,,,,, +"158",":Person","1958","","Chris Columbus","","","","",,,,,, +"159",":Movie","","","","","2007","A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire.","Charlie Wilson's War",,,,,, +"160",":Person","1967","","Julia Roberts","","","","",,,,,, +"161",":Movie","","","","","2004","This Holiday Season… Believe","The Polar Express",,,,,, +"162",":Movie","","","","","1992","Once in a lifetime you get a chance to do something different.","A League of Their Own",,,,,, +"163",":Person","1954","","Madonna","","","","",,,,,, +"164",":Person","1956","","Geena Davis","","","","",,,,,, +"165",":Person","1963","","Lori Petty","","","","",,,,,, +"166",":Person","1943","","Penny Marshall","","","","",,,,,, +"167",":Person","","","Paul Blythe","","","","",,,,,, +"168",":Person","","","Angela Scope","","","","",,,,,, +"169",":Person","","","Jessica Thompson","","","","",,,,,, +"170",":Person","","","James Thompson","","","","",,,,,, +"171",":Software","","proprietary","Notion","freemium","","","",,,,,, +"172",":Software","","","Libreoffice Calc +","","","","",,,,,, +"173",":Software","","","Trello","","","","",,,,,, +"174",":Software","","","Word","","","","",,,,,, +"175",":Software","","","Google Slides","","","","",,,,,, +"176",":Software","","","Google Sheets","","","","",,,,,, +"177",":Software","","","Excel","","","","",,,,,, +"178",":Software","","","Libreoffice Writer +","","","","",,,,,, +"179",":Software","","","Libreoffice Impress +","","","","",,,,,, +"180",":Software","","","Powerpoint","","","","",,,,,, +"181",":Software","","","Google Docs +","","","","",,,,,, +,,,,,,,,,"1","0","ACTED_IN","","[""Neo""]","" +,,,,,,,,,"2","0","ACTED_IN","","[""Trinity""]","" +,,,,,,,,,"3","0","ACTED_IN","","[""Morpheus""]","" +,,,,,,,,,"4","0","ACTED_IN","","[""Agent Smith""]","" +,,,,,,,,,"5","0","DIRECTED","","","" +,,,,,,,,,"6","0","DIRECTED","","","" +,,,,,,,,,"7","0","PRODUCED","","","" +,,,,,,,,,"8","0","ACTED_IN","","[""Emil""]","" +,,,,,,,,,"1","9","ACTED_IN","","[""Neo""]","" +,,,,,,,,,"2","9","ACTED_IN","","[""Trinity""]","" +,,,,,,,,,"3","9","ACTED_IN","","[""Morpheus""]","" +,,,,,,,,,"4","9","ACTED_IN","","[""Agent Smith""]","" +,,,,,,,,,"5","9","DIRECTED","","","" +,,,,,,,,,"6","9","DIRECTED","","","" +,,,,,,,,,"7","9","PRODUCED","","","" +,,,,,,,,,"1","10","ACTED_IN","","[""Neo""]","" +,,,,,,,,,"2","10","ACTED_IN","","[""Trinity""]","" +,,,,,,,,,"3","10","ACTED_IN","","[""Morpheus""]","" +,,,,,,,,,"4","10","ACTED_IN","","[""Agent Smith""]","" +,,,,,,,,,"5","10","DIRECTED","","","" +,,,,,,,,,"6","10","DIRECTED","","","" +,,,,,,,,,"7","10","PRODUCED","","","" +,,,,,,,,,"1","11","ACTED_IN","","[""Kevin Lomax""]","" +,,,,,,,,,"12","11","ACTED_IN","","[""Mary Ann Lomax""]","" +,,,,,,,,,"13","11","ACTED_IN","","[""John Milton""]","" +,,,,,,,,,"14","11","DIRECTED","","","" +,,,,,,,,,"16","15","ACTED_IN","","[""Lt. Daniel Kaffee""]","" +,,,,,,,,,"17","15","ACTED_IN","","[""Col. Nathan R. Jessup""]","" +,,,,,,,,,"18","15","ACTED_IN","","[""Lt. Cdr. JoAnne Galloway""]","" +,,,,,,,,,"19","15","ACTED_IN","","[""Capt. Jack Ross""]","" +,,,,,,,,,"20","15","ACTED_IN","","[""Lt. Jonathan Kendrick""]","" +,,,,,,,,,"21","15","ACTED_IN","","[""Cpl. Jeffrey Barnes""]","" +,,,,,,,,,"22","15","ACTED_IN","","[""Cpl. Carl Hammaker""]","" +,,,,,,,,,"23","15","ACTED_IN","","[""Lt. Sam Weinberg""]","" +,,,,,,,,,"24","15","ACTED_IN","","[""Lt. Col. Matthew Andrew Markinson""]","" +,,,,,,,,,"25","15","ACTED_IN","","[""Pfc. Louden Downey""]","" +,,,,,,,,,"26","15","ACTED_IN","","[""Dr. Stone""]","" +,,,,,,,,,"28","15","ACTED_IN","","[""Man in Bar""]","" +,,,,,,,,,"27","15","DIRECTED","","","" +,,,,,,,,,"28","15","WROTE","","","" +,,,,,,,,,"16","29","ACTED_IN","","[""Maverick""]","" +,,,,,,,,,"30","29","ACTED_IN","","[""Charlie""]","" +,,,,,,,,,"31","29","ACTED_IN","","[""Iceman""]","" +,,,,,,,,,"32","29","ACTED_IN","","[""Goose""]","" +,,,,,,,,,"33","29","ACTED_IN","","[""Viper""]","" +,,,,,,,,,"34","29","ACTED_IN","","[""Carole""]","" +,,,,,,,,,"35","29","DIRECTED","","","" +,,,,,,,,,"36","29","WROTE","","","" +,,,,,,,,,"16","37","ACTED_IN","","[""Jerry Maguire""]","" +,,,,,,,,,"22","37","ACTED_IN","","[""Rod Tidwell""]","" +,,,,,,,,,"38","37","ACTED_IN","","[""Dorothy Boyd""]","" +,,,,,,,,,"39","37","ACTED_IN","","[""Avery Bishop""]","" +,,,,,,,,,"40","37","ACTED_IN","","[""Frank Cushman""]","" +,,,,,,,,,"41","37","ACTED_IN","","[""Bob Sugar""]","" +,,,,,,,,,"42","37","ACTED_IN","","[""Laurel Boyd""]","" +,,,,,,,,,"43","37","ACTED_IN","","[""Marcee Tidwell""]","" +,,,,,,,,,"44","37","ACTED_IN","","[""Ray Boyd""]","" +,,,,,,,,,"45","37","DIRECTED","","","" +,,,,,,,,,"45","37","PRODUCED","","","" +,,,,,,,,,"45","37","WROTE","","","" +,,,,,,,,,"49","46","ACTED_IN","","[""Gordie Lachance""]","" +,,,,,,,,,"47","46","ACTED_IN","","[""Chris Chambers""]","" +,,,,,,,,,"40","46","ACTED_IN","","[""Vern Tessio""]","" +,,,,,,,,,"48","46","ACTED_IN","","[""Teddy Duchamp""]","" +,,,,,,,,,"50","46","ACTED_IN","","[""Denny Lachance""]","" +,,,,,,,,,"20","46","ACTED_IN","","[""Ace Merrill""]","" +,,,,,,,,,"51","46","ACTED_IN","","[""Mr. Lachance""]","" +,,,,,,,,,"27","46","DIRECTED","","","" +,,,,,,,,,"17","52","ACTED_IN","","[""Melvin Udall""]","" +,,,,,,,,,"53","52","ACTED_IN","","[""Carol Connelly""]","" +,,,,,,,,,"54","52","ACTED_IN","","[""Simon Bishop""]","" +,,,,,,,,,"22","52","ACTED_IN","","[""Frank Sachs""]","" +,,,,,,,,,"55","52","DIRECTED","","","" +,,,,,,,,,"60","56","ACTED_IN","","[""Chris Nielsen""]","" +,,,,,,,,,"22","56","ACTED_IN","","[""Albert Lewis""]","" +,,,,,,,,,"57","56","ACTED_IN","","[""Annie Collins-Nielsen""]","" +,,,,,,,,,"58","56","ACTED_IN","","[""The Tracker""]","" +,,,,,,,,,"59","56","ACTED_IN","","[""The Face""]","" +,,,,,,,,,"61","56","DIRECTED","","","" +,,,,,,,,,"63","62","ACTED_IN","","[""Ishmael Chambers""]","" +,,,,,,,,,"64","62","ACTED_IN","","[""Kazuo Miyamoto""]","" +,,,,,,,,,"58","62","ACTED_IN","","[""Nels Gudmundsson""]","" +,,,,,,,,,"65","62","ACTED_IN","","[""Judge Fielding""]","" +,,,,,,,,,"66","62","DIRECTED","","","" +,,,,,,,,,"71","67","ACTED_IN","","[""Joe Fox""]","" +,,,,,,,,,"34","67","ACTED_IN","","[""Kathleen Kelly""]","" +,,,,,,,,,"54","67","ACTED_IN","","[""Frank Navasky""]","" +,,,,,,,,,"68","67","ACTED_IN","","[""Patricia Eden""]","" +,,,,,,,,,"69","67","ACTED_IN","","[""Kevin Jackson""]","" +,,,,,,,,,"70","67","ACTED_IN","","[""George Pappas""]","" +,,,,,,,,,"72","67","DIRECTED","","","" +,,,,,,,,,"71","73","ACTED_IN","","[""Sam Baldwin""]","" +,,,,,,,,,"34","73","ACTED_IN","","[""Annie Reed""]","" +,,,,,,,,,"74","73","ACTED_IN","","[""Suzy""]","" +,,,,,,,,,"75","73","ACTED_IN","","[""Walter""]","" +,,,,,,,,,"76","73","ACTED_IN","","[""Greg""]","" +,,,,,,,,,"77","73","ACTED_IN","","[""Becky""]","" +,,,,,,,,,"72","73","DIRECTED","","","" +,,,,,,,,,"71","78","ACTED_IN","","[""Joe Banks""]","" +,,,,,,,,,"34","78","ACTED_IN","","[""DeDe"",""Angelica Graynamore"",""Patricia Graynamore""]","" +,,,,,,,,,"80","78","ACTED_IN","","[""Baw""]","" +,,,,,,,,,"79","78","DIRECTED","","","" +,,,,,,,,,"82","81","ACTED_IN","","[""Harry Burns""]","" +,,,,,,,,,"34","81","ACTED_IN","","[""Sally Albright""]","" +,,,,,,,,,"83","81","ACTED_IN","","[""Marie""]","" +,,,,,,,,,"84","81","ACTED_IN","","[""Jess""]","" +,,,,,,,,,"27","81","DIRECTED","","","" +,,,,,,,,,"27","81","PRODUCED","","","" +,,,,,,,,,"72","81","PRODUCED","","","" +,,,,,,,,,"72","81","WROTE","","","" +,,,,,,,,,"71","85","ACTED_IN","","[""Mr. White""]","" +,,,,,,,,,"86","85","ACTED_IN","","[""Faye Dolan""]","" +,,,,,,,,,"12","85","ACTED_IN","","[""Tina""]","" +,,,,,,,,,"71","85","DIRECTED","","","" +,,,,,,,,,"1","87","ACTED_IN","","[""Shane Falco""]","" +,,,,,,,,,"88","87","ACTED_IN","","[""Annabelle Farrell""]","" +,,,,,,,,,"89","87","ACTED_IN","","[""Jimmy McGinty""]","" +,,,,,,,,,"90","87","ACTED_IN","","[""Clifford Franklin""]","" +,,,,,,,,,"91","87","DIRECTED","","","" +,,,,,,,,,"51","92","ACTED_IN","","[""Admiral""]","" +,,,,,,,,,"93","92","ACTED_IN","","[""Dieter Dengler""]","" +,,,,,,,,,"94","92","ACTED_IN","","[""Squad Leader""]","" +,,,,,,,,,"70","92","ACTED_IN","","[""Duane""]","" +,,,,,,,,,"59","92","DIRECTED","","","" +,,,,,,,,,"60","95","ACTED_IN","","[""Armand Goldman""]","" +,,,,,,,,,"80","95","ACTED_IN","","[""Albert Goldman""]","" +,,,,,,,,,"89","95","ACTED_IN","","[""Sen. Kevin Keeley""]","" +,,,,,,,,,"96","95","DIRECTED","","","" +,,,,,,,,,"98","97","ACTED_IN","","[""English Bob""]","" +,,,,,,,,,"99","97","ACTED_IN","","[""Bill Munny""]","" +,,,,,,,,,"89","97","ACTED_IN","","[""Little Bill Daggett""]","" +,,,,,,,,,"99","97","DIRECTED","","","" +,,,,,,,,,"1","100","ACTED_IN","","[""Johnny Mnemonic""]","" +,,,,,,,,,"101","100","ACTED_IN","","[""Takahashi""]","" +,,,,,,,,,"102","100","ACTED_IN","","[""Jane""]","" +,,,,,,,,,"103","100","ACTED_IN","","[""J-Bone""]","" +,,,,,,,,,"104","100","DIRECTED","","","" +,,,,,,,,,"71","105","ACTED_IN","","[""Zachry"",""Dr. Henry Goose"",""Isaac Sachs"",""Dermot Hoggins""]","" +,,,,,,,,,"4","105","ACTED_IN","","[""Bill Smoke"",""Haskell Moore"",""Tadeusz Kesselring"",""Nurse Noakes"",""Boardman Mephi"",""Old Georgie""]","" +,,,,,,,,,"106","105","ACTED_IN","","[""Luisa Rey"",""Jocasta Ayrs"",""Ovid"",""Meronym""]","" +,,,,,,,,,"107","105","ACTED_IN","","[""Vyvyan Ayrs"",""Captain Molyneux"",""Timothy Cavendish""]","" +,,,,,,,,,"108","105","DIRECTED","","","" +,,,,,,,,,"5","105","DIRECTED","","","" +,,,,,,,,,"6","105","DIRECTED","","","" +,,,,,,,,,"109","105","WROTE","","","" +,,,,,,,,,"110","105","PRODUCED","","","" +,,,,,,,,,"71","111","ACTED_IN","","[""Dr. Robert Langdon""]","" +,,,,,,,,,"112","111","ACTED_IN","","[""Sir Leight Teabing""]","" +,,,,,,,,,"113","111","ACTED_IN","","[""Sophie Neveu""]","" +,,,,,,,,,"114","111","ACTED_IN","","[""Silas""]","" +,,,,,,,,,"115","111","DIRECTED","","","" +,,,,,,,,,"4","116","ACTED_IN","","[""V""]","" +,,,,,,,,,"117","116","ACTED_IN","","[""Evey Hammond""]","" +,,,,,,,,,"118","116","ACTED_IN","","[""Eric Finch""]","" +,,,,,,,,,"119","116","ACTED_IN","","[""High Chancellor Adam Sutler""]","" +,,,,,,,,,"120","116","ACTED_IN","","[""Dascomb""]","" +,,,,,,,,,"25","116","DIRECTED","","","" +,,,,,,,,,"5","116","PRODUCED","","","" +,,,,,,,,,"6","116","PRODUCED","","","" +,,,,,,,,,"7","116","PRODUCED","","","" +,,,,,,,,,"5","116","WROTE","","","" +,,,,,,,,,"6","116","WROTE","","","" +,,,,,,,,,"122","121","ACTED_IN","","[""Speed Racer""]","" +,,,,,,,,,"123","121","ACTED_IN","","[""Pops""]","" +,,,,,,,,,"124","121","ACTED_IN","","[""Mom""]","" +,,,,,,,,,"125","121","ACTED_IN","","[""Racer X""]","" +,,,,,,,,,"126","121","ACTED_IN","","[""Trixie""]","" +,,,,,,,,,"127","121","ACTED_IN","","[""Taejo Togokahn""]","" +,,,,,,,,,"120","121","ACTED_IN","","[""Cass Jones""]","" +,,,,,,,,,"5","121","DIRECTED","","","" +,,,,,,,,,"6","121","DIRECTED","","","" +,,,,,,,,,"5","121","WROTE","","","" +,,,,,,,,,"6","121","WROTE","","","" +,,,,,,,,,"7","121","PRODUCED","","","" +,,,,,,,,,"127","128","ACTED_IN","","[""Raizo""]","" +,,,,,,,,,"129","128","ACTED_IN","","[""Mika Coretti""]","" +,,,,,,,,,"64","128","ACTED_IN","","[""Takeshi""]","" +,,,,,,,,,"120","128","ACTED_IN","","[""Ryan Maslow""]","" +,,,,,,,,,"25","128","DIRECTED","","","" +,,,,,,,,,"5","128","PRODUCED","","","" +,,,,,,,,,"6","128","PRODUCED","","","" +,,,,,,,,,"7","128","PRODUCED","","","" +,,,,,,,,,"71","130","ACTED_IN","","[""Paul Edgecomb""]","" +,,,,,,,,,"131","130","ACTED_IN","","[""John Coffey""]","" +,,,,,,,,,"132","130","ACTED_IN","","[""Brutus \""Brutal\"" Howell""]","" +,,,,,,,,,"42","130","ACTED_IN","","[""Jan Edgecomb""]","" +,,,,,,,,,"65","130","ACTED_IN","","[""Warden Hal Moores""]","" +,,,,,,,,,"133","130","ACTED_IN","","[""\""Wild Bill\"" Wharton""]","" +,,,,,,,,,"134","130","ACTED_IN","","[""Burt Hammersmith""]","" +,,,,,,,,,"135","130","ACTED_IN","","[""Melinda Moores""]","" +,,,,,,,,,"136","130","DIRECTED","","","" +,,,,,,,,,"138","137","ACTED_IN","","[""Richard Nixon""]","" +,,,,,,,,,"139","137","ACTED_IN","","[""David Frost""]","" +,,,,,,,,,"19","137","ACTED_IN","","[""Jack Brennan""]","" +,,,,,,,,,"140","137","ACTED_IN","","[""Bob Zelnick""]","" +,,,,,,,,,"133","137","ACTED_IN","","[""James Reston, Jr.""]","" +,,,,,,,,,"115","137","DIRECTED","","","" +,,,,,,,,,"17","141","ACTED_IN","","[""Hoffa""]","" +,,,,,,,,,"142","141","ACTED_IN","","[""Robert \""Bobby\"" Ciaro""]","" +,,,,,,,,,"24","141","ACTED_IN","","[""Frank Fitzsimmons""]","" +,,,,,,,,,"143","141","ACTED_IN","","[""Peter \""Pete\"" Connelly""]","" +,,,,,,,,,"142","141","DIRECTED","","","" +,,,,,,,,,"71","144","ACTED_IN","","[""Jim Lovell""]","" +,,,,,,,,,"19","144","ACTED_IN","","[""Jack Swigert""]","" +,,,,,,,,,"145","144","ACTED_IN","","[""Gene Kranz""]","" +,,,,,,,,,"146","144","ACTED_IN","","[""Fred Haise""]","" +,,,,,,,,,"134","144","ACTED_IN","","[""Ken Mattingly""]","" +,,,,,,,,,"115","144","DIRECTED","","","" +,,,,,,,,,"146","147","ACTED_IN","","[""Bill Harding""]","" +,,,,,,,,,"53","147","ACTED_IN","","[""Dr. Jo Harding""]","" +,,,,,,,,,"94","147","ACTED_IN","","[""Eddie""]","" +,,,,,,,,,"148","147","ACTED_IN","","[""Dustin \""Dusty\"" Davis""]","" +,,,,,,,,,"149","147","DIRECTED","","","" +,,,,,,,,,"71","150","ACTED_IN","","[""Chuck Noland""]","" +,,,,,,,,,"53","150","ACTED_IN","","[""Kelly Frears""]","" +,,,,,,,,,"151","150","DIRECTED","","","" +,,,,,,,,,"17","152","ACTED_IN","","[""Randle McMurphy""]","" +,,,,,,,,,"142","152","ACTED_IN","","[""Martini""]","" +,,,,,,,,,"153","152","DIRECTED","","","" +,,,,,,,,,"17","154","ACTED_IN","","[""Harry Sanborn""]","" +,,,,,,,,,"155","154","ACTED_IN","","[""Erica Barry""]","" +,,,,,,,,,"1","154","ACTED_IN","","[""Julian Mercer""]","" +,,,,,,,,,"156","154","DIRECTED","","","" +,,,,,,,,,"156","154","PRODUCED","","","" +,,,,,,,,,"156","154","WROTE","","","" +,,,,,,,,,"60","157","ACTED_IN","","[""Andrew Marin""]","" +,,,,,,,,,"140","157","ACTED_IN","","[""Rupert Burns""]","" +,,,,,,,,,"158","157","DIRECTED","","","" +,,,,,,,,,"71","159","ACTED_IN","","[""Rep. Charlie Wilson""]","" +,,,,,,,,,"160","159","ACTED_IN","","[""Joanne Herring""]","" +,,,,,,,,,"148","159","ACTED_IN","","[""Gust Avrakotos""]","" +,,,,,,,,,"96","159","DIRECTED","","","" +,,,,,,,,,"71","161","ACTED_IN","","[""Hero Boy"",""Father"",""Conductor"",""Hobo"",""Scrooge"",""Santa Claus""]","" +,,,,,,,,,"151","161","DIRECTED","","","" +,,,,,,,,,"71","162","ACTED_IN","","[""Jimmy Dugan""]","" +,,,,,,,,,"164","162","ACTED_IN","","[""Dottie Hinson""]","" +,,,,,,,,,"165","162","ACTED_IN","","[""Kit Keller""]","" +,,,,,,,,,"77","162","ACTED_IN","","[""Doris Murphy""]","" +,,,,,,,,,"163","162","ACTED_IN","","[""\""All the Way\"" Mae Mordabito""]","" +,,,,,,,,,"146","162","ACTED_IN","","[""Bob Hinson""]","" +,,,,,,,,,"166","162","DIRECTED","","","" +,,,,,,,,,"170","169","FOLLOWS","","","" +,,,,,,,,,"168","169","FOLLOWS","","","" +,,,,,,,,,"167","168","FOLLOWS","","","" +,,,,,,,,,"169","105","REVIEWED","95","","An amazing journey" +,,,,,,,,,"169","87","REVIEWED","65","","Silly, but fun" +,,,,,,,,,"170","87","REVIEWED","100","","The coolest football movie ever" +,,,,,,,,,"168","87","REVIEWED","62","","Pretty funny at times" +,,,,,,,,,"169","97","REVIEWED","85","","Dark, but compelling" +,,,,,,,,,"169","95","REVIEWED","45","","Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances" +,,,,,,,,,"169","111","REVIEWED","68","","A solid romp" +,,,,,,,,,"170","111","REVIEWED","65","","Fun, but a little far fetched" +,,,,,,,,,"169","37","REVIEWED","92","","You had me at Jerry" +,,,,,,,,,"172","177","SIMILAR","","","" +,,,,,,,,,"173","171","SIMILAR","","","" +,,,,,,,,,"176","175","HAS_SAME_CREATOR","","","" +,,,,,,,,,"171","181","SIMILAR","","","" +,,,,,,,,,"181","174","SIMILAR","","","" +,,,,,,,,,"174","177","HAS_SAME_CREATOR","","","" +,,,,,,,,,"176","171","SIMILAR","","","" +,,,,,,,,,"178","174","SIMILAR","","","" +,,,,,,,,,"176","177","SIMILAR","","","" +,,,,,,,,,"179","175","SIMILAR","","","" +,,,,,,,,,"179","180","SIMILAR","","","" +,,,,,,,,,"180","175","SIMILAR","","","" +,,,,,,,,,"179","178","HAS_SAME_CREATOR","","","" +,,,,,,,,,"180","177","HAS_SAME_CREATOR","","","" +,,,,,,,,,"174","180","HAS_SAME_CREATOR","","","" \ No newline at end of file diff --git a/neo4j/import_old/data_cypher b/neo4j/import_old/data_cypher new file mode 100755 index 0000000000000000000000000000000000000000..210a94eaddb5768b1e570d4f6677929b876f17d4 --- /dev/null +++ b/neo4j/import_old/data_cypher @@ -0,0 +1,110 @@ +:begin +CREATE INDEX FOR (node:Person) ON (node.born); +CREATE INDEX FOR (node:Movie) ON (node.released); +CREATE CONSTRAINT ON (node:Person) ASSERT (node.name) IS UNIQUE; +CREATE CONSTRAINT ON (node:Movie) ASSERT (node.title) IS UNIQUE; +CREATE CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit +CALL db.awaitIndexes(300); +:begin +UNWIND [{name:"Keanu Reeves", properties:{born:1964}}, {name:"Carrie-Anne Moss", properties:{born:1967}}, {name:"Laurence Fishburne", properties:{born:1961}}, {name:"Hugo Weaving", properties:{born:1960}}, {name:"Lilly Wachowski", properties:{born:1967}}, {name:"Lana Wachowski", properties:{born:1965}}, {name:"Joel Silver", properties:{born:1952}}, {name:"Emil Eifrem", properties:{born:1978}}, {name:"Charlize Theron", properties:{born:1975}}, {name:"Al Pacino", properties:{born:1940}}, {name:"Taylor Hackford", properties:{born:1944}}, {name:"Tom Cruise", properties:{born:1962}}, {name:"Jack Nicholson", properties:{born:1937}}, {name:"Demi Moore", properties:{born:1962}}, {name:"Kevin Bacon", properties:{born:1958}}, {name:"Kiefer Sutherland", properties:{born:1966}}, {name:"Noah Wyle", properties:{born:1971}}, {name:"Cuba Gooding Jr.", properties:{born:1968}}, {name:"Kevin Pollak", properties:{born:1957}}, {name:"J.T. Walsh", properties:{born:1943}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"James Marshall", properties:{born:1967}}, {name:"Christopher Guest", properties:{born:1948}}, {name:"Rob Reiner", properties:{born:1947}}, {name:"Aaron Sorkin", properties:{born:1961}}, {name:"Kelly McGillis", properties:{born:1957}}, {name:"Val Kilmer", properties:{born:1959}}, {name:"Anthony Edwards", properties:{born:1962}}, {name:"Tom Skerritt", properties:{born:1933}}, {name:"Meg Ryan", properties:{born:1961}}, {name:"Tony Scott", properties:{born:1944}}, {name:"Jim Cash", properties:{born:1941}}, {name:"Renee Zellweger", properties:{born:1969}}, {name:"Kelly Preston", properties:{born:1962}}, {name:"Jerry O'Connell", properties:{born:1974}}, {name:"Jay Mohr", properties:{born:1970}}, {name:"Bonnie Hunt", properties:{born:1961}}, {name:"Regina King", properties:{born:1971}}, {name:"Jonathan Lipnicki", properties:{born:1996}}, {name:"Cameron Crowe", properties:{born:1957}}, {name:"River Phoenix", properties:{born:1970}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Corey Feldman", properties:{born:1971}}, {name:"Wil Wheaton", properties:{born:1972}}, {name:"John Cusack", properties:{born:1966}}, {name:"Marshall Bell", properties:{born:1942}}, {name:"Helen Hunt", properties:{born:1963}}, {name:"Greg Kinnear", properties:{born:1963}}, {name:"James L. Brooks", properties:{born:1940}}, {name:"Annabella Sciorra", properties:{born:1960}}, {name:"Max von Sydow", properties:{born:1929}}, {name:"Werner Herzog", properties:{born:1942}}, {name:"Robin Williams", properties:{born:1951}}, {name:"Vincent Ward", properties:{born:1956}}, {name:"Ethan Hawke", properties:{born:1970}}, {name:"Rick Yune", properties:{born:1971}}, {name:"James Cromwell", properties:{born:1940}}, {name:"Scott Hicks", properties:{born:1953}}, {name:"Parker Posey", properties:{born:1968}}, {name:"Dave Chappelle", properties:{born:1973}}, {name:"Steve Zahn", properties:{born:1967}}, {name:"Tom Hanks", properties:{born:1956}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Nora Ephron", properties:{born:1941}}, {name:"Rita Wilson", properties:{born:1956}}, {name:"Bill Pullman", properties:{born:1953}}, {name:"Victor Garber", properties:{born:1949}}, {name:"Rosie O'Donnell", properties:{born:1962}}, {name:"John Patrick Stanley", properties:{born:1950}}, {name:"Nathan Lane", properties:{born:1956}}, {name:"Billy Crystal", properties:{born:1948}}, {name:"Carrie Fisher", properties:{born:1956}}, {name:"Bruno Kirby", properties:{born:1949}}, {name:"Liv Tyler", properties:{born:1977}}, {name:"Brooke Langton", properties:{born:1970}}, {name:"Gene Hackman", properties:{born:1930}}, {name:"Orlando Jones", properties:{born:1968}}, {name:"Howard Deutch", properties:{born:1950}}, {name:"Christian Bale", properties:{born:1974}}, {name:"Zach Grenier", properties:{born:1954}}, {name:"Mike Nichols", properties:{born:1931}}, {name:"Richard Harris", properties:{born:1930}}, {name:"Clint Eastwood", properties:{born:1930}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Takeshi Kitano", properties:{born:1947}}, {name:"Dina Meyer", properties:{born:1968}}, {name:"Ice-T", properties:{born:1958}}, {name:"Robert Longo", properties:{born:1953}}, {name:"Halle Berry", properties:{born:1966}}, {name:"Jim Broadbent", properties:{born:1949}}, {name:"Tom Tykwer", properties:{born:1965}}, {name:"David Mitchell", properties:{born:1969}}, {name:"Stefan Arndt", properties:{born:1961}}, {name:"Ian McKellen", properties:{born:1939}}, {name:"Audrey Tautou", properties:{born:1976}}, {name:"Paul Bettany", properties:{born:1971}}, {name:"Ron Howard", properties:{born:1954}}, {name:"Natalie Portman", properties:{born:1981}}, {name:"Stephen Rea", properties:{born:1946}}, {name:"John Hurt", properties:{born:1940}}, {name:"Ben Miles", properties:{born:1967}}, {name:"Emile Hirsch", properties:{born:1985}}, {name:"John Goodman", properties:{born:1960}}, {name:"Susan Sarandon", properties:{born:1946}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Matthew Fox", properties:{born:1966}}, {name:"Christina Ricci", properties:{born:1980}}, {name:"Rain", properties:{born:1982}}, {name:"Naomie Harris", properties:{}}, {name:"Michael Clarke Duncan", properties:{born:1957}}, {name:"David Morse", properties:{born:1953}}, {name:"Sam Rockwell", properties:{born:1968}}, {name:"Gary Sinise", properties:{born:1955}}, {name:"Patricia Clarkson", properties:{born:1959}}, {name:"Frank Darabont", properties:{born:1959}}, {name:"Frank Langella", properties:{born:1938}}, {name:"Michael Sheen", properties:{born:1969}}, {name:"Oliver Platt", properties:{born:1960}}, {name:"Danny DeVito", properties:{born:1944}}, {name:"John C. Reilly", properties:{born:1965}}, {name:"Ed Harris", properties:{born:1950}}, {name:"Bill Paxton", properties:{born:1955}}, {name:"Philip Seymour Hoffman", properties:{born:1967}}, {name:"Jan de Bont", properties:{born:1943}}, {name:"Robert Zemeckis", properties:{born:1951}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Milos Forman", properties:{born:1932}}, {name:"Diane Keaton", properties:{born:1946}}, {name:"Nancy Meyers", properties:{born:1949}}, {name:"Chris Columbus", properties:{born:1958}}, {name:"Julia Roberts", properties:{born:1967}}, {name:"Madonna", properties:{born:1954}}, {name:"Geena Davis", properties:{born:1956}}, {name:"Lori Petty", properties:{born:1963}}, {name:"Penny Marshall", properties:{born:1943}}, {name:"Paul Blythe", properties:{}}, {name:"Angela Scope", properties:{}}, {name:"Jessica Thompson", properties:{}}, {name:"James Thompson", properties:{}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{_id:171, properties:{license:"proprietary", price:"freemium", name:"Notion"}}, {_id:172, properties:{name:"Libreoffice Calc\n"}}, {_id:173, properties:{name:"Trello"}}, {_id:174, properties:{name:"Word"}}, {_id:175, properties:{name:"Google Slides"}}, {_id:176, properties:{name:"Google Sheets"}}, {_id:177, properties:{name:"Excel"}}, {_id:178, properties:{name:"Libreoffice Writer\n"}}, {_id:179, properties:{name:"Libreoffice Impress\n"}}, {_id:180, properties:{name:"Powerpoint"}}, {_id:181, properties:{name:"Google Docs\n"}}] AS row +CREATE (n:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row._id}) SET n += row.properties SET n:Software; +UNWIND [{title:"The Matrix", properties:{tagline:"Welcome to the Real World", released:1999}}, {title:"The Matrix Reloaded", properties:{tagline:"Free your mind", released:2003}}, {title:"The Matrix Revolutions", properties:{tagline:"Everything that has a beginning has an end", released:2003}}, {title:"The Devil's Advocate", properties:{tagline:"Evil has its winning ways", released:1997}}, {title:"A Few Good Men", properties:{tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth.", released:1992}}, {title:"Top Gun", properties:{tagline:"I feel the need, the need for speed.", released:1986}}, {title:"Jerry Maguire", properties:{tagline:"The rest of his life begins now.", released:2000}}, {title:"Stand By Me", properties:{tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of.", released:1986}}, {title:"As Good as It Gets", properties:{tagline:"A comedy from the heart that goes for the throat.", released:1997}}, {title:"What Dreams May Come", properties:{tagline:"After life there is more. The end is just the beginning.", released:1998}}, {title:"Snow Falling on Cedars", properties:{tagline:"First loves last. Forever.", released:1999}}, {title:"You've Got Mail", properties:{tagline:"At odds in life... in love on-line.", released:1998}}, {title:"Sleepless in Seattle", properties:{tagline:"What if someone you never met, someone you never saw, someone you never knew was the only someone for you?", released:1993}}, {title:"Joe Versus the Volcano", properties:{tagline:"A story of love, lava and burning desire.", released:1990}}, {title:"When Harry Met Sally", properties:{tagline:"Can two friends sleep together and still love each other in the morning?", released:1998}}, {title:"That Thing You Do", properties:{tagline:"In every life there comes a time when that thing you dream becomes that thing you do", released:1996}}, {title:"The Replacements", properties:{tagline:"Pain heals, Chicks dig scars... Glory lasts forever", released:2000}}, {title:"RescueDawn", properties:{tagline:"Based on the extraordinary true story of one man's fight for freedom", released:2006}}, {title:"The Birdcage", properties:{tagline:"Come as you are", released:1996}}, {title:"Unforgiven", properties:{tagline:"It's a hell of a thing, killing a man", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +UNWIND [{title:"Johnny Mnemonic", properties:{tagline:"The hottest data on earth. In the coolest head in town", released:1995}}, {title:"Cloud Atlas", properties:{tagline:"Everything is connected", released:2012}}, {title:"The Da Vinci Code", properties:{tagline:"Break The Codes", released:2006}}, {title:"V for Vendetta", properties:{tagline:"Freedom! Forever!", released:2006}}, {title:"Speed Racer", properties:{tagline:"Speed has no limits", released:2008}}, {title:"Ninja Assassin", properties:{tagline:"Prepare to enter a secret world of assassins", released:2009}}, {title:"The Green Mile", properties:{tagline:"Walk a mile you'll never forget.", released:1999}}, {title:"Frost/Nixon", properties:{tagline:"400 million people were waiting for the truth.", released:2008}}, {title:"Hoffa", properties:{tagline:"He didn't want law. He wanted justice.", released:1992}}, {title:"Apollo 13", properties:{tagline:"Houston, we have a problem.", released:1995}}, {title:"Twister", properties:{tagline:"Don't Breathe. Don't Look Back.", released:1996}}, {title:"Cast Away", properties:{tagline:"At the edge of the world, his journey begins.", released:2000}}, {title:"One Flew Over the Cuckoo's Nest", properties:{tagline:"If he's crazy, what does that make you?", released:1975}}, {title:"Something's Gotta Give", properties:{released:2003}}, {title:"Bicentennial Man", properties:{tagline:"One robot's 200 year journey to become an ordinary man.", released:1999}}, {title:"Charlie Wilson's War", properties:{tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire.", released:2007}}, {title:"The Polar Express", properties:{tagline:"This Holiday Season… Believe", released:2004}}, {title:"A League of Their Own", properties:{tagline:"Once in a lifetime you get a chance to do something different.", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +:commit +:begin +UNWIND [{start: {name:"Joel Silver"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Stefan Arndt"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:PRODUCED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Jim Cash"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"David Mitchell"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:WROTE]->(end) SET r += row.properties; +UNWIND [{start: {_id:172}, end: {_id:177}, properties:{}}, {start: {_id:173}, end: {_id:171}, properties:{}}, {start: {_id:171}, end: {_id:181}, properties:{}}, {start: {_id:181}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:171}, properties:{}}, {start: {_id:178}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:175}, properties:{}}, {start: {_id:179}, end: {_id:180}, properties:{}}, {start: {_id:180}, end: {_id:175}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:SIMILAR]->(end) SET r += row.properties; +UNWIND [{start: {name:"Keanu Reeves"}, end: {title:"The Matrix"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Emil Eifrem"}, end: {title:"The Matrix"}, properties:{roles:["Emil"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Kevin Lomax"]}}, {start: {name:"Charlize Theron"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Mary Ann Lomax"]}}, {start: {name:"Al Pacino"}, end: {title:"The Devil's Advocate"}, properties:{roles:["John Milton"]}}, {start: {name:"Tom Cruise"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Daniel Kaffee"]}}, {start: {name:"Jack Nicholson"}, end: {title:"A Few Good Men"}, properties:{roles:["Col. Nathan R. Jessup"]}}, {start: {name:"Demi Moore"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Cdr. JoAnne Galloway"]}}, {start: {name:"Kevin Bacon"}, end: {title:"A Few Good Men"}, properties:{roles:["Capt. Jack Ross"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Kiefer Sutherland"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Jonathan Kendrick"]}}, {start: {name:"Noah Wyle"}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Jeffrey Barnes"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Carl Hammaker"]}}, {start: {name:"Kevin Pollak"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Sam Weinberg"]}}, {start: {name:"J.T. Walsh"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Col. Matthew Andrew Markinson"]}}, {start: {name:"James Marshall"}, end: {title:"A Few Good Men"}, properties:{roles:["Pfc. Louden Downey"]}}, {start: {name:"Christopher Guest"}, end: {title:"A Few Good Men"}, properties:{roles:["Dr. Stone"]}}, {start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{roles:["Man in Bar"]}}, {start: {name:"Tom Cruise"}, end: {title:"Top Gun"}, properties:{roles:["Maverick"]}}, {start: {name:"Kelly McGillis"}, end: {title:"Top Gun"}, properties:{roles:["Charlie"]}}, {start: {name:"Val Kilmer"}, end: {title:"Top Gun"}, properties:{roles:["Iceman"]}}, {start: {name:"Anthony Edwards"}, end: {title:"Top Gun"}, properties:{roles:["Goose"]}}, {start: {name:"Tom Skerritt"}, end: {title:"Top Gun"}, properties:{roles:["Viper"]}}, {start: {name:"Meg Ryan"}, end: {title:"Top Gun"}, properties:{roles:["Carole"]}}, {start: {name:"Tom Cruise"}, end: {title:"Jerry Maguire"}, properties:{roles:["Jerry Maguire"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"Jerry Maguire"}, properties:{roles:["Rod Tidwell"]}}, {start: {name:"Renee Zellweger"}, end: {title:"Jerry Maguire"}, properties:{roles:["Dorothy Boyd"]}}, {start: {name:"Kelly Preston"}, end: {title:"Jerry Maguire"}, properties:{roles:["Avery Bishop"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Jerry Maguire"}, properties:{roles:["Frank Cushman"]}}, {start: {name:"Jay Mohr"}, end: {title:"Jerry Maguire"}, properties:{roles:["Bob Sugar"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Bonnie Hunt"}, end: {title:"Jerry Maguire"}, properties:{roles:["Laurel Boyd"]}}, {start: {name:"Regina King"}, end: {title:"Jerry Maguire"}, properties:{roles:["Marcee Tidwell"]}}, {start: {name:"Jonathan Lipnicki"}, end: {title:"Jerry Maguire"}, properties:{roles:["Ray Boyd"]}}, {start: {name:"Wil Wheaton"}, end: {title:"Stand By Me"}, properties:{roles:["Gordie Lachance"]}}, {start: {name:"River Phoenix"}, end: {title:"Stand By Me"}, properties:{roles:["Chris Chambers"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Stand By Me"}, properties:{roles:["Vern Tessio"]}}, {start: {name:"Corey Feldman"}, end: {title:"Stand By Me"}, properties:{roles:["Teddy Duchamp"]}}, {start: {name:"John Cusack"}, end: {title:"Stand By Me"}, properties:{roles:["Denny Lachance"]}}, {start: {name:"Kiefer Sutherland"}, end: {title:"Stand By Me"}, properties:{roles:["Ace Merrill"]}}, {start: {name:"Marshall Bell"}, end: {title:"Stand By Me"}, properties:{roles:["Mr. Lachance"]}}, {start: {name:"Jack Nicholson"}, end: {title:"As Good as It Gets"}, properties:{roles:["Melvin Udall"]}}, {start: {name:"Helen Hunt"}, end: {title:"As Good as It Gets"}, properties:{roles:["Carol Connelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"As Good as It Gets"}, properties:{roles:["Simon Bishop"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"As Good as It Gets"}, properties:{roles:["Frank Sachs"]}}, {start: {name:"Robin Williams"}, end: {title:"What Dreams May Come"}, properties:{roles:["Chris Nielsen"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"What Dreams May Come"}, properties:{roles:["Albert Lewis"]}}, {start: {name:"Annabella Sciorra"}, end: {title:"What Dreams May Come"}, properties:{roles:["Annie Collins-Nielsen"]}}, {start: {name:"Max von Sydow"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Tracker"]}}, {start: {name:"Werner Herzog"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Face"]}}, {start: {name:"Ethan Hawke"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Ishmael Chambers"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Rick Yune"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Kazuo Miyamoto"]}}, {start: {name:"Max von Sydow"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Nels Gudmundsson"]}}, {start: {name:"James Cromwell"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Judge Fielding"]}}, {start: {name:"Tom Hanks"}, end: {title:"You've Got Mail"}, properties:{roles:["Joe Fox"]}}, {start: {name:"Meg Ryan"}, end: {title:"You've Got Mail"}, properties:{roles:["Kathleen Kelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"You've Got Mail"}, properties:{roles:["Frank Navasky"]}}, {start: {name:"Parker Posey"}, end: {title:"You've Got Mail"}, properties:{roles:["Patricia Eden"]}}, {start: {name:"Dave Chappelle"}, end: {title:"You've Got Mail"}, properties:{roles:["Kevin Jackson"]}}, {start: {name:"Steve Zahn"}, end: {title:"You've Got Mail"}, properties:{roles:["George Pappas"]}}, {start: {name:"Tom Hanks"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Sam Baldwin"]}}, {start: {name:"Meg Ryan"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Annie Reed"]}}, {start: {name:"Rita Wilson"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Suzy"]}}, {start: {name:"Bill Pullman"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Walter"]}}, {start: {name:"Victor Garber"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Greg"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Becky"]}}, {start: {name:"Tom Hanks"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Joe Banks"]}}, {start: {name:"Meg Ryan"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["DeDe", "Angelica Graynamore", "Patricia Graynamore"]}}, {start: {name:"Nathan Lane"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Baw"]}}, {start: {name:"Billy Crystal"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Harry Burns"]}}, {start: {name:"Meg Ryan"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Sally Albright"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Carrie Fisher"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Marie"]}}, {start: {name:"Bruno Kirby"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Jess"]}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{roles:["Mr. White"]}}, {start: {name:"Liv Tyler"}, end: {title:"That Thing You Do"}, properties:{roles:["Faye Dolan"]}}, {start: {name:"Charlize Theron"}, end: {title:"That Thing You Do"}, properties:{roles:["Tina"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Replacements"}, properties:{roles:["Shane Falco"]}}, {start: {name:"Brooke Langton"}, end: {title:"The Replacements"}, properties:{roles:["Annabelle Farrell"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Replacements"}, properties:{roles:["Jimmy McGinty"]}}, {start: {name:"Orlando Jones"}, end: {title:"The Replacements"}, properties:{roles:["Clifford Franklin"]}}, {start: {name:"Marshall Bell"}, end: {title:"RescueDawn"}, properties:{roles:["Admiral"]}}, {start: {name:"Christian Bale"}, end: {title:"RescueDawn"}, properties:{roles:["Dieter Dengler"]}}, {start: {name:"Zach Grenier"}, end: {title:"RescueDawn"}, properties:{roles:["Squad Leader"]}}, {start: {name:"Steve Zahn"}, end: {title:"RescueDawn"}, properties:{roles:["Duane"]}}, {start: {name:"Robin Williams"}, end: {title:"The Birdcage"}, properties:{roles:["Armand Goldman"]}}, {start: {name:"Nathan Lane"}, end: {title:"The Birdcage"}, properties:{roles:["Albert Goldman"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Birdcage"}, properties:{roles:["Sen. Kevin Keeley"]}}, {start: {name:"Richard Harris"}, end: {title:"Unforgiven"}, properties:{roles:["English Bob"]}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{roles:["Bill Munny"]}}, {start: {name:"Gene Hackman"}, end: {title:"Unforgiven"}, properties:{roles:["Little Bill Daggett"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Johnny Mnemonic"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Takeshi Kitano"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Takahashi"]}}, {start: {name:"Dina Meyer"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Jane"]}}, {start: {name:"Ice-T"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["J-Bone"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cloud Atlas"}, properties:{roles:["Zachry", "Dr. Henry Goose", "Isaac Sachs", "Dermot Hoggins"]}}, {start: {name:"Hugo Weaving"}, end: {title:"Cloud Atlas"}, properties:{roles:["Bill Smoke", "Haskell Moore", "Tadeusz Kesselring", "Nurse Noakes", "Boardman Mephi", "Old Georgie"]}}, {start: {name:"Halle Berry"}, end: {title:"Cloud Atlas"}, properties:{roles:["Luisa Rey", "Jocasta Ayrs", "Ovid", "Meronym"]}}, {start: {name:"Jim Broadbent"}, end: {title:"Cloud Atlas"}, properties:{roles:["Vyvyan Ayrs", "Captain Molyneux", "Timothy Cavendish"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Dr. Robert Langdon"]}}, {start: {name:"Ian McKellen"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sir Leight Teabing"]}}, {start: {name:"Audrey Tautou"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sophie Neveu"]}}, {start: {name:"Paul Bettany"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Silas"]}}, {start: {name:"Hugo Weaving"}, end: {title:"V for Vendetta"}, properties:{roles:["V"]}}, {start: {name:"Natalie Portman"}, end: {title:"V for Vendetta"}, properties:{roles:["Evey Hammond"]}}, {start: {name:"Stephen Rea"}, end: {title:"V for Vendetta"}, properties:{roles:["Eric Finch"]}}, {start: {name:"John Hurt"}, end: {title:"V for Vendetta"}, properties:{roles:["High Chancellor Adam Sutler"]}}, {start: {name:"Ben Miles"}, end: {title:"V for Vendetta"}, properties:{roles:["Dascomb"]}}, {start: {name:"Emile Hirsch"}, end: {title:"Speed Racer"}, properties:{roles:["Speed Racer"]}}, {start: {name:"John Goodman"}, end: {title:"Speed Racer"}, properties:{roles:["Pops"]}}, {start: {name:"Susan Sarandon"}, end: {title:"Speed Racer"}, properties:{roles:["Mom"]}}, {start: {name:"Matthew Fox"}, end: {title:"Speed Racer"}, properties:{roles:["Racer X"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Christina Ricci"}, end: {title:"Speed Racer"}, properties:{roles:["Trixie"]}}, {start: {name:"Rain"}, end: {title:"Speed Racer"}, properties:{roles:["Taejo Togokahn"]}}, {start: {name:"Ben Miles"}, end: {title:"Speed Racer"}, properties:{roles:["Cass Jones"]}}, {start: {name:"Rain"}, end: {title:"Ninja Assassin"}, properties:{roles:["Raizo"]}}, {start: {name:"Naomie Harris"}, end: {title:"Ninja Assassin"}, properties:{roles:["Mika Coretti"]}}, {start: {name:"Rick Yune"}, end: {title:"Ninja Assassin"}, properties:{roles:["Takeshi"]}}, {start: {name:"Ben Miles"}, end: {title:"Ninja Assassin"}, properties:{roles:["Ryan Maslow"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Green Mile"}, properties:{roles:["Paul Edgecomb"]}}, {start: {name:"Michael Clarke Duncan"}, end: {title:"The Green Mile"}, properties:{roles:["John Coffey"]}}, {start: {name:"David Morse"}, end: {title:"The Green Mile"}, properties:{roles:["Brutus \"Brutal\" Howell"]}}, {start: {name:"Bonnie Hunt"}, end: {title:"The Green Mile"}, properties:{roles:["Jan Edgecomb"]}}, {start: {name:"James Cromwell"}, end: {title:"The Green Mile"}, properties:{roles:["Warden Hal Moores"]}}, {start: {name:"Sam Rockwell"}, end: {title:"The Green Mile"}, properties:{roles:["\"Wild Bill\" Wharton"]}}, {start: {name:"Gary Sinise"}, end: {title:"The Green Mile"}, properties:{roles:["Burt Hammersmith"]}}, {start: {name:"Patricia Clarkson"}, end: {title:"The Green Mile"}, properties:{roles:["Melinda Moores"]}}, {start: {name:"Frank Langella"}, end: {title:"Frost/Nixon"}, properties:{roles:["Richard Nixon"]}}, {start: {name:"Michael Sheen"}, end: {title:"Frost/Nixon"}, properties:{roles:["David Frost"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Frost/Nixon"}, properties:{roles:["Jack Brennan"]}}, {start: {name:"Oliver Platt"}, end: {title:"Frost/Nixon"}, properties:{roles:["Bob Zelnick"]}}, {start: {name:"Sam Rockwell"}, end: {title:"Frost/Nixon"}, properties:{roles:["James Reston, Jr."]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jack Nicholson"}, end: {title:"Hoffa"}, properties:{roles:["Hoffa"]}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{roles:["Robert \"Bobby\" Ciaro"]}}, {start: {name:"J.T. Walsh"}, end: {title:"Hoffa"}, properties:{roles:["Frank Fitzsimmons"]}}, {start: {name:"John C. Reilly"}, end: {title:"Hoffa"}, properties:{roles:["Peter \"Pete\" Connelly"]}}, {start: {name:"Tom Hanks"}, end: {title:"Apollo 13"}, properties:{roles:["Jim Lovell"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Apollo 13"}, properties:{roles:["Jack Swigert"]}}, {start: {name:"Ed Harris"}, end: {title:"Apollo 13"}, properties:{roles:["Gene Kranz"]}}, {start: {name:"Bill Paxton"}, end: {title:"Apollo 13"}, properties:{roles:["Fred Haise"]}}, {start: {name:"Gary Sinise"}, end: {title:"Apollo 13"}, properties:{roles:["Ken Mattingly"]}}, {start: {name:"Bill Paxton"}, end: {title:"Twister"}, properties:{roles:["Bill Harding"]}}, {start: {name:"Helen Hunt"}, end: {title:"Twister"}, properties:{roles:["Dr. Jo Harding"]}}, {start: {name:"Zach Grenier"}, end: {title:"Twister"}, properties:{roles:["Eddie"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Twister"}, properties:{roles:["Dustin \"Dusty\" Davis"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cast Away"}, properties:{roles:["Chuck Noland"]}}, {start: {name:"Helen Hunt"}, end: {title:"Cast Away"}, properties:{roles:["Kelly Frears"]}}, {start: {name:"Jack Nicholson"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Randle McMurphy"]}}, {start: {name:"Danny DeVito"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Martini"]}}, {start: {name:"Jack Nicholson"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Harry Sanborn"]}}, {start: {name:"Diane Keaton"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Erica Barry"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Julian Mercer"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Robin Williams"}, end: {title:"Bicentennial Man"}, properties:{roles:["Andrew Marin"]}}, {start: {name:"Oliver Platt"}, end: {title:"Bicentennial Man"}, properties:{roles:["Rupert Burns"]}}, {start: {name:"Tom Hanks"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Rep. Charlie Wilson"]}}, {start: {name:"Julia Roberts"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Joanne Herring"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Gust Avrakotos"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Polar Express"}, properties:{roles:["Hero Boy", "Father", "Conductor", "Hobo", "Scrooge", "Santa Claus"]}}, {start: {name:"Tom Hanks"}, end: {title:"A League of Their Own"}, properties:{roles:["Jimmy Dugan"]}}, {start: {name:"Geena Davis"}, end: {title:"A League of Their Own"}, properties:{roles:["Dottie Hinson"]}}, {start: {name:"Lori Petty"}, end: {title:"A League of Their Own"}, properties:{roles:["Kit Keller"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"A League of Their Own"}, properties:{roles:["Doris Murphy"]}}, {start: {name:"Madonna"}, end: {title:"A League of Their Own"}, properties:{roles:["\"All the Way\" Mae Mordabito"]}}, {start: {name:"Bill Paxton"}, end: {title:"A League of Their Own"}, properties:{roles:["Bob Hinson"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jessica Thompson"}, end: {title:"Cloud Atlas"}, properties:{summary:"An amazing journey", rating:95}}, {start: {name:"Jessica Thompson"}, end: {title:"The Replacements"}, properties:{summary:"Silly, but fun", rating:65}}, {start: {name:"James Thompson"}, end: {title:"The Replacements"}, properties:{summary:"The coolest football movie ever", rating:100}}, {start: {name:"Angela Scope"}, end: {title:"The Replacements"}, properties:{summary:"Pretty funny at times", rating:62}}, {start: {name:"Jessica Thompson"}, end: {title:"Unforgiven"}, properties:{summary:"Dark, but compelling", rating:85}}, {start: {name:"Jessica Thompson"}, end: {title:"The Birdcage"}, properties:{summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}}, {start: {name:"Jessica Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"A solid romp", rating:68}}, {start: {name:"James Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"Fun, but a little far fetched", rating:65}}, {start: {name:"Jessica Thompson"}, end: {title:"Jerry Maguire"}, properties:{summary:"You had me at Jerry", rating:92}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:REVIEWED]->(end) SET r += row.properties; +UNWIND [{start: {name:"James Thompson"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Angela Scope"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Paul Blythe"}, end: {name:"Angela Scope"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Person{name: row.end.name}) +CREATE (start)-[r:FOLLOWS]->(end) SET r += row.properties; +UNWIND [{start: {name:"Lilly Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Taylor Hackford"}, end: {title:"The Devil's Advocate"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Tony Scott"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"Stand By Me"}, properties:{}}, {start: {name:"James L. Brooks"}, end: {title:"As Good as It Gets"}, properties:{}}, {start: {name:"Vincent Ward"}, end: {title:"What Dreams May Come"}, properties:{}}, {start: {name:"Scott Hicks"}, end: {title:"Snow Falling on Cedars"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"You've Got Mail"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"Sleepless in Seattle"}, properties:{}}, {start: {name:"John Patrick Stanley"}, end: {title:"Joe Versus the Volcano"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{}}, {start: {name:"Howard Deutch"}, end: {title:"The Replacements"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Werner Herzog"}, end: {title:"RescueDawn"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"The Birdcage"}, properties:{}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{}}, {start: {name:"Robert Longo"}, end: {title:"Johnny Mnemonic"}, properties:{}}, {start: {name:"Tom Tykwer"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"The Da Vinci Code"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Frank Darabont"}, end: {title:"The Green Mile"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Frost/Nixon"}, properties:{}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Apollo 13"}, properties:{}}, {start: {name:"Jan de Bont"}, end: {title:"Twister"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"Cast Away"}, properties:{}}, {start: {name:"Milos Forman"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Chris Columbus"}, end: {title:"Bicentennial Man"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"Charlie Wilson's War"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"The Polar Express"}, properties:{}}, {start: {name:"Penny Marshall"}, end: {title:"A League of Their Own"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {_id:176}, end: {_id:175}, properties:{}}, {start: {_id:174}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:178}, properties:{}}, {start: {_id:180}, end: {_id:177}, properties:{}}, {start: {_id:174}, end: {_id:180}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:HAS_SAME_CREATOR]->(end) SET r += row.properties; +:commit +:begin +MATCH (n:`UNIQUE IMPORT LABEL`) WITH n LIMIT 20000 REMOVE n:`UNIQUE IMPORT LABEL` REMOVE n.`UNIQUE IMPORT ID`; +:commit +:begin +DROP CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit \ No newline at end of file diff --git a/neo4j/import_old/software-graph.dump b/neo4j/import_old/software-graph.dump new file mode 100755 index 0000000000000000000000000000000000000000..d3c2c0526e869a66b25027c72d0fc5690a87d3e7 Binary files /dev/null and b/neo4j/import_old/software-graph.dump differ diff --git a/neo4j/script.sh b/neo4j/script.sh new file mode 100755 index 0000000000000000000000000000000000000000..cd539d6f4a32b3b4128a1834a2978d865aecbad7 --- /dev/null +++ b/neo4j/script.sh @@ -0,0 +1 @@ +neo4j-admin load --from=import/software-graph.dump --database=neo4j --force \ No newline at end of file diff --git a/neo4j/scripts/insert.sh b/neo4j/scripts/insert.sh new file mode 100644 index 0000000000000000000000000000000000000000..210a94eaddb5768b1e570d4f6677929b876f17d4 --- /dev/null +++ b/neo4j/scripts/insert.sh @@ -0,0 +1,110 @@ +:begin +CREATE INDEX FOR (node:Person) ON (node.born); +CREATE INDEX FOR (node:Movie) ON (node.released); +CREATE CONSTRAINT ON (node:Person) ASSERT (node.name) IS UNIQUE; +CREATE CONSTRAINT ON (node:Movie) ASSERT (node.title) IS UNIQUE; +CREATE CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit +CALL db.awaitIndexes(300); +:begin +UNWIND [{name:"Keanu Reeves", properties:{born:1964}}, {name:"Carrie-Anne Moss", properties:{born:1967}}, {name:"Laurence Fishburne", properties:{born:1961}}, {name:"Hugo Weaving", properties:{born:1960}}, {name:"Lilly Wachowski", properties:{born:1967}}, {name:"Lana Wachowski", properties:{born:1965}}, {name:"Joel Silver", properties:{born:1952}}, {name:"Emil Eifrem", properties:{born:1978}}, {name:"Charlize Theron", properties:{born:1975}}, {name:"Al Pacino", properties:{born:1940}}, {name:"Taylor Hackford", properties:{born:1944}}, {name:"Tom Cruise", properties:{born:1962}}, {name:"Jack Nicholson", properties:{born:1937}}, {name:"Demi Moore", properties:{born:1962}}, {name:"Kevin Bacon", properties:{born:1958}}, {name:"Kiefer Sutherland", properties:{born:1966}}, {name:"Noah Wyle", properties:{born:1971}}, {name:"Cuba Gooding Jr.", properties:{born:1968}}, {name:"Kevin Pollak", properties:{born:1957}}, {name:"J.T. Walsh", properties:{born:1943}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"James Marshall", properties:{born:1967}}, {name:"Christopher Guest", properties:{born:1948}}, {name:"Rob Reiner", properties:{born:1947}}, {name:"Aaron Sorkin", properties:{born:1961}}, {name:"Kelly McGillis", properties:{born:1957}}, {name:"Val Kilmer", properties:{born:1959}}, {name:"Anthony Edwards", properties:{born:1962}}, {name:"Tom Skerritt", properties:{born:1933}}, {name:"Meg Ryan", properties:{born:1961}}, {name:"Tony Scott", properties:{born:1944}}, {name:"Jim Cash", properties:{born:1941}}, {name:"Renee Zellweger", properties:{born:1969}}, {name:"Kelly Preston", properties:{born:1962}}, {name:"Jerry O'Connell", properties:{born:1974}}, {name:"Jay Mohr", properties:{born:1970}}, {name:"Bonnie Hunt", properties:{born:1961}}, {name:"Regina King", properties:{born:1971}}, {name:"Jonathan Lipnicki", properties:{born:1996}}, {name:"Cameron Crowe", properties:{born:1957}}, {name:"River Phoenix", properties:{born:1970}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Corey Feldman", properties:{born:1971}}, {name:"Wil Wheaton", properties:{born:1972}}, {name:"John Cusack", properties:{born:1966}}, {name:"Marshall Bell", properties:{born:1942}}, {name:"Helen Hunt", properties:{born:1963}}, {name:"Greg Kinnear", properties:{born:1963}}, {name:"James L. Brooks", properties:{born:1940}}, {name:"Annabella Sciorra", properties:{born:1960}}, {name:"Max von Sydow", properties:{born:1929}}, {name:"Werner Herzog", properties:{born:1942}}, {name:"Robin Williams", properties:{born:1951}}, {name:"Vincent Ward", properties:{born:1956}}, {name:"Ethan Hawke", properties:{born:1970}}, {name:"Rick Yune", properties:{born:1971}}, {name:"James Cromwell", properties:{born:1940}}, {name:"Scott Hicks", properties:{born:1953}}, {name:"Parker Posey", properties:{born:1968}}, {name:"Dave Chappelle", properties:{born:1973}}, {name:"Steve Zahn", properties:{born:1967}}, {name:"Tom Hanks", properties:{born:1956}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Nora Ephron", properties:{born:1941}}, {name:"Rita Wilson", properties:{born:1956}}, {name:"Bill Pullman", properties:{born:1953}}, {name:"Victor Garber", properties:{born:1949}}, {name:"Rosie O'Donnell", properties:{born:1962}}, {name:"John Patrick Stanley", properties:{born:1950}}, {name:"Nathan Lane", properties:{born:1956}}, {name:"Billy Crystal", properties:{born:1948}}, {name:"Carrie Fisher", properties:{born:1956}}, {name:"Bruno Kirby", properties:{born:1949}}, {name:"Liv Tyler", properties:{born:1977}}, {name:"Brooke Langton", properties:{born:1970}}, {name:"Gene Hackman", properties:{born:1930}}, {name:"Orlando Jones", properties:{born:1968}}, {name:"Howard Deutch", properties:{born:1950}}, {name:"Christian Bale", properties:{born:1974}}, {name:"Zach Grenier", properties:{born:1954}}, {name:"Mike Nichols", properties:{born:1931}}, {name:"Richard Harris", properties:{born:1930}}, {name:"Clint Eastwood", properties:{born:1930}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Takeshi Kitano", properties:{born:1947}}, {name:"Dina Meyer", properties:{born:1968}}, {name:"Ice-T", properties:{born:1958}}, {name:"Robert Longo", properties:{born:1953}}, {name:"Halle Berry", properties:{born:1966}}, {name:"Jim Broadbent", properties:{born:1949}}, {name:"Tom Tykwer", properties:{born:1965}}, {name:"David Mitchell", properties:{born:1969}}, {name:"Stefan Arndt", properties:{born:1961}}, {name:"Ian McKellen", properties:{born:1939}}, {name:"Audrey Tautou", properties:{born:1976}}, {name:"Paul Bettany", properties:{born:1971}}, {name:"Ron Howard", properties:{born:1954}}, {name:"Natalie Portman", properties:{born:1981}}, {name:"Stephen Rea", properties:{born:1946}}, {name:"John Hurt", properties:{born:1940}}, {name:"Ben Miles", properties:{born:1967}}, {name:"Emile Hirsch", properties:{born:1985}}, {name:"John Goodman", properties:{born:1960}}, {name:"Susan Sarandon", properties:{born:1946}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Matthew Fox", properties:{born:1966}}, {name:"Christina Ricci", properties:{born:1980}}, {name:"Rain", properties:{born:1982}}, {name:"Naomie Harris", properties:{}}, {name:"Michael Clarke Duncan", properties:{born:1957}}, {name:"David Morse", properties:{born:1953}}, {name:"Sam Rockwell", properties:{born:1968}}, {name:"Gary Sinise", properties:{born:1955}}, {name:"Patricia Clarkson", properties:{born:1959}}, {name:"Frank Darabont", properties:{born:1959}}, {name:"Frank Langella", properties:{born:1938}}, {name:"Michael Sheen", properties:{born:1969}}, {name:"Oliver Platt", properties:{born:1960}}, {name:"Danny DeVito", properties:{born:1944}}, {name:"John C. Reilly", properties:{born:1965}}, {name:"Ed Harris", properties:{born:1950}}, {name:"Bill Paxton", properties:{born:1955}}, {name:"Philip Seymour Hoffman", properties:{born:1967}}, {name:"Jan de Bont", properties:{born:1943}}, {name:"Robert Zemeckis", properties:{born:1951}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{name:"Milos Forman", properties:{born:1932}}, {name:"Diane Keaton", properties:{born:1946}}, {name:"Nancy Meyers", properties:{born:1949}}, {name:"Chris Columbus", properties:{born:1958}}, {name:"Julia Roberts", properties:{born:1967}}, {name:"Madonna", properties:{born:1954}}, {name:"Geena Davis", properties:{born:1956}}, {name:"Lori Petty", properties:{born:1963}}, {name:"Penny Marshall", properties:{born:1943}}, {name:"Paul Blythe", properties:{}}, {name:"Angela Scope", properties:{}}, {name:"Jessica Thompson", properties:{}}, {name:"James Thompson", properties:{}}] AS row +CREATE (n:Person{name: row.name}) SET n += row.properties; +UNWIND [{_id:171, properties:{license:"proprietary", price:"freemium", name:"Notion"}}, {_id:172, properties:{name:"Libreoffice Calc\n"}}, {_id:173, properties:{name:"Trello"}}, {_id:174, properties:{name:"Word"}}, {_id:175, properties:{name:"Google Slides"}}, {_id:176, properties:{name:"Google Sheets"}}, {_id:177, properties:{name:"Excel"}}, {_id:178, properties:{name:"Libreoffice Writer\n"}}, {_id:179, properties:{name:"Libreoffice Impress\n"}}, {_id:180, properties:{name:"Powerpoint"}}, {_id:181, properties:{name:"Google Docs\n"}}] AS row +CREATE (n:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row._id}) SET n += row.properties SET n:Software; +UNWIND [{title:"The Matrix", properties:{tagline:"Welcome to the Real World", released:1999}}, {title:"The Matrix Reloaded", properties:{tagline:"Free your mind", released:2003}}, {title:"The Matrix Revolutions", properties:{tagline:"Everything that has a beginning has an end", released:2003}}, {title:"The Devil's Advocate", properties:{tagline:"Evil has its winning ways", released:1997}}, {title:"A Few Good Men", properties:{tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth.", released:1992}}, {title:"Top Gun", properties:{tagline:"I feel the need, the need for speed.", released:1986}}, {title:"Jerry Maguire", properties:{tagline:"The rest of his life begins now.", released:2000}}, {title:"Stand By Me", properties:{tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of.", released:1986}}, {title:"As Good as It Gets", properties:{tagline:"A comedy from the heart that goes for the throat.", released:1997}}, {title:"What Dreams May Come", properties:{tagline:"After life there is more. The end is just the beginning.", released:1998}}, {title:"Snow Falling on Cedars", properties:{tagline:"First loves last. Forever.", released:1999}}, {title:"You've Got Mail", properties:{tagline:"At odds in life... in love on-line.", released:1998}}, {title:"Sleepless in Seattle", properties:{tagline:"What if someone you never met, someone you never saw, someone you never knew was the only someone for you?", released:1993}}, {title:"Joe Versus the Volcano", properties:{tagline:"A story of love, lava and burning desire.", released:1990}}, {title:"When Harry Met Sally", properties:{tagline:"Can two friends sleep together and still love each other in the morning?", released:1998}}, {title:"That Thing You Do", properties:{tagline:"In every life there comes a time when that thing you dream becomes that thing you do", released:1996}}, {title:"The Replacements", properties:{tagline:"Pain heals, Chicks dig scars... Glory lasts forever", released:2000}}, {title:"RescueDawn", properties:{tagline:"Based on the extraordinary true story of one man's fight for freedom", released:2006}}, {title:"The Birdcage", properties:{tagline:"Come as you are", released:1996}}, {title:"Unforgiven", properties:{tagline:"It's a hell of a thing, killing a man", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +UNWIND [{title:"Johnny Mnemonic", properties:{tagline:"The hottest data on earth. In the coolest head in town", released:1995}}, {title:"Cloud Atlas", properties:{tagline:"Everything is connected", released:2012}}, {title:"The Da Vinci Code", properties:{tagline:"Break The Codes", released:2006}}, {title:"V for Vendetta", properties:{tagline:"Freedom! Forever!", released:2006}}, {title:"Speed Racer", properties:{tagline:"Speed has no limits", released:2008}}, {title:"Ninja Assassin", properties:{tagline:"Prepare to enter a secret world of assassins", released:2009}}, {title:"The Green Mile", properties:{tagline:"Walk a mile you'll never forget.", released:1999}}, {title:"Frost/Nixon", properties:{tagline:"400 million people were waiting for the truth.", released:2008}}, {title:"Hoffa", properties:{tagline:"He didn't want law. He wanted justice.", released:1992}}, {title:"Apollo 13", properties:{tagline:"Houston, we have a problem.", released:1995}}, {title:"Twister", properties:{tagline:"Don't Breathe. Don't Look Back.", released:1996}}, {title:"Cast Away", properties:{tagline:"At the edge of the world, his journey begins.", released:2000}}, {title:"One Flew Over the Cuckoo's Nest", properties:{tagline:"If he's crazy, what does that make you?", released:1975}}, {title:"Something's Gotta Give", properties:{released:2003}}, {title:"Bicentennial Man", properties:{tagline:"One robot's 200 year journey to become an ordinary man.", released:1999}}, {title:"Charlie Wilson's War", properties:{tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire.", released:2007}}, {title:"The Polar Express", properties:{tagline:"This Holiday Season… Believe", released:2004}}, {title:"A League of Their Own", properties:{tagline:"Once in a lifetime you get a chance to do something different.", released:1992}}] AS row +CREATE (n:Movie{title: row.title}) SET n += row.properties; +:commit +:begin +UNWIND [{start: {name:"Joel Silver"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Stefan Arndt"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Joel Silver"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:PRODUCED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Jim Cash"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"David Mitchell"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:WROTE]->(end) SET r += row.properties; +UNWIND [{start: {_id:172}, end: {_id:177}, properties:{}}, {start: {_id:173}, end: {_id:171}, properties:{}}, {start: {_id:171}, end: {_id:181}, properties:{}}, {start: {_id:181}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:171}, properties:{}}, {start: {_id:178}, end: {_id:174}, properties:{}}, {start: {_id:176}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:175}, properties:{}}, {start: {_id:179}, end: {_id:180}, properties:{}}, {start: {_id:180}, end: {_id:175}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:SIMILAR]->(end) SET r += row.properties; +UNWIND [{start: {name:"Keanu Reeves"}, end: {title:"The Matrix"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Emil Eifrem"}, end: {title:"The Matrix"}, properties:{roles:["Emil"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Reloaded"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Neo"]}}, {start: {name:"Carrie-Anne Moss"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Trinity"]}}, {start: {name:"Laurence Fishburne"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Morpheus"]}}, {start: {name:"Hugo Weaving"}, end: {title:"The Matrix Revolutions"}, properties:{roles:["Agent Smith"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Kevin Lomax"]}}, {start: {name:"Charlize Theron"}, end: {title:"The Devil's Advocate"}, properties:{roles:["Mary Ann Lomax"]}}, {start: {name:"Al Pacino"}, end: {title:"The Devil's Advocate"}, properties:{roles:["John Milton"]}}, {start: {name:"Tom Cruise"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Daniel Kaffee"]}}, {start: {name:"Jack Nicholson"}, end: {title:"A Few Good Men"}, properties:{roles:["Col. Nathan R. Jessup"]}}, {start: {name:"Demi Moore"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Cdr. JoAnne Galloway"]}}, {start: {name:"Kevin Bacon"}, end: {title:"A Few Good Men"}, properties:{roles:["Capt. Jack Ross"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Kiefer Sutherland"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Jonathan Kendrick"]}}, {start: {name:"Noah Wyle"}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Jeffrey Barnes"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"A Few Good Men"}, properties:{roles:["Cpl. Carl Hammaker"]}}, {start: {name:"Kevin Pollak"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Sam Weinberg"]}}, {start: {name:"J.T. Walsh"}, end: {title:"A Few Good Men"}, properties:{roles:["Lt. Col. Matthew Andrew Markinson"]}}, {start: {name:"James Marshall"}, end: {title:"A Few Good Men"}, properties:{roles:["Pfc. Louden Downey"]}}, {start: {name:"Christopher Guest"}, end: {title:"A Few Good Men"}, properties:{roles:["Dr. Stone"]}}, {start: {name:"Aaron Sorkin"}, end: {title:"A Few Good Men"}, properties:{roles:["Man in Bar"]}}, {start: {name:"Tom Cruise"}, end: {title:"Top Gun"}, properties:{roles:["Maverick"]}}, {start: {name:"Kelly McGillis"}, end: {title:"Top Gun"}, properties:{roles:["Charlie"]}}, {start: {name:"Val Kilmer"}, end: {title:"Top Gun"}, properties:{roles:["Iceman"]}}, {start: {name:"Anthony Edwards"}, end: {title:"Top Gun"}, properties:{roles:["Goose"]}}, {start: {name:"Tom Skerritt"}, end: {title:"Top Gun"}, properties:{roles:["Viper"]}}, {start: {name:"Meg Ryan"}, end: {title:"Top Gun"}, properties:{roles:["Carole"]}}, {start: {name:"Tom Cruise"}, end: {title:"Jerry Maguire"}, properties:{roles:["Jerry Maguire"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"Jerry Maguire"}, properties:{roles:["Rod Tidwell"]}}, {start: {name:"Renee Zellweger"}, end: {title:"Jerry Maguire"}, properties:{roles:["Dorothy Boyd"]}}, {start: {name:"Kelly Preston"}, end: {title:"Jerry Maguire"}, properties:{roles:["Avery Bishop"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Jerry Maguire"}, properties:{roles:["Frank Cushman"]}}, {start: {name:"Jay Mohr"}, end: {title:"Jerry Maguire"}, properties:{roles:["Bob Sugar"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Bonnie Hunt"}, end: {title:"Jerry Maguire"}, properties:{roles:["Laurel Boyd"]}}, {start: {name:"Regina King"}, end: {title:"Jerry Maguire"}, properties:{roles:["Marcee Tidwell"]}}, {start: {name:"Jonathan Lipnicki"}, end: {title:"Jerry Maguire"}, properties:{roles:["Ray Boyd"]}}, {start: {name:"Wil Wheaton"}, end: {title:"Stand By Me"}, properties:{roles:["Gordie Lachance"]}}, {start: {name:"River Phoenix"}, end: {title:"Stand By Me"}, properties:{roles:["Chris Chambers"]}}, {start: {name:"Jerry O'Connell"}, end: {title:"Stand By Me"}, properties:{roles:["Vern Tessio"]}}, {start: {name:"Corey Feldman"}, end: {title:"Stand By Me"}, properties:{roles:["Teddy Duchamp"]}}, {start: {name:"John Cusack"}, end: {title:"Stand By Me"}, properties:{roles:["Denny Lachance"]}}, {start: {name:"Kiefer Sutherland"}, end: {title:"Stand By Me"}, properties:{roles:["Ace Merrill"]}}, {start: {name:"Marshall Bell"}, end: {title:"Stand By Me"}, properties:{roles:["Mr. Lachance"]}}, {start: {name:"Jack Nicholson"}, end: {title:"As Good as It Gets"}, properties:{roles:["Melvin Udall"]}}, {start: {name:"Helen Hunt"}, end: {title:"As Good as It Gets"}, properties:{roles:["Carol Connelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"As Good as It Gets"}, properties:{roles:["Simon Bishop"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"As Good as It Gets"}, properties:{roles:["Frank Sachs"]}}, {start: {name:"Robin Williams"}, end: {title:"What Dreams May Come"}, properties:{roles:["Chris Nielsen"]}}, {start: {name:"Cuba Gooding Jr."}, end: {title:"What Dreams May Come"}, properties:{roles:["Albert Lewis"]}}, {start: {name:"Annabella Sciorra"}, end: {title:"What Dreams May Come"}, properties:{roles:["Annie Collins-Nielsen"]}}, {start: {name:"Max von Sydow"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Tracker"]}}, {start: {name:"Werner Herzog"}, end: {title:"What Dreams May Come"}, properties:{roles:["The Face"]}}, {start: {name:"Ethan Hawke"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Ishmael Chambers"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Rick Yune"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Kazuo Miyamoto"]}}, {start: {name:"Max von Sydow"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Nels Gudmundsson"]}}, {start: {name:"James Cromwell"}, end: {title:"Snow Falling on Cedars"}, properties:{roles:["Judge Fielding"]}}, {start: {name:"Tom Hanks"}, end: {title:"You've Got Mail"}, properties:{roles:["Joe Fox"]}}, {start: {name:"Meg Ryan"}, end: {title:"You've Got Mail"}, properties:{roles:["Kathleen Kelly"]}}, {start: {name:"Greg Kinnear"}, end: {title:"You've Got Mail"}, properties:{roles:["Frank Navasky"]}}, {start: {name:"Parker Posey"}, end: {title:"You've Got Mail"}, properties:{roles:["Patricia Eden"]}}, {start: {name:"Dave Chappelle"}, end: {title:"You've Got Mail"}, properties:{roles:["Kevin Jackson"]}}, {start: {name:"Steve Zahn"}, end: {title:"You've Got Mail"}, properties:{roles:["George Pappas"]}}, {start: {name:"Tom Hanks"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Sam Baldwin"]}}, {start: {name:"Meg Ryan"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Annie Reed"]}}, {start: {name:"Rita Wilson"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Suzy"]}}, {start: {name:"Bill Pullman"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Walter"]}}, {start: {name:"Victor Garber"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Greg"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"Sleepless in Seattle"}, properties:{roles:["Becky"]}}, {start: {name:"Tom Hanks"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Joe Banks"]}}, {start: {name:"Meg Ryan"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["DeDe", "Angelica Graynamore", "Patricia Graynamore"]}}, {start: {name:"Nathan Lane"}, end: {title:"Joe Versus the Volcano"}, properties:{roles:["Baw"]}}, {start: {name:"Billy Crystal"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Harry Burns"]}}, {start: {name:"Meg Ryan"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Sally Albright"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Carrie Fisher"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Marie"]}}, {start: {name:"Bruno Kirby"}, end: {title:"When Harry Met Sally"}, properties:{roles:["Jess"]}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{roles:["Mr. White"]}}, {start: {name:"Liv Tyler"}, end: {title:"That Thing You Do"}, properties:{roles:["Faye Dolan"]}}, {start: {name:"Charlize Theron"}, end: {title:"That Thing You Do"}, properties:{roles:["Tina"]}}, {start: {name:"Keanu Reeves"}, end: {title:"The Replacements"}, properties:{roles:["Shane Falco"]}}, {start: {name:"Brooke Langton"}, end: {title:"The Replacements"}, properties:{roles:["Annabelle Farrell"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Replacements"}, properties:{roles:["Jimmy McGinty"]}}, {start: {name:"Orlando Jones"}, end: {title:"The Replacements"}, properties:{roles:["Clifford Franklin"]}}, {start: {name:"Marshall Bell"}, end: {title:"RescueDawn"}, properties:{roles:["Admiral"]}}, {start: {name:"Christian Bale"}, end: {title:"RescueDawn"}, properties:{roles:["Dieter Dengler"]}}, {start: {name:"Zach Grenier"}, end: {title:"RescueDawn"}, properties:{roles:["Squad Leader"]}}, {start: {name:"Steve Zahn"}, end: {title:"RescueDawn"}, properties:{roles:["Duane"]}}, {start: {name:"Robin Williams"}, end: {title:"The Birdcage"}, properties:{roles:["Armand Goldman"]}}, {start: {name:"Nathan Lane"}, end: {title:"The Birdcage"}, properties:{roles:["Albert Goldman"]}}, {start: {name:"Gene Hackman"}, end: {title:"The Birdcage"}, properties:{roles:["Sen. Kevin Keeley"]}}, {start: {name:"Richard Harris"}, end: {title:"Unforgiven"}, properties:{roles:["English Bob"]}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{roles:["Bill Munny"]}}, {start: {name:"Gene Hackman"}, end: {title:"Unforgiven"}, properties:{roles:["Little Bill Daggett"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Johnny Mnemonic"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Takeshi Kitano"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Takahashi"]}}, {start: {name:"Dina Meyer"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["Jane"]}}, {start: {name:"Ice-T"}, end: {title:"Johnny Mnemonic"}, properties:{roles:["J-Bone"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cloud Atlas"}, properties:{roles:["Zachry", "Dr. Henry Goose", "Isaac Sachs", "Dermot Hoggins"]}}, {start: {name:"Hugo Weaving"}, end: {title:"Cloud Atlas"}, properties:{roles:["Bill Smoke", "Haskell Moore", "Tadeusz Kesselring", "Nurse Noakes", "Boardman Mephi", "Old Georgie"]}}, {start: {name:"Halle Berry"}, end: {title:"Cloud Atlas"}, properties:{roles:["Luisa Rey", "Jocasta Ayrs", "Ovid", "Meronym"]}}, {start: {name:"Jim Broadbent"}, end: {title:"Cloud Atlas"}, properties:{roles:["Vyvyan Ayrs", "Captain Molyneux", "Timothy Cavendish"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Dr. Robert Langdon"]}}, {start: {name:"Ian McKellen"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sir Leight Teabing"]}}, {start: {name:"Audrey Tautou"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Sophie Neveu"]}}, {start: {name:"Paul Bettany"}, end: {title:"The Da Vinci Code"}, properties:{roles:["Silas"]}}, {start: {name:"Hugo Weaving"}, end: {title:"V for Vendetta"}, properties:{roles:["V"]}}, {start: {name:"Natalie Portman"}, end: {title:"V for Vendetta"}, properties:{roles:["Evey Hammond"]}}, {start: {name:"Stephen Rea"}, end: {title:"V for Vendetta"}, properties:{roles:["Eric Finch"]}}, {start: {name:"John Hurt"}, end: {title:"V for Vendetta"}, properties:{roles:["High Chancellor Adam Sutler"]}}, {start: {name:"Ben Miles"}, end: {title:"V for Vendetta"}, properties:{roles:["Dascomb"]}}, {start: {name:"Emile Hirsch"}, end: {title:"Speed Racer"}, properties:{roles:["Speed Racer"]}}, {start: {name:"John Goodman"}, end: {title:"Speed Racer"}, properties:{roles:["Pops"]}}, {start: {name:"Susan Sarandon"}, end: {title:"Speed Racer"}, properties:{roles:["Mom"]}}, {start: {name:"Matthew Fox"}, end: {title:"Speed Racer"}, properties:{roles:["Racer X"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Christina Ricci"}, end: {title:"Speed Racer"}, properties:{roles:["Trixie"]}}, {start: {name:"Rain"}, end: {title:"Speed Racer"}, properties:{roles:["Taejo Togokahn"]}}, {start: {name:"Ben Miles"}, end: {title:"Speed Racer"}, properties:{roles:["Cass Jones"]}}, {start: {name:"Rain"}, end: {title:"Ninja Assassin"}, properties:{roles:["Raizo"]}}, {start: {name:"Naomie Harris"}, end: {title:"Ninja Assassin"}, properties:{roles:["Mika Coretti"]}}, {start: {name:"Rick Yune"}, end: {title:"Ninja Assassin"}, properties:{roles:["Takeshi"]}}, {start: {name:"Ben Miles"}, end: {title:"Ninja Assassin"}, properties:{roles:["Ryan Maslow"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Green Mile"}, properties:{roles:["Paul Edgecomb"]}}, {start: {name:"Michael Clarke Duncan"}, end: {title:"The Green Mile"}, properties:{roles:["John Coffey"]}}, {start: {name:"David Morse"}, end: {title:"The Green Mile"}, properties:{roles:["Brutus \"Brutal\" Howell"]}}, {start: {name:"Bonnie Hunt"}, end: {title:"The Green Mile"}, properties:{roles:["Jan Edgecomb"]}}, {start: {name:"James Cromwell"}, end: {title:"The Green Mile"}, properties:{roles:["Warden Hal Moores"]}}, {start: {name:"Sam Rockwell"}, end: {title:"The Green Mile"}, properties:{roles:["\"Wild Bill\" Wharton"]}}, {start: {name:"Gary Sinise"}, end: {title:"The Green Mile"}, properties:{roles:["Burt Hammersmith"]}}, {start: {name:"Patricia Clarkson"}, end: {title:"The Green Mile"}, properties:{roles:["Melinda Moores"]}}, {start: {name:"Frank Langella"}, end: {title:"Frost/Nixon"}, properties:{roles:["Richard Nixon"]}}, {start: {name:"Michael Sheen"}, end: {title:"Frost/Nixon"}, properties:{roles:["David Frost"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Frost/Nixon"}, properties:{roles:["Jack Brennan"]}}, {start: {name:"Oliver Platt"}, end: {title:"Frost/Nixon"}, properties:{roles:["Bob Zelnick"]}}, {start: {name:"Sam Rockwell"}, end: {title:"Frost/Nixon"}, properties:{roles:["James Reston, Jr."]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jack Nicholson"}, end: {title:"Hoffa"}, properties:{roles:["Hoffa"]}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{roles:["Robert \"Bobby\" Ciaro"]}}, {start: {name:"J.T. Walsh"}, end: {title:"Hoffa"}, properties:{roles:["Frank Fitzsimmons"]}}, {start: {name:"John C. Reilly"}, end: {title:"Hoffa"}, properties:{roles:["Peter \"Pete\" Connelly"]}}, {start: {name:"Tom Hanks"}, end: {title:"Apollo 13"}, properties:{roles:["Jim Lovell"]}}, {start: {name:"Kevin Bacon"}, end: {title:"Apollo 13"}, properties:{roles:["Jack Swigert"]}}, {start: {name:"Ed Harris"}, end: {title:"Apollo 13"}, properties:{roles:["Gene Kranz"]}}, {start: {name:"Bill Paxton"}, end: {title:"Apollo 13"}, properties:{roles:["Fred Haise"]}}, {start: {name:"Gary Sinise"}, end: {title:"Apollo 13"}, properties:{roles:["Ken Mattingly"]}}, {start: {name:"Bill Paxton"}, end: {title:"Twister"}, properties:{roles:["Bill Harding"]}}, {start: {name:"Helen Hunt"}, end: {title:"Twister"}, properties:{roles:["Dr. Jo Harding"]}}, {start: {name:"Zach Grenier"}, end: {title:"Twister"}, properties:{roles:["Eddie"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Twister"}, properties:{roles:["Dustin \"Dusty\" Davis"]}}, {start: {name:"Tom Hanks"}, end: {title:"Cast Away"}, properties:{roles:["Chuck Noland"]}}, {start: {name:"Helen Hunt"}, end: {title:"Cast Away"}, properties:{roles:["Kelly Frears"]}}, {start: {name:"Jack Nicholson"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Randle McMurphy"]}}, {start: {name:"Danny DeVito"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{roles:["Martini"]}}, {start: {name:"Jack Nicholson"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Harry Sanborn"]}}, {start: {name:"Diane Keaton"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Erica Barry"]}}, {start: {name:"Keanu Reeves"}, end: {title:"Something's Gotta Give"}, properties:{roles:["Julian Mercer"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Robin Williams"}, end: {title:"Bicentennial Man"}, properties:{roles:["Andrew Marin"]}}, {start: {name:"Oliver Platt"}, end: {title:"Bicentennial Man"}, properties:{roles:["Rupert Burns"]}}, {start: {name:"Tom Hanks"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Rep. Charlie Wilson"]}}, {start: {name:"Julia Roberts"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Joanne Herring"]}}, {start: {name:"Philip Seymour Hoffman"}, end: {title:"Charlie Wilson's War"}, properties:{roles:["Gust Avrakotos"]}}, {start: {name:"Tom Hanks"}, end: {title:"The Polar Express"}, properties:{roles:["Hero Boy", "Father", "Conductor", "Hobo", "Scrooge", "Santa Claus"]}}, {start: {name:"Tom Hanks"}, end: {title:"A League of Their Own"}, properties:{roles:["Jimmy Dugan"]}}, {start: {name:"Geena Davis"}, end: {title:"A League of Their Own"}, properties:{roles:["Dottie Hinson"]}}, {start: {name:"Lori Petty"}, end: {title:"A League of Their Own"}, properties:{roles:["Kit Keller"]}}, {start: {name:"Rosie O'Donnell"}, end: {title:"A League of Their Own"}, properties:{roles:["Doris Murphy"]}}, {start: {name:"Madonna"}, end: {title:"A League of Their Own"}, properties:{roles:["\"All the Way\" Mae Mordabito"]}}, {start: {name:"Bill Paxton"}, end: {title:"A League of Their Own"}, properties:{roles:["Bob Hinson"]}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:ACTED_IN]->(end) SET r += row.properties; +UNWIND [{start: {name:"Jessica Thompson"}, end: {title:"Cloud Atlas"}, properties:{summary:"An amazing journey", rating:95}}, {start: {name:"Jessica Thompson"}, end: {title:"The Replacements"}, properties:{summary:"Silly, but fun", rating:65}}, {start: {name:"James Thompson"}, end: {title:"The Replacements"}, properties:{summary:"The coolest football movie ever", rating:100}}, {start: {name:"Angela Scope"}, end: {title:"The Replacements"}, properties:{summary:"Pretty funny at times", rating:62}}, {start: {name:"Jessica Thompson"}, end: {title:"Unforgiven"}, properties:{summary:"Dark, but compelling", rating:85}}, {start: {name:"Jessica Thompson"}, end: {title:"The Birdcage"}, properties:{summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}}, {start: {name:"Jessica Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"A solid romp", rating:68}}, {start: {name:"James Thompson"}, end: {title:"The Da Vinci Code"}, properties:{summary:"Fun, but a little far fetched", rating:65}}, {start: {name:"Jessica Thompson"}, end: {title:"Jerry Maguire"}, properties:{summary:"You had me at Jerry", rating:92}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:REVIEWED]->(end) SET r += row.properties; +UNWIND [{start: {name:"James Thompson"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Angela Scope"}, end: {name:"Jessica Thompson"}, properties:{}}, {start: {name:"Paul Blythe"}, end: {name:"Angela Scope"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Person{name: row.end.name}) +CREATE (start)-[r:FOLLOWS]->(end) SET r += row.properties; +UNWIND [{start: {name:"Lilly Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Reloaded"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"The Matrix Revolutions"}, properties:{}}, {start: {name:"Taylor Hackford"}, end: {title:"The Devil's Advocate"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"A Few Good Men"}, properties:{}}, {start: {name:"Tony Scott"}, end: {title:"Top Gun"}, properties:{}}, {start: {name:"Cameron Crowe"}, end: {title:"Jerry Maguire"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"Stand By Me"}, properties:{}}, {start: {name:"James L. Brooks"}, end: {title:"As Good as It Gets"}, properties:{}}, {start: {name:"Vincent Ward"}, end: {title:"What Dreams May Come"}, properties:{}}, {start: {name:"Scott Hicks"}, end: {title:"Snow Falling on Cedars"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"You've Got Mail"}, properties:{}}, {start: {name:"Nora Ephron"}, end: {title:"Sleepless in Seattle"}, properties:{}}, {start: {name:"John Patrick Stanley"}, end: {title:"Joe Versus the Volcano"}, properties:{}}, {start: {name:"Rob Reiner"}, end: {title:"When Harry Met Sally"}, properties:{}}, {start: {name:"Tom Hanks"}, end: {title:"That Thing You Do"}, properties:{}}, {start: {name:"Howard Deutch"}, end: {title:"The Replacements"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Werner Herzog"}, end: {title:"RescueDawn"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"The Birdcage"}, properties:{}}, {start: {name:"Clint Eastwood"}, end: {title:"Unforgiven"}, properties:{}}, {start: {name:"Robert Longo"}, end: {title:"Johnny Mnemonic"}, properties:{}}, {start: {name:"Tom Tykwer"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Cloud Atlas"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"The Da Vinci Code"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"V for Vendetta"}, properties:{}}, {start: {name:"Lilly Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"Lana Wachowski"}, end: {title:"Speed Racer"}, properties:{}}, {start: {name:"James Marshall"}, end: {title:"Ninja Assassin"}, properties:{}}, {start: {name:"Frank Darabont"}, end: {title:"The Green Mile"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Frost/Nixon"}, properties:{}}, {start: {name:"Danny DeVito"}, end: {title:"Hoffa"}, properties:{}}, {start: {name:"Ron Howard"}, end: {title:"Apollo 13"}, properties:{}}, {start: {name:"Jan de Bont"}, end: {title:"Twister"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"Cast Away"}, properties:{}}, {start: {name:"Milos Forman"}, end: {title:"One Flew Over the Cuckoo's Nest"}, properties:{}}, {start: {name:"Nancy Meyers"}, end: {title:"Something's Gotta Give"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {name:"Chris Columbus"}, end: {title:"Bicentennial Man"}, properties:{}}, {start: {name:"Mike Nichols"}, end: {title:"Charlie Wilson's War"}, properties:{}}, {start: {name:"Robert Zemeckis"}, end: {title:"The Polar Express"}, properties:{}}, {start: {name:"Penny Marshall"}, end: {title:"A League of Their Own"}, properties:{}}] AS row +MATCH (start:Person{name: row.start.name}) +MATCH (end:Movie{title: row.end.title}) +CREATE (start)-[r:DIRECTED]->(end) SET r += row.properties; +UNWIND [{start: {_id:176}, end: {_id:175}, properties:{}}, {start: {_id:174}, end: {_id:177}, properties:{}}, {start: {_id:179}, end: {_id:178}, properties:{}}, {start: {_id:180}, end: {_id:177}, properties:{}}, {start: {_id:174}, end: {_id:180}, properties:{}}] AS row +MATCH (start:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.start._id}) +MATCH (end:`UNIQUE IMPORT LABEL`{`UNIQUE IMPORT ID`: row.end._id}) +CREATE (start)-[r:HAS_SAME_CREATOR]->(end) SET r += row.properties; +:commit +:begin +MATCH (n:`UNIQUE IMPORT LABEL`) WITH n LIMIT 20000 REMOVE n:`UNIQUE IMPORT LABEL` REMOVE n.`UNIQUE IMPORT ID`; +:commit +:begin +DROP CONSTRAINT ON (node:`UNIQUE IMPORT LABEL`) ASSERT (node.`UNIQUE IMPORT ID`) IS UNIQUE; +:commit \ No newline at end of file diff --git a/neo4j/scripts/reset_db.sh b/neo4j/scripts/reset_db.sh new file mode 100755 index 0000000000000000000000000000000000000000..638927e765ffc023270d4488ee8fe2ec3d98e91e --- /dev/null +++ b/neo4j/scripts/reset_db.sh @@ -0,0 +1 @@ +docker exec -it neo4j cypher-shell -u neo4j -p test --non-interactive -f import/reset.cypher \ No newline at end of file diff --git a/neo4j/tempconf/apoc.conf b/neo4j/tempconf/apoc.conf new file mode 100755 index 0000000000000000000000000000000000000000..4ff0e60503dde6e964ea4632d013211473546405 --- /dev/null +++ b/neo4j/tempconf/apoc.conf @@ -0,0 +1,2 @@ +apoc.import.file.enabled=true +apoc.import.file.use_neo4j_config=true \ No newline at end of file diff --git a/redis-test/Dockerfile b/redis-test/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..9f99845f56a5d5262ae6b5e8e2bd001515e28eb6 --- /dev/null +++ b/redis-test/Dockerfile @@ -0,0 +1,5 @@ +FROM python:3.10-slim +COPY client_example.py ./client.py +COPY requirements.txt ./requirements.txt +RUN pip3 install -r requirements.txt +CMD [ "python", "./client.py"] \ No newline at end of file diff --git a/redis-test/client_example.py b/redis-test/client_example.py new file mode 100644 index 0000000000000000000000000000000000000000..82818051f641fadcacf7a99a03850a034f55cc47 --- /dev/null +++ b/redis-test/client_example.py @@ -0,0 +1,6 @@ +import redis + +r = redis.Redis(host='redis-test', port=6379, db=0) +r.set('foo', 'bar') +result = r.get('foo') +print(result) \ No newline at end of file diff --git a/redis-test/requirements.txt b/redis-test/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..88e78291e5f7f869a5497bc178db7e2cd476904f --- /dev/null +++ b/redis-test/requirements.txt @@ -0,0 +1 @@ +redis==4.3.4 \ No newline at end of file diff --git a/sg-backend/.dockerignore b/sg-backend/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..eba74f4cd2e2acfb1470300d69b58d8cff458c68 --- /dev/null +++ b/sg-backend/.dockerignore @@ -0,0 +1 @@ +venv/ \ No newline at end of file diff --git a/sg-backend/.gitignore b/sg-backend/.gitignore index 7eadfc2e0d6d84ab33f21560c7a679482c5f6d07..c8cf1b4303136ebcf07ce04dda4b39280b4c26fe 100644 --- a/sg-backend/.gitignore +++ b/sg-backend/.gitignore @@ -1 +1,2 @@ -__pycache \ No newline at end of file +__pycache +.idea/ \ No newline at end of file diff --git a/sg-backend/Dockerfile b/sg-backend/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..864704edf06108efae6e23eaa9af5600964c3f9b --- /dev/null +++ b/sg-backend/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3.10-slim +WORKDIR /code +ENV POETRY_VERSION=1.2.2 + +RUN pip install "poetry==$POETRY_VERSION" + +COPY poetry.lock pyproject.toml /code/ + +#RUN pip3 install -r requirements.txt + +RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi +COPY . /code + +EXPOSE 8000 + +ENV WAIT_VERSION 2.7.2 +ADD https://github.com/ufoscout/docker-compose-wait/releases/download/$WAIT_VERSION/wait /wait +RUN chmod +x /wait \ No newline at end of file diff --git a/sg-backend/cache.py b/sg-backend/cache.py new file mode 100644 index 0000000000000000000000000000000000000000..95a0cf009771b2c0a7dd532dbf422c944e428688 --- /dev/null +++ b/sg-backend/cache.py @@ -0,0 +1,15 @@ +from fastapi_cache import FastAPICache +from fastapi_cache.backends.redis import RedisBackend + +from redis import asyncio as aioredis + + +class RedisCache: + def __init__(self): + redis = aioredis.from_url("redis://redis", encoding="utf8", decode_responses=True) + FastAPICache.init(RedisBackend(redis), prefix="fastapi-cache") + + @staticmethod + async def clear_softwares_cache(): + await FastAPICache.clear(key="software") + await FastAPICache.clear(key="software-graph") \ No newline at end of file diff --git a/sg-backend/db.py b/sg-backend/db.py index 7fd09f9c8e96078d1214422c597b3ce95622d2bd..76eff2bbae4118b24015f5b38ef6e416f101c396 100644 --- a/sg-backend/db.py +++ b/sg-backend/db.py @@ -50,4 +50,38 @@ class Neo4j: return [node for node in data[0]['p'] if type(node) is dict] # [node._properties.get('name') for node in results.graph().nodes] else: - return [] \ No newline at end of file + return [] + + def get_relations(self): + with self.driver.session() as session: + results = session.run("MATCH p = (a)-[r]->(b) RETURN a.name as source,b.name as target, r as relation_type") + return results.data() + + def get_nodes(self): + with self.driver.session() as session: + results = session.run("MATCH (a:Software) return Id(a) as key, a.name as name") + return results.data() + + def insert_software(self, insert_data): + with self.driver.session() as session: + # On check si le logiciel n'existe pas déjà + results = session.run("match (a:Software) where a.name = '%s' return a" % insert_data.newNodeName) + if results.data(): + return {"Error": "%s already exist" % insert_data.newNodeName} + + session.run("CREATE (n:Software {name: '%s'})" % insert_data.newNodeName) + return results.data() + + def relation_insert(self, insert_data): + with self.driver.session() as session: + # On check si la node avec laquelle on se relie existe + results = session.run("match (a:Software) where (a.name = '%s' OR a.name = '%s') return a" + % (insert_data.software1, insert_data.software2)) + + if len(results.data()) != 2: + return {"Error": "%s/%s NOT FOUND" % (insert_data.software1, insert_data.software2)} + + results = session.run( + "MATCH (a:Software), (b:Software) WHERE a.name = '%s' AND b.name = '%s' CREATE (a)-[r:%s]->(b) " + "RETURN type(r)" % (insert_data.software1, insert_data.software2, insert_data.relationType)) + return results.data() diff --git a/sg-backend/export_poetry_requirements.sh b/sg-backend/export_poetry_requirements.sh new file mode 100755 index 0000000000000000000000000000000000000000..3d9ffc248c8cde04b5a8c256025c2694736f9321 --- /dev/null +++ b/sg-backend/export_poetry_requirements.sh @@ -0,0 +1 @@ +poetry export -f requirements.txt --output requirements.txt \ No newline at end of file diff --git a/sg-backend/main.py b/sg-backend/main.py index 0964d406fecd6e0643456bfbea81307d5bc8947f..006d15eb447edc226e057c9f745f9fe42a9b43db 100644 --- a/sg-backend/main.py +++ b/sg-backend/main.py @@ -1,10 +1,13 @@ import json import os +import random from fastapi import FastAPI +from fastapi_cache.decorator import cache from pydantic import BaseModel from starlette.middleware.cors import CORSMiddleware +from cache import RedisCache from db import Neo4j @@ -13,11 +16,24 @@ class SoftwareSearch(BaseModel): software2: str +class SoftwareInsert(BaseModel): + newNodeName: str + + +class RelationInsert(BaseModel): + software1: str + software2: str + relationType: str + + driver = Neo4j(os.environ.get("NEO4J_URI"), os.environ.get("NEO4J_USER"), os.environ.get("NEO4J_PASSWORD")) app = FastAPI() origins = [ os.getenv("FRONTEND_URL"), + "http://localhost", + "http://localhost:4173", + "http://localhost:5173", ] app.add_middleware( @@ -29,30 +45,79 @@ app.add_middleware( ) -@app.get("/") -async def root(): - return {"message": "Hello World"} - - -@app.get("/hello/{name}") -async def say_hello(name: str): - return {"message": f"Hello {name}"} - - -@app.get("/graph") -async def graph(): - results = driver.get_graph_data() - return json.loads(results[0]['data']) - - @app.get("/software") +@cache(expire=60, key_builder=lambda *args, **kwargs: "software") async def software(): results = driver.get_softwares() return {"softwares": json.loads(json.dumps(results))} +@app.get("/software-graph") +@cache(expire=60, key_builder=lambda *args, **kwargs: "software-graph") +async def software(): + nodes = driver.get_nodes() + jnodes = json.loads(json.dumps(nodes)) + relations = driver.get_relations() + jrelations = json.loads(json.dumps(relations)) + + jsondata = {"nodes": jnodes, "edges": jrelations} + + def findNodeIdWithName(nodes, name): + for node in nodes: + if node["name"] == name: + return node["key"] + return 0 + + for idx, relation in enumerate(jsondata["edges"]): + relation['key'] = str(idx) + relation['attributes'] = {} + relation['label'] = relation['relation_type'][1] + relation['source'] = findNodeIdWithName(jsondata["nodes"], relation["source"]) + relation['target'] = findNodeIdWithName(jsondata["nodes"], relation["target"]) + del relation['relation_type'] + + for node in jsondata["nodes"]: + node['attributes'] = {} + node['attributes']['label'] = node['name'] + node['attributes']['x'] = random.random() + node['attributes']['y'] = random.random() + node['attributes']['size'] = 22 + del node['name'] + + return jsondata + + @app.post("/software-search") async def software_search(search: SoftwareSearch): print(search.software1, search.software2) res = driver.get_softwares_shortest_path(search) - return {"softwares": res} \ No newline at end of file + return {"softwares": res} + + +@app.post("/software-insert") +async def software_insert(insert_data: SoftwareInsert): + res = driver.insert_software(insert_data) + await RedisCache.clear_softwares_cache() + return res + + +@app.post("/relation-insert") +async def software_insert(insert_data: RelationInsert): + res = driver.relation_insert(insert_data) + await RedisCache.clear_softwares_cache() + return res + + +@app.get("/") +async def root(): + return {"message": "Hello World"} + + +@app.on_event("startup") +async def startup(): + RedisCache() + +# @app.get("/graph") +# async def graph(): +# results = driver.get_graph_data() +# return json.loads(results[0]['data']) \ No newline at end of file diff --git a/sg-backend/poetry.lock b/sg-backend/poetry.lock index 85f00f4412394e4603a2f3a828e2e73b85718b59..ee53219b99dd03b4dfbed1b7d1291443bdc7a0e3 100644 --- a/sg-backend/poetry.lock +++ b/sg-backend/poetry.lock @@ -1,6 +1,6 @@ [[package]] name = "anyio" -version = "3.6.1" +version = "3.6.2" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "main" optional = false @@ -13,7 +13,15 @@ sniffio = ">=1.1" [package.extras] doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] -trio = ["trio (>=0.16)"] +trio = ["trio (>=0.16,<0.22)"] + +[[package]] +name = "async-timeout" +version = "4.0.2" +description = "Timeout context manager for asyncio programs" +category = "main" +optional = false +python-versions = ">=3.6" [[package]] name = "click" @@ -28,15 +36,15 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.6" description = "Cross-platform colored terminal text." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" [[package]] name = "fastapi" -version = "0.85.0" +version = "0.85.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" category = "main" optional = false @@ -49,16 +57,36 @@ starlette = "0.20.4" [package.extras] all = ["email-validator (>=1.1.1,<2.0.0)", "itsdangerous (>=1.1.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "orjson (>=3.2.1,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "pyyaml (>=5.3.1,<7.0.0)", "requests (>=2.24.0,<3.0.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)", "uvicorn[standard] (>=0.12.0,<0.19.0)"] dev = ["autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<6.0.0)", "pre-commit (>=2.17.0,<3.0.0)", "uvicorn[standard] (>=0.12.0,<0.19.0)"] -doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "typer (>=0.4.1,<0.7.0)"] -test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==22.8.0)", "databases[sqlite] (>=0.3.2,<0.7.0)", "email-validator (>=1.1.1,<2.0.0)", "flake8 (>=3.8.3,<6.0.0)", "flask (>=1.1.2,<3.0.0)", "httpx (>=0.23.0,<0.24.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.971)", "orjson (>=3.2.1,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "peewee (>=3.13.3,<4.0.0)", "pytest (>=7.1.3,<8.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "python-jose[cryptography] (>=3.3.0,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "pyyaml (>=5.3.1,<7.0.0)", "requests (>=2.24.0,<3.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "types-orjson (==3.6.2)", "types-ujson (==5.4.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)"] +doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pyyaml (>=5.3.1,<7.0.0)", "typer[all] (>=0.6.1,<0.7.0)"] +test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==22.8.0)", "databases[sqlite] (>=0.3.2,<0.7.0)", "email-validator (>=1.1.1,<2.0.0)", "flake8 (>=3.8.3,<6.0.0)", "flask (>=1.1.2,<3.0.0)", "httpx (>=0.23.0,<0.24.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.982)", "orjson (>=3.2.1,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "peewee (>=3.13.3,<4.0.0)", "pytest (>=7.1.3,<8.0.0)", "pytest-cov (>=2.12.0,<5.0.0)", "python-jose[cryptography] (>=3.3.0,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "pyyaml (>=5.3.1,<7.0.0)", "requests (>=2.24.0,<3.0.0)", "sqlalchemy (>=1.3.18,<=1.4.41)", "types-orjson (==3.6.2)", "types-ujson (==5.5.0)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0)"] + +[[package]] +name = "fastapi-cache2" +version = "0.1.9" +description = "Cache for FastAPI" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +fastapi = "*" +pendulum = "*" +redis = {version = ">=4.2.0rc1,<5.0.0", optional = true, markers = "extra == \"redis\" or extra == \"all\""} +uvicorn = "*" + +[package.extras] +all = ["aiobotocore (>=1.4.1,<2.0.0)", "aiomcache", "redis (>=4.2.0rc1,<5.0.0)"] +dynamodb = ["aiobotocore (>=1.4.1,<2.0.0)"] +memcache = ["aiomcache"] +redis = ["redis (>=4.2.0rc1,<5.0.0)"] [[package]] name = "h11" -version = "0.13.0" +version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "idna" @@ -70,7 +98,7 @@ python-versions = ">=3.5" [[package]] name = "neo4j" -version = "5.0.1" +version = "5.2.1" description = "Neo4j Bolt driver for Python" category = "main" optional = false @@ -79,6 +107,21 @@ python-versions = ">=3.7" [package.dependencies] pytz = "*" +[package.extras] +pandas = ["pandas (>=1.0.0)"] + +[[package]] +name = "pendulum" +version = "2.1.2" +description = "Python datetimes made easy" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +python-dateutil = ">=2.6,<3.0" +pytzdata = ">=2020.1" + [[package]] name = "pydantic" version = "1.10.2" @@ -94,14 +137,56 @@ typing-extensions = ">=4.1.0" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + [[package]] name = "pytz" -version = "2022.2.1" +version = "2022.6" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" +[[package]] +name = "pytzdata" +version = "2020.1" +description = "The Olson timezone database for Python." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "redis" +version = "4.4.0rc4" +description = "Python client for Redis database and key-value store" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +async-timeout = ">=4.0.2" + +[package.extras] +hiredis = ["hiredis (>=1.0.0)"] +ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + [[package]] name = "sniffio" version = "1.3.0" @@ -126,7 +211,7 @@ full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] [[package]] name = "typing-extensions" -version = "4.3.0" +version = "4.4.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false @@ -150,35 +235,66 @@ standard = ["colorama (>=0.4)", "httptools (>=0.4.0)", "python-dotenv (>=0.13)", [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "92d7313563fc036bb36381d94d139862865b3a018e3849a340b8bc16513df739" +content-hash = "f15fbf471411ab63fc5fb485e394962433498aa9d266752113e6c296bcb9210e" [metadata.files] anyio = [ - {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, - {file = "anyio-3.6.1.tar.gz", hash = "sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b"}, + {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"}, + {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"}, +] +async-timeout = [ + {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, + {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] colorama = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] fastapi = [ - {file = "fastapi-0.85.0-py3-none-any.whl", hash = "sha256:1803d962f169dc9f8dde54a64b22eb16f6d81573f54401971f90f0a67234a8b4"}, - {file = "fastapi-0.85.0.tar.gz", hash = "sha256:bb219cfafd0d2ccf8f32310c9a257a06b0210bd8e2a03706a6f5a9f9f1416878"}, + {file = "fastapi-0.85.2-py3-none-any.whl", hash = "sha256:6292db0edd4a11f0d938d6033ccec5f706e9d476958bf33b119e8ddb4e524bde"}, + {file = "fastapi-0.85.2.tar.gz", hash = "sha256:3e10ea0992c700e0b17b6de8c2092d7b9cd763ce92c49ee8d4be10fee3b2f367"}, +] +fastapi-cache2 = [ + {file = "fastapi-cache2-0.1.9.tar.gz", hash = "sha256:816612f7b29b4ea4ed3b4e03c55b7f96b4e4d6dffce6a95e2cf5cf36a980eaaa"}, + {file = "fastapi_cache2-0.1.9-py3-none-any.whl", hash = "sha256:5b6f32bc8e786d9fffe4f3ef343861cab276acc64fb5d8d09077524743ad3702"}, ] h11 = [ - {file = "h11-0.13.0-py3-none-any.whl", hash = "sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442"}, - {file = "h11-0.13.0.tar.gz", hash = "sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"}, + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, ] idna = [ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] neo4j = [ - {file = "neo4j-5.0.1.tar.gz", hash = "sha256:2330d1b8295b6afb39f23a001f5b0aecae6ca5895cc5b7af3413e326bbd1979c"}, + {file = "neo4j-5.2.1.tar.gz", hash = "sha256:6f9941a45624cd81629ef88abd84b15648be1487f7168c2c7774a664ef4cbb1f"}, +] +pendulum = [ + {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, + {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, + {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, + {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, + {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, + {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, + {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, + {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, + {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, + {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, + {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, + {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, + {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, + {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, + {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, + {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, + {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, + {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, + {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, + {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, + {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, ] pydantic = [ {file = "pydantic-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd"}, @@ -218,9 +334,25 @@ pydantic = [ {file = "pydantic-1.10.2-py3-none-any.whl", hash = "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709"}, {file = "pydantic-1.10.2.tar.gz", hash = "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410"}, ] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] pytz = [ - {file = "pytz-2022.2.1-py2.py3-none-any.whl", hash = "sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197"}, - {file = "pytz-2022.2.1.tar.gz", hash = "sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5"}, + {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, + {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, +] +pytzdata = [ + {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, + {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, +] +redis = [ + {file = "redis-4.4.0rc4-py3-none-any.whl", hash = "sha256:7136c511137681002bde316341eeac565eaff966544fefc7729462c2d1c87c67"}, + {file = "redis-4.4.0rc4.tar.gz", hash = "sha256:c8654c5ab28ec0a1876c588cdac2ad4a3dd71919ee21df5fe77dfe846716247f"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] sniffio = [ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, @@ -231,8 +363,8 @@ starlette = [ {file = "starlette-0.20.4.tar.gz", hash = "sha256:42fcf3122f998fefce3e2c5ad7e5edbf0f02cf685d646a83a08d404726af5084"}, ] typing-extensions = [ - {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, - {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] uvicorn = [ {file = "uvicorn-0.18.3-py3-none-any.whl", hash = "sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af"}, diff --git a/sg-backend/pyproject.toml b/sg-backend/pyproject.toml index b387455006abe661b14c57c9d8de62297cb55c8f..d81b6c1eecc163da07418df411994bd34f48babc 100644 --- a/sg-backend/pyproject.toml +++ b/sg-backend/pyproject.toml @@ -11,6 +11,7 @@ python = "^3.10" fastapi = "^0.85.0" uvicorn = "^0.18.3" neo4j = "^5.0.1" +fastapi-cache2 = {extras = ["redis"], version = "^0.1.9"} [build-system] diff --git a/sg-backend/requirements.txt b/sg-backend/requirements.txt index ad7fa545ccf438d3ff7926d0de0d5f866e8867bc..60da924e1b56e4ca0df016748e6a3bae9594e0ab 100644 --- a/sg-backend/requirements.txt +++ b/sg-backend/requirements.txt @@ -1,23 +1,51 @@ -anyio==3.6.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:413adf95f93886e442aea925f3ee43baa5a765a64a0f52c6081894f9992fdd0b \ - --hash=sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be +anyio==3.6.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421 \ + --hash=sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3 +async-timeout==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ + --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c click==8.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 -colorama==0.4.5 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ - --hash=sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da \ - --hash=sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4 -fastapi==0.85.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1803d962f169dc9f8dde54a64b22eb16f6d81573f54401971f90f0a67234a8b4 \ - --hash=sha256:bb219cfafd0d2ccf8f32310c9a257a06b0210bd8e2a03706a6f5a9f9f1416878 -h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ - --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 +fastapi-cache2[redis]==0.1.9 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5b6f32bc8e786d9fffe4f3ef343861cab276acc64fb5d8d09077524743ad3702 \ + --hash=sha256:816612f7b29b4ea4ed3b4e03c55b7f96b4e4d6dffce6a95e2cf5cf36a980eaaa +fastapi==0.85.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:3e10ea0992c700e0b17b6de8c2092d7b9cd763ce92c49ee8d4be10fee3b2f367 \ + --hash=sha256:6292db0edd4a11f0d938d6033ccec5f706e9d476958bf33b119e8ddb4e524bde +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ + --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 idna==3.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 -neo4j==5.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2330d1b8295b6afb39f23a001f5b0aecae6ca5895cc5b7af3413e326bbd1979c +neo4j==5.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:6f9941a45624cd81629ef88abd84b15648be1487f7168c2c7774a664ef4cbb1f +pendulum==2.1.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394 \ + --hash=sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b \ + --hash=sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a \ + --hash=sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087 \ + --hash=sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739 \ + --hash=sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269 \ + --hash=sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0 \ + --hash=sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5 \ + --hash=sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be \ + --hash=sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7 \ + --hash=sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3 \ + --hash=sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207 \ + --hash=sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe \ + --hash=sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360 \ + --hash=sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0 \ + --hash=sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b \ + --hash=sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052 \ + --hash=sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002 \ + --hash=sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116 \ + --hash=sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db \ + --hash=sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b pydantic==1.10.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42 \ --hash=sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624 \ @@ -55,18 +83,30 @@ pydantic==1.10.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2 \ --hash=sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d \ --hash=sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236 -pytz==2022.2.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197 \ - --hash=sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5 +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ + --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 +pytz==2022.6 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427 \ + --hash=sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2 +pytzdata==2020.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540 \ + --hash=sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f +redis==4.4.0rc4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:7136c511137681002bde316341eeac565eaff966544fefc7729462c2d1c87c67 \ + --hash=sha256:c8654c5ab28ec0a1876c588cdac2ad4a3dd71919ee21df5fe77dfe846716247f +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ + --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 starlette==0.20.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:42fcf3122f998fefce3e2c5ad7e5edbf0f02cf685d646a83a08d404726af5084 \ --hash=sha256:c0414d5a56297d37f3db96a84034d61ce29889b9eaccf65eb98a0b39441fcaa3 -typing-extensions==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02 \ - --hash=sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6 +typing-extensions==4.4.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ + --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e uvicorn==0.18.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af \ --hash=sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b diff --git a/sg-frontend/.dockerignore b/sg-frontend/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..40b878db5b1c97fc77049537a71bb2e249abe5dc --- /dev/null +++ b/sg-frontend/.dockerignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/sg-frontend/.env b/sg-frontend/.env index 408a3f1b1a7426d3048342786c67d2281993047a..52596f9faf4838b83f2f1af5e881541864232cf7 100644 --- a/sg-frontend/.env +++ b/sg-frontend/.env @@ -1 +1 @@ -VITE_BACKEND_URL= \ No newline at end of file +VITE_BACKEND_URL=http://localhost:8000 \ No newline at end of file diff --git a/sg-frontend/Dockerfile b/sg-frontend/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..2c1b8a3396c1980d081be523150cf2e7927aba62 --- /dev/null +++ b/sg-frontend/Dockerfile @@ -0,0 +1,12 @@ +FROM node:18 +COPY package.json /app/ +WORKDIR /app + +#RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm +RUN npm install + + +ENV VITE_BACKEND_URL=http://sg-backend:8000 +EXPOSE 5173 + +CMD ["npm","run", "dev", "--","--host", "0.0.0.0", "--port", "5173"] \ No newline at end of file diff --git a/sg-frontend/build.Dockerfile b/sg-frontend/build.Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ad10dc9716a70275a45db402fe705686ca03f9f1 --- /dev/null +++ b/sg-frontend/build.Dockerfile @@ -0,0 +1,12 @@ +FROM node:18 +WORKDIR /app +COPY . /app + +#RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm +RUN npm install + +RUN npm run build +ENV VITE_BACKEND_URL=http://sg-backend:8000 +EXPOSE 4173 + +CMD ["npm","run", "preview", "--","--host", "0.0.0.0", "--port", "4173"] \ No newline at end of file diff --git a/sg-frontend/index.html b/sg-frontend/index.html index 87c3be8915161cd7daac3b12f3ee7dcf263ab74e..81e4661d915dd7d1a67214748d6d7fb185d8235e 100644 --- a/sg-frontend/index.html +++ b/sg-frontend/index.html @@ -1,14 +1,45 @@ <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="UTF-8" /> - <link rel="icon" type="image/svg+xml" href="/vite.svg" /> - <link href="/dist/output.css" rel="stylesheet" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>Software Graph</title> - </head> - <body> - <div id="app"></div> - <script type="module" src="/src/main.ts"></script> - </body> +<head> + <meta charset="UTF-8"/> + <link rel="icon" type="image/svg+xml" href="/vite.svg"/> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <title>Software Graph</title> +</head> +<body> + +<div id="app"> + <div class="topnav"> + <a id="home" class="active" href="/">Home</a> + <a id="sigma" href="#/sigma-custom">Software graph</a> + <a id="add" href="#/add-node">Software insert</a> + </div> +</div> +<script type="module" src="/src/main.ts"></script> +</body> + +<style> + .topnav { + overflow: hidden; + background-color: #333; + } + + .topnav a { + float: left; + color: #f2f2f2; + text-align: center; + padding: 14px 16px; + text-decoration: none; + font-size: 17px; + } + + .topnav a:hover { + background-color: #ddd; + color: black; + } + + .topnav a.active { + background-color: #04AA6D; + color: white; + }</style> </html> diff --git a/sg-frontend/package-lock.json b/sg-frontend/package-lock.json index 014410bd5f956a5f525156e7e68962e0174b66b7..54ca3c28a85d4ab28b9f400fe296ef26373e2905 100644 --- a/sg-frontend/package-lock.json +++ b/sg-frontend/package-lock.json @@ -8,27 +8,29 @@ "name": "sg-frontend", "version": "0.0.0", "dependencies": { - "daisyui": "^2.31.0", - "svelte-select": "^4.4.7" + "graphology": "^0.25.1", + "graphology-layout": "^0.6.1", + "graphology-layout-force": "^0.2.4", + "graphology-layout-forceatlas2": "^0.10.1", + "sigma": "^2.4.0", + "svelte-select": "^4.4.7", + "svelte-spa-router": "^3.3.0" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.2", "@tsconfig/svelte": "^3.0.0", - "autoprefixer": "^10.4.12", - "postcss": "^8.4.16", "svelte": "^3.49.0", "svelte-check": "^2.8.1", "svelte-preprocess": "^4.10.7", - "tailwindcss": "^3.1.8", "tslib": "^2.4.0", "typescript": "^4.6.4", "vite": "^3.1.0" } }, "node_modules/@esbuild/android-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", - "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.14.tgz", + "integrity": "sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==", "cpu": [ "arm" ], @@ -42,9 +44,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", - "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.14.tgz", + "integrity": "sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==", "cpu": [ "loong64" ], @@ -73,19 +75,20 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -98,6 +101,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "engines": { "node": ">= 8" } @@ -106,6 +110,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -114,31 +119,18 @@ "node": ">= 8" } }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.8.tgz", - "integrity": "sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.2.0.tgz", + "integrity": "sha512-DT2oUkWAloH1tO7X5cQ4uDxQofaIS76skyFMElKtoqT6HJao+D82LI5i+0jPaSSmO7ex3Pa6jGYMlWy9ZJ1cdQ==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^4.2.1", "debug": "^4.3.4", "deepmerge": "^4.2.2", "kleur": "^4.1.5", - "magic-string": "^0.26.3", - "svelte-hmr": "^0.15.0" + "magic-string": "^0.26.7", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.1" }, "engines": { "node": "^14.18.0 || >= 16" @@ -161,9 +153,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.7.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", - "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==", + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "dev": true }, "node_modules/@types/pug": { @@ -181,39 +173,16 @@ "@types/node": "*" } }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "engines": { - "node": ">=0.4.0" - } + "node_modules/@yomguithereal/helpers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@yomguithereal/helpers/-/helpers-1.1.1.tgz", + "integrity": "sha512-UYvAq/XCA7xoh1juWDYsq3W0WywOB+pz8cgVnE1b45ZfdMhBvHDrgmSFG3jXeZSr2tMTYLGHFHON+ekG05Jebg==" }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -222,43 +191,6 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -269,6 +201,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "engines": { "node": ">=8" } @@ -287,6 +220,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -294,33 +228,6 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -339,33 +246,11 @@ "node": ">=6" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001412", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz", - "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "funding": [ { "type": "individual", @@ -388,84 +273,12 @@ "fsevents": "~2.3.2" } }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/css-selector-tokenizer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", - "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", - "dependencies": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/daisyui": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.31.0.tgz", - "integrity": "sha512-qepRXgQPLNcJ8ZPZy+dUvsC7mRWvMLRcVMe85/wZA60Tnhm/bkidhOzdllL8aAk2JX+W/xlIsTJ8NZFpPm+eyw==", - "dependencies": { - "color": "^4.2", - "css-selector-tokenizer": "^0.8.0", - "postcss-js": "^4.0.0", - "tailwindcss": "^3" - }, - "peerDependencies": { - "autoprefixer": "^10.0.2", - "postcss": "^8.1.6" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -492,11 +305,6 @@ "node": ">=0.10.0" } }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" - }, "node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", @@ -506,37 +314,6 @@ "node": ">=8" } }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.261", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz", - "integrity": "sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==" - }, "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", @@ -544,9 +321,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.14.tgz", + "integrity": "sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==", "dev": true, "hasInstallScript": true, "bin": { @@ -556,34 +333,32 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.9", - "@esbuild/linux-loong64": "0.15.9", - "esbuild-android-64": "0.15.9", - "esbuild-android-arm64": "0.15.9", - "esbuild-darwin-64": "0.15.9", - "esbuild-darwin-arm64": "0.15.9", - "esbuild-freebsd-64": "0.15.9", - "esbuild-freebsd-arm64": "0.15.9", - "esbuild-linux-32": "0.15.9", - "esbuild-linux-64": "0.15.9", - "esbuild-linux-arm": "0.15.9", - "esbuild-linux-arm64": "0.15.9", - "esbuild-linux-mips64le": "0.15.9", - "esbuild-linux-ppc64le": "0.15.9", - "esbuild-linux-riscv64": "0.15.9", - "esbuild-linux-s390x": "0.15.9", - "esbuild-netbsd-64": "0.15.9", - "esbuild-openbsd-64": "0.15.9", - "esbuild-sunos-64": "0.15.9", - "esbuild-windows-32": "0.15.9", - "esbuild-windows-64": "0.15.9", - "esbuild-windows-arm64": "0.15.9" + "@esbuild/android-arm": "0.15.14", + "@esbuild/linux-loong64": "0.15.14", + "esbuild-android-64": "0.15.14", + "esbuild-android-arm64": "0.15.14", + "esbuild-freebsd-64": "0.15.14", + "esbuild-freebsd-arm64": "0.15.14", + "esbuild-linux-32": "0.15.14", + "esbuild-linux-64": "0.15.14", + "esbuild-linux-arm": "0.15.14", + "esbuild-linux-arm64": "0.15.14", + "esbuild-linux-mips64le": "0.15.14", + "esbuild-linux-ppc64le": "0.15.14", + "esbuild-linux-riscv64": "0.15.14", + "esbuild-linux-s390x": "0.15.14", + "esbuild-netbsd-64": "0.15.14", + "esbuild-openbsd-64": "0.15.14", + "esbuild-sunos-64": "0.15.14", + "esbuild-windows-32": "0.15.14", + "esbuild-windows-64": "0.15.14", + "esbuild-windows-arm64": "0.15.14" } }, "node_modules/esbuild-android-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", - "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.14.tgz", + "integrity": "sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==", "cpu": [ "x64" ], @@ -597,9 +372,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", - "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.14.tgz", + "integrity": "sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==", "cpu": [ "arm64" ], @@ -613,9 +388,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.14.tgz", + "integrity": "sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==", "cpu": [ "x64" ], @@ -629,9 +404,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", - "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.14.tgz", + "integrity": "sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==", "cpu": [ "arm64" ], @@ -645,9 +420,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", - "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.14.tgz", + "integrity": "sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==", "cpu": [ "x64" ], @@ -661,9 +436,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", - "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.14.tgz", + "integrity": "sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==", "cpu": [ "arm64" ], @@ -677,9 +452,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", - "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.14.tgz", + "integrity": "sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==", "cpu": [ "ia32" ], @@ -693,9 +468,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", - "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.14.tgz", + "integrity": "sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==", "cpu": [ "x64" ], @@ -709,9 +484,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", - "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.14.tgz", + "integrity": "sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==", "cpu": [ "arm" ], @@ -725,9 +500,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", - "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.14.tgz", + "integrity": "sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==", "cpu": [ "arm64" ], @@ -741,9 +516,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", - "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.14.tgz", + "integrity": "sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==", "cpu": [ "mips64el" ], @@ -757,9 +532,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", - "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.14.tgz", + "integrity": "sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==", "cpu": [ "ppc64" ], @@ -773,9 +548,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", - "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.14.tgz", + "integrity": "sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==", "cpu": [ "riscv64" ], @@ -789,9 +564,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", - "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.14.tgz", + "integrity": "sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==", "cpu": [ "s390x" ], @@ -805,9 +580,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", - "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.14.tgz", + "integrity": "sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==", "cpu": [ "x64" ], @@ -821,9 +596,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", - "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.14.tgz", + "integrity": "sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==", "cpu": [ "x64" ], @@ -837,9 +612,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", - "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.14.tgz", + "integrity": "sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==", "cpu": [ "x64" ], @@ -853,9 +628,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", - "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.14.tgz", + "integrity": "sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==", "cpu": [ "ia32" ], @@ -869,9 +644,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", - "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.14.tgz", + "integrity": "sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==", "cpu": [ "x64" ], @@ -885,9 +660,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", - "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.14.tgz", + "integrity": "sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==", "cpu": [ "arm64" ], @@ -900,24 +675,19 @@ "node": ">=12" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { - "node": ">=6" + "node": ">=0.8.x" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -929,15 +699,11 @@ "node": ">=8.6.0" } }, - "node_modules/fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -946,6 +712,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -953,18 +720,6 @@ "node": ">=8" } }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -975,6 +730,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -987,7 +743,8 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/glob": { "version": "7.2.3", @@ -1013,6 +770,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1026,10 +784,71 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/graphology": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/graphology/-/graphology-0.25.1.tgz", + "integrity": "sha512-yYA7BJCcXN2DrKNQQ9Qf22zBHm/yTbyBR71T1MYBbGtywNHsv0QZtk8zaR6zxNcp2hCCZayUkHp9DyMSZCpoxQ==", + "dependencies": { + "events": "^3.3.0", + "obliterator": "^2.0.2" + }, + "peerDependencies": { + "graphology-types": ">=0.24.0" + } + }, + "node_modules/graphology-layout": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/graphology-layout/-/graphology-layout-0.6.1.tgz", + "integrity": "sha512-m9aMvbd0uDPffUCFPng5ibRkb2pmfNvdKjQWeZrf71RS1aOoat5874+DcyNfMeCT4aQguKC7Lj9eCbqZj/h8Ag==", + "dependencies": { + "graphology-utils": "^2.3.0", + "pandemonium": "^2.4.0" + }, + "peerDependencies": { + "graphology-types": ">=0.19.0" + } + }, + "node_modules/graphology-layout-force": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/graphology-layout-force/-/graphology-layout-force-0.2.4.tgz", + "integrity": "sha512-NYZz0YAnDkn5pkm30cvB0IScFoWGtbzJMrqaiH070dYlYJiag12Oc89dbVfaMaVR/w8DMIKxn/ix9Bqj+Umm9Q==", + "dependencies": { + "graphology-utils": "^2.4.2" + }, + "peerDependencies": { + "graphology-types": ">=0.19.0" + } + }, + "node_modules/graphology-layout-forceatlas2": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/graphology-layout-forceatlas2/-/graphology-layout-forceatlas2-0.10.1.tgz", + "integrity": "sha512-ogzBeF1FvWzjkikrIFwxhlZXvD2+wlY54lqhsrWprcdPjopM2J9HoMweUmIgwaTvY4bUYVimpSsOdvDv1gPRFQ==", + "dependencies": { + "graphology-utils": "^2.1.0" + }, + "peerDependencies": { + "graphology-types": ">=0.19.0" + } + }, + "node_modules/graphology-types": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/graphology-types/-/graphology-types-0.24.5.tgz", + "integrity": "sha512-m8FVoj9b6MwIaTN+/AvoxXhcK5n0uSe7ZnhbQNTcjh94vzN6m5hU501LihtCfRjF35QEMVrXYOrTNO0wAR1Gxw==", + "peer": true + }, + "node_modules/graphology-utils": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/graphology-utils/-/graphology-utils-2.5.2.tgz", + "integrity": "sha512-ckHg8MXrXJkOARk56ZaSCM1g1Wihe2d6iTmz1enGOz4W/l831MBCKSayeFQfowgF8wd+PQ4rlch/56Vs/VZLDQ==", + "peerDependencies": { + "graphology-types": ">=0.23.0" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -1069,15 +888,11 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1086,9 +901,10 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -1100,6 +916,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1108,6 +925,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -1119,6 +937,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -1132,18 +951,10 @@ "node": ">=6" } }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "engines": { - "node": ">=10" - } - }, "node_modules/magic-string": { - "version": "0.26.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.4.tgz", - "integrity": "sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==", + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, "dependencies": { "sourcemap-codec": "^1.4.8" @@ -1156,6 +967,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "engines": { "node": ">= 8" } @@ -1164,6 +976,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -1194,9 +1007,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp": { "version": "0.5.6", @@ -1210,6 +1027,14 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/mnemonist": { + "version": "0.39.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.5.tgz", + "integrity": "sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==", + "dependencies": { + "obliterator": "^2.0.1" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -1229,6 +1054,7 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1236,34 +1062,19 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==" }, "node_modules/once": { "version": "1.4.0", @@ -1274,6 +1085,14 @@ "wrappy": "1" } }, + "node_modules/pandemonium": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/pandemonium/-/pandemonium-2.4.1.tgz", + "integrity": "sha512-wRqjisUyiUfXowgm7MFH2rwJzKIr20rca5FsHXCMNm1W5YPP1hCtrZfgmQ62kP7OZ7Xt+cR858aB28lu5NX55g==", + "dependencies": { + "mnemonist": "^0.39.2" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1298,17 +1117,20 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -1316,18 +1138,11 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1347,107 +1162,11 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dependencies": { - "postcss-selector-parser": "^6.0.6" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -1463,29 +1182,11 @@ } ] }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.0" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -1493,10 +1194,19 @@ "node": ">=8.10.0" } }, + "node_modules/regexparam": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.1.tgz", + "integrity": "sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -1522,6 +1232,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -1540,9 +1251,9 @@ } }, "node_modules/rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -1558,6 +1269,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -1600,12 +1312,14 @@ "rimraf": "^2.5.2" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "node_modules/sigma": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/sigma/-/sigma-2.4.0.tgz", + "integrity": "sha512-spi4C+c3cjlhCklT+RvAxJJcarMmjRpF6RPNvBIBYDduALq8iSNm7FwSpijQNGtI+ryeZ2EfvyBNLp36OFaZiw==", "dependencies": { - "is-arrayish": "^0.3.1" + "@yomguithereal/helpers": "^1.1.1", + "events": "^3.3.0", + "graphology-utils": "^2.5.0" } }, "node_modules/sorcery": { @@ -1627,6 +1341,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1653,6 +1368,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -1661,18 +1377,18 @@ } }, "node_modules/svelte": { - "version": "3.50.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", - "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==", + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/svelte-check": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.0.tgz", - "integrity": "sha512-9AVrtP7WbfDgCdqTZNPdj5CCCy1OrYMxFVWAWzNw7fl93c9klFJFtqzVXa6fovfQ050CcpUyJE2dPFL9TFAREw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", + "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.9", @@ -1692,9 +1408,9 @@ } }, "node_modules/svelte-hmr": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", - "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", "dev": true, "engines": { "node": "^12.20 || ^14.13.1 || >= 16" @@ -1783,60 +1499,22 @@ "resolved": "https://registry.npmjs.org/svelte-select/-/svelte-select-4.4.7.tgz", "integrity": "sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A==" }, - "node_modules/tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", - "dependencies": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/svelte-spa-router": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-3.3.0.tgz", + "integrity": "sha512-cwRNe7cxD43sCvSfEeaKiNZg3FCizGxeMcf7CPiWRP3jKXjEma3vxyyuDtPOam6nWbVxl9TNM3hlE/i87ZlqcQ==", "dependencies": { - "is-glob": "^4.0.3" + "regexparam": "2.0.1" }, - "engines": { - "node": ">=10.13.0" + "funding": { + "url": "https://github.com/sponsors/ItalyPaleAle" } }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -1845,15 +1523,15 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, "node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -1863,46 +1541,16 @@ "node": ">=4.2.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "node_modules/vite": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", - "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", + "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", "dev": true, "dependencies": { - "esbuild": "^0.15.6", - "postcss": "^8.4.16", + "esbuild": "^0.15.9", + "postcss": "^8.4.18", "resolve": "^1.22.1", - "rollup": "~2.78.0" + "rollup": "^2.79.1" }, "bin": { "vite": "bin/vite.js" @@ -1914,12 +1562,17 @@ "fsevents": "~2.3.2" }, "peerDependencies": { + "@types/node": ">= 14", "less": "*", "sass": "*", "stylus": "*", + "sugarss": "*", "terser": "^5.4.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "less": { "optional": true }, @@ -1929,46 +1582,47 @@ "stylus": { "optional": true }, + "sugarss": { + "optional": true + }, "terser": { "optional": true } } }, + "node_modules/vitefu": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.1.tgz", + "integrity": "sha512-clkvXTAeUf+XQKm3bhWUhT4pye+3acm6YCTGaWhxxIvZZ/QjnA3JA8Zud+z/mO5y5XYvJJhevs5Sjkv/FI8nRw==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } } }, "dependencies": { "@esbuild/android-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", - "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.14.tgz", + "integrity": "sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", - "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.14.tgz", + "integrity": "sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==", "dev": true, "optional": true }, @@ -1985,19 +1639,20 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2006,39 +1661,31 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, - "@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - } - }, "@sveltejs/vite-plugin-svelte": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.8.tgz", - "integrity": "sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.2.0.tgz", + "integrity": "sha512-DT2oUkWAloH1tO7X5cQ4uDxQofaIS76skyFMElKtoqT6HJao+D82LI5i+0jPaSSmO7ex3Pa6jGYMlWy9ZJ1cdQ==", "dev": true, "requires": { - "@rollup/pluginutils": "^4.2.1", "debug": "^4.3.4", "deepmerge": "^4.2.2", "kleur": "^4.1.5", - "magic-string": "^0.26.3", - "svelte-hmr": "^0.15.0" + "magic-string": "^0.26.7", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.1" } }, "@tsconfig/svelte": { @@ -2048,9 +1695,9 @@ "dev": true }, "@types/node": { - "version": "18.7.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", - "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==", + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "dev": true }, "@types/pug": { @@ -2068,53 +1715,21 @@ "@types/node": "*" } }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + "@yomguithereal/helpers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@yomguithereal/helpers/-/helpers-1.1.1.tgz", + "integrity": "sha512-UYvAq/XCA7xoh1juWDYsq3W0WywOB+pz8cgVnE1b45ZfdMhBvHDrgmSFG3jXeZSr2tMTYLGHFHON+ekG05Jebg==" }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2124,7 +1739,8 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, "brace-expansion": { "version": "1.1.11", @@ -2140,21 +1756,11 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -2167,20 +1773,11 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" - }, - "caniuse-lite": { - "version": "1.0.30001412", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz", - "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==" - }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2192,68 +1789,12 @@ "readdirp": "~3.6.0" } }, - "color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "requires": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "css-selector-tokenizer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", - "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "daisyui": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.31.0.tgz", - "integrity": "sha512-qepRXgQPLNcJ8ZPZy+dUvsC7mRWvMLRcVMe85/wZA60Tnhm/bkidhOzdllL8aAk2JX+W/xlIsTJ8NZFpPm+eyw==", - "requires": { - "color": "^4.2", - "css-selector-tokenizer": "^0.8.0", - "postcss-js": "^4.0.0", - "tailwindcss": "^3" - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2269,42 +1810,12 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" - }, "detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true }, - "detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "requires": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - } - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "electron-to-chromium": { - "version": "1.4.261", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.261.tgz", - "integrity": "sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==" - }, "es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", @@ -2312,190 +1823,185 @@ "dev": true }, "esbuild": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.14.tgz", + "integrity": "sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==", "dev": true, "requires": { - "@esbuild/android-arm": "0.15.9", - "@esbuild/linux-loong64": "0.15.9", - "esbuild-android-64": "0.15.9", - "esbuild-android-arm64": "0.15.9", - "esbuild-darwin-64": "0.15.9", - "esbuild-darwin-arm64": "0.15.9", - "esbuild-freebsd-64": "0.15.9", - "esbuild-freebsd-arm64": "0.15.9", - "esbuild-linux-32": "0.15.9", - "esbuild-linux-64": "0.15.9", - "esbuild-linux-arm": "0.15.9", - "esbuild-linux-arm64": "0.15.9", - "esbuild-linux-mips64le": "0.15.9", - "esbuild-linux-ppc64le": "0.15.9", - "esbuild-linux-riscv64": "0.15.9", - "esbuild-linux-s390x": "0.15.9", - "esbuild-netbsd-64": "0.15.9", - "esbuild-openbsd-64": "0.15.9", - "esbuild-sunos-64": "0.15.9", - "esbuild-windows-32": "0.15.9", - "esbuild-windows-64": "0.15.9", - "esbuild-windows-arm64": "0.15.9" + "@esbuild/android-arm": "0.15.14", + "@esbuild/linux-loong64": "0.15.14", + "esbuild-android-64": "0.15.14", + "esbuild-android-arm64": "0.15.14", + "esbuild-darwin-64": "0.15.14", + "esbuild-darwin-arm64": "0.15.14", + "esbuild-freebsd-64": "0.15.14", + "esbuild-freebsd-arm64": "0.15.14", + "esbuild-linux-32": "0.15.14", + "esbuild-linux-64": "0.15.14", + "esbuild-linux-arm": "0.15.14", + "esbuild-linux-arm64": "0.15.14", + "esbuild-linux-mips64le": "0.15.14", + "esbuild-linux-ppc64le": "0.15.14", + "esbuild-linux-riscv64": "0.15.14", + "esbuild-linux-s390x": "0.15.14", + "esbuild-netbsd-64": "0.15.14", + "esbuild-openbsd-64": "0.15.14", + "esbuild-sunos-64": "0.15.14", + "esbuild-windows-32": "0.15.14", + "esbuild-windows-64": "0.15.14", + "esbuild-windows-arm64": "0.15.14" } }, "esbuild-android-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", - "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.14.tgz", + "integrity": "sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", - "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.14.tgz", + "integrity": "sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.14.tgz", + "integrity": "sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", - "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.14.tgz", + "integrity": "sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", - "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.14.tgz", + "integrity": "sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", - "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.14.tgz", + "integrity": "sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", - "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.14.tgz", + "integrity": "sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", - "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.14.tgz", + "integrity": "sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", - "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.14.tgz", + "integrity": "sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", - "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.14.tgz", + "integrity": "sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", - "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.14.tgz", + "integrity": "sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", - "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.14.tgz", + "integrity": "sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", - "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.14.tgz", + "integrity": "sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", - "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.14.tgz", + "integrity": "sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", - "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.14.tgz", + "integrity": "sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", - "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.14.tgz", + "integrity": "sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", - "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.14.tgz", + "integrity": "sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", - "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.14.tgz", + "integrity": "sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", - "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.14.tgz", + "integrity": "sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", - "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.14.tgz", + "integrity": "sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==", "dev": true, "optional": true }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -2504,15 +2010,11 @@ "micromatch": "^4.0.4" } }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, "requires": { "reusify": "^1.0.4" } @@ -2521,15 +2023,11 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2540,12 +2038,14 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "optional": true }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "glob": { "version": "7.2.3", @@ -2565,6 +2065,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -2575,10 +2076,57 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "graphology": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/graphology/-/graphology-0.25.1.tgz", + "integrity": "sha512-yYA7BJCcXN2DrKNQQ9Qf22zBHm/yTbyBR71T1MYBbGtywNHsv0QZtk8zaR6zxNcp2hCCZayUkHp9DyMSZCpoxQ==", + "requires": { + "events": "^3.3.0", + "obliterator": "^2.0.2" + } + }, + "graphology-layout": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/graphology-layout/-/graphology-layout-0.6.1.tgz", + "integrity": "sha512-m9aMvbd0uDPffUCFPng5ibRkb2pmfNvdKjQWeZrf71RS1aOoat5874+DcyNfMeCT4aQguKC7Lj9eCbqZj/h8Ag==", + "requires": { + "graphology-utils": "^2.3.0", + "pandemonium": "^2.4.0" + } + }, + "graphology-layout-force": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/graphology-layout-force/-/graphology-layout-force-0.2.4.tgz", + "integrity": "sha512-NYZz0YAnDkn5pkm30cvB0IScFoWGtbzJMrqaiH070dYlYJiag12Oc89dbVfaMaVR/w8DMIKxn/ix9Bqj+Umm9Q==", + "requires": { + "graphology-utils": "^2.4.2" + } + }, + "graphology-layout-forceatlas2": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/graphology-layout-forceatlas2/-/graphology-layout-forceatlas2-0.10.1.tgz", + "integrity": "sha512-ogzBeF1FvWzjkikrIFwxhlZXvD2+wlY54lqhsrWprcdPjopM2J9HoMweUmIgwaTvY4bUYVimpSsOdvDv1gPRFQ==", + "requires": { + "graphology-utils": "^2.1.0" + } + }, + "graphology-types": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/graphology-types/-/graphology-types-0.24.5.tgz", + "integrity": "sha512-m8FVoj9b6MwIaTN+/AvoxXhcK5n0uSe7ZnhbQNTcjh94vzN6m5hU501LihtCfRjF35QEMVrXYOrTNO0wAR1Gxw==", + "peer": true + }, + "graphology-utils": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/graphology-utils/-/graphology-utils-2.5.2.tgz", + "integrity": "sha512-ckHg8MXrXJkOARk56ZaSCM1g1Wihe2d6iTmz1enGOz4W/l831MBCKSayeFQfowgF8wd+PQ4rlch/56Vs/VZLDQ==", + "requires": {} + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -2609,23 +2157,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "requires": { "binary-extensions": "^2.0.0" } }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, "requires": { "has": "^1.0.3" } @@ -2633,12 +2178,14 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -2646,7 +2193,8 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "kleur": { "version": "4.1.5", @@ -2654,15 +2202,10 @@ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" - }, "magic-string": { - "version": "0.26.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.4.tgz", - "integrity": "sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==", + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, "requires": { "sourcemap-codec": "^1.4.8" @@ -2671,12 +2214,14 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -2698,9 +2243,10 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true }, "mkdirp": { "version": "0.5.6", @@ -2711,6 +2257,14 @@ "minimist": "^1.2.6" } }, + "mnemonist": { + "version": "0.39.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.5.tgz", + "integrity": "sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==", + "requires": { + "obliterator": "^2.0.1" + } + }, "mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -2726,27 +2280,19 @@ "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + "obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==" }, "once": { "version": "1.4.0", @@ -2757,6 +2303,14 @@ "wrappy": "1" } }, + "pandemonium": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/pandemonium/-/pandemonium-2.4.1.tgz", + "integrity": "sha512-wRqjisUyiUfXowgm7MFH2rwJzKIr20rca5FsHXCMNm1W5YPP1hCtrZfgmQ62kP7OZ7Xt+cR858aB28lu5NX55g==", + "requires": { + "mnemonist": "^0.39.2" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2775,112 +2329,57 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, - "postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "requires": { - "camelcase-css": "^2.0.1" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "requires": { - "postcss-selector-parser": "^6.0.6" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "requires": { - "pify": "^2.3.0" - } + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "requires": { "picomatch": "^2.2.1" } }, + "regexparam": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.1.tgz", + "integrity": "sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==" + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -2896,7 +2395,8 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true }, "rimraf": { "version": "2.7.1", @@ -2908,9 +2408,9 @@ } }, "rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -2920,6 +2420,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -2945,12 +2446,14 @@ "rimraf": "^2.5.2" } }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "sigma": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/sigma/-/sigma-2.4.0.tgz", + "integrity": "sha512-spi4C+c3cjlhCklT+RvAxJJcarMmjRpF6RPNvBIBYDduALq8iSNm7FwSpijQNGtI+ryeZ2EfvyBNLp36OFaZiw==", "requires": { - "is-arrayish": "^0.3.1" + "@yomguithereal/helpers": "^1.1.1", + "events": "^3.3.0", + "graphology-utils": "^2.5.0" } }, "sorcery": { @@ -2968,7 +2471,8 @@ "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true }, "sourcemap-codec": { "version": "1.4.8", @@ -2988,18 +2492,19 @@ "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true }, "svelte": { - "version": "3.50.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", - "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==", + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", "dev": true }, "svelte-check": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.0.tgz", - "integrity": "sha512-9AVrtP7WbfDgCdqTZNPdj5CCCy1OrYMxFVWAWzNw7fl93c9klFJFtqzVXa6fovfQ050CcpUyJE2dPFL9TFAREw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", + "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.9", @@ -3013,9 +2518,9 @@ } }, "svelte-hmr": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", - "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", "dev": true, "requires": {} }, @@ -3049,107 +2554,60 @@ "resolved": "https://registry.npmjs.org/svelte-select/-/svelte-select-4.4.7.tgz", "integrity": "sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A==" }, - "tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", + "svelte-spa-router": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-3.3.0.tgz", + "integrity": "sha512-cwRNe7cxD43sCvSfEeaKiNZg3FCizGxeMcf7CPiWRP3jKXjEma3vxyyuDtPOam6nWbVxl9TNM3hlE/i87ZlqcQ==", "requires": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "requires": { - "is-glob": "^4.0.3" - } - } + "regexparam": "2.0.1" } }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, "typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true }, - "update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "vite": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", - "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", + "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", "dev": true, "requires": { - "esbuild": "^0.15.6", + "esbuild": "^0.15.9", "fsevents": "~2.3.2", - "postcss": "^8.4.16", + "postcss": "^8.4.18", "resolve": "^1.22.1", - "rollup": "~2.78.0" + "rollup": "^2.79.1" } }, + "vitefu": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.1.tgz", + "integrity": "sha512-clkvXTAeUf+XQKm3bhWUhT4pye+3acm6YCTGaWhxxIvZZ/QjnA3JA8Zud+z/mO5y5XYvJJhevs5Sjkv/FI8nRw==", + "dev": true, + "requires": {} + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" } } } diff --git a/sg-frontend/package.json b/sg-frontend/package.json index 30a3410eb36c9449bb81db7c0fe56ccf18350672..25a5c5dd0ceb642487ac908f9b2b85c030110ba5 100644 --- a/sg-frontend/package.json +++ b/sg-frontend/package.json @@ -12,18 +12,20 @@ "devDependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.2", "@tsconfig/svelte": "^3.0.0", - "autoprefixer": "^10.4.12", - "postcss": "^8.4.16", "svelte": "^3.49.0", "svelte-check": "^2.8.1", "svelte-preprocess": "^4.10.7", - "tailwindcss": "^3.1.8", "tslib": "^2.4.0", "typescript": "^4.6.4", "vite": "^3.1.0" }, "dependencies": { - "daisyui": "^2.31.0", - "svelte-select": "^4.4.7" + "graphology": "^0.25.1", + "graphology-layout": "^0.6.1", + "graphology-layout-force": "^0.2.4", + "graphology-layout-forceatlas2": "^0.10.1", + "sigma": "^2.4.0", + "svelte-select": "^4.4.7", + "svelte-spa-router": "^3.3.0" } } diff --git a/sg-frontend/pnpm-lock.yaml b/sg-frontend/pnpm-lock.yaml new file mode 100644 index 0000000000000000000000000000000000000000..077f39a144cee0d5997b2507f6588aa46f887d46 --- /dev/null +++ b/sg-frontend/pnpm-lock.yaml @@ -0,0 +1,923 @@ +lockfileVersion: 5.4 + +specifiers: + '@sveltejs/vite-plugin-svelte': ^1.0.2 + '@tsconfig/svelte': ^3.0.0 + svelte: ^3.49.0 + svelte-check: ^2.8.1 + svelte-preprocess: ^4.10.7 + svelte-select: ^4.4.7 + svelte-spa-router: ^3.3.0 + tslib: ^2.4.0 + typescript: ^4.6.4 + vite: ^3.1.0 + +dependencies: + svelte-select: 4.4.7 + svelte-spa-router: 3.3.0 + +devDependencies: + '@sveltejs/vite-plugin-svelte': 1.2.0_svelte@3.53.1+vite@3.2.4 + '@tsconfig/svelte': 3.0.0 + svelte: 3.53.1 + svelte-check: 2.9.2_svelte@3.53.1 + svelte-preprocess: 4.10.7_7dvewpees4iyn2tkw2qzal77a4 + tslib: 2.4.1 + typescript: 4.9.3 + vite: 3.2.4 + +packages: + + /@esbuild/android-arm/0.15.14: + resolution: {integrity: sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.14: + resolution: {integrity: sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@sveltejs/vite-plugin-svelte/1.2.0_svelte@3.53.1+vite@3.2.4: + resolution: {integrity: sha512-DT2oUkWAloH1tO7X5cQ4uDxQofaIS76skyFMElKtoqT6HJao+D82LI5i+0jPaSSmO7ex3Pa6jGYMlWy9ZJ1cdQ==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + diff-match-patch: ^1.0.5 + svelte: ^3.44.0 + vite: ^3.0.0 + peerDependenciesMeta: + diff-match-patch: + optional: true + dependencies: + debug: 4.3.4 + deepmerge: 4.2.2 + kleur: 4.1.5 + magic-string: 0.26.7 + svelte: 3.53.1 + svelte-hmr: 0.15.1 + vite: 3.2.4 + vitefu: 0.2.1 + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /@tsconfig/svelte/3.0.0: + resolution: {integrity: sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==} + dev: true + + /@types/node/18.11.9: + resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} + dev: true + + /@types/pug/2.0.6: + resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + dev: true + + /@types/sass/1.43.1: + resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} + dependencies: + '@types/node': 18.11.9 + dev: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /es6-promise/3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + + /esbuild-android-64/0.15.14: + resolution: {integrity: sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.14: + resolution: {integrity: sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.14: + resolution: {integrity: sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.14: + resolution: {integrity: sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.14: + resolution: {integrity: sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.14: + resolution: {integrity: sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.14: + resolution: {integrity: sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.14: + resolution: {integrity: sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.14: + resolution: {integrity: sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.14: + resolution: {integrity: sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.14: + resolution: {integrity: sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.14: + resolution: {integrity: sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.14: + resolution: {integrity: sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.14: + resolution: {integrity: sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.14: + resolution: {integrity: sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.14: + resolution: {integrity: sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.14: + resolution: {integrity: sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.14: + resolution: {integrity: sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.14: + resolution: {integrity: sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.14: + resolution: {integrity: sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.15.14: + resolution: {integrity: sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==} + engines: {node: '>=12'} + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.14 + '@esbuild/linux-loong64': 0.15.14 + esbuild-android-64: 0.15.14 + esbuild-android-arm64: 0.15.14 + esbuild-darwin-64: 0.15.14 + esbuild-darwin-arm64: 0.15.14 + esbuild-freebsd-64: 0.15.14 + esbuild-freebsd-arm64: 0.15.14 + esbuild-linux-32: 0.15.14 + esbuild-linux-64: 0.15.14 + esbuild-linux-arm: 0.15.14 + esbuild-linux-arm64: 0.15.14 + esbuild-linux-mips64le: 0.15.14 + esbuild-linux-ppc64le: 0.15.14 + esbuild-linux-riscv64: 0.15.14 + esbuild-linux-s390x: 0.15.14 + esbuild-netbsd-64: 0.15.14 + esbuild-openbsd-64: 0.15.14 + esbuild-sunos-64: 0.15.14 + esbuild-windows-32: 0.15.14 + esbuild-windows-64: 0.15.14 + esbuild-windows-arm64: 0.15.14 + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /magic-string/0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + dependencies: + minimist: 1.2.7 + dev: true + + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /postcss/8.4.19: + resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regexparam/2.0.1: + resolution: {integrity: sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==} + engines: {node: '>=8'} + dev: false + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + dependencies: + glob: 7.2.3 + dev: true + + /rollup/2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + + /sander/0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + + /sorcery/0.10.0: + resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} + dependencies: + buffer-crc32: 0.2.13 + minimist: 1.2.7 + sander: 0.5.1 + sourcemap-codec: 1.4.8 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + dev: true + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svelte-check/2.9.2_svelte@3.53.1: + resolution: {integrity: sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==} + hasBin: true + peerDependencies: + svelte: ^3.24.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + chokidar: 3.5.3 + fast-glob: 3.2.12 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 3.53.1 + svelte-preprocess: 4.10.7_7dvewpees4iyn2tkw2qzal77a4 + typescript: 4.9.3 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - node-sass + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-hmr/0.15.1: + resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + dependencies: + svelte: 3.53.1 + dev: true + + /svelte-preprocess/4.10.7_7dvewpees4iyn2tkw2qzal77a4: + resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} + engines: {node: '>= 9.11.2'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + node-sass: '*' + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 + svelte: ^3.23.0 + typescript: ^3.9.5 || ^4.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + node-sass: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@types/pug': 2.0.6 + '@types/sass': 1.43.1 + detect-indent: 6.1.0 + magic-string: 0.25.9 + sorcery: 0.10.0 + strip-indent: 3.0.0 + svelte: 3.53.1 + typescript: 4.9.3 + dev: true + + /svelte-select/4.4.7: + resolution: {integrity: sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A==} + dev: false + + /svelte-spa-router/3.3.0: + resolution: {integrity: sha512-cwRNe7cxD43sCvSfEeaKiNZg3FCizGxeMcf7CPiWRP3jKXjEma3vxyyuDtPOam6nWbVxl9TNM3hlE/i87ZlqcQ==} + dependencies: + regexparam: 2.0.1 + dev: false + + /svelte/3.53.1: + resolution: {integrity: sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==} + engines: {node: '>= 8'} + dev: true + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true + + /typescript/4.9.3: + resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} + engines: {node: '>=4.2.0'} + dev: true + + /vite/3.2.4: + resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.15.14 + postcss: 8.4.19 + resolve: 1.22.1 + rollup: 2.79.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitefu/0.2.1: + resolution: {integrity: sha512-clkvXTAeUf+XQKm3bhWUhT4pye+3acm6YCTGaWhxxIvZZ/QjnA3JA8Zud+z/mO5y5XYvJJhevs5Sjkv/FI8nRw==} + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 3.2.4 + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - terser + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true diff --git a/sg-frontend/src/App.svelte b/sg-frontend/src/App.svelte index 06183724a42b876e04052ec87024fb7b13a2142f..1ffb7ff7af9939f4e675697c57b62525817d9805 100644 --- a/sg-frontend/src/App.svelte +++ b/sg-frontend/src/App.svelte @@ -1,13 +1,22 @@ -<script lang="ts"> - import Header from "./components/Header.svelte"; - import SoftwareMerger from "./components/SoftwareMerger.svelte"; +<script> + import Router from "svelte-spa-router"; + import Index from "./routes/Index.svelte"; + import Add from "./routes/Add.svelte"; + import Graph from "./routes/Graph.svelte"; + import NotFound from "./routes/NotFound.svelte"; + import Sigma from "./routes/Sigma.svelte"; + import SigmaCustom from "./routes/SigmaCustom.svelte"; + import AddNode from "./routes/AddNode.svelte"; + + let routes = { + "/": Index, + "/add": Add, + "/graph": Graph, + "/sigma": Sigma, + "/sigma-custom": SigmaCustom, + "/add-node": AddNode, + "*": NotFound + } </script> -<main> - <Header /> - <h1>Software Merger</h1> - <p>Find alternatives that have similar features between two softwares.</p> - <br /> - <br /> - <SoftwareMerger /> -</main> +<Router {routes} /> \ No newline at end of file diff --git a/sg-frontend/src/app.css b/sg-frontend/src/app.css index d469b298d745b12f236d7ebb3d3e8598351cf640..187092b3f3d0def897811a28fc4b29cffa8f4698 100644 --- a/sg-frontend/src/app.css +++ b/sg-frontend/src/app.css @@ -1,86 +1,98 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +/* Dark theme settings are commented */ :root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; + font-family: Inter, Avenir, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 24px; + font-weight: 400; + + /*color-scheme: light dark;*/ + /*color: rgba(255, 255, 255, 0.87);*/ + /*background-color: #242424;*/ + color: #213547; + background-color: #ffffff; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; } a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; + font-weight: 500; + /*color: #646cff;*/ + text-decoration: inherit; } + a:hover { - color: #535bf2; + /*color: #535bf2;*/ + color: #747bff; } body { - padding-top: 100px; - margin: 0; - display: flex; - justify-items: center; - min-width: 320px; - min-height: 100vh; + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; } h1 { - font-size: 3.2em; - line-height: 1.1; + font-size: 3.2em; + line-height: 1.1; } .card { - padding: 2em; + padding: 2em; +} + +#app-base { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; } #app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; + width: 100vw; + height: 100vh; } button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + /*background-color: #1a1a1a;*/ + background-color: #f9f9f9; + color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; } + button:hover { - border-color: #646cff; + border-color: #646cff; } + button:focus, button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; + outline: 4px auto -webkit-focus-ring-color; } -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} +/*@media (prefers-color-scheme: light) {*/ +/* :root {*/ +/* color: #213547;*/ +/* background-color: #ffffff;*/ +/* }*/ + +/* a:hover {*/ +/* color: #747bff;*/ +/* }*/ + +/* button {*/ +/* background-color: #f9f9f9;*/ +/* }*/ +/*}*/ \ No newline at end of file diff --git a/sg-frontend/src/components/RelationInsert.svelte b/sg-frontend/src/components/RelationInsert.svelte new file mode 100644 index 0000000000000000000000000000000000000000..7d0386f95ac05d78dba22e7da7dd285618c402e2 --- /dev/null +++ b/sg-frontend/src/components/RelationInsert.svelte @@ -0,0 +1,117 @@ +<script> + import SoftwareSelect from "./SoftwareSelect.svelte"; + import {onMount} from "svelte"; + + let softwares = [], + software1, + software2, + result, + node; + const BACKEND_URL = import.meta.env.VITE_BACKEND_URL; + onMount(async () => { + + const relationAddButton = document.getElementById("relationAddButton"); + relationAddButton.addEventListener("click", async (e) => { + const response = await fetch(BACKEND_URL + "/relation-insert", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + software1: software1.label, + software2: software2.label, + relationType: document.querySelector('input[name="relationType"]:checked').value + }), + }); + if (response.ok) { + result = await response.json(); + node = result.node; + } + e.preventDefault(); + }); + + await fetch(BACKEND_URL + "/software") + .then((response) => response.json()) + .then((data) => { + console.log(data); + let tempSoft = []; + data["softwares"].forEach((element) => { + node = Object.values(Object.values(element))[0]; + delete Object.assign(node, {["label"]: node["name"]})["name"]; + tempSoft.push(node); + }); + softwares = tempSoft; + console.log(softwares); + }) + .catch((error) => { + console.log(error); + return []; + }); + }); +</script> + +<form> + <SoftwareSelect items="{softwares}" bind:selectedSoftware="{software1}"/> + <div> + <label class="radio-inline"> + <input type="radio" id="SIMILAR" name="relationType" value="SIMILAR" checked>SIMILAR + </label> + <label class="radio-inline"> + <input type="radio" id="HAS_SAME_CREATOR" name="relationType" value="HAS_SAME_CREATOR">HAS SAME CREATOR + </label> + </div> + <SoftwareSelect items="{softwares}" bind:selectedSoftware="{software2}"/> + <button id="relationAddButton">Add</button> +</form> + +<style> + /* Style the form - display items horizontally */ + .form-inline { + display: flex; + flex-flow: row wrap; + align-items: center; + } + + /* Add some margins for each label */ + .form-inline label { + margin: 5px 10px 5px 0; + } + + p { + display: none !important; + } + + /* Style the input fields */ + .form-inline input { + vertical-align: middle; + margin: 5px 10px 5px 0; + padding: 10px; + background-color: #fff; + border: 1px solid #ddd; + } + + /* Add responsiveness - display the form controls vertically instead of horizontally on screens that are less than 800px wide */ + @media (max-width: 800px) { + .form-inline input { + margin: 10px 0; + } + + .form-inline { + flex-direction: column; + align-items: stretch; + } + } + + form { + max-width: 400px; + background: #f4f4f4; + padding: 20px; + border-radius: 4px; + color: black; + margin: auto; + } + + label { + margin: 0 0 10px; + } +</style> \ No newline at end of file diff --git a/sg-frontend/src/components/SoftwareInsert.svelte b/sg-frontend/src/components/SoftwareInsert.svelte new file mode 100644 index 0000000000000000000000000000000000000000..702fc318d9c8038854a6d5720fca4907f8bc4019 --- /dev/null +++ b/sg-frontend/src/components/SoftwareInsert.svelte @@ -0,0 +1,88 @@ +<script> + import {onMount} from "svelte"; + + const BACKEND_URL = import.meta.env.VITE_BACKEND_URL; + + + let softwares = [], + result, + node; + + + onMount(async () => { + const softwareName = document.getElementById("softwareName"); + const newNodeButton = document.getElementById("newNodeButton"); + + newNodeButton.addEventListener("click", (e) => { + postSoftwareInsert(); + e.preventDefault(); + }); + + async function postSoftwareInsert() { + const res = await fetch(BACKEND_URL + "/software-insert", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({"newNodeName": softwareName.value}), + }); + } + + }); +</script> + + +<form class="form-inline"> + <label for="softwareName">Software Name :</label> + <input type="text" id="softwareName" placeholder="" name="softwareName"> + <button id="newNodeButton">Submit</button> +</form> + +<style> + + /* Style the form - display items horizontally */ + .form-inline { + display: flex; + flex-flow: row wrap; + align-items: center; + } + + /* Add some margins for each label */ + .form-inline label { + margin: 5px 10px 5px 0; + } + + /* Style the input fields */ + .form-inline input { + vertical-align: middle; + margin: 5px 10px 5px 0; + padding: 10px; + background-color: #fff; + border: 1px solid #ddd; + } + + /* Add responsiveness - display the form controls vertically instead of horizontally on screens that are less than 800px wide */ + @media (max-width: 800px) { + .form-inline input { + margin: 10px 0; + } + + .form-inline { + flex-direction: column; + align-items: stretch; + } + } + + form { + max-width: 400px; + background: #f4f4f4; + padding: 20px; + border-radius: 4px; + color: black; + margin: auto; + } + + label { + margin: 0 0 10px; + } +</style> \ No newline at end of file diff --git a/sg-frontend/src/components/SoftwareMerger.svelte b/sg-frontend/src/components/SoftwareMerger.svelte index e6b6a04b94d50d826ebbc8eeae38c5d6936261cc..6466e824eaa3949ad16d75595f4746c043a4e678 100644 --- a/sg-frontend/src/components/SoftwareMerger.svelte +++ b/sg-frontend/src/components/SoftwareMerger.svelte @@ -65,7 +65,7 @@ <SoftwareSelect items="{softwares}" bind:selectedSoftware="{software2}" /> {#if result} - <div style="text-align: left;"> + <div style="max-width: 470px; text-align: left; margin: auto;"> <h2>Results</h2> {#if result.length > 0} <p> diff --git a/sg-frontend/src/components/SoftwareSelect.svelte b/sg-frontend/src/components/SoftwareSelect.svelte index 99acdc542f20a81febba07532e531fd31149bbf3..844318ec249f54ed6f110133c51af17057cda1c9 100644 --- a/sg-frontend/src/components/SoftwareSelect.svelte +++ b/sg-frontend/src/components/SoftwareSelect.svelte @@ -35,6 +35,7 @@ padding: 20px; border-radius: 4px; color: black; + margin: auto; } label { diff --git a/sg-frontend/src/routes/Add.svelte b/sg-frontend/src/routes/Add.svelte new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/sg-frontend/src/routes/AddNode.svelte b/sg-frontend/src/routes/AddNode.svelte new file mode 100644 index 0000000000000000000000000000000000000000..e869809e21f7da454c2e149543b3f294485f6246 --- /dev/null +++ b/sg-frontend/src/routes/AddNode.svelte @@ -0,0 +1,22 @@ +<script lang="ts"> + + import {onMount} from 'svelte'; + import SotfwareInsert from "../components/SoftwareInsert.svelte"; + import RelationInsert from "../components/RelationInsert.svelte"; + + onMount(() => { + const link = document.getElementById("sigma") as HTMLElement; + const home = document.getElementById("home") as HTMLElement; + const add = document.getElementById("add") as HTMLElement; + add.classList.add("active"); + home.classList.remove("active"); + link.classList.remove("active"); + + }); +</script> +<div id="app-base"> + <h1>Add new node</h1> + <SotfwareInsert></SotfwareInsert> + <h1>Add new relation</h1> + <RelationInsert></RelationInsert> +</div> \ No newline at end of file diff --git a/sg-frontend/src/routes/Graph.svelte b/sg-frontend/src/routes/Graph.svelte new file mode 100644 index 0000000000000000000000000000000000000000..327e027b4c582689c7088105b8f2cb42307b8c87 --- /dev/null +++ b/sg-frontend/src/routes/Graph.svelte @@ -0,0 +1,3 @@ +<div> + Hello +</div> \ No newline at end of file diff --git a/sg-frontend/src/routes/Index.svelte b/sg-frontend/src/routes/Index.svelte new file mode 100644 index 0000000000000000000000000000000000000000..53f779416021abf9da45ec54eadf62c159743d11 --- /dev/null +++ b/sg-frontend/src/routes/Index.svelte @@ -0,0 +1,37 @@ +<script lang="ts"> + import SoftwareMerger from "../components/SoftwareMerger.svelte"; + const link = document.getElementById("sigma"); + const home = document.getElementById("home"); + const add = document.getElementById("add"); + home.classList.add("active"); + link.classList.remove("active"); + add.classList.remove("active"); +</script> + +<div id="app-base"> + <h1>Software Merger</h1> + <p>Find alternatives that have similar features between two softwares.</p> + <br/> + <br/> + <SoftwareMerger/> +</div> + +<style> + .logo { + height: 6em; + padding: 1.5em; + will-change: filter; + } + + .logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); + } + + .logo.svelte:hover { + filter: drop-shadow(0 0 2em #ff3e00aa); + } + + .read-the-docs { + color: #888; + } +</style> \ No newline at end of file diff --git a/sg-frontend/src/routes/NotFound.svelte b/sg-frontend/src/routes/NotFound.svelte new file mode 100644 index 0000000000000000000000000000000000000000..c678e375b97ef72ecf7208194772948ef1d3a00b --- /dev/null +++ b/sg-frontend/src/routes/NotFound.svelte @@ -0,0 +1 @@ +<p>Not found</p> \ No newline at end of file diff --git a/sg-frontend/src/routes/Sigma.svelte b/sg-frontend/src/routes/Sigma.svelte new file mode 100644 index 0000000000000000000000000000000000000000..8b7d8637752cf83102e52a6e5043aaa78c906135 --- /dev/null +++ b/sg-frontend/src/routes/Sigma.svelte @@ -0,0 +1,174 @@ +<script lang="ts"> +import Graph from "graphology"; +import Sigma from "sigma"; + +import { Coordinates, EdgeDisplayData, NodeDisplayData } from "sigma/types"; + +import data from "./data.json"; + import { onMount } from 'svelte'; + + onMount(() => { +/** + * This example showcases sigma's reducers, which aim to facilitate dynamically + * changing the appearance of nodes and edges, without actually changing the + * main graphology data. + */ + + + +// Retrieve some useful DOM elements: +const container = document.getElementById("sigma-container") as HTMLElement; +const searchInput = document.getElementById("search-input") as HTMLInputElement; +const searchSuggestions = document.getElementById("suggestions") as HTMLDataListElement; + +// Instantiate sigma: +const graph = new Graph(); +graph.import(data); +const renderer = new Sigma(graph, container); + +// Type and declare internal state: +interface State { + hoveredNode?: string; + searchQuery: string; + + // State derived from query: + selectedNode?: string; + suggestions?: Set<string>; + + // State derived from hovered node: + hoveredNeighbors?: Set<string>; +} +const state: State = { searchQuery: "" }; + +// Feed the datalist autocomplete values: +searchSuggestions.innerHTML = graph + .nodes() + .map((node) => `<option value="${graph.getNodeAttribute(node, "label")}"></option>`) + .join("\n"); + +// Actions: +function setSearchQuery(query: string) { + state.searchQuery = query; + + if (searchInput.value !== query) searchInput.value = query; + + if (query) { + const lcQuery = query.toLowerCase(); + const suggestions = graph + .nodes() + .map((n) => ({ id: n, label: graph.getNodeAttribute(n, "label") as string })) + .filter(({ label }) => label.toLowerCase().includes(lcQuery)); + + // If we have a single perfect match, them we remove the suggestions, and + // we consider the user has selected a node through the datalist + // autocomplete: + if (suggestions.length === 1 && suggestions[0].label === query) { + state.selectedNode = suggestions[0].id; + state.suggestions = undefined; + + // Move the camera to center it on the selected node: + const nodePosition = renderer.getNodeDisplayData(state.selectedNode) as Coordinates; + renderer.getCamera().animate(nodePosition, { + duration: 500, + }); + } + // Else, we display the suggestions list: + else { + state.selectedNode = undefined; + state.suggestions = new Set(suggestions.map(({ id }) => id)); + } + } + // If the query is empty, then we reset the selectedNode / suggestions state: + else { + state.selectedNode = undefined; + state.suggestions = undefined; + } + + // Refresh rendering: + renderer.refresh(); +} +function setHoveredNode(node?: string) { + if (node) { + state.hoveredNode = node; + state.hoveredNeighbors = new Set(graph.neighbors(node)); + } else { + state.hoveredNode = undefined; + state.hoveredNeighbors = undefined; + } + + // Refresh rendering: + renderer.refresh(); +} + +// Bind search input interactions: +searchInput.addEventListener("input", () => { + setSearchQuery(searchInput.value || ""); +}); +searchInput.addEventListener("blur", () => { + setSearchQuery(""); +}); + +// Bind graph interactions: +renderer.on("enterNode", ({ node }) => { + setHoveredNode(node); +}); +renderer.on("leaveNode", () => { + setHoveredNode(undefined); +}); + +// Render nodes accordingly to the internal state: +// 1. If a node is selected, it is highlighted +// 2. If there is query, all non-matching nodes are greyed +// 3. If there is a hovered node, all non-neighbor nodes are greyed +renderer.setSetting("nodeReducer", (node, data) => { + const res: Partial<NodeDisplayData> = { ...data }; + + if (state.hoveredNeighbors && !state.hoveredNeighbors.has(node) && state.hoveredNode !== node) { + res.label = ""; + res.color = "#f6f6f6"; + } + + if (state.selectedNode === node) { + res.highlighted = true; + } else if (state.suggestions && !state.suggestions.has(node)) { + res.label = ""; + res.color = "#f6f6f6"; + } + + return res; +}); + +// Render edges accordingly to the internal state: +// 1. If a node is hovered, the edge is hidden if it is not connected to the +// node +// 2. If there is a query, the edge is only visible if it connects two +// suggestions +renderer.setSetting("edgeReducer", (edge, data) => { + const res: Partial<EdgeDisplayData> = { ...data }; + + if (state.hoveredNode && !graph.hasExtremity(edge, state.hoveredNode)) { + res.hidden = true; + } + + if (state.suggestions && (!state.suggestions.has(graph.source(edge)) || !state.suggestions.has(graph.target(edge)))) { + res.hidden = true; + } + + return res; +}); + + }); + + + + +</script> +<h1> Sigma graph exemple</h1> +<div id="sigma-container" /> + +<style> + #sigma-container { + width: 550px; + height: 450px; + } +</style> \ No newline at end of file diff --git a/sg-frontend/src/routes/SigmaCustom.svelte b/sg-frontend/src/routes/SigmaCustom.svelte new file mode 100644 index 0000000000000000000000000000000000000000..430516090a0c42783bc1e0066f89681b0d399851 --- /dev/null +++ b/sg-frontend/src/routes/SigmaCustom.svelte @@ -0,0 +1,215 @@ +<script lang="ts"> + import {Coordinates, EdgeDisplayData, NodeDisplayData} from "sigma/types"; + import FA2Layout from "graphology-layout-forceatlas2/worker"; + import forceAtlas2 from "graphology-layout-forceatlas2"; + import {circular} from "graphology-layout"; + import Graph from "graphology"; + import Sigma from "sigma"; + import ForceSupervisor from "graphology-layout-force/worker"; + + import {onMount} from 'svelte'; + + onMount(() => { + fetch("http://localhost:8000/software-graph") + .then(response => response.json()) + .then(data => { + + +// Retrieve some useful DOM elements: + const container = document.getElementById("sigma-container") as HTMLElement; + const link = document.getElementById("sigma") as HTMLElement; + const home = document.getElementById("home") as HTMLElement; + const add = document.getElementById("add") as HTMLElement; + link.classList.add("active"); + home.classList.remove("active"); + add.classList.remove("active"); + +// Instantiate sigma: + const graph = new Graph(); + graph.import(data); + const renderer = new Sigma(graph, container); + +// Type and declare internal state: + interface State { + hoveredNode?: string; + searchQuery: string; + + // State derived from query: + selectedNode?: string; + suggestions?: Set<string>; + + // State derived from hovered node: + hoveredNeighbors?: Set<string>; + } + + const state: State = {searchQuery: ""}; + + + function setHoveredNode(node?: string) { + if (node) { + state.hoveredNode = node; + state.hoveredNeighbors = new Set(graph.neighbors(node)); + } else { + state.hoveredNode = undefined; + state.hoveredNeighbors = undefined; + } + + // Refresh rendering: + renderer.refresh(); + } + +// Bind graph interactions: + renderer.on("enterNode", ({node}) => { + setHoveredNode(node); + }); + renderer.on("leaveNode", () => { + setHoveredNode(undefined); + }); + +// Render nodes accordingly to the internal state: +// 1. If a node is selected, it is highlighted +// 2. If there is query, all non-matching nodes are greyed +// 3. If there is a hovered node, all non-neighbor nodes are greyed + renderer.setSetting("nodeReducer", (node, data) => { + const res: Partial<NodeDisplayData> = {...data}; + + if (state.hoveredNeighbors && !state.hoveredNeighbors.has(node) && state.hoveredNode !== node) { + res.label = ""; + res.color = "#f6f6f6"; + } + + if (state.selectedNode === node) { + res.highlighted = true; + } else if (state.suggestions && !state.suggestions.has(node)) { + res.label = ""; + res.color = "#f6f6f6"; + } + + return res; + }); + + +// Render edges accordingly to the internal state: +// 1. If a node is hovered, the edge is hidden if it is not connected to the +// node +// 2. If there is a query, the edge is only visible if it connects two +// suggestions + renderer.setSetting("edgeReducer", (edge, data) => { + const res: Partial<EdgeDisplayData> = {...data}; + + if (state.hoveredNode && !graph.hasExtremity(edge, state.hoveredNode)) { + res.hidden = true; + } + + if (state.suggestions && (!state.suggestions.has(graph.source(edge)) || !state.suggestions.has(graph.target(edge)))) { + res.hidden = true; + } + + return res; + }); + + + // Graphology provides a easy to use implementation of Force Atlas 2 in a web worker + const sensibleSettings = forceAtlas2.inferSettings(graph); + const fa2Layout = new FA2Layout(graph, { + settings: sensibleSettings, + }); + + circular.assign(graph, {scale: 100}); + fa2Layout.start(); + + // Create the spring layout and start it + const layout = new ForceSupervisor(graph, {isNodeFixed: (_, attr) => attr.highlighted}); + layout.start(); + + +// +// Drag'n'drop feature +// ~~~~~~~~~~~~~~~~~~~ +// + +// State for drag'n'drop + let draggedNode: string | null = null; + let isDragging = false; + +// On mouse down on a node +// - we enable the drag mode +// - save in the dragged node in the state +// - highlight the node +// - disable the camera so its state is not updated + renderer.on("downNode", (e) => { + isDragging = true; + draggedNode = e.node; + graph.setNodeAttribute(draggedNode, "highlighted", true); + }); + +// On mouse move, if the drag mode is enabled, we change the position of the draggedNode + renderer.getMouseCaptor().on("mousemovebody", (e) => { + if (!isDragging || !draggedNode) return; + + setHoveredNode(undefined); + + fa2Layout.stop(); + + // Get new position of node + const pos = renderer.viewportToGraph(e); + + graph.setNodeAttribute(draggedNode, "x", pos.x); + graph.setNodeAttribute(draggedNode, "y", pos.y); + + // Prevent sigma to move camera: + e.preventSigmaDefault(); + e.original.preventDefault(); + e.original.stopPropagation(); + }); + +// On mouse up, we reset the autoscale and the dragging mode + renderer.getMouseCaptor().on("mouseup", () => { + if (draggedNode) { + graph.removeNodeAttribute(draggedNode, "highlighted"); + } + isDragging = false; + draggedNode = null; + renderer.getCamera() + }); + +// Disable the autoscale at the first down interaction + renderer.getMouseCaptor().on("mousedown", () => { + if (!renderer.getCustomBBox()) renderer.setCustomBBox(renderer.getBBox()); + }); + }); + }); + + +</script> +<h1>Software Map</h1> +<div id="content"> + <div id="sigma-container"/> +</div> +<style> + + #content{ + max-width: none !important; + margin: 0; + padding: 0; + } + h1 { + position: absolute; + z-index: 1; + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + text-align: center; + } + + html, + body, + #sigma-container { + width: 95vw; + height: 93vh; + margin: 0; + text-align: left; + display: block; + } +</style> \ No newline at end of file diff --git a/sg-frontend/src/routes/data.json b/sg-frontend/src/routes/data.json new file mode 100644 index 0000000000000000000000000000000000000000..0a8e7ba7928d660e3589ea08bf086544bb67ccd7 --- /dev/null +++ b/sg-frontend/src/routes/data.json @@ -0,0 +1,2808 @@ +{ + "nodes": [ + { + "key": "0.0", + "attributes": { + "x": 268.72385, + "y": 91.18155, + "size": 22.714287, + "label": "Myriel", + "color": "#D8482D" + } + }, + { + "key": "1.0", + "attributes": { + "x": 296.39902, + "y": 57.118374, + "size": 15, + "label": "Napoleon", + "color": "#B30000" + } + }, + { + "key": "2.0", + "attributes": { + "x": 248.45229, + "y": 52.22656, + "size": 16.714285, + "label": "MlleBaptistine", + "color": "#BB100A" + } + }, + { + "key": "3.0", + "attributes": { + "x": 224.83313, + "y": 98.01885, + "size": 16.714285, + "label": "MmeMagloire", + "color": "#BB100A" + } + }, + { + "key": "4.0", + "attributes": { + "x": 270.9098, + "y": 149.2961, + "size": 15, + "label": "CountessDeLo", + "color": "#B30000" + } + }, + { + "key": "5.0", + "attributes": { + "x": 318.6509, + "y": 85.41602, + "size": 15, + "label": "Geborand", + "color": "#B30000" + } + }, + { + "key": "6.0", + "attributes": { + "x": 330.3126, + "y": 117.94921, + "size": 15, + "label": "Champtercier", + "color": "#B30000" + } + }, + { + "key": "7.0", + "attributes": { + "x": 310.513, + "y": 155.66956, + "size": 15, + "label": "Cravatte", + "color": "#B30000" + } + }, + { + "key": "8.0", + "attributes": { + "x": 295.74683, + "y": 124.78035, + "size": 15, + "label": "Count", + "color": "#B30000" + } + }, + { + "key": "9.0", + "attributes": { + "x": 241.03372, + "y": 131.8897, + "size": 15, + "label": "OldMan", + "color": "#B30000" + } + }, + { + "key": "10.0", + "attributes": { + "x": -55.532795, + "y": -246.75798, + "size": 15, + "label": "Labarre", + "color": "#B30000" + } + }, + { + "key": "11.0", + "attributes": { + "x": -8.81755, + "y": -60.480377, + "size": 45, + "label": "Valjean", + "color": "#FEF0D9" + } + }, + { + "key": "12.0", + "attributes": { + "x": 116.85369, + "y": -100.77216, + "size": 15.857142, + "label": "Marguerite", + "color": "#B70805" + } + }, + { + "key": "13.0", + "attributes": { + "x": 78.10812, + "y": -16.99423, + "size": 15, + "label": "MmeDeR", + "color": "#B30000" + } + }, + { + "key": "14.0", + "attributes": { + "x": 47.669666, + "y": -96.23158, + "size": 15, + "label": "Isabeau", + "color": "#B30000" + } + }, + { + "key": "15.0", + "attributes": { + "x": 20.945133, + "y": -118.35298, + "size": 15, + "label": "Gervais", + "color": "#B30000" + } + }, + { + "key": "16.0", + "attributes": { + "x": 232.50653, + "y": -165.75543, + "size": 21.857143, + "label": "Tholomyes", + "color": "#D44028" + } + }, + { + "key": "17.0", + "attributes": { + "x": 322.50223, + "y": -210.94756, + "size": 20.142857, + "label": "Listolier", + "color": "#CC301E" + } + }, + { + "key": "18.0", + "attributes": { + "x": 322.0389, + "y": -162.5361, + "size": 20.142857, + "label": "Fameuil", + "color": "#CC301E" + } + }, + { + "key": "19.0", + "attributes": { + "x": 282.84045, + "y": -234.37758, + "size": 20.142857, + "label": "Blacheville", + "color": "#CC301E" + } + }, + { + "key": "20.0", + "attributes": { + "x": 282.14212, + "y": -141.3707, + "size": 20.142857, + "label": "Favourite", + "color": "#CC301E" + } + }, + { + "key": "21.0", + "attributes": { + "x": 279.24896, + "y": -186.69917, + "size": 20.142857, + "label": "Dahlia", + "color": "#CC301E" + } + }, + { + "key": "22.0", + "attributes": { + "x": 240.49136, + "y": -212.45226, + "size": 20.142857, + "label": "Zephine", + "color": "#CC301E" + } + }, + { + "key": "23.0", + "attributes": { + "x": 185.86234, + "y": -128.47615, + "size": 27, + "label": "Fantine", + "color": "#ED7047" + } + }, + { + "key": "24.0", + "attributes": { + "x": -15.730793, + "y": 46.37429, + "size": 23.57143, + "label": "MmeThenardier", + "color": "#DC5032" + } + }, + { + "key": "25.0", + "attributes": { + "x": 3.6068764, + "y": 98.60965, + "size": 27.857143, + "label": "Thenardier", + "color": "#F1784C" + } + }, + { + "key": "26.0", + "attributes": { + "x": -69.92912, + "y": -15.777599, + "size": 23.57143, + "label": "Cosette", + "color": "#DC5032" + } + }, + { + "key": "27.0", + "attributes": { + "x": 54.198936, + "y": 49.115128, + "size": 28.714287, + "label": "Javert", + "color": "#F58051" + } + }, + { + "key": "28.0", + "attributes": { + "x": 58.138313, + "y": -56.714897, + "size": 17.571428, + "label": "Fauchelevent", + "color": "#BF180F" + } + }, + { + "key": "29.0", + "attributes": { + "x": 97.39532, + "y": -157.35661, + "size": 21, + "label": "Bamatabois", + "color": "#D03823" + } + }, + { + "key": "30.0", + "attributes": { + "x": 157.66608, + "y": -88.86034, + "size": 15.857142, + "label": "Perpetue", + "color": "#B70805" + } + }, + { + "key": "31.0", + "attributes": { + "x": 130.24326, + "y": -62.113045, + "size": 17.571428, + "label": "Simplice", + "color": "#BF180F" + } + }, + { + "key": "32.0", + "attributes": { + "x": -31.725157, + "y": -124.8531, + "size": 15, + "label": "Scaufflaire", + "color": "#B30000" + } + }, + { + "key": "33.0", + "attributes": { + "x": 45.4282, + "y": -2.6807823, + "size": 15.857142, + "label": "Woman1", + "color": "#B70805" + } + }, + { + "key": "34.0", + "attributes": { + "x": -2.146402, + "y": -152.7878, + "size": 19.285715, + "label": "Judge", + "color": "#C72819" + } + }, + { + "key": "35.0", + "attributes": { + "x": 54.183117, + "y": -142.10239, + "size": 19.285715, + "label": "Champmathieu", + "color": "#C72819" + } + }, + { + "key": "36.0", + "attributes": { + "x": -21.096437, + "y": -192.47128, + "size": 19.285715, + "label": "Brevet", + "color": "#C72819" + } + }, + { + "key": "37.0", + "attributes": { + "x": 56.919018, + "y": -184.99847, + "size": 19.285715, + "label": "Chenildieu", + "color": "#C72819" + } + }, + { + "key": "38.0", + "attributes": { + "x": 21.456747, + "y": -211.19899, + "size": 19.285715, + "label": "Cochepaille", + "color": "#C72819" + } + }, + { + "key": "39.0", + "attributes": { + "x": -69.42261, + "y": 66.22773, + "size": 16.714285, + "label": "Pontmercy", + "color": "#BB100A" + } + }, + { + "key": "40.0", + "attributes": { + "x": 52.13746, + "y": 97.863976, + "size": 15, + "label": "Boulatruelle", + "color": "#B30000" + } + }, + { + "key": "41.0", + "attributes": { + "x": -84.15585, + "y": 140.50175, + "size": 23.57143, + "label": "Eponine", + "color": "#DC5032" + } + }, + { + "key": "42.0", + "attributes": { + "x": -47.696083, + "y": 112.90357, + "size": 16.714285, + "label": "Anzelma", + "color": "#BB100A" + } + }, + { + "key": "43.0", + "attributes": { + "x": 10.037987, + "y": 7.8234367, + "size": 16.714285, + "label": "Woman2", + "color": "#BB100A" + } + }, + { + "key": "44.0", + "attributes": { + "x": 82.99555, + "y": -87.651726, + "size": 15.857142, + "label": "MotherInnocent", + "color": "#B70805" + } + }, + { + "key": "45.0", + "attributes": { + "x": 94.93769, + "y": -47.799778, + "size": 15, + "label": "Gribier", + "color": "#B30000" + } + }, + { + "key": "46.0", + "attributes": { + "x": -293.23438, + "y": -146.10257, + "size": 15, + "label": "Jondrette", + "color": "#B30000" + } + }, + { + "key": "47.0", + "attributes": { + "x": -294.94247, + "y": -108.07895, + "size": 15.857142, + "label": "MmeBurgon", + "color": "#B70805" + } + }, + { + "key": "48.0", + "attributes": { + "x": -215.57619, + "y": 34.40003, + "size": 33, + "label": "Gavroche", + "color": "#FCA072" + } + }, + { + "key": "49.0", + "attributes": { + "x": -119.18742, + "y": -17.39732, + "size": 20.142857, + "label": "Gillenormand", + "color": "#CC301E" + } + }, + { + "key": "50.0", + "attributes": { + "x": -57.473045, + "y": 29.63873, + "size": 15.857142, + "label": "Magnon", + "color": "#B70805" + } + }, + { + "key": "51.0", + "attributes": { + "x": -93.255005, + "y": -60.657784, + "size": 20.142857, + "label": "MlleGillenormand", + "color": "#CC301E" + } + }, + { + "key": "52.0", + "attributes": { + "x": -93.764046, + "y": 22.565668, + "size": 15.857142, + "label": "MmePontmercy", + "color": "#B70805" + } + }, + { + "key": "53.0", + "attributes": { + "x": -132.14008, + "y": -66.85538, + "size": 15, + "label": "MlleVaubois", + "color": "#B30000" + } + }, + { + "key": "54.0", + "attributes": { + "x": -95.75337, + "y": -102.71505, + "size": 17.571428, + "label": "LtGillenormand", + "color": "#BF180F" + } + }, + { + "key": "55.0", + "attributes": { + "x": -142.15263, + "y": 36.388676, + "size": 30.428574, + "label": "Marius", + "color": "#FC8F5C" + } + }, + { + "key": "56.0", + "attributes": { + "x": -160.2533, + "y": -24.29684, + "size": 15.857142, + "label": "BaronessT", + "color": "#B70805" + } + }, + { + "key": "57.0", + "attributes": { + "x": -267.16248, + "y": 196.98003, + "size": 23.57143, + "label": "Mabeuf", + "color": "#DC5032" + } + }, + { + "key": "58.0", + "attributes": { + "x": -190.88988, + "y": 96.44671, + "size": 27, + "label": "Enjolras", + "color": "#ED7047" + } + }, + { + "key": "59.0", + "attributes": { + "x": -222.5417, + "y": 144.66484, + "size": 23.57143, + "label": "Combeferre", + "color": "#DC5032" + } + }, + { + "key": "60.0", + "attributes": { + "x": -325.61102, + "y": 166.71417, + "size": 21.857143, + "label": "Prouvaire", + "color": "#D44028" + } + }, + { + "key": "61.0", + "attributes": { + "x": -276.3468, + "y": 145.79153, + "size": 23.57143, + "label": "Feuilly", + "color": "#DC5032" + } + }, + { + "key": "62.0", + "attributes": { + "x": -251.45561, + "y": 97.83937, + "size": 25.285713, + "label": "Courfeyrac", + "color": "#E5603D" + } + }, + { + "key": "63.0", + "attributes": { + "x": -318.40936, + "y": 114.202415, + "size": 24.428572, + "label": "Bahorel", + "color": "#E05837" + } + }, + { + "key": "64.0", + "attributes": { + "x": -278.9682, + "y": 45.932438, + "size": 25.285713, + "label": "Bossuet", + "color": "#E5603D" + } + }, + { + "key": "65.0", + "attributes": { + "x": -333.04984, + "y": 62.438156, + "size": 24.428572, + "label": "Joly", + "color": "#E05837" + } + }, + { + "key": "66.0", + "attributes": { + "x": -370.2446, + "y": 101.73884, + "size": 22.714287, + "label": "Grantaire", + "color": "#D8482D" + } + }, + { + "key": "67.0", + "attributes": { + "x": -253.54378, + "y": 237.9443, + "size": 15, + "label": "MotherPlutarch", + "color": "#B30000" + } + }, + { + "key": "68.0", + "attributes": { + "x": -16.550194, + "y": 152.69055, + "size": 22.714287, + "label": "Gueulemer", + "color": "#D8482D" + } + }, + { + "key": "69.0", + "attributes": { + "x": 35.653145, + "y": 144.49445, + "size": 22.714287, + "label": "Babet", + "color": "#D8482D" + } + }, + { + "key": "70.0", + "attributes": { + "x": 58.97649, + "y": 188.46011, + "size": 22.714287, + "label": "Claquesous", + "color": "#D8482D" + } + }, + { + "key": "71.0", + "attributes": { + "x": -2.9325058, + "y": 200.66508, + "size": 21.857143, + "label": "Montparnasse", + "color": "#D44028" + } + }, + { + "key": "72.0", + "attributes": { + "x": -30.056648, + "y": 3.5053203, + "size": 16.714285, + "label": "Toussaint", + "color": "#BB100A" + } + }, + { + "key": "73.0", + "attributes": { + "x": -244.859, + "y": -11.3161335, + "size": 15.857142, + "label": "Child1", + "color": "#B70805" + } + }, + { + "key": "74.0", + "attributes": { + "x": -280.33203, + "y": -1.466383, + "size": 15.857142, + "label": "Child2", + "color": "#B70805" + } + }, + { + "key": "75.0", + "attributes": { + "x": -56.819256, + "y": 182.0544, + "size": 20.142857, + "label": "Brujon", + "color": "#CC301E" + } + }, + { + "key": "76.0", + "attributes": { + "x": -382.06223, + "y": 47.045475, + "size": 20.142857, + "label": "MmeHucheloup", + "color": "#CC301E" + } + } + ], + "edges": [ + { + "key": "0", + "source": "1.0", + "target": "0.0", + "attributes": { + "size": 1 + } + }, + { + "key": "1", + "source": "2.0", + "target": "0.0", + "attributes": { + "size": 8 + } + }, + { + "key": "2", + "source": "3.0", + "target": "0.0", + "attributes": { + "size": 10 + } + }, + { + "key": "3", + "source": "3.0", + "target": "2.0", + "attributes": { + "size": 6 + } + }, + { + "key": "4", + "source": "4.0", + "target": "0.0", + "attributes": { + "size": 1 + } + }, + { + "key": "5", + "source": "5.0", + "target": "0.0", + "attributes": { + "size": 1 + } + }, + { + "key": "6", + "source": "6.0", + "target": "0.0", + "attributes": { + "size": 1 + } + }, + { + "key": "7", + "source": "7.0", + "target": "0.0", + "attributes": { + "size": 1 + } + }, + { + "key": "8", + "source": "8.0", + "target": "0.0", + "attributes": { + "size": 2 + } + }, + { + "key": "9", + "source": "9.0", + "target": "0.0", + "attributes": { + "size": 1 + } + }, + { + "key": "13", + "source": "11.0", + "target": "0.0", + "attributes": { + "size": 5 + } + }, + { + "key": "12", + "source": "11.0", + "target": "2.0", + "attributes": { + "size": 3 + } + }, + { + "key": "11", + "source": "11.0", + "target": "3.0", + "attributes": { + "size": 3 + } + }, + { + "key": "10", + "source": "11.0", + "target": "10.0", + "attributes": { + "size": 1 + } + }, + { + "key": "14", + "source": "12.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "15", + "source": "13.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "16", + "source": "14.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "17", + "source": "15.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "18", + "source": "17.0", + "target": "16.0", + "attributes": { + "size": 4 + } + }, + { + "key": "19", + "source": "18.0", + "target": "16.0", + "attributes": { + "size": 4 + } + }, + { + "key": "20", + "source": "18.0", + "target": "17.0", + "attributes": { + "size": 4 + } + }, + { + "key": "21", + "source": "19.0", + "target": "16.0", + "attributes": { + "size": 4 + } + }, + { + "key": "22", + "source": "19.0", + "target": "17.0", + "attributes": { + "size": 4 + } + }, + { + "key": "23", + "source": "19.0", + "target": "18.0", + "attributes": { + "size": 4 + } + }, + { + "key": "24", + "source": "20.0", + "target": "16.0", + "attributes": { + "size": 3 + } + }, + { + "key": "25", + "source": "20.0", + "target": "17.0", + "attributes": { + "size": 3 + } + }, + { + "key": "26", + "source": "20.0", + "target": "18.0", + "attributes": { + "size": 3 + } + }, + { + "key": "27", + "source": "20.0", + "target": "19.0", + "attributes": { + "size": 4 + } + }, + { + "key": "28", + "source": "21.0", + "target": "16.0", + "attributes": { + "size": 3 + } + }, + { + "key": "29", + "source": "21.0", + "target": "17.0", + "attributes": { + "size": 3 + } + }, + { + "key": "30", + "source": "21.0", + "target": "18.0", + "attributes": { + "size": 3 + } + }, + { + "key": "31", + "source": "21.0", + "target": "19.0", + "attributes": { + "size": 3 + } + }, + { + "key": "32", + "source": "21.0", + "target": "20.0", + "attributes": { + "size": 5 + } + }, + { + "key": "33", + "source": "22.0", + "target": "16.0", + "attributes": { + "size": 3 + } + }, + { + "key": "34", + "source": "22.0", + "target": "17.0", + "attributes": { + "size": 3 + } + }, + { + "key": "35", + "source": "22.0", + "target": "18.0", + "attributes": { + "size": 3 + } + }, + { + "key": "36", + "source": "22.0", + "target": "19.0", + "attributes": { + "size": 3 + } + }, + { + "key": "37", + "source": "22.0", + "target": "20.0", + "attributes": { + "size": 4 + } + }, + { + "key": "38", + "source": "22.0", + "target": "21.0", + "attributes": { + "size": 4 + } + }, + { + "key": "47", + "source": "23.0", + "target": "11.0", + "attributes": { + "size": 9 + } + }, + { + "key": "46", + "source": "23.0", + "target": "12.0", + "attributes": { + "size": 2 + } + }, + { + "key": "39", + "source": "23.0", + "target": "16.0", + "attributes": { + "size": 3 + } + }, + { + "key": "40", + "source": "23.0", + "target": "17.0", + "attributes": { + "size": 3 + } + }, + { + "key": "41", + "source": "23.0", + "target": "18.0", + "attributes": { + "size": 3 + } + }, + { + "key": "42", + "source": "23.0", + "target": "19.0", + "attributes": { + "size": 3 + } + }, + { + "key": "43", + "source": "23.0", + "target": "20.0", + "attributes": { + "size": 4 + } + }, + { + "key": "44", + "source": "23.0", + "target": "21.0", + "attributes": { + "size": 4 + } + }, + { + "key": "45", + "source": "23.0", + "target": "22.0", + "attributes": { + "size": 4 + } + }, + { + "key": "49", + "source": "24.0", + "target": "11.0", + "attributes": { + "size": 7 + } + }, + { + "key": "48", + "source": "24.0", + "target": "23.0", + "attributes": { + "size": 2 + } + }, + { + "key": "52", + "source": "25.0", + "target": "11.0", + "attributes": { + "size": 12 + } + }, + { + "key": "51", + "source": "25.0", + "target": "23.0", + "attributes": { + "size": 1 + } + }, + { + "key": "50", + "source": "25.0", + "target": "24.0", + "attributes": { + "size": 13 + } + }, + { + "key": "54", + "source": "26.0", + "target": "11.0", + "attributes": { + "size": 31 + } + }, + { + "key": "55", + "source": "26.0", + "target": "16.0", + "attributes": { + "size": 1 + } + }, + { + "key": "53", + "source": "26.0", + "target": "24.0", + "attributes": { + "size": 4 + } + }, + { + "key": "56", + "source": "26.0", + "target": "25.0", + "attributes": { + "size": 1 + } + }, + { + "key": "57", + "source": "27.0", + "target": "11.0", + "attributes": { + "size": 17 + } + }, + { + "key": "58", + "source": "27.0", + "target": "23.0", + "attributes": { + "size": 5 + } + }, + { + "key": "60", + "source": "27.0", + "target": "24.0", + "attributes": { + "size": 1 + } + }, + { + "key": "59", + "source": "27.0", + "target": "25.0", + "attributes": { + "size": 5 + } + }, + { + "key": "61", + "source": "27.0", + "target": "26.0", + "attributes": { + "size": 1 + } + }, + { + "key": "62", + "source": "28.0", + "target": "11.0", + "attributes": { + "size": 8 + } + }, + { + "key": "63", + "source": "28.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "66", + "source": "29.0", + "target": "11.0", + "attributes": { + "size": 2 + } + }, + { + "key": "64", + "source": "29.0", + "target": "23.0", + "attributes": { + "size": 1 + } + }, + { + "key": "65", + "source": "29.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "67", + "source": "30.0", + "target": "23.0", + "attributes": { + "size": 1 + } + }, + { + "key": "69", + "source": "31.0", + "target": "11.0", + "attributes": { + "size": 3 + } + }, + { + "key": "70", + "source": "31.0", + "target": "23.0", + "attributes": { + "size": 2 + } + }, + { + "key": "71", + "source": "31.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "68", + "source": "31.0", + "target": "30.0", + "attributes": { + "size": 2 + } + }, + { + "key": "72", + "source": "32.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "73", + "source": "33.0", + "target": "11.0", + "attributes": { + "size": 2 + } + }, + { + "key": "74", + "source": "33.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "75", + "source": "34.0", + "target": "11.0", + "attributes": { + "size": 3 + } + }, + { + "key": "76", + "source": "34.0", + "target": "29.0", + "attributes": { + "size": 2 + } + }, + { + "key": "77", + "source": "35.0", + "target": "11.0", + "attributes": { + "size": 3 + } + }, + { + "key": "79", + "source": "35.0", + "target": "29.0", + "attributes": { + "size": 2 + } + }, + { + "key": "78", + "source": "35.0", + "target": "34.0", + "attributes": { + "size": 3 + } + }, + { + "key": "82", + "source": "36.0", + "target": "11.0", + "attributes": { + "size": 2 + } + }, + { + "key": "83", + "source": "36.0", + "target": "29.0", + "attributes": { + "size": 1 + } + }, + { + "key": "80", + "source": "36.0", + "target": "34.0", + "attributes": { + "size": 2 + } + }, + { + "key": "81", + "source": "36.0", + "target": "35.0", + "attributes": { + "size": 2 + } + }, + { + "key": "87", + "source": "37.0", + "target": "11.0", + "attributes": { + "size": 2 + } + }, + { + "key": "88", + "source": "37.0", + "target": "29.0", + "attributes": { + "size": 1 + } + }, + { + "key": "84", + "source": "37.0", + "target": "34.0", + "attributes": { + "size": 2 + } + }, + { + "key": "85", + "source": "37.0", + "target": "35.0", + "attributes": { + "size": 2 + } + }, + { + "key": "86", + "source": "37.0", + "target": "36.0", + "attributes": { + "size": 2 + } + }, + { + "key": "93", + "source": "38.0", + "target": "11.0", + "attributes": { + "size": 2 + } + }, + { + "key": "94", + "source": "38.0", + "target": "29.0", + "attributes": { + "size": 1 + } + }, + { + "key": "89", + "source": "38.0", + "target": "34.0", + "attributes": { + "size": 2 + } + }, + { + "key": "90", + "source": "38.0", + "target": "35.0", + "attributes": { + "size": 2 + } + }, + { + "key": "91", + "source": "38.0", + "target": "36.0", + "attributes": { + "size": 2 + } + }, + { + "key": "92", + "source": "38.0", + "target": "37.0", + "attributes": { + "size": 2 + } + }, + { + "key": "95", + "source": "39.0", + "target": "25.0", + "attributes": { + "size": 1 + } + }, + { + "key": "96", + "source": "40.0", + "target": "25.0", + "attributes": { + "size": 1 + } + }, + { + "key": "97", + "source": "41.0", + "target": "24.0", + "attributes": { + "size": 2 + } + }, + { + "key": "98", + "source": "41.0", + "target": "25.0", + "attributes": { + "size": 3 + } + }, + { + "key": "101", + "source": "42.0", + "target": "24.0", + "attributes": { + "size": 1 + } + }, + { + "key": "100", + "source": "42.0", + "target": "25.0", + "attributes": { + "size": 2 + } + }, + { + "key": "99", + "source": "42.0", + "target": "41.0", + "attributes": { + "size": 2 + } + }, + { + "key": "102", + "source": "43.0", + "target": "11.0", + "attributes": { + "size": 3 + } + }, + { + "key": "103", + "source": "43.0", + "target": "26.0", + "attributes": { + "size": 1 + } + }, + { + "key": "104", + "source": "43.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "106", + "source": "44.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "105", + "source": "44.0", + "target": "28.0", + "attributes": { + "size": 3 + } + }, + { + "key": "107", + "source": "45.0", + "target": "28.0", + "attributes": { + "size": 2 + } + }, + { + "key": "108", + "source": "47.0", + "target": "46.0", + "attributes": { + "size": 1 + } + }, + { + "key": "112", + "source": "48.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "110", + "source": "48.0", + "target": "25.0", + "attributes": { + "size": 1 + } + }, + { + "key": "111", + "source": "48.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "109", + "source": "48.0", + "target": "47.0", + "attributes": { + "size": 2 + } + }, + { + "key": "114", + "source": "49.0", + "target": "11.0", + "attributes": { + "size": 2 + } + }, + { + "key": "113", + "source": "49.0", + "target": "26.0", + "attributes": { + "size": 3 + } + }, + { + "key": "116", + "source": "50.0", + "target": "24.0", + "attributes": { + "size": 1 + } + }, + { + "key": "115", + "source": "50.0", + "target": "49.0", + "attributes": { + "size": 1 + } + }, + { + "key": "119", + "source": "51.0", + "target": "11.0", + "attributes": { + "size": 2 + } + }, + { + "key": "118", + "source": "51.0", + "target": "26.0", + "attributes": { + "size": 2 + } + }, + { + "key": "117", + "source": "51.0", + "target": "49.0", + "attributes": { + "size": 9 + } + }, + { + "key": "121", + "source": "52.0", + "target": "39.0", + "attributes": { + "size": 1 + } + }, + { + "key": "120", + "source": "52.0", + "target": "51.0", + "attributes": { + "size": 1 + } + }, + { + "key": "122", + "source": "53.0", + "target": "51.0", + "attributes": { + "size": 1 + } + }, + { + "key": "125", + "source": "54.0", + "target": "26.0", + "attributes": { + "size": 1 + } + }, + { + "key": "124", + "source": "54.0", + "target": "49.0", + "attributes": { + "size": 1 + } + }, + { + "key": "123", + "source": "54.0", + "target": "51.0", + "attributes": { + "size": 2 + } + }, + { + "key": "131", + "source": "55.0", + "target": "11.0", + "attributes": { + "size": 19 + } + }, + { + "key": "132", + "source": "55.0", + "target": "16.0", + "attributes": { + "size": 1 + } + }, + { + "key": "133", + "source": "55.0", + "target": "25.0", + "attributes": { + "size": 2 + } + }, + { + "key": "130", + "source": "55.0", + "target": "26.0", + "attributes": { + "size": 21 + } + }, + { + "key": "128", + "source": "55.0", + "target": "39.0", + "attributes": { + "size": 1 + } + }, + { + "key": "134", + "source": "55.0", + "target": "41.0", + "attributes": { + "size": 5 + } + }, + { + "key": "135", + "source": "55.0", + "target": "48.0", + "attributes": { + "size": 4 + } + }, + { + "key": "127", + "source": "55.0", + "target": "49.0", + "attributes": { + "size": 12 + } + }, + { + "key": "126", + "source": "55.0", + "target": "51.0", + "attributes": { + "size": 6 + } + }, + { + "key": "129", + "source": "55.0", + "target": "54.0", + "attributes": { + "size": 1 + } + }, + { + "key": "136", + "source": "56.0", + "target": "49.0", + "attributes": { + "size": 1 + } + }, + { + "key": "137", + "source": "56.0", + "target": "55.0", + "attributes": { + "size": 1 + } + }, + { + "key": "139", + "source": "57.0", + "target": "41.0", + "attributes": { + "size": 1 + } + }, + { + "key": "140", + "source": "57.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "138", + "source": "57.0", + "target": "55.0", + "attributes": { + "size": 1 + } + }, + { + "key": "145", + "source": "58.0", + "target": "11.0", + "attributes": { + "size": 4 + } + }, + { + "key": "143", + "source": "58.0", + "target": "27.0", + "attributes": { + "size": 6 + } + }, + { + "key": "142", + "source": "58.0", + "target": "48.0", + "attributes": { + "size": 7 + } + }, + { + "key": "141", + "source": "58.0", + "target": "55.0", + "attributes": { + "size": 7 + } + }, + { + "key": "144", + "source": "58.0", + "target": "57.0", + "attributes": { + "size": 1 + } + }, + { + "key": "148", + "source": "59.0", + "target": "48.0", + "attributes": { + "size": 6 + } + }, + { + "key": "147", + "source": "59.0", + "target": "55.0", + "attributes": { + "size": 5 + } + }, + { + "key": "149", + "source": "59.0", + "target": "57.0", + "attributes": { + "size": 2 + } + }, + { + "key": "146", + "source": "59.0", + "target": "58.0", + "attributes": { + "size": 15 + } + }, + { + "key": "150", + "source": "60.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "151", + "source": "60.0", + "target": "58.0", + "attributes": { + "size": 4 + } + }, + { + "key": "152", + "source": "60.0", + "target": "59.0", + "attributes": { + "size": 2 + } + }, + { + "key": "153", + "source": "61.0", + "target": "48.0", + "attributes": { + "size": 2 + } + }, + { + "key": "158", + "source": "61.0", + "target": "55.0", + "attributes": { + "size": 1 + } + }, + { + "key": "157", + "source": "61.0", + "target": "57.0", + "attributes": { + "size": 1 + } + }, + { + "key": "154", + "source": "61.0", + "target": "58.0", + "attributes": { + "size": 6 + } + }, + { + "key": "156", + "source": "61.0", + "target": "59.0", + "attributes": { + "size": 5 + } + }, + { + "key": "155", + "source": "61.0", + "target": "60.0", + "attributes": { + "size": 2 + } + }, + { + "key": "164", + "source": "62.0", + "target": "41.0", + "attributes": { + "size": 1 + } + }, + { + "key": "162", + "source": "62.0", + "target": "48.0", + "attributes": { + "size": 7 + } + }, + { + "key": "159", + "source": "62.0", + "target": "55.0", + "attributes": { + "size": 9 + } + }, + { + "key": "163", + "source": "62.0", + "target": "57.0", + "attributes": { + "size": 2 + } + }, + { + "key": "160", + "source": "62.0", + "target": "58.0", + "attributes": { + "size": 17 + } + }, + { + "key": "161", + "source": "62.0", + "target": "59.0", + "attributes": { + "size": 13 + } + }, + { + "key": "166", + "source": "62.0", + "target": "60.0", + "attributes": { + "size": 3 + } + }, + { + "key": "165", + "source": "62.0", + "target": "61.0", + "attributes": { + "size": 6 + } + }, + { + "key": "168", + "source": "63.0", + "target": "48.0", + "attributes": { + "size": 5 + } + }, + { + "key": "174", + "source": "63.0", + "target": "55.0", + "attributes": { + "size": 1 + } + }, + { + "key": "170", + "source": "63.0", + "target": "57.0", + "attributes": { + "size": 2 + } + }, + { + "key": "171", + "source": "63.0", + "target": "58.0", + "attributes": { + "size": 4 + } + }, + { + "key": "167", + "source": "63.0", + "target": "59.0", + "attributes": { + "size": 5 + } + }, + { + "key": "173", + "source": "63.0", + "target": "60.0", + "attributes": { + "size": 2 + } + }, + { + "key": "172", + "source": "63.0", + "target": "61.0", + "attributes": { + "size": 3 + } + }, + { + "key": "169", + "source": "63.0", + "target": "62.0", + "attributes": { + "size": 6 + } + }, + { + "key": "184", + "source": "64.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "177", + "source": "64.0", + "target": "48.0", + "attributes": { + "size": 5 + } + }, + { + "key": "175", + "source": "64.0", + "target": "55.0", + "attributes": { + "size": 5 + } + }, + { + "key": "183", + "source": "64.0", + "target": "57.0", + "attributes": { + "size": 1 + } + }, + { + "key": "179", + "source": "64.0", + "target": "58.0", + "attributes": { + "size": 10 + } + }, + { + "key": "182", + "source": "64.0", + "target": "59.0", + "attributes": { + "size": 9 + } + }, + { + "key": "181", + "source": "64.0", + "target": "60.0", + "attributes": { + "size": 2 + } + }, + { + "key": "180", + "source": "64.0", + "target": "61.0", + "attributes": { + "size": 6 + } + }, + { + "key": "176", + "source": "64.0", + "target": "62.0", + "attributes": { + "size": 12 + } + }, + { + "key": "178", + "source": "64.0", + "target": "63.0", + "attributes": { + "size": 4 + } + }, + { + "key": "187", + "source": "65.0", + "target": "48.0", + "attributes": { + "size": 3 + } + }, + { + "key": "194", + "source": "65.0", + "target": "55.0", + "attributes": { + "size": 2 + } + }, + { + "key": "193", + "source": "65.0", + "target": "57.0", + "attributes": { + "size": 1 + } + }, + { + "key": "189", + "source": "65.0", + "target": "58.0", + "attributes": { + "size": 5 + } + }, + { + "key": "192", + "source": "65.0", + "target": "59.0", + "attributes": { + "size": 5 + } + }, + { + "key": "191", + "source": "65.0", + "target": "60.0", + "attributes": { + "size": 2 + } + }, + { + "key": "190", + "source": "65.0", + "target": "61.0", + "attributes": { + "size": 5 + } + }, + { + "key": "188", + "source": "65.0", + "target": "62.0", + "attributes": { + "size": 5 + } + }, + { + "key": "185", + "source": "65.0", + "target": "63.0", + "attributes": { + "size": 5 + } + }, + { + "key": "186", + "source": "65.0", + "target": "64.0", + "attributes": { + "size": 7 + } + }, + { + "key": "200", + "source": "66.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "196", + "source": "66.0", + "target": "58.0", + "attributes": { + "size": 3 + } + }, + { + "key": "197", + "source": "66.0", + "target": "59.0", + "attributes": { + "size": 1 + } + }, + { + "key": "203", + "source": "66.0", + "target": "60.0", + "attributes": { + "size": 1 + } + }, + { + "key": "202", + "source": "66.0", + "target": "61.0", + "attributes": { + "size": 1 + } + }, + { + "key": "198", + "source": "66.0", + "target": "62.0", + "attributes": { + "size": 2 + } + }, + { + "key": "201", + "source": "66.0", + "target": "63.0", + "attributes": { + "size": 1 + } + }, + { + "key": "195", + "source": "66.0", + "target": "64.0", + "attributes": { + "size": 3 + } + }, + { + "key": "199", + "source": "66.0", + "target": "65.0", + "attributes": { + "size": 2 + } + }, + { + "key": "204", + "source": "67.0", + "target": "57.0", + "attributes": { + "size": 3 + } + }, + { + "key": "206", + "source": "68.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "207", + "source": "68.0", + "target": "24.0", + "attributes": { + "size": 1 + } + }, + { + "key": "205", + "source": "68.0", + "target": "25.0", + "attributes": { + "size": 5 + } + }, + { + "key": "208", + "source": "68.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "210", + "source": "68.0", + "target": "41.0", + "attributes": { + "size": 1 + } + }, + { + "key": "209", + "source": "68.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "213", + "source": "69.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "214", + "source": "69.0", + "target": "24.0", + "attributes": { + "size": 1 + } + }, + { + "key": "211", + "source": "69.0", + "target": "25.0", + "attributes": { + "size": 6 + } + }, + { + "key": "215", + "source": "69.0", + "target": "27.0", + "attributes": { + "size": 2 + } + }, + { + "key": "217", + "source": "69.0", + "target": "41.0", + "attributes": { + "size": 1 + } + }, + { + "key": "216", + "source": "69.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "212", + "source": "69.0", + "target": "68.0", + "attributes": { + "size": 6 + } + }, + { + "key": "221", + "source": "70.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "222", + "source": "70.0", + "target": "24.0", + "attributes": { + "size": 1 + } + }, + { + "key": "218", + "source": "70.0", + "target": "25.0", + "attributes": { + "size": 4 + } + }, + { + "key": "223", + "source": "70.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "224", + "source": "70.0", + "target": "41.0", + "attributes": { + "size": 1 + } + }, + { + "key": "225", + "source": "70.0", + "target": "58.0", + "attributes": { + "size": 1 + } + }, + { + "key": "220", + "source": "70.0", + "target": "68.0", + "attributes": { + "size": 4 + } + }, + { + "key": "219", + "source": "70.0", + "target": "69.0", + "attributes": { + "size": 4 + } + }, + { + "key": "230", + "source": "71.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "233", + "source": "71.0", + "target": "25.0", + "attributes": { + "size": 1 + } + }, + { + "key": "226", + "source": "71.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "232", + "source": "71.0", + "target": "41.0", + "attributes": { + "size": 1 + } + }, + { + "key": "231", + "source": "71.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "228", + "source": "71.0", + "target": "68.0", + "attributes": { + "size": 2 + } + }, + { + "key": "227", + "source": "71.0", + "target": "69.0", + "attributes": { + "size": 2 + } + }, + { + "key": "229", + "source": "71.0", + "target": "70.0", + "attributes": { + "size": 2 + } + }, + { + "key": "236", + "source": "72.0", + "target": "11.0", + "attributes": { + "size": 1 + } + }, + { + "key": "234", + "source": "72.0", + "target": "26.0", + "attributes": { + "size": 2 + } + }, + { + "key": "235", + "source": "72.0", + "target": "27.0", + "attributes": { + "size": 1 + } + }, + { + "key": "237", + "source": "73.0", + "target": "48.0", + "attributes": { + "size": 2 + } + }, + { + "key": "238", + "source": "74.0", + "target": "48.0", + "attributes": { + "size": 2 + } + }, + { + "key": "239", + "source": "74.0", + "target": "73.0", + "attributes": { + "size": 3 + } + }, + { + "key": "242", + "source": "75.0", + "target": "25.0", + "attributes": { + "size": 3 + } + }, + { + "key": "244", + "source": "75.0", + "target": "41.0", + "attributes": { + "size": 1 + } + }, + { + "key": "243", + "source": "75.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "241", + "source": "75.0", + "target": "68.0", + "attributes": { + "size": 3 + } + }, + { + "key": "240", + "source": "75.0", + "target": "69.0", + "attributes": { + "size": 3 + } + }, + { + "key": "245", + "source": "75.0", + "target": "70.0", + "attributes": { + "size": 1 + } + }, + { + "key": "246", + "source": "75.0", + "target": "71.0", + "attributes": { + "size": 1 + } + }, + { + "key": "252", + "source": "76.0", + "target": "48.0", + "attributes": { + "size": 1 + } + }, + { + "key": "253", + "source": "76.0", + "target": "58.0", + "attributes": { + "size": 1 + } + }, + { + "key": "251", + "source": "76.0", + "target": "62.0", + "attributes": { + "size": 1 + } + }, + { + "key": "250", + "source": "76.0", + "target": "63.0", + "attributes": { + "size": 1 + } + }, + { + "key": "247", + "source": "76.0", + "target": "64.0", + "attributes": { + "size": 1 + } + }, + { + "key": "248", + "source": "76.0", + "target": "65.0", + "attributes": { + "size": 1 + } + }, + { + "key": "249", + "source": "76.0", + "target": "66.0", + "attributes": { + "size": 1 + } + } + ] +} diff --git a/sg-frontend/src/routes/index.ts b/sg-frontend/src/routes/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..20df61bb402335b1f00d54a281ef177791759e0f --- /dev/null +++ b/sg-frontend/src/routes/index.ts @@ -0,0 +1,152 @@ +/** + * This example showcases sigma's reducers, which aim to facilitate dynamically + * changing the appearance of nodes and edges, without actually changing the + * main graphology data. + */ + +import Sigma from "sigma"; +import { Coordinates, EdgeDisplayData, NodeDisplayData } from "sigma/types"; +import Graph from "graphology"; + +import data from "./data.json"; + +// Retrieve some useful DOM elements: +const container = document.getElementById("sigma-container") as HTMLElement; +const searchInput = document.getElementById("search-input") as HTMLInputElement; +const searchSuggestions = document.getElementById("suggestions") as HTMLDataListElement; + +// Instantiate sigma: +const graph = new Graph(); +graph.import(data); +const renderer = new Sigma(graph, container); + +// Type and declare internal state: +interface State { + hoveredNode?: string; + searchQuery: string; + + // State derived from query: + selectedNode?: string; + suggestions?: Set<string>; + + // State derived from hovered node: + hoveredNeighbors?: Set<string>; +} +const state: State = { searchQuery: "" }; + +// Feed the datalist autocomplete values: +searchSuggestions.innerHTML = graph + .nodes() + .map((node) => `<option value="${graph.getNodeAttribute(node, "label")}"></option>`) + .join("\n"); + +// Actions: +function setSearchQuery(query: string) { + state.searchQuery = query; + + if (searchInput.value !== query) searchInput.value = query; + + if (query) { + const lcQuery = query.toLowerCase(); + const suggestions = graph + .nodes() + .map((n) => ({ id: n, label: graph.getNodeAttribute(n, "label") as string })) + .filter(({ label }) => label.toLowerCase().includes(lcQuery)); + + // If we have a single perfect match, them we remove the suggestions, and + // we consider the user has selected a node through the datalist + // autocomplete: + if (suggestions.length === 1 && suggestions[0].label === query) { + state.selectedNode = suggestions[0].id; + state.suggestions = undefined; + + // Move the camera to center it on the selected node: + const nodePosition = renderer.getNodeDisplayData(state.selectedNode) as Coordinates; + renderer.getCamera().animate(nodePosition, { + duration: 500, + }); + } + // Else, we display the suggestions list: + else { + state.selectedNode = undefined; + state.suggestions = new Set(suggestions.map(({ id }) => id)); + } + } + // If the query is empty, then we reset the selectedNode / suggestions state: + else { + state.selectedNode = undefined; + state.suggestions = undefined; + } + + // Refresh rendering: + renderer.refresh(); +} +function setHoveredNode(node?: string) { + if (node) { + state.hoveredNode = node; + state.hoveredNeighbors = new Set(graph.neighbors(node)); + } else { + state.hoveredNode = undefined; + state.hoveredNeighbors = undefined; + } + + // Refresh rendering: + renderer.refresh(); +} + +// Bind search input interactions: +searchInput.addEventListener("input", () => { + setSearchQuery(searchInput.value || ""); +}); +searchInput.addEventListener("blur", () => { + setSearchQuery(""); +}); + +// Bind graph interactions: +renderer.on("enterNode", ({ node }) => { + setHoveredNode(node); +}); +renderer.on("leaveNode", () => { + setHoveredNode(undefined); +}); + +// Render nodes accordingly to the internal state: +// 1. If a node is selected, it is highlighted +// 2. If there is query, all non-matching nodes are greyed +// 3. If there is a hovered node, all non-neighbor nodes are greyed +renderer.setSetting("nodeReducer", (node, data) => { + const res: Partial<NodeDisplayData> = { ...data }; + + if (state.hoveredNeighbors && !state.hoveredNeighbors.has(node) && state.hoveredNode !== node) { + res.label = ""; + res.color = "#f6f6f6"; + } + + if (state.selectedNode === node) { + res.highlighted = true; + } else if (state.suggestions && !state.suggestions.has(node)) { + res.label = ""; + res.color = "#f6f6f6"; + } + + return res; +}); + +// Render edges accordingly to the internal state: +// 1. If a node is hovered, the edge is hidden if it is not connected to the +// node +// 2. If there is a query, the edge is only visible if it connects two +// suggestions +renderer.setSetting("edgeReducer", (edge, data) => { + const res: Partial<EdgeDisplayData> = { ...data }; + + if (state.hoveredNode && !graph.hasExtremity(edge, state.hoveredNode)) { + res.hidden = true; + } + + if (state.suggestions && (!state.suggestions.has(graph.source(edge)) || !state.suggestions.has(graph.target(edge)))) { + res.hidden = true; + } + + return res; +}); diff --git a/sg-frontend/src/routes/thumbnail.png b/sg-frontend/src/routes/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8a1960afc749f836b24cb36893dcf4916ae72d Binary files /dev/null and b/sg-frontend/src/routes/thumbnail.png differ diff --git a/sg-frontend/tsconfig.json b/sg-frontend/tsconfig.json index d38303196ae8dc159f2a1ba5caa554ebd2df6ad5..6ac0459e3a3c63ebc831712d5dc393b50489d045 100644 --- a/sg-frontend/tsconfig.json +++ b/sg-frontend/tsconfig.json @@ -18,4 +18,4 @@ }, "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], "references": [{ "path": "./tsconfig.node.json" }] -} +} \ No newline at end of file diff --git a/sg-frontend/vite.config.ts b/sg-frontend/vite.config.ts index cff47d77fe4739b726bbd0fd1520891b4447805b..0ece1a173327e1bdb26a76f9f3d8fb21179bdcf7 100644 --- a/sg-frontend/vite.config.ts +++ b/sg-frontend/vite.config.ts @@ -1,6 +1,7 @@ -import { defineConfig } from "vite"; -import { svelte } from "@sveltejs/vite-plugin-svelte"; +import { defineConfig } from 'vite' +import { svelte } from '@sveltejs/vite-plugin-svelte' +// https://vitejs.dev/config/ export default defineConfig({ - plugins: [svelte()], -}); + plugins: [svelte()] +}) \ No newline at end of file