Updated all dependencies. Updated MindGeek to Aylo.

This commit is contained in:
DebaucheryLibrarian 2023-11-30 03:12:47 +01:00
parent 90aa29d2d4
commit 98bf7ea9dd
83 changed files with 9071 additions and 23082 deletions

View File

@ -11,6 +11,7 @@
"no-tabs": "off",
"no-unused-vars": ["error", {"argsIgnorePattern": "^_"}],
"no-console": 0,
"default-param-last": 0,
"template-curly-spacing": "off",
"max-len": 0,
"vue/no-v-html": 0,
@ -18,6 +19,7 @@
"vue/multiline-html-element-content-newline": 0,
"vue/singleline-html-element-content-newline": 0,
"vue/multi-word-component-names": 0,
"vue/no-reserved-component-names": 0,
"no-param-reassign": ["error", {
"props": true,
"ignorePropertyModificationsFor": ["state", "acc"]

2
.nvmrc
View File

@ -1 +1 @@
16.18.0
21.2.0

31544
package-lock.json generated Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

@ -38,120 +38,123 @@
"author": "DebaucheryLibrarian",
"license": "ISC",
"devDependencies": {
"@babel/cli": "^7.12.10",
"@babel/core": "^7.8.4",
"@babel/eslint-parser": "^7.16.0",
"@babel/cli": "^7.23.4",
"@babel/core": "^7.23.3",
"@babel/eslint-parser": "^7.23.3",
"@babel/plugin-proposal-optional-chaining": "^7.8.3",
"@babel/preset-env": "^7.8.4",
"@babel/register": "^7.8.3",
"autoprefixer": "^10.4.0",
"babel-loader": "^8.0.6",
"@babel/preset-env": "^7.23.3",
"@babel/register": "^7.22.15",
"autoprefixer": "^10.4.16",
"babel-loader": "^9.1.3",
"babel-preset-airbnb": "^5.0.0",
"css-loader": "^6.5.0",
"eslint": "^8.1.0",
"eslint-config-airbnb": "^18.2.1",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.18.3",
"eslint-plugin-vue": "^8.0.3",
"eslint-watch": "^7.0.0",
"eslint-webpack-plugin": "^3.1.0",
"mini-css-extract-plugin": "^2.4.3",
"node-sass": "^6.0.1",
"postcss-loader": "^6.2.0",
"css-loader": "^6.8.1",
"eslint": "^8.54.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-plugin-import": "^2.29.0",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-vue": "^9.18.1",
"eslint-watch": "^8.0.0",
"eslint-webpack-plugin": "^4.0.1",
"mini-css-extract-plugin": "^2.7.6",
"node-sass": "^9.0.0",
"postcss-loader": "^7.3.3",
"raw-loader": "^4.0.2",
"sass-loader": "^12.3.0",
"style-loader": "^3.3.1",
"vue-loader": "^16.8.2",
"webpack": "^5.11.0",
"webpack-cli": "^4.9.1"
"sass-loader": "^13.3.2",
"style-loader": "^3.3.3",
"vue-loader": "^17.3.1",
"webpack": "^5.89.0",
"webpack-cli": "^5.1.4"
},
"dependencies": {
"@casl/ability": "^5.2.2",
"@graphile-contrib/pg-order-by-related": "^1.0.0-beta.6",
"@aws-sdk/client-s3": "^3.458.0",
"@aws-sdk/credential-provider-ini": "^3.458.0",
"@aws-sdk/lib-storage": "^3.458.0",
"@casl/ability": "^6.5.0",
"@faker-js/faker": "^8.3.1",
"@graphile-contrib/pg-order-by-related": "^1.0.0",
"@graphile-contrib/pg-simplify-inflector": "^6.1.0",
"@graphile/pg-aggregates": "^0.1.1",
"acorn": "^8.0.4",
"array-equal": "^1.0.0",
"aws-sdk": "^2.847.0",
"acorn": "^8.11.2",
"array-equal": "^1.0.2",
"babel-polyfill": "^6.26.0",
"bhttp": "^1.2.8",
"blake2": "^4.0.0",
"blake2": "^5.0.0",
"bluebird": "^3.7.2",
"body-parser": "^1.19.0",
"body-parser": "^1.20.2",
"bottleneck": "^2.19.5",
"canvas": "^2.6.1",
"canvas": "^2.11.2",
"casual": "^1.6.2",
"cheerio": "^1.0.0-rc.3",
"cheerio": "^1.0.0-rc.12",
"cli-confirm": "^1.0.1",
"cloudscraper": "^4.6.0",
"config": "^3.2.5",
"connect-session-knex": "^2.0.0",
"convert": "^4.2.4",
"cookie": "^0.4.0",
"csv-stringify": "^5.3.6",
"config": "^3.3.9",
"connect-session-knex": "^4.0.0",
"convert": "^4.14.0",
"cookie": "^0.6.0",
"csv-stringify": "^6.4.4",
"date-fns": "^2.30.0",
"dayjs": "^1.8.21",
"dompurify": "^2.0.11",
"ejs": "^3.0.1",
"dayjs": "^1.11.10",
"dompurify": "^3.0.6",
"ejs": "^3.1.9",
"escape-string-regexp": "^4.0.0",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"express": "^4.18.2",
"express-promise-router": "^4.1.1",
"express-react-views": "^0.11.0",
"express-session": "^1.17.1",
"express-session": "^1.17.3",
"face-api.js": "^0.22.2",
"faker": "^5.1.0",
"file-type": "^16.5.3",
"file-type": "^18.7.0",
"fluent-ffmpeg": "^2.1.2",
"fs-extra": "^10.0.0",
"graphile-utils": "^4.12.2",
"graphql": "^15.4.0",
"html-entities": "^2.3.2",
"fs-extra": "^11.1.1",
"graphile-build": "^4.14.0",
"graphile-utils": "^4.14.0",
"graphql": "^15.8.0",
"html-entities": "^2.4.0",
"iconv-lite": "^0.6.3",
"inquirer": "^8.2.0",
"inspector-api": "^1.4.2",
"jsdom": "^18.0.0",
"knex": "^0.95.12",
"inquirer": "^8.2.6",
"inspector-api": "^1.4.8",
"jsdom": "^22.1.0",
"knex": "^3.0.1",
"knex-migrate": "^1.7.4",
"longjohn": "^0.2.12",
"merge-anything": "^5.1.7",
"mime": "^2.4.4",
"mitt": "^3.0.0",
"moment": "^2.24.0",
"nanoid": "^3.1.30",
"node-fetch": "^2.6.7",
"mime": "^3.0.0",
"mitt": "^3.0.1",
"moment": "^2.29.4",
"nanoid": "^3.3.7",
"node-fetch": "^3.3.2",
"object-merge-advanced": "^12.1.0",
"object.omit": "^3.0.0",
"pg": "^8.5.1",
"postgraphile": "^4.13.0",
"postgraphile-plugin-connection-filter": "^2.2.2",
"pg": "^8.11.3",
"postgraphile": "^4.14.0",
"postgraphile-plugin-connection-filter": "^2.3.0",
"promise-task-queue": "^1.2.0",
"prop-types": "^15.7.2",
"puppeteer": "^20.5.0",
"prop-types": "^15.8.1",
"puppeteer": "^21.5.2",
"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2",
"redis": "^4.6.7",
"sharp": "^0.29.2",
"showdown": "^1.9.1",
"source-map-support": "^0.5.16",
"redis": "^4.6.11",
"sharp": "^0.33.0-rc.2",
"showdown": "^2.1.0",
"source-map-support": "^0.5.21",
"template-format": "^1.2.5",
"tippy.js": "^6.3.1",
"tough-cookie": "^4.0.0",
"tippy.js": "^6.3.7",
"tough-cookie": "^4.1.3",
"tunnel": "0.0.6",
"ua-parser-js": "^1.0.32",
"undici": "^4.13.0",
"ua-parser-js": "^1.0.37",
"undici": "^5.28.1",
"unprint": "^0.10.11",
"url-pattern": "^1.0.3",
"v-tooltip": "^2.0.3",
"video.js": "^7.11.4",
"videojs-vr": "^1.7.1",
"vue": "^3.2.20",
"vue-router": "^4.0.12",
"vuex": "^4.0.2",
"why-is-node-running": "^2.2.0",
"winston": "^3.2.1",
"winston-daily-rotate-file": "^4.4.2",
"yargs": "^17.2.1"
"v-tooltip": "^2.1.3",
"video.js": "^8.6.1",
"videojs-vr": "^2.0.0",
"vue": "^3.3.9",
"vue-router": "^4.2.5",
"vuex": "^4.1.0",
"why-is-node-running": "^2.2.2",
"winston": "^3.11.0",
"winston-daily-rotate-file": "^4.7.1",
"yargs": "^17.7.2"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
public/img/logos/aylo/favicon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="98px" height="44px" viewBox="0 0 98 44" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Logo/aylo</title>
<desc>Created with Sketch.</desc>
<defs>
<polygon id="path-1" points="0.113323369 0.4422 26.2793715 0.4422 26.2793715 35 0.113323369 35"></polygon>
<polygon id="path-3" points="0.9119 0.916 8.1979 0.916 8.1979 35.5677 0.9119 35.5677"></polygon>
<polygon id="path-5" points="0 0.469921652 8.68486313 0.469921652 8.68486313 11.5682743 0 11.5682743"></polygon>
<polygon id="path-7" points="0.1015 0.0685 27.702 0.0685 27.702 25.9425 0.1015 25.9425"></polygon>
</defs>
<g id="MTLCO" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="01.Home" transform="translate(-676.000000, -6865.000000)">
<g id="Footer" transform="translate(5.000000, 6810.000000)">
<g id="Logo/aylo" transform="translate(671.000000, 54.000000)">
<g id="Logo">
<g id="Group-3" transform="translate(27.000000, 10.084400)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="Clip-2"></g>
<path d="M26.0193,4.9162 L16.5753,27.1112 C14.1453,33.1812 10.6903,35.0002 6.1583,35.0002 C4.8033,35.0002 3.3823,34.7662 2.1043,34.3322 C0.4063,33.7582 -0.3787,31.8082 0.4383,30.2152 C0.9543,29.2112 1.9763,28.6342 3.0543,28.6342 C3.3753,28.6342 3.7073,28.6852 4.0293,28.7942 C4.6313,28.9962 5.2603,29.1092 5.8733,29.1162 C5.9213,29.1162 5.9683,29.1162 6.0163,29.1122 C6.3263,29.0942 6.6403,29.0252 6.9403,28.8902 L6.9583,28.8782 C9.0033,27.8932 9.9243,25.5152 9.1273,23.4262 C9.0873,23.3162 9.0403,23.2072 8.9893,23.1012 L1.1763,4.9272 C0.2633,2.8052 1.8193,0.4422 4.1273,0.4422 L4.6173,0.4422 C5.9173,0.4422 7.0893,1.2272 7.5863,2.4292 L13.0463,15.6212 C13.3313,16.3112 14.3063,16.3152 14.5953,15.6242 L20.0923,2.4212 C20.5923,1.2242 21.7643,0.4422 23.0613,0.4422 C25.3663,0.4422 26.9213,2.7982 26.0193,4.9162" id="Fill-1" fill="#001437" mask="url(#mask-2)"></path>
</g>
<g id="Group-6" transform="translate(57.000000, 0.084400)">
<mask id="mask-4" fill="white">
<use xlink:href="#path-3"></use>
</mask>
<g id="Clip-5"></g>
<path d="M4.5549,0.9157 L4.5549,0.9157 C6.5669,0.9157 8.1979,2.5467 8.1979,4.5587 L8.1979,31.9257 C8.1979,33.9367 6.5669,35.5677 4.5549,35.5677 C2.5429,35.5677 0.9119,33.9367 0.9119,31.9257 L0.9119,4.5587 C0.9119,2.5467 2.5429,0.9157 4.5549,0.9157" id="Fill-4" fill="#001437" mask="url(#mask-4)"></path>
</g>
<path d="M17.9841,12.5213 L24.7671,30.7323 C25.4721,32.6163 24.5161,34.7153 22.6321,35.4203 C20.7481,36.1253 18.6491,35.1693 17.9431,33.2853 L11.1611,15.0733 C10.4561,13.1893 11.4121,11.0903 13.2961,10.3853 C15.1801,9.6803 17.2791,10.6363 17.9841,12.5213 Z" id="Fill-7" fill="#001437"></path>
<g id="Group-11" transform="translate(0.000000, 24.084400)">
<mask id="mask-6" fill="white">
<use xlink:href="#path-5"></use>
</mask>
<g id="Clip-10"></g>
<path d="M8.4529,5.3903 L7.0559,9.2013 C6.3509,11.0853 4.2519,12.0413 2.3679,11.3363 C0.4829,10.6313 -0.4731,8.5323 0.2319,6.6473 L1.6289,2.8373 C2.3339,0.9533 4.4329,-0.0037 6.3169,0.7023 C8.2019,1.4073 9.1579,3.5063 8.4529,5.3903" id="Fill-9" fill="#71DBD4" mask="url(#mask-6)"></path>
</g>
<g id="Group-14" transform="translate(70.000000, 10.084400)">
<mask id="mask-8" fill="white">
<use xlink:href="#path-7"></use>
</mask>
<g id="Clip-13"></g>
<path d="M20.3235,13.0055 C20.3235,8.6625 17.5685,6.0475 13.9255,6.0475 C10.2825,6.0475 7.4805,8.6625 7.4805,13.0055 C7.4805,17.3485 10.2825,19.9635 13.9255,19.9635 C17.5685,19.9635 20.3235,17.3485 20.3235,13.0055 M0.1015,13.0055 C0.1015,5.4405 5.9395,0.0685 13.9255,0.0685 C21.9115,0.0685 27.7025,5.4405 27.7025,13.0055 C27.7025,20.5705 21.9115,25.9425 13.9255,25.9425 C5.9395,25.9425 0.1015,20.5705 0.1015,13.0055" id="Fill-12" fill="#001437" mask="url(#mask-8)"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="98px"
height="44px"
viewBox="0 0 98 44"
version="1.1"
id="svg12"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<title
id="title1">Logo/Aylo</title>
<desc
id="desc1">Created with Sketch.</desc>
<defs
id="defs4">
<polygon
points="0.113323369 0.4422 26.2793715 0.4422 26.2793715 35 0.113323369 35"
id="polygon1" />
<polygon
points="0.9119 0.916 8.1979 0.916 8.1979 35.5677 0.9119 35.5677"
id="polygon2" />
<polygon
points="0 0.469921652 8.68486313 0.469921652 8.68486313 11.5682743 0 11.5682743"
id="polygon3" />
<polygon
points="0.1015 0.0685 27.702 0.0685 27.702 25.9425 0.1015 25.9425"
id="polygon4" />
</defs>
<g
transform="translate(-676.000000, -6865.000000)"
id="g12">
<g
transform="translate(5.000000, 6810.000000)"
id="g11">
<g
transform="translate(671.000000, 54.000000)"
id="g10">
<g
id="g9">
<g
transform="translate(27.000000, 10.084400)"
id="g4"
style="fill:#ffffff;fill-opacity:1">
<mask
fill="white"
id="mask4">
<use
xlink:href="#path-1"
id="use4" />
</mask>
<path
class="change-color"
d="M26.0193,4.9162 L16.5753,27.1112 C14.1453,33.1812 10.6903,35.0002 6.1583,35.0002 C4.8033,35.0002 3.3823,34.7662 2.1043,34.3322 C0.4063,33.7582 -0.3787,31.8082 0.4383,30.2152 C0.9543,29.2112 1.9763,28.6342 3.0543,28.6342 C3.3753,28.6342 3.7073,28.6852 4.0293,28.7942 C4.6313,28.9962 5.2603,29.1092 5.8733,29.1162 C5.9213,29.1162 5.9683,29.1162 6.0163,29.1122 C6.3263,29.0942 6.6403,29.0252 6.9403,28.8902 L6.9583,28.8782 C9.0033,27.8932 9.9243,25.5152 9.1273,23.4262 C9.0873,23.3162 9.0403,23.2072 8.9893,23.1012 L1.1763,4.9272 C0.2633,2.8052 1.8193,0.4422 4.1273,0.4422 L4.6173,0.4422 C5.9173,0.4422 7.0893,1.2272 7.5863,2.4292 L13.0463,15.6212 C13.3313,16.3112 14.3063,16.3152 14.5953,15.6242 L20.0923,2.4212 C20.5923,1.2242 21.7643,0.4422 23.0613,0.4422 C25.3663,0.4422 26.9213,2.7982 26.0193,4.9162"
fill="#001437"
mask="url(#mask-2)"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</g>
<g
transform="translate(57.000000, 0.084400)"
id="g5"
style="fill:#ffffff;fill-opacity:1">
<mask
fill="white"
id="mask5">
<use
xlink:href="#path-3"
id="use5" />
</mask>
<path
class="change-color"
d="M4.5549,0.9157 L4.5549,0.9157 C6.5669,0.9157 8.1979,2.5467 8.1979,4.5587 L8.1979,31.9257 C8.1979,33.9367 6.5669,35.5677 4.5549,35.5677 C2.5429,35.5677 0.9119,33.9367 0.9119,31.9257 L0.9119,4.5587 C0.9119,2.5467 2.5429,0.9157 4.5549,0.9157"
fill="#001437"
mask="url(#mask-4)"
id="path5"
style="fill:#ffffff;fill-opacity:1" />
</g>
<path
class="change-color"
d="M17.9841,12.5213 L24.7671,30.7323 C25.4721,32.6163 24.5161,34.7153 22.6321,35.4203 C20.7481,36.1253 18.6491,35.1693 17.9431,33.2853 L11.1611,15.0733 C10.4561,13.1893 11.4121,11.0903 13.2961,10.3853 C15.1801,9.6803 17.2791,10.6363 17.9841,12.5213 Z"
fill="#001437"
id="path6"
style="fill:#ffffff;fill-opacity:1" />
<g
transform="translate(0.000000, 24.084400)"
id="g7">
<mask
fill="white"
id="mask6">
<use
xlink:href="#path-5"
id="use6" />
</mask>
<path
d="M8.4529,5.3903 L7.0559,9.2013 C6.3509,11.0853 4.2519,12.0413 2.3679,11.3363 C0.4829,10.6313 -0.4731,8.5323 0.2319,6.6473 L1.6289,2.8373 C2.3339,0.9533 4.4329,-0.0037 6.3169,0.7023 C8.2019,1.4073 9.1579,3.5063 8.4529,5.3903"
fill="#71DBD4"
mask="url(#mask-6)"
id="path7" />
</g>
<g
transform="translate(70.000000, 10.084400)"
id="g8"
style="fill:#ffffff;fill-opacity:1">
<mask
fill="white"
id="mask7">
<use
xlink:href="#path-7"
id="use7" />
</mask>
<path
class="change-color"
d="M20.3235,13.0055 C20.3235,8.6625 17.5685,6.0475 13.9255,6.0475 C10.2825,6.0475 7.4805,8.6625 7.4805,13.0055 C7.4805,17.3485 10.2825,19.9635 13.9255,19.9635 C17.5685,19.9635 20.3235,17.3485 20.3235,13.0055 M0.1015,13.0055 C0.1015,5.4405 5.9395,0.0685 13.9255,0.0685 C21.9115,0.0685 27.7025,5.4405 27.7025,13.0055 C27.7025,20.5705 21.9115,25.9425 13.9255,25.9425 C5.9395,25.9425 0.1015,20.5705 0.1015,13.0055"
fill="#001437"
mask="url(#mask-8)"
id="path8"
style="fill:#ffffff;fill-opacity:1" />
</g>
</g>
</g>
</g>
</g>
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>Logo/Aylo</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
public/img/logos/aylo/network.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,4 +1,6 @@
/* eslint-disable max-len */
const omit = require('object.omit');
const upsert = require('../src/utils/upsert');
const grandParentNetworks = [
@ -13,9 +15,11 @@ const grandParentNetworks = [
name: 'Hush',
},
{
slug: 'mindgeek',
name: 'Mind Geek',
url: 'https://www.mindgeek.com',
slug: 'aylo',
name: 'Aylo',
rename: 'mindgeek',
alias: ['mindgeek', 'mind geek'],
url: 'https://www.aylo.com',
description: '',
parameters: {
interval: 1000,
@ -142,7 +146,7 @@ const networks = [
slug: 'babes',
name: 'Babes',
url: 'https://www.babes.com',
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'badoink',
@ -183,7 +187,7 @@ const networks = [
name: 'Brazzers',
url: 'https://www.brazzers.com',
description: 'Brazzers homepage is updated daily with official HD porn scenes. Our hottest videos and sex series are filled with big tits, sexy milf, top pornstars and special events.',
parent: 'mindgeek',
parent: 'aylo',
parameters: {
childSession: true,
},
@ -258,7 +262,7 @@ const networks = [
actorPath: 'modelprofile',
forceDeep: true, // Digital Playground has movie and series information not available in the latest updates API
},
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'dogfartnetwork',
@ -303,7 +307,7 @@ const networks = [
parameters: {
actorPath: 'modelprofile',
},
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'filthykings',
@ -460,14 +464,14 @@ const networks = [
parameters: {
actorPath: 'modelprofile',
},
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'metrohd',
name: 'Metro HD',
url: 'https://www.metrohd.com',
description: 'Checkout MetroHD official pornsite featuring top rated pornstars and XXX videos.',
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'mikeadriano',
@ -479,7 +483,7 @@ const networks = [
name: 'Mile High Media',
url: 'https://www.milehighmedia.com',
description: 'MileHighMedia.com is the only niche porn network you need! Watch lesbian sex, hardcore fucking and family porn stories with the hottest teens & MILFs!',
parent: 'mindgeek',
parent: 'aylo',
parameters: {
forceDeep: true, // Mile High Media has movie and series information not available in the latest updates API
},
@ -494,7 +498,7 @@ const networks = [
name: 'MOFOS',
url: 'https://www.mofos.com',
description: 'Check out the Official Mofos Network of best amateur pornsites. Girlfriend voyeur - college girls - first anal & more. Bonus Milf sites for wifey lovers.',
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'mylf',
@ -590,7 +594,7 @@ const networks = [
name: 'Reality Kings',
url: 'https://www.realitykings.com',
description: 'Home of HD reality porn featuring the nicest tits and ass online! The hottest curvy girls in real amateur sex stories are only on REALITYkings.com',
parent: 'mindgeek',
parent: 'aylo',
parameters: {
childSession: true,
parentSession: false,
@ -616,7 +620,7 @@ const networks = [
slug: 'sexyhub',
name: 'Sexy Hub',
url: 'https://www.sexyhub.com',
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'spizoo',
@ -672,7 +676,7 @@ const networks = [
name: 'Twistys',
url: 'https://www.twistys.com',
description: 'The hottest high quality glamour porn for over 18 years! Over 3700+ models and 46000+ scenes. TWISTYS.com',
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'vipsexvault',
@ -742,7 +746,7 @@ exports.seed = (knex) => Promise.resolve()
return null;
}).filter(Boolean));
const grandParentNetworkEntries = await upsert('entities', grandParentNetworks.map((network) => ({ ...network, type: 'network' })), ['slug', 'type'], knex);
const grandParentNetworkEntries = await upsert('entities', grandParentNetworks.map((network) => (omit({ ...network, type: 'network' }, 'rename'))), ['slug', 'type'], knex);
const grandParentNetworksBySlug = [].concat(grandParentNetworkEntries.inserted, grandParentNetworkEntries.updated).reduce((acc, network) => ({ ...acc, [network.slug]: network.id }), {});
const parentNetworksWithGrandParent = parentNetworks.map((network) => ({

View File

@ -5854,13 +5854,13 @@ const sites = [
parameters: { siteId: 260 },
parent: 'men',
},
// MINDGEEK
// AYLO
{
slug: 'pornhub',
name: 'PornHub',
url: 'https://www.pornhub.com',
description: '',
parent: 'mindgeek',
parent: 'aylo',
type: 'info',
},
{
@ -5869,7 +5869,7 @@ const sites = [
url: 'https://www.propertysex.com',
description: 'Property Sex.com brings you the hottest real estate porn on the Internet. Watch the hottest pornstars, ahem, I mean Real Estate Agents fuck for the sale! Or should I say Unreal Estate Agents!',
parameters: { native: true },
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'tube8vip',
@ -5877,7 +5877,7 @@ const sites = [
url: 'https://www.tube8vip.com',
description: '',
parameters: { native: true },
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'transangels',
@ -5885,7 +5885,7 @@ const sites = [
url: 'https://www.transangels.com',
tags: ['transsexual'],
parameters: { native: true },
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'trueamateurs',
@ -5893,14 +5893,14 @@ const sites = [
url: 'https://www.trueamateurs.com',
description: 'TrueAmateurs.com is the best homemade porn from real amateurs. Watch these real hot couples in our exclusive scenes.',
parameters: { native: true },
parent: 'mindgeek',
parent: 'aylo',
},
{
slug: 'squirted',
name: 'Squirted',
url: 'https://www.squirted.com',
parameters: { native: true },
parent: 'mindgeek',
parent: 'aylo',
},
// MIKE ADRIANO
{

View File

@ -73,8 +73,8 @@ const bannerTags = {
hardcoregangbang_305_99_kira_noir: ['blowbang', 'black', 'bdsm'],
hardcoregangbang_900_250_gloves_blonde: ['blowbang', 'blonde', 'bdsm'],
hardcoregangbang_1000_100: ['gangbang', 'mfm', 'bdsm'],
// mindgeek
mindgeek_728_90_gay: ['gay'],
// aylo
aylo_728_90_gay: ['gay'],
// teenmegaworld
analangels_468_80_animated: ['anal'],
analangels_300_250_animated: ['anal'],
@ -496,26 +496,26 @@ const campaigns = [
url: 'https://www2.teenfidelity.com/track/MTAxOTE0LjYuNS42LjAuMC4wLjAuMA',
comment: '$25 per signup',
},
// mindgeek
// aylo
{
network: 'mindgeek',
banner: 'mindgeek_728_90',
network: 'aylo',
banner: 'aylo_728_90',
},
{
network: 'mindgeek',
banner: 'mindgeek_300_100',
network: 'aylo',
banner: 'aylo_300_100',
},
{
network: 'mindgeek',
banner: 'mindgeek_300_250',
network: 'aylo',
banner: 'aylo_300_250',
},
{
network: 'mindgeek',
banner: 'mindgeek_315_300',
network: 'aylo',
banner: 'aylo_315_300',
},
{
network: 'mindgeek',
banner: 'mindgeek_728_90_gay',
network: 'aylo',
banner: 'aylo_728_90_gay',
},
// teenmegaworld
{

View File

@ -11,6 +11,7 @@
"no-unused-vars": ["error", {"argsIgnorePattern": "^_"}],
"no-console": 0,
"no-underscore-dangle": 0,
"default-param-last": 0,
"prefer-destructuring": "off",
"template-curly-spacing": "off",
"object-curly-newline": "off",

View File

@ -897,7 +897,7 @@ async function scrapeActors(argNames) {
const newBaseActors = baseActors.filter((baseActor) => !existingActorEntriesBySlugAndEntryId[baseActor.slug]?.[baseActor.entryId]);
const [batchId] = newBaseActors.length > 0 ? await knex('batches').insert({ comment: null }).returning('id') : [null];
const [{ id: batchId }] = newBaseActors.length > 0 ? await knex('batches').insert({ comment: null }).returning('id') : [{ id: null }];
const curatedActorEntries = batchId && curateActorEntries(newBaseActors, batchId);
// TODO: associate entity when entry ID is provided

View File

@ -19,7 +19,7 @@ async function addAlert(alert, sessionUser) {
throw new HttpError('Match must define a property and an expression', 400);
}
const [alertId] = await knex('alerts')
const [{ id: alertId }] = await knex('alerts')
.insert({
user_id: sessionUser.id,
notify: alert.notify,

View File

@ -85,7 +85,7 @@ async function signup(credentials) {
const hashedPassword = (await scrypt(credentials.password, salt, 64)).toString('hex');
const storedPassword = `${salt}/${hashedPassword}`;
const [userId] = await knex('users')
const [{ id: userId }] = await knex('users')
.insert({
username: curatedUsername,
email: credentials.email,

View File

@ -14,7 +14,9 @@ const ffmpeg = require('fluent-ffmpeg');
const sharp = require('sharp');
const blake2 = require('blake2');
const taskQueue = require('promise-task-queue');
const AWS = require('aws-sdk');
const { Upload } = require('@aws-sdk/lib-storage');
const { S3Client } = require('@aws-sdk/client-s3');
const logger = require('./logger')(__filename);
const argv = require('./argv');
@ -27,11 +29,9 @@ const { get } = require('./utils/qu');
// const pipeline = util.promisify(stream.pipeline);
const streamQueue = taskQueue();
const endpoint = new AWS.Endpoint('s3.eu-central-1.wasabisys.com');
const s3 = new AWS.S3({
// region: 'eu-central-1',
endpoint,
const s3 = new S3Client({
region: 'eu-central-1',
endpoint: 'https://s3.eu-central-1.wasabisys.com',
credentials: {
accessKeyId: config.s3.accessKey,
secretAccessKey: config.s3.secretKey,
@ -391,12 +391,15 @@ async function storeS3Object(filepath, media) {
const fullFilepath = path.join(config.media.path, filepath);
const file = fs.createReadStream(fullFilepath);
const status = await s3.upload({
const status = await new Upload({
client: s3,
params: {
Bucket: config.s3.bucket,
Body: file,
Key: filepath,
ContentType: media.meta.mimetype,
}).promise();
},
}).done();
await fsPromises.unlink(fullFilepath);
@ -992,7 +995,7 @@ async function deleteS3Objects(media) {
Objects: objects,
Quiet: false,
},
}).promise();
});
logger.info(`Removed ${status.Deleted.length} media files from S3 bucket '${config.s3.bucket}', ${status.Errors.length} errors`);

View File

@ -224,13 +224,15 @@ async function getSession(site, parameters, url) {
session,
headers: {
'Accept-Language': 'en-US,en;', // somehow seems essential for some MG sites
Connection: 'keep-alive',
'User-Agent': 'HTTPie/3.2.1',
},
interval: parameters?.interval,
concurrency: parameters?.concurrency,
parse: false,
});
if (res.statusCode === 200) {
if (res.status === 200) {
const cookieString = await cookieJar.getCookieStringAsync(sessionUrl);
const { instance_token: instanceToken } = cookie.parse(cookieString);
@ -242,7 +244,7 @@ async function getSession(site, parameters, url) {
throw new Error(`Failed to acquire MindGeek session (${res.statusCode})`);
}
function scrapeProfile(data, releases = [], networkName) {
function scrapeProfile(data, networkName, releases = []) {
const profile = {
description: data.bio,
aliases: data.aliases.filter(Boolean),
@ -297,7 +299,7 @@ async function fetchLatest(site, page = 1, options) {
return null;
}
const { session, instanceToken } = options.beforeNetwork?.headers?.Instance
const { instanceToken } = options.beforeNetwork?.headers?.Instance
? options.beforeNetwork
: await getSession(site, options.parameters, url);
@ -308,7 +310,6 @@ async function fetchLatest(site, page = 1, options) {
: `https://site-api.project1service.com/v2/releases?collectionId=${siteId}&dateReleased=<${beforeDate}&limit=${limit}&offset=${limit * (page - 1)}&orderBy=-dateReleased&type=scene`;
const res = await http.get(apiUrl, {
session,
interval: options.parameters.interval,
concurrency: options.parameters.concurrency,
headers: {
@ -409,10 +410,10 @@ async function fetchProfile({ name: actorName }, { entity, parameters }, include
});
if (actorReleasesRes.statusCode === 200 && actorReleasesRes.body.result) {
return scrapeProfile(actorData, actorReleasesRes.body.result, entity.slug);
return scrapeProfile(actorData, entity.slug, actorReleasesRes.body.result);
}
return scrapeProfile(actorData, [], entity.slug);
return scrapeProfile(actorData, entity.slug, []);
}
}

View File

@ -40,7 +40,7 @@ const littlecapricedreams = require('./littlecapricedreams');
const loveherfilms = require('./loveherfilms');
const bluedonkeymedia = require('./bluedonkeymedia');
const mikeadriano = require('./mikeadriano');
const mindgeek = require('./mindgeek');
const aylo = require('./aylo');
const naughtyamerica = require('./naughtyamerica');
const newsensations = require('./newsensations');
const nubiles = require('./nubiles');
@ -90,7 +90,7 @@ const scrapers = {
bangbros,
bluedonkeymedia,
bradmontana,
brazzers: mindgeek,
brazzers: aylo,
cherrypimps,
cumlouder,
czechav,
@ -130,7 +130,7 @@ const scrapers = {
mamacitaz: porndoe,
mariskax,
mikeadriano,
mindgeek,
aylo,
mylf: teamskeet,
naughtyamerica,
nebraskacoeds: elevatedx,
@ -150,7 +150,7 @@ const scrapers = {
rickysroom,
sayuncle: teamskeet,
score,
sexyhub: mindgeek,
sexyhub: aylo,
spizoo,
swallowsalon: julesjordan,
theflourish: archangel,
@ -182,7 +182,7 @@ const scrapers = {
anilos: nubiles,
archangel,
asiam: modelmedia,
babes: mindgeek,
babes: aylo,
babevr: badoink,
backroomcastingcouch: elevatedx,
baddaddypov: fullpornnetwork,
@ -201,14 +201,14 @@ const scrapers = {
boobpedia,
bradmontana,
brattysis: nubiles,
brazzers: mindgeek,
brazzers: aylo,
burningangel: gamma,
cherrypimps,
cumlouder,
deeper: vixen,
deeplush: nubiles,
devilsfilm: famedigital,
digitalplayground: mindgeek,
digitalplayground: aylo,
dorcelclub: dorcel,
doubleviewcasting: firstanalquest,
dtfsluts: fullpornnetwork,
@ -216,7 +216,7 @@ const scrapers = {
evilangel: gamma,
exploitedcollegegirls: elevatedx,
eyeontheguy: hush,
fakehub: mindgeek,
fakehub: aylo,
firstanalquest,
forbondage: porndoe,
freeones,
@ -232,7 +232,7 @@ const scrapers = {
hotcrazymess: nubiles,
hushpass: hush,
hussiepass: hush,
iconmale: mindgeek,
iconmale: aylo,
inserted: radical,
interracialpass: hush,
interracialpovs: hush,
@ -253,13 +253,13 @@ const scrapers = {
letsdoeit: porndoe,
littlecapricedreams,
mamacitaz: porndoe,
men: mindgeek,
men: aylo,
mariskax,
metrohd: mindgeek,
milehighmedia: mindgeek,
metrohd: aylo,
milehighmedia: aylo,
milfy: vixen,
milfvr: wankzvr,
mofos: mindgeek,
mofos: aylo,
mylf: teamskeet,
mugfucked: fullpornnetwork,
naughtyamerica,
@ -283,14 +283,14 @@ const scrapers = {
povpornstars: hush,
private: privateNetwork,
purgatoryx,
realitykings: mindgeek,
realitykings: aylo,
realvr: badoink,
rickysroom,
roccosiffredi: famedigital,
sayuncle: teamskeet,
score,
seehimfuck: hush,
sexyhub: mindgeek,
sexyhub: aylo,
silverstonedvd: famedigital,
silviasaint: famedigital,
spizoo,
@ -306,13 +306,13 @@ const scrapers = {
testedefudelidade,
thatsitcomshow: nubiles,
tokyohot,
transangels: mindgeek,
transangels: aylo,
transbella: porndoe,
tranzvr: wankzvr,
trueanal: mikeadriano,
tushy: vixen,
tushyraw: vixen,
twistys: mindgeek,
twistys: aylo,
vipsexvault: porndoe,
vixen,
vrcosplayx: badoink,

View File

@ -3,7 +3,7 @@
/* eslint-disable no-unused-vars */
const config = require('config');
const faker = require('faker');
const { faker } = require('@faker-js/faker');
const { nanoid } = require('nanoid');
const moment = require('moment');

View File

@ -345,7 +345,7 @@ async function storeMovies(movies, useBatchId) {
}
const { uniqueReleases } = await filterDuplicateReleases(movies);
const [batchId] = useBatchId ? [useBatchId] : await knex('batches').insert({ showcased: argv.showcased, comment: null }).returning('id');
const [{ id: batchId }] = useBatchId ? [{ id: useBatchId }] : await knex('batches').insert({ showcased: argv.showcased, comment: null }).returning('id');
const curatedMovieEntries = await Promise.all(uniqueReleases.map((release) => curateReleaseEntry(release, batchId, null, 'movie')));
@ -364,7 +364,7 @@ async function storeSeries(series, useBatchId) {
}
const { uniqueReleases } = await filterDuplicateReleases(series);
const [batchId] = useBatchId ? [useBatchId] : await knex('batches').insert({ showcased: argv.showcased, comment: null }).returning('id');
const [{ id: batchId }] = useBatchId ? [{ id: useBatchId }] : await knex('batches').insert({ showcased: argv.showcased, comment: null }).returning('id');
const curatedSerieEntries = await Promise.all(uniqueReleases.map((release) => curateReleaseEntry(release, batchId, null, 'serie')));
@ -382,7 +382,7 @@ async function storeScenes(releases, useBatchId) {
return [];
}
const [batchId] = useBatchId ? [useBatchId] : await knex('batches').insert({ showcased: argv.showcased, comment: null }).returning('id');
const [{ id: batchId }] = useBatchId ? [{ id: useBatchId }] : await knex('batches').insert({ showcased: argv.showcased, comment: null }).returning('id');
const releasesWithChannels = await attachChannelEntities(releases);
const releasesWithBaseActors = releasesWithChannels.map((release) => ({ ...release, actors: toBaseActors(release.actors) }));

View File

@ -116,7 +116,7 @@ async function load() {
throw new Error(`No user ${alert.username}`);
}
const [alertId] = await knex('alerts')
const [{ id: alertId }] = await knex('alerts')
.insert({
user_id: user.id,
notify: alert.notify,

View File

@ -22,7 +22,7 @@ async function getStashId(stash, user) {
return existingStash.id;
}
const [stashId] = await knex('stashes')
const [{ id: stashId }] = await knex('stashes')
.insert({
user_id: user.id,
name: stash.name,

View File

@ -7,17 +7,16 @@ const moment = require('moment');
const Promise = require('bluebird');
const bhttp = require('bhttp');
const { nanoid } = require('nanoid/non-secure');
const AWS = require('aws-sdk');
const { Upload } = require('@aws-sdk/lib-storage');
const { S3Client } = require('@aws-sdk/client-s3');
const { graphql } = require('../web/graphql');
const knex = require('../knex');
const args = require('../argv');
const endpoint = new AWS.Endpoint('s3.eu-central-1.wasabisys.com');
const s3 = new AWS.S3({
// region: 'eu-central-1',
endpoint,
const s3 = new S3Client({
region: 'eu-central-1',
endpoint: 'https://s3.eu-central-1.wasabisys.com',
credentials: {
accessKeyId: config.s3.accessKey,
secretAccessKey: config.s3.secretKey,
@ -325,7 +324,7 @@ async function addReleaseTags(release, context) {
}
async function addNewActor(actor, entity, context) {
const [actorId] = await knex('actors')
const [{ id: actorId }] = await knex('actors')
.insert({
name: actor.name,
slug: actor.slug,
@ -379,7 +378,7 @@ async function addReleaseChapters(release, context) {
await release.chapters.reduce(async (chain, chapter) => {
await chain;
const [chapterId] = await knex('chapters')
const [{ id: chapterId }] = await knex('chapters')
.insert({
release_id: release.id,
index: chapter.index,
@ -438,12 +437,15 @@ async function transferMedia(media, target) {
fileStream.on('error', () => { reject(); });
});
await s3.upload({
await new Upload({
client: s3,
params: {
Bucket: config.s3.bucket,
Body: fs.createReadStream(temp),
Key: filepath,
ContentType: media.mime,
}).promise();
},
}).done();
await fs.promises.unlink(temp);
}, Promise.resolve());
@ -602,7 +604,7 @@ async function load() {
return;
}
const [batchId] = await knex('batches').insert({ comment: `import ${args.file}` }).returning('id');
const [{ id: batchId }] = await knex('batches').insert({ comment: `import ${args.file}` }).returning('id');
const aggTags = Array.from(new Set(releases.filter((release) => release.type === 'release').flatMap((release) => [...release.tags, ...release.chapters.flatMap((chapter) => chapter.tags)]).filter(Boolean)));
const aggStudios = Array.from(new Set(releases.map((release) => release.studio).filter(Boolean)));

View File

@ -330,6 +330,8 @@ async function request(method = 'get', url, body, requestOptions = {}, limiter)
return bypassCloudflareRequest(url, method, body, withCloudflareBypass, options);
}
console.log(url, options);
const res = await (body
? http[method](url, body, options)
: http[method](url, options));

View File

@ -1,17 +1,17 @@
'use strict';
const config = require('config');
const AWS = require('aws-sdk');
const fs = require('fs');
const { nanoid } = require('nanoid');
const { Upload } = require('@aws-sdk/lib-storage');
const { S3Client } = require('@aws-sdk/client-s3');
async function init() {
const filepath = './public/img/sfw/animals/j0iiByCxGfA.jpeg';
const endpoint = new AWS.Endpoint('s3.wasabisys.com');
const s3 = new AWS.S3({
// region: 'eu-central-1',
endpoint,
const s3 = new S3Client({
region: 'eu-central-1',
endpoint: 's3.eu-central-1.wasabisys.com',
credentials: {
accessKeyId: config.s3.accessKey,
secretAccessKey: config.s3.secretKey,
@ -19,18 +19,21 @@ async function init() {
});
try {
const data = await s3.listBuckets().promise();
// const data = await s3.listBuckets().promise();
const file = fs.createReadStream(filepath);
const key = `img/${nanoid()}.jpg`;
const status = await s3.upload({
const status = await new Upload({
client: s3,
params: {
Bucket: config.s3.bucket,
Body: file,
Key: key,
ContentType: 'image/jpeg',
}).promise();
},
}).done();
console.log(data);
// console.log(data);
console.log(status);
} catch (error) {
console.log(error);

View File

@ -34,6 +34,7 @@ function initPostgraphile(credentials) {
simpleCollections: 'both',
graphileBuildOptions: {
pgOmitListSuffix: true,
// connectionFilterUseListInflectors: true,
connectionFilterRelations: true,
connectionFilterAllowNullInput: true,
},

2
traxxx
View File

@ -1,2 +1,2 @@
#!/usr/bin/bash
node -r source-map-support/register ./src/init.js "$@";
node -r source-map-support/register --trace-deprecation ./src/init.js "$@";