Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync Dev to Main #983

Merged
merged 207 commits into from
Mar 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
207 commits
Select commit Hold shift + click to select a range
aa5602b
feat: new approach to multi domain
TurtIeSocks Aug 30, 2023
9e17dfa
Merge branch 'develop' into better-multi-domain
TurtIeSocks Oct 6, 2023
20a2ba0
Merge branch 'develop' into better-multi-domain
TurtIeSocks Nov 2, 2023
82765e3
Merge branch 'develop' into better-multi-domain
TurtIeSocks Nov 14, 2023
3b314ca
Merge branch 'develop' into better-multi-domain
TurtIeSocks Dec 29, 2023
9d1c0d9
Merge branch 'develop' into better-multi-domain
TurtIeSocks Jan 2, 2024
48a5140
Merge branch 'develop' into better-multi-domain
TurtIeSocks Jan 12, 2024
20deeee
Merge branch 'develop' into better-multi-domain
TurtIeSocks Jan 16, 2024
93ea0a9
Merge branch 'develop' into better-multi-domain
TurtIeSocks Feb 6, 2024
2079f96
Merge branch 'develop' into better-multi-domain
TurtIeSocks Feb 6, 2024
2b9f36a
Merge branch 'develop' into better-multi-domain
TurtIeSocks Feb 6, 2024
ce0ca7f
Merge branch 'develop' into better-multi-domain
TurtIeSocks Feb 8, 2024
f470f53
fix: custom favicons for each domain
TurtIeSocks Feb 22, 2024
e5b8a9c
fix: check for multidomains in areas
TurtIeSocks Feb 22, 2024
e98bb92
fix: still define obj though
TurtIeSocks Feb 23, 2024
bb1ee49
Merge branch 'develop' into better-multi-domain
TurtIeSocks Feb 23, 2024
b48bcb3
fix: simplify
TurtIeSocks Feb 23, 2024
c4bdce1
Merge branch 'develop' into better-multi-domain
TurtIeSocks Feb 23, 2024
2acf34a
fix: file caching for multi
TurtIeSocks Feb 23, 2024
1a33c5e
feat: lots of docs & examples
TurtIeSocks Feb 23, 2024
ef30f33
fix: reading other config files
TurtIeSocks Feb 23, 2024
1851505
fix: favicon instructions
TurtIeSocks Feb 23, 2024
ae45495
Merge branch 'develop' into better-multi-domain
TurtIeSocks Feb 27, 2024
8330adf
refactor: rename `features` folder to `pages`
TurtIeSocks Mar 2, 2024
89a6d39
refactor: move all page components to pages folder
TurtIeSocks Mar 2, 2024
c5578bf
refactor: move main map components to map page folder
TurtIeSocks Mar 2, 2024
da93ac4
refactor: move app component to src
TurtIeSocks Mar 2, 2024
4793b5a
refactor: move more map components into page folder
TurtIeSocks Mar 2, 2024
3df1dea
refactor: `features` folder
TurtIeSocks Mar 2, 2024
56d2b40
refactor: move search into `features` folder
TurtIeSocks Mar 2, 2024
3422ca9
refactor: move webhooks into `features` folder
TurtIeSocks Mar 2, 2024
af84751
refactor: move profile into `features` folder
TurtIeSocks Mar 2, 2024
a6676d6
refactor: move tutorial to `features` folder
TurtIeSocks Mar 2, 2024
1bb323e
refactor: rename `ScanOnDemand.jsx` => `index.jsx`
TurtIeSocks Mar 2, 2024
7146274
refactor: move `drawer` to `features` folder
TurtIeSocks Mar 2, 2024
345a27f
refactor: move holiday animations
TurtIeSocks Mar 2, 2024
d736c65
refactor: move everything out of `src/components/layout`
TurtIeSocks Mar 2, 2024
8399dc0
refactor: `src/services/functions` => `src/utils`
TurtIeSocks Mar 2, 2024
c49c686
refactor: rename `Icons.js` => `Assets.js`
TurtIeSocks Mar 2, 2024
65e32af
refactor: rename `ttlcache.js` => `SimpleTTLCache.js`
TurtIeSocks Mar 2, 2024
a3f2492
refactor: move theme/global styles
TurtIeSocks Mar 2, 2024
cab1778
refactor: remove `ApplyGlobal` export since its unused
TurtIeSocks Mar 2, 2024
3b12edd
refactor: remove `src/components/general` folder
TurtIeSocks Mar 2, 2024
14bcb1e
refactor: pokemon feature
TurtIeSocks Mar 2, 2024
91ee86c
refactor: pokestop feature
TurtIeSocks Mar 2, 2024
e8bf8dc
refactor: gym feature
TurtIeSocks Mar 2, 2024
59072b3
refactor: device feature
TurtIeSocks Mar 2, 2024
f4e1750
refactor: nest feature
TurtIeSocks Mar 2, 2024
0cf2188
refactor: portal feature
TurtIeSocks Mar 2, 2024
f84c713
refactor: route feature
TurtIeSocks Mar 2, 2024
765404a
refactor: weather feature
TurtIeSocks Mar 2, 2024
80a840c
refactor: scanCell feature
TurtIeSocks Mar 2, 2024
3bb93b3
refactor: spawnpoint feature
TurtIeSocks Mar 2, 2024
c6a69a9
refactor: wayfarer feature
TurtIeSocks Mar 2, 2024
7e7170d
refactor: move typeCell.js
TurtIeSocks Mar 2, 2024
12c73cd
refactor: scanArea feature
TurtIeSocks Mar 2, 2024
42b3917
refactor: s2cell feature
TurtIeSocks Mar 2, 2024
ac4f238
refactor: move remaining tile components
TurtIeSocks Mar 2, 2024
8ca8fc5
refactor: remove `popups/common` folder
TurtIeSocks Mar 2, 2024
16e20db
refactor: move fallback.js
TurtIeSocks Mar 2, 2024
8768548
refactor: remove unused
TurtIeSocks Mar 2, 2024
99d8e3b
refactor: move `ActiveWeather.jsx`
TurtIeSocks Mar 2, 2024
8523180
refactor: `QuestConditions` imports
TurtIeSocks Mar 3, 2024
4b78846
fix: types
TurtIeSocks Mar 3, 2024
8ff33f5
refactor: normalize mui imports
TurtIeSocks Mar 3, 2024
7667f0b
refactor: move `AdvancedAccordion.jsx`
TurtIeSocks Mar 3, 2024
3dad1d3
refactor: page builder feature
TurtIeSocks Mar 3, 2024
832af96
refactor: holiday effects
TurtIeSocks Mar 3, 2024
b5e823f
refactor: shuffle things around in builder feature
TurtIeSocks Mar 3, 2024
ed65bc0
fix: some clipped imports
TurtIeSocks Mar 3, 2024
1fc124c
refactor: all scanner feature imports
TurtIeSocks Mar 3, 2024
6cd941d
refactor: normalize webhook feature imports
TurtIeSocks Mar 4, 2024
30205e1
refactor: move `LocaleSelection.jsx`
TurtIeSocks Mar 4, 2024
301f5fa
refactor: move `SliderTile.jsx`
TurtIeSocks Mar 4, 2024
2cd945e
refactor: move `MultiSelector.jsx`
TurtIeSocks Mar 4, 2024
3901c93
refactor: move & rename `ItemSearch.jsx`
TurtIeSocks Mar 4, 2024
c396b1c
refactor: move `BoolToggle.jsx`
TurtIeSocks Mar 4, 2024
8926534
refactor: move `ThemeToggle.jsx`
TurtIeSocks Mar 4, 2024
f32ed53
refactor: move more things into inputs folder
TurtIeSocks Mar 4, 2024
6c54ecd
refactor: virtual folder in components
TurtIeSocks Mar 4, 2024
5ee71c9
refactor: move `BasicListButton.jsx`
TurtIeSocks Mar 4, 2024
e223b06
Add server cache to docker example
Fabio1988 Mar 5, 2024
aa82376
refactor: `ActiveWeather.jsx` memoization
TurtIeSocks Mar 5, 2024
9675ef5
typo
Fabio1988 Mar 5, 2024
727b2ea
refactor: weather model typing
TurtIeSocks Mar 6, 2024
68cc9ce
refactor: move icon object to footer
TurtIeSocks Mar 6, 2024
c49d394
refactor: move filters folder
TurtIeSocks Mar 6, 2024
ae9dc8b
refactor: move `Header` component
TurtIeSocks Mar 6, 2024
a81271a
refactor: move `Footer` component
TurtIeSocks Mar 6, 2024
469b076
refactor: move stores into `store` folder
TurtIeSocks Mar 6, 2024
5e45558
refactor: move `useFormatDistance`
TurtIeSocks Mar 6, 2024
79c3f37
refactor: remove a bunch of default exports
TurtIeSocks Mar 6, 2024
013a9fa
refactor: more default export removals
TurtIeSocks Mar 6, 2024
6b61d75
refactor: more named exports
TurtIeSocks Mar 6, 2024
eb10e68
refactor: more named exports
TurtIeSocks Mar 6, 2024
c2798ae
refactor: even more named exports
TurtIeSocks Mar 6, 2024
48404f3
refactor: remove last of default exports
TurtIeSocks Mar 6, 2024
a36ea7c
fix: some incorrect feature imports
TurtIeSocks Mar 6, 2024
8a86e84
refactor: get rid of client `Utility` "class"
TurtIeSocks Mar 6, 2024
ffd1ecf
refactor: remove client `Fetch` "class"
TurtIeSocks Mar 6, 2024
94b23c4
refactor: cleanup global events
TurtIeSocks Mar 6, 2024
1371abf
refactor: normalize gql query var names
TurtIeSocks Mar 6, 2024
c13f6fa
refactor: import order in theme.js
TurtIeSocks Mar 6, 2024
5eaa14f
refactor: make all imports consistently grouped
TurtIeSocks Mar 6, 2024
9a732d1
refactor: move `checkHoliday.js` util
TurtIeSocks Mar 6, 2024
80ac70c
refactor: drawer settings section
TurtIeSocks Mar 6, 2024
2fe37bb
refactor: state accessor var name
TurtIeSocks Mar 6, 2024
11f260f
refactor: quest condition
TurtIeSocks Mar 6, 2024
1665bdd
refactor: `FilterMenu` state
TurtIeSocks Mar 6, 2024
e56b0dd
fix: asset options
TurtIeSocks Mar 6, 2024
a39154d
fix: alert state
TurtIeSocks Mar 6, 2024
e6e016b
refactor: use FCSelect in more places
TurtIeSocks Mar 6, 2024
3b80e95
refactor: remove old grid imports
TurtIeSocks Mar 6, 2024
36c97ec
refactor: rename `useRefresh` => `useMapData`
TurtIeSocks Mar 6, 2024
f31f4b6
refactor: gender type
TurtIeSocks Mar 6, 2024
a8f1e9c
fix: asset updating
TurtIeSocks Mar 6, 2024
5621a81
refactor: consolidate string util funcs
TurtIeSocks Mar 6, 2024
d84c436
refactor: consolidate builder utils funcs
TurtIeSocks Mar 6, 2024
65b26eb
refactor: rewrite menu generators as hooks
TurtIeSocks Mar 6, 2024
0074c59
refactor: move query class
TurtIeSocks Mar 6, 2024
bc7f915
refactor: move some hooks into more appropriate folders
TurtIeSocks Mar 6, 2024
5619285
refactor: pokemon drawer section
TurtIeSocks Mar 6, 2024
a72c576
refactor: pokestop drawer section
TurtIeSocks Mar 6, 2024
6e399a8
refactor: gyms drawer section
TurtIeSocks Mar 6, 2024
089938f
refactor: nest drawer section
TurtIeSocks Mar 6, 2024
6f06b4f
refactor: the rest of the drawer components
TurtIeSocks Mar 6, 2024
460f66e
fix: couple of queries
TurtIeSocks Mar 6, 2024
72344a0
fix: feedback from naji
TurtIeSocks Mar 6, 2024
02f7719
Merge branch 'develop' into client-restructure
TurtIeSocks Mar 6, 2024
98fe335
fix: swapped ivOr stores
TurtIeSocks Mar 6, 2024
8dbc1f3
fix: scan areas
TurtIeSocks Mar 6, 2024
d50c6ff
refactor: adv menu & options typing
TurtIeSocks Mar 7, 2024
a171142
refactor: some webhook profile state adjustments
TurtIeSocks Mar 7, 2024
ed34fa8
refactor: webhook human areas
TurtIeSocks Mar 7, 2024
bbe49e1
fix: area selected translation
TurtIeSocks Mar 7, 2024
1e23a55
fix: user options state
TurtIeSocks Mar 8, 2024
b414488
Merge pull request #978 from WatWowMap/client-restructure
TurtIeSocks Mar 8, 2024
aea08af
Merge branch 'client-restructure' into better-multi-domain
TurtIeSocks Mar 8, 2024
f45fc34
chore(release): v1.30.0-develop.18 [skip ci]
semantic-release-bot Mar 8, 2024
b6470f4
fix: fallback obj
TurtIeSocks Mar 8, 2024
90aeead
Merge branch 'develop' into better-multi-domain
TurtIeSocks Mar 8, 2024
19803e7
chore(release): v1.30.0-develop.19 [skip ci]
semantic-release-bot Mar 8, 2024
9a870cd
fix: add new dist folders to lint ignores
TurtIeSocks Mar 8, 2024
ba25048
fix: add log to indicate config env var
TurtIeSocks Mar 8, 2024
15a878e
Merge pull request #833 from WatWowMap/better-multi-domain
TurtIeSocks Mar 8, 2024
f9f4459
chore: Sync Config
turtlesocks-bot Mar 8, 2024
9872958
Merge pull request #977 from Fabio1988/patch-1
TurtIeSocks Mar 8, 2024
34cbffd
chore(release): v1.30.0-develop.20 [skip ci]
semantic-release-bot Mar 8, 2024
de939e2
fix: throw error if missing openai key
TurtIeSocks Mar 8, 2024
cc3c9e5
Merge branch 'develop' of https://github.com/WatWowMap/ReactMap into …
TurtIeSocks Mar 8, 2024
825b2d9
fix: throw error at a different point
TurtIeSocks Mar 8, 2024
2a15807
chore(release): v1.30.0-develop.21 [skip ci]
semantic-release-bot Mar 8, 2024
6848cdc
fix: logging uncaughtException error
TurtIeSocks Mar 8, 2024
119b006
chore(release): v1.30.0-develop.22 [skip ci]
semantic-release-bot Mar 8, 2024
dc8ff8b
fix: webhook gym searching
TurtIeSocks Mar 9, 2024
d4a4ec4
chore(release): v1.30.0-develop.23 [skip ci]
semantic-release-bot Mar 9, 2024
1abe5e3
fix: css className that got clipped
TurtIeSocks Mar 10, 2024
a3fd5ab
chore(release): v1.30.0-develop.24 [skip ci]
semantic-release-bot Mar 10, 2024
e8bcb79
fix: check for networkError null
TurtIeSocks Mar 10, 2024
5f30f86
chore(release): v1.30.0-develop.25 [skip ci]
semantic-release-bot Mar 10, 2024
6a47f4a
Remove nest submit if disabled
Petap0w Mar 11, 2024
d29459f
Fix prettier
Petap0w Mar 11, 2024
655b45b
Fix according to comments
Petap0w Mar 12, 2024
55de447
Merge pull request #979 from Petap0w/nest
TurtIeSocks Mar 12, 2024
d923095
refactor: lazy implementation of new uicons class
TurtIeSocks Mar 13, 2024
86c5854
fix: remove log
TurtIeSocks Mar 13, 2024
af40a5d
chore(release): v1.30.0-develop.26 [skip ci]
semantic-release-bot Mar 13, 2024
f4423a9
fix: misc icons
TurtIeSocks Mar 14, 2024
5b78be4
chore(release): v1.30.0-develop.27 [skip ci]
semantic-release-bot Mar 14, 2024
b6b45ca
fix: scan cells
TurtIeSocks Mar 14, 2024
983d8bb
chore(release): v1.30.0-develop.28 [skip ci]
semantic-release-bot Mar 14, 2024
83143c3
Merge branch 'main' into develop
TurtIeSocks Mar 14, 2024
d6dfa36
Merge branch 'develop' of https://github.com/WatWowMap/ReactMap into …
TurtIeSocks Mar 14, 2024
9a93015
chore(release): v1.31.0-develop.1 [skip ci]
semantic-release-bot Mar 14, 2024
15058dc
fix: maybe fix missing ci secret
TurtIeSocks Mar 14, 2024
bde6a2f
chore(release): v1.31.0-develop.2 [skip ci]
semantic-release-bot Mar 14, 2024
d68d151
chore(locale): fill polish translation for help
lenisko Mar 15, 2024
ad43d72
Merge pull request #980 from lenisko/pl_fill
TurtIeSocks Mar 15, 2024
402568c
refactor: fr
TurtIeSocks Mar 15, 2024
e31daf1
refactor: extract `nl` locales
TurtIeSocks Mar 15, 2024
f3954a8
move pl translation
lenisko Mar 15, 2024
4037018
sort and clean pl translation
lenisko Mar 15, 2024
29873e6
Merge pull request #982 from lenisko/refactor-locales
TurtIeSocks Mar 15, 2024
2d0e7fb
fix: ai generated locales
TurtIeSocks Mar 15, 2024
64ea859
Merge branch 'refactor-locales' of https://github.com/WatWowMap/React…
TurtIeSocks Mar 15, 2024
8b8b0f2
refactor: show locale status to client
TurtIeSocks Mar 15, 2024
89d28e1
style: displaying locale stats
TurtIeSocks Mar 16, 2024
2563fb7
fix: clipped classname
TurtIeSocks Mar 16, 2024
e346a03
chore(release): v1.31.0-develop.3 [skip ci]
semantic-release-bot Mar 16, 2024
b81ead0
Merge pull request #981 from WatWowMap/refactor-locales
TurtIeSocks Mar 16, 2024
d7239b8
chore(release): v1.31.0-develop.4 [skip ci]
semantic-release-bot Mar 16, 2024
615c3b8
fix: local assets
TurtIeSocks Mar 16, 2024
9d55d4c
fix: pass ref props for tooltip
TurtIeSocks Mar 16, 2024
6a9eec6
chore(release): v1.31.0-develop.5 [skip ci]
semantic-release-bot Mar 16, 2024
bfbd15a
feat: locales editing page
TurtIeSocks Mar 16, 2024
77eafa9
fix: server side routes
TurtIeSocks Mar 16, 2024
4ed05ff
fix: rounding & icon for missing ai
TurtIeSocks Mar 16, 2024
b8f645e
fix: no floats
TurtIeSocks Mar 16, 2024
b259e42
fix: mobile friendly :|
TurtIeSocks Mar 16, 2024
01570c2
Merge pull request #984 from WatWowMap/locales-editing-page
TurtIeSocks Mar 16, 2024
e311533
chore(release): v1.31.0-develop.6 [skip ci]
semantic-release-bot Mar 16, 2024
0256b5b
fix: better selector tiles for colorblind users
TurtIeSocks Mar 17, 2024
87df968
chore(release): v1.31.0-develop.7 [skip ci]
semantic-release-bot Mar 17, 2024
7f731b1
chore(locale): fill missing pol
lenisko Mar 17, 2024
ae00707
fix
lenisko Mar 17, 2024
a8ab6a1
Merge pull request #985 from lenisko/pl-lang
TurtIeSocks Mar 17, 2024
f4cf8d6
chore: update example config to be more golbat-y
TurtIeSocks Mar 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
dist
dist-*
node_modules
public/missing-locales
public/images/custom
Expand Down
48 changes: 11 additions & 37 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
{
"extends": [
"airbnb",
"airbnb/rules/react",
"eslint:recommended",
"prettier"
],
"extends": ["airbnb", "airbnb/rules/react", "eslint:recommended", "prettier"],
"parserOptions": {
"ecmaVersion": "latest"
},
Expand Down Expand Up @@ -74,42 +69,21 @@
},
"settings": {
"node": {
"extensions": [
".mjs",
".js",
".jsx",
".ts",
".tsx"
]
"extensions": [".mjs", ".js", ".jsx", ".ts", ".tsx"]
},
"import/resolver": {
"alias": {
"map": [
[
"@components",
"./src/components/"
],
[
"@services",
"./src/services/"
],
[
"@hooks",
"./src/hooks/"
],
[
"@assets",
"./src/assets/"
]
["@components", "./src/components/"],
["@features", "./src/features/"],
["@services", "./src/services/"],
["@hooks", "./src/hooks/"],
["@assets", "./src/assets/"],
["@utils", "./src/utils/"],
["@store", "./src/store/"]
],
"extensions": [
".mjs",
".js",
".jsx",
".ts",
".tsx"
]
"extensions": [".mjs", ".js", ".jsx", ".ts", ".tsx"]
}
}
}
}
}
7 changes: 6 additions & 1 deletion .github/workflows/locales.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
name: Locales
on: workflow_call
on:
workflow_call:
secrets:
OPENAI_API_KEY:
required: true
description: The API key for OpenAI

