Skip to content

Commit 1f5aea9

Browse files
committed
fix build, add prettier plugin, rename to convention
1 parent 3a2ad1e commit 1f5aea9

File tree

14 files changed

+352
-50
lines changed

14 files changed

+352
-50
lines changed

.prettierrc

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@
66
"trailingComma": "all",
77
"bracketSpacing": false,
88
"jsxBracketSameLine": true,
9-
"arrowParens": "avoid"
9+
"arrowParens": "avoid",
10+
"importOrder": ["^@(.*)$", "^([^~])$", "^~/(.*)$", "^[./]"],
11+
"importOrderSeparation": true
1012
}

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"@babel/preset-react": "^7.12.10",
1919
"@babel/preset-typescript": "^7.12.7",
2020
"@babel/standalone": "^7.12.11",
21+
"@trivago/prettier-plugin-sort-imports": "^3.1.1",
2122
"@types/babel__core": "^7.1.12",
2223
"@types/babel__standalone": "^7.1.3",
2324
"@types/codemirror": "^0.0.102",
@@ -29,6 +30,7 @@
2930
"@types/react": "^17.0.0",
3031
"parcel-bundler": "^1.12.4",
3132
"parcel-plugin-linaria": "file:./forks/parcel-plugin-linaria",
33+
"prettier": "^2.4.1",
3234
"typescript": "^4.1.3"
3335
},
3436
"dependencies": {

src/Menu.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {config} from './github/config'
77
import {$csrf, $githubToken, $githubUser} from './github/state'
88
import {logout} from './github/index'
99

10-
import {clickPrettify, prettier} from './settings'
10+
import {clickPrettify, prettierFx} from './settings'
1111
import {packageVersions, version} from './editor/state'
1212
import {selectVersion} from './editor'
1313
import {LoadingIcon} from './components/Icons/LoadingIcon'
@@ -259,7 +259,7 @@ const GitHubCatIcon = () => (
259259

260260
export const MenuContent = () => {
261261
const token = useStore($githubToken)
262-
const isPrettifyPending = useStore(prettier.pending)
262+
const isPrettifyPending = useStore(prettierFx.pending)
263263
const isOpen = useStore(isMenuOpen)
264264
const usedVersion = useStore(version)
265265
const versionList = useList(packageVersions, item => (

src/components/SecondaryTabs.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
$logs as logs,
1212
LogsPanel as LogsView,
1313
} from '~/features/logs'
14-
import {autoScrollLog} from '../settings/state'
14+
import {$autoScrollLog} from '../settings/state'
1515
import {IconButton} from './IconButton'
1616
import {DesktopScreens, SmallScreens} from '../tabs/view'
1717
import {Outline} from './Outline'
@@ -36,7 +36,7 @@ const Tab = styled.li`
3636
`
3737

3838
const ToolbarView = createComponent(
39-
{logs, tab, autoScrollLog, $mainTab},
39+
{logs, tab, autoScrollLog: $autoScrollLog, $mainTab},
4040
({}, {$mainTab, logs, tab, autoScrollLog}) => (
4141
<TabHeaderList justify="space-between" style={{border: 'none'}}>
4242
<div style={{display: 'flex'}}>

src/editor/init.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {sourceCode, codeError, version} from './state'
55
import {retrieveCode, retrieveVersion} from './retrieve'
66
import {compress} from './compression'
77
import {evaluator, versionLoader} from '../evaluator'
8-
import {typechecker} from '../settings/state'
8+
import {$typechecker} from '../settings/state'
99

1010
evalEffect.use(evaluator)
1111

@@ -65,7 +65,7 @@ forward({
6565

6666
sample({
6767
source: sourceCode,
68-
clock: [sourceCode, versionLoader, typechecker],
68+
clock: [sourceCode, versionLoader, $typechecker],
6969
target: evalEffect,
7070
})
7171

src/editor/state.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {createStore, Store} from 'effector'
33
import {retrieveCode} from './retrieve'
44
import defaultVersions from '../versions.json'
55
import {StackFrame} from '../evaluator/stackframe/stack-frame'
6-
import {typechecker} from '../settings/state'
6+
import {$typechecker} from '../settings/state'
77

88
export const version: Store<string> = createStore(defaultVersions[0])
99
export const packageVersions: Store<string[]> = createStore(defaultVersions)
@@ -26,7 +26,7 @@ export const codeError = createStore<
2626
stackFrames: [],
2727
})
2828

29-
export const mode = typechecker.map((typechecker): string => {
29+
export const mode = $typechecker.map((typechecker): string => {
3030
if (typechecker === 'typescript') return 'text/typescript-jsx'
3131
return 'text/flow-jsx'
3232
})

src/evaluator/index.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {combine, createEffect} from 'effector'
44
import {prepareRuntime} from './prepareRuntime'
55
import {selectVersion} from '../editor'
66
import {version, sourceCode, compiledCode} from '../editor/state'
7-
import {typechecker} from '../settings/state'
7+
import {$typechecker} from '../settings/state'
88
// TODO: remove exact dependency on feature, use requirements in the future
99
import {consoleMap} from '~/features/logs'
1010
import {realmStatusApi, realmListener, realmRemoveListener} from '../realm'
@@ -19,7 +19,7 @@ import {availablePlugins} from '@babel/standalone'
1919
import {codeMirror} from '~/editor/view'
2020

2121
const tag = `# source`
22-
const filename = combine(typechecker, (typechecker): string => {
22+
const filename = combine($typechecker, (typechecker): string => {
2323
if (typechecker === 'typescript') return 'repl.ts'
2424
return 'repl.js'
2525
})
@@ -240,7 +240,7 @@ export async function evaluator(code: string) {
240240
},
241241
],
242242
filename: filename.getState(),
243-
types: typechecker.getState() || 'typescript',
243+
types: $typechecker.getState() || 'typescript',
244244
pluginRegistry: {
245245
'effector/babel-plugin': babelPlugin,
246246
'effector/babel-plugin-react': PluginEffectorReact,

src/evaluator/runtime.tsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import {transform, registerPlugin, availablePlugins} from '@babel/standalone'
2-
import { BabelFileResult } from '@babel/core'
1+
import {availablePlugins, registerPlugin, transform} from '@babel/standalone'
32

43
export type BabelPlugin = string | [string, any]
54

@@ -67,8 +66,11 @@ export async function exec({
6766
function transformCode(code: string, babelOptions): string {
6867
const detail = transform(code, babelOptions)
6968
const compiled = detail.code
70-
window.addons ||= {}
71-
window.addons.transformation = detail
69+
if (!window['addons']) {
70+
window['addons'] = {}
71+
}
72+
// window['addons'] ||= {}
73+
window['addons'].transformation = detail
7274
window.dispatchEvent(new CustomEvent('@babel/transform', {detail}))
7375
const wrappedCode = `async function main() {
7476
${compiled}

src/init.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import './github/init'
66
import './share/init'
77
import './editor/init'
88

9-
import {autoScrollLog} from './settings/state'
9+
import {$autoScrollLog} from './settings/state'
1010
import {changeSources, selectVersion} from './editor'
1111
import {realmStatus} from './realm'
1212

@@ -16,14 +16,14 @@ import {
1616
autoScrollEnableClicked,
1717
} from '~/features/logs'
1818

19-
forward({from: autoScrollLog, to: logs.autoScrollLogChanged})
19+
forward({from: $autoScrollLog, to: logs.autoScrollLogChanged})
2020
forward({from: changeSources, to: logs.sourcesChanged})
2121
forward({from: selectVersion, to: logs.versionChanged})
2222
forward({
2323
from: realmStatus.map(status => status.active),
2424
to: logs.realmActiveChanged,
2525
})
2626

27-
autoScrollLog
27+
$autoScrollLog
2828
.on(autoScrollEnableClicked, () => true)
2929
.on(autoScrollDisableClicked, () => false)

src/settings/index.tsx

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
import {SyntheticEvent} from 'react'
2-
import {createEvent, createEffect, Effect} from 'effector'
2+
import {createEffect, createEvent} from 'effector'
33

44
export const flowToggleChange = createEvent<SyntheticEvent<HTMLInputElement>>()
55

66
export const tsToggleChange = createEvent<SyntheticEvent<HTMLInputElement>>()
77

8-
export const typeHoverToggleChange = createEvent<
9-
SyntheticEvent<HTMLInputElement>
10-
>()
8+
export const typeHoverToggleChange = createEvent<SyntheticEvent<HTMLInputElement>>()
119

1210
export const clickPrettify = createEvent<any>()
13-
export const prettier: Effect<
14-
{code: string; parser: 'flow' | 'typescript' | 'babel'},
11+
export const prettierFx = createEffect<{code: string; parser: 'flow' | 'typescript' | 'babel'},
1512
string,
16-
Error
17-
> = createEffect()
13+
Error>()
1814

1915
export const enableAutoScroll = createEvent()
2016
export const disableAutoScroll = createEvent()

src/settings/init.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import {sample, forward, guard} from 'effector'
22

33
import {sourceCode} from '../editor/state'
44

5-
import {clickPrettify, prettier, enableAutoScroll, disableAutoScroll} from '.'
6-
import {domain, typechecker, autoScrollLog} from './state'
5+
import {clickPrettify, prettierFx, enableAutoScroll, disableAutoScroll} from '.'
6+
import {domain, $typechecker, $autoScrollLog} from './state'
77

88
domain.onCreateStore(store => {
99
const snapshot = localStorage.getItem(store.compositeName.fullName)
@@ -18,7 +18,7 @@ domain.onCreateStore(store => {
1818
return store
1919
})
2020

21-
prettier.use(async ({code, parser}) => {
21+
prettierFx.use(async ({code, parser}) => {
2222
const req = await fetch('https://codebox.now.sh/prettier', {
2323
method: 'POST',
2424
body: JSON.stringify({code, config: {parser}}),
@@ -34,17 +34,17 @@ prettier.use(async ({code, parser}) => {
3434
sample({
3535
source: {
3636
code: sourceCode,
37-
parser: typechecker.map(parser => parser ?? 'babel'),
37+
parser: $typechecker.map(parser => parser ?? 'babel'),
3838
},
3939
clock: guard(clickPrettify, {
40-
filter: prettier.pending.map(pending => !pending),
40+
filter: prettierFx.pending.map(pending => !pending),
4141
}),
42-
target: prettier,
42+
target: prettierFx,
4343
})
4444

4545
forward({
46-
from: prettier.doneData,
46+
from: prettierFx.doneData,
4747
to: sourceCode,
4848
})
4949

50-
autoScrollLog.on(enableAutoScroll, _ => true).on(disableAutoScroll, _ => false)
50+
$autoScrollLog.on(enableAutoScroll, _ => true).on(disableAutoScroll, _ => false)

src/settings/state.tsx

+5-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
import {createDomain, combine, Store, createStore} from 'effector'
1+
import {createDomain, createStore, Store} from 'effector'
22

33
export const domain = createDomain('settings')
44

5-
export const tsToggle = domain.store<boolean>(false)
6-
export const typechecker: Store<'typescript' | null> = combine(
7-
tsToggle,
8-
tsEnabled => {
9-
if (tsEnabled) return 'typescript'
10-
return null
11-
},
5+
export const $tsToggle = domain.createStore<boolean>(false)
6+
export const $typechecker: Store<'typescript' | null> = $tsToggle.map(
7+
tsEnabled => tsEnabled ? 'typescript' : null,
128
)
13-
export const autoScrollLog = createStore<boolean>(true)
9+
export const $autoScrollLog = createStore<boolean>(true)

src/settings/view.tsx

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import React from 'react'
2-
import {useStore, useStoreMap, useList} from 'effector-react'
1+
import {useList, useStore, useStoreMap} from 'effector-react'
32
import {styled} from 'linaria/react'
4-
import {clickPrettify, prettier} from '.'
3+
import React from 'react'
4+
5+
import {clickPrettify, prettierFx} from '.'
6+
7+
import {LoadingIcon} from '../components/Icons/LoadingIcon'
58
import {selectVersion} from '../editor'
69
import {packageVersions, version} from '../editor/state'
7-
import {LoadingIcon} from '../components/Icons/LoadingIcon'
810

911
export const PrettifyButton = () => {
1012
const {disabled, pending} = useStoreMap({
11-
store: prettier.pending,
13+
store: prettierFx.pending,
1214
keys: [],
1315
fn: pending => ({
1416
disabled: pending,

0 commit comments

Comments
 (0)