permissions: write-all

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ jobs:
uses: ./.github/workflows/config.yml
locales:
uses: ./.github/workflows/locales.yml
secrets:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
release:
if: always()
uses: ./.github/workflows/release.yml
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
node_modules
dist
dist-*

# Config files
server/src/configs/*
Expand All @@ -10,6 +11,8 @@ server/src/configs/koji_backups/*
!server/src/configs/areas.example.json
!server/src/configs/local.example.json
!server/src/configs/custom-environment-variables.json
!server/src/configs/multi-domain-example/local.json
!server/src/configs/multi-domain-example
.env

# Masterfile
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
dist
dist-*
node_modules
public/missing-locales
public/images/custom
Expand Down
280 changes: 209 additions & 71 deletions CHANGELOG.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docker-compose.example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ services:
# ARRAY_VALUE_EXAMPLE: "[3, 4, 5]"

volumes:
- ./server/.cache:/home/node/server/.cache
# All of these are optional - comment out whichever ones you aren't using
- ./server/src/configs/areas.json:/home/node/server/src/configs/areas.json
- ./server/src/configs/local.json:/home/node/server/src/configs/local.json
Expand Down
7 changes: 5 additions & 2 deletions jsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@
"paths": {
"@assets/*": ["./src/assets/*"],
"@components/*": ["./src/components/*"],
"@features/*": ["./src/features/*"],
"@services/*": ["./src/services/*"],
"@hooks/*": ["./src/hooks/*"]
"@hooks/*": ["./src/hooks/*"],
"@utils/*": ["./src/utils/*"],
"@store/*": ["./src/store/*"]
}
},
"exclude": ["node_modules", "**/node_modules/*", "dist"]
"exclude": ["node_modules", "**/node_modules/*", "dist", "dist-*"]
}
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "reactmap",
"version": "1.30.0",
"version": "1.31.0-develop.7",
"private": true,
"description": "React based frontend map.",
"license": "MIT",
Expand Down Expand Up @@ -175,6 +175,7 @@
"source-map": "^0.7.4",
"suncalc": "^1.9.0",
"supercluster": "^8.0.1",
"uicons.js": "^1.1.1",
"zustand": "4.4.6"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion packages/config/.configref
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24124
24070
9 changes: 9 additions & 0 deletions packages/config/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ if (!process.env.NODE_CONFIG_DIR) {
process.env.ALLOW_CONFIG_MUTATIONS = 'true'
}

if (process.env.NODE_CONFIG_ENV) {
if (
process.env.NODE_CONFIG_ENV.includes('.') ||
process.env.NODE_CONFIG_ENV.includes('/')
) {
throw new Error('Invalid NODE_CONFIG_ENV, must not contain "." or "/"')
}
}

const config = require('config')

config.getSafe = config.get
Expand Down
79 changes: 40 additions & 39 deletions packages/locales/lib/generate.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
/* eslint-disable prefer-template */
// @ts-check
/* eslint-disable no-restricted-syntax */
/* eslint-disable guard-for-in */

require('dotenv').config()
const { OpenAI } = require('openai')
const { encode } = require('gpt-tokenizer')

const { log, HELPERS } = require('@rm/logger')

Expand All @@ -15,56 +17,49 @@ const openAI = process.env.OPENAI_API_KEY
})
: null

const TOKEN_LIMIT = 1024

/**
* @typedef {Record<string, string>} I18nObject
* @typedef {I18nObject | string} Node
*/

/**
* Recursively estimates the token size of a {@link Node}
* @param {Node} content
* @returns {number}
*/
function estimateTokenCount(content) {
if (typeof content === 'string') {
return content.split(/[\s.'_A-Z0-9]/).length * 2
}
if (typeof content === 'object') {
let count = 0
for (const key in content) {
count += estimateTokenCount(content[key])
count += key.split(/[_A-Z0-9]/).length * 2
}
return count
}
return 1
}

/**
* Splits the json into 2048 token chunks
* Splits the json into token chunks
* @param {I18nObject} json
* @returns {I18nObject[]}
*/
function splitJson(json) {
/** @type {I18nObject[]} */
const chunks = []
/** @type {I18nObject} */
let pool = {}
let poolSize = 0
for (const key in json) {
const nodeSize = estimateTokenCount(json[key]) + estimateTokenCount(key)
if (nodeSize + poolSize < 2048) {
poolSize += nodeSize
pool[key] = json[key]
} else {
chunks.push(pool)
pool = { [key]: json[key] }
poolSize = nodeSize
let currentChunk = {}
let currentTokenCount = 2

for (const [key, value] of Object.entries(json)) {
const string = ` "${key}": ${
typeof value === 'string'
? `"${value}"`
: typeof value === 'number'
? value
: `${value}`
},\n`
const newLineCount = (string.match(/\n/g) || []).length - 1
const tokenCount = encode(string).length
const totalTokenCount = tokenCount + newLineCount

if (currentTokenCount + totalTokenCount >= TOKEN_LIMIT) {
chunks.push(currentChunk)
currentChunk = {}
currentTokenCount = 2
}
currentChunk[key] = value
currentTokenCount =
newLineCount > 0
? encode(JSON.stringify(currentChunk, null, 2)).length
: currentTokenCount + totalTokenCount
}
if (Object.keys(pool).length > 0) {
chunks.push(pool)
}
if (Object.keys(currentChunk).length > 0) chunks.push(currentChunk)
return chunks
}

Expand Down Expand Up @@ -96,18 +91,18 @@ function matchJSON(str) {
}

/**
* Sends the result to OpenAI gpt-3.5-turbo model
* Sends the result to OpenAI gpt-4-turbo model
* @param {string} locale
* @param {Node} missingKeys
* @returns
*/
async function sendToGPT(locale, missingKeys) {
return openAI.chat.completions.create({
model: 'gpt-3.5-turbo',
model: 'gpt-4-turbo-preview',
messages: [
{
role: 'system',
content: `Translate an i18n locale json content to ${locale}. It's a key-value structure, don't translate the key. Consider the context of all of the values together to make better translation. All translations should be related to a Pokemon GO context.`,
content: `Translate an i18n English locale json content to ${locale}. It's a key-value structure, don't translate the key. Consider the context of all of the values together to make better translation. All translations should be related to a Pokemon GO context. Ensure that all key value pairs are matched correctly.`,
},
{
role: 'user',
Expand Down Expand Up @@ -141,7 +136,10 @@ async function generate() {
/** @type {I18nObject} */
const missingKeys = Object.fromEntries(
Object.entries(englishRef).filter(
([key]) => !(key in merged) && !key.startsWith('locale_selection_'),
([key]) =>
!(key in merged) &&
!key.startsWith('locale_selection_') &&
typeof englishRef[key] !== 'number',
),
)

Expand All @@ -167,13 +165,15 @@ async function generate() {
} catch (e) {
log.error(e, '\nUnable to parse returned translations\n', {
locale,
reason: raw.choices[0].finish_reason,
content,
clean,
})
return {}
}
}),
)

return [locale, result.reduce((acc, x) => ({ ...acc, ...x }), merged)]
} catch (error) {
log.error(HELPERS.locales, error)
Expand All @@ -191,6 +191,7 @@ async function generate() {
module.exports.generate = generate

if (require.main === module) {
if (!process.env.OPENAI_API_KEY) throw new Error('OpenAI API key is missing')
generate()
.then((locales) => writeAll(locales, false, __dirname, './generated'))
.then(() =>
Expand Down
Loading
Loading