Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
* @autoCodesplit

* node version in CI

* handle conditionals via variables

* handle conditionals

* ci

* up ncc

* cache

* ci

* ci

* adapt to aliased fragments

* autoCodesplit -> codesplit

* changelog

* use main branch

* ci

* ci
  • Loading branch information
zth authored Jul 14, 2024
1 parent acb4a4f commit 73953de
Show file tree
Hide file tree
Showing 35 changed files with 1,423 additions and 45 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
node-version: 20
env:
CI: true
- name: Install esy
run: npm install -g esy
- name: Build PPX
uses: esy/github-action@master
uses: esy/github-action@6863524ed7748e7882e317e31ac2b8b107011744
with:
cache-key: ${{ hashFiles('esy.lock/index.json') }}
working-directory: packages/rescript-relay/rescript-relay-ppx
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18.x
node-version: 20.x
env:
CI: true
- name: Esy install
Expand Down Expand Up @@ -70,15 +70,15 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18.x
node-version: 20.x
env:
CI: true
- name: Install esy
run: npm install -g esy
- name: Build PPX
uses: esy/github-action@master
uses: esy/github-action@6863524ed7748e7882e317e31ac2b8b107011744
with:
cache-key: ${{ matrix.platform }}-${{ hashFiles('esy.lock/index.json') }}-v3
cache-key: ${{ matrix.platform }}-${{ hashFiles('esy.lock/index.json') }}-v4
working-directory: packages/rescript-relay/rescript-relay-ppx
- name: Strip PPX binary
if: runner.os != 'Windows'
Expand Down Expand Up @@ -154,15 +154,15 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2-beta
with:
node-version: 16
node-version: 20
env:
CI: true
- name: Install esy
run: npm install -g esy
- name: Build PPX
uses: esy/github-action@v1
uses: esy/github-action@6863524ed7748e7882e317e31ac2b8b107011744
with:
cache-key: ${{ hashFiles('esy.lock/index.json') }}
cache-key: ${{ hashFiles('esy.lock/index.json') }}-v4
working-directory: packages/rescript-relay/rescript-relay-ppx
- name: Build assets
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 12.19.0
node-version: 20
env:
CI: true
- name: Install
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
submodules: "true"
- uses: actions/setup-node@v3
with:
node-version: 16
node-version: 20
env:
CI: true
- uses: actions-rs/toolchain@v1
Expand All @@ -25,12 +25,12 @@ jobs:
override: true
- name: Install esy
run: npm install -g esy
- uses: esy/github-action@master
- uses: esy/github-action@6863524ed7748e7882e317e31ac2b8b107011744
with:
cache-key: ${{ hashFiles('esy.lock/index.json') }}
working-directory: packages/rescript-relay/rescript-relay-ppx
- name: Build PPX
uses: esy/github-action@master
uses: esy/github-action@6863524ed7748e7882e317e31ac2b8b107011744
with:
cache-key: ${{ hashFiles('esy.lock/index.json') }}
working-directory: packages/rescript-relay/rescript-relay-ppx
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ppx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14.x
node-version: 20.x
env:
CI: true
- name: Esy install
Expand Down Expand Up @@ -64,13 +64,13 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.x
node-version: 20.x
env:
CI: true
- name: Install esy
run: npm install -g esy
- name: Build PPX
uses: esy/github-action@master
uses: esy/github-action@6863524ed7748e7882e317e31ac2b8b107011744
with:
cache-key: ${{ matrix.platform }}-${{ hashFiles('esy.lock/index.json') }}-v3
working-directory: packages/rescript-relay/rescript-relay-ppx
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
# Unreleased

- Support `@alias` fragments.
- Experimental support for `@codesplit`, a RescriptRelay exclusive directive that's essentially a client side version of [Relay data-driven dependencies (3D)](https://relay.dev/docs/glossary/#3d).

# 3.0.0-rc.9

Expand Down
2 changes: 1 addition & 1 deletion packages/relay
Submodule relay updated 54 files
+19 −0 compiler/crates/relay-compiler/src/artifact_content/content.rs
+268 −4 compiler/crates/relay-compiler/src/artifact_content/rescript_relay_utils.rs
+1 −1 compiler/crates/relay-compiler/src/build_project/generate_artifacts.rs
+7 −0 compiler/crates/relay-schema/src/relay-extensions.graphql
+8 −3 compiler/crates/relay-transforms/src/apply_transforms.rs
+8 −0 compiler/crates/relay-transforms/src/errors.rs
+1 −1 compiler/crates/relay-transforms/src/flatten.rs
+4 −2 compiler/crates/relay-transforms/src/lib.rs
+161 −0 compiler/crates/relay-transforms/src/rescript_relay_inline_codesplit.rs
+0 −121 compiler/crates/relay-transforms/src/rescript_relay_remove_custom_directives.rs
+104 −0 compiler/crates/relay-transforms/src/rescript_relay_transform_codesplit.rs
+2 −2 compiler/crates/relay-transforms/src/util.rs
+42 −13 compiler/crates/relay-typegen/src/rescript.rs
+8 −2 compiler/crates/relay-typegen/src/rescript_ast.rs
+3 −3 compiler/crates/relay-typegen/src/rescript_relay_visitor.rs
+21 −7 compiler/crates/relay-typegen/src/rescript_utils.rs
+1 −0 compiler/crates/relay-typegen/src/type_selection.rs
+2 −1 compiler/crates/relay-typegen/src/visit.rs
+1 −0 compiler/test-project-res-preloadable/persisted_queries.json
+5 −2 compiler/test-project-res-preloadable/relay.config.js
+10 −0 compiler/test-project-res-preloadable/src/Test_preloadedQuery.res
+6 −0 compiler/test-project-res-preloadable/src/UserAvatar.res
+6 −0 compiler/test-project-res-preloadable/src/UserName.res
+13 −0 compiler/test-project-res-preloadable/src/__generated__/RelaySchemaAssets_graphql.res
+271 −0 compiler/test-project-res-preloadable/src/__generated__/TestPreloadedQueryWithCodesplitQuery_graphql.res
+71 −0 ...test-project-res-preloadable/src/__generated__/TestPreloadedQueryWithCodesplitQuery_preloadable_graphql.res
+7 −5 ...ler/test-project-res-preloadable/src/__generated__/TestPreloadedQueryWithProvidedVariablesQuery_graphql.res
+5 −5 ...ject-res-preloadable/src/__generated__/TestPreloadedQueryWithProvidedVariablesQuery_preloadable_graphql.res
+3 −1 compiler/test-project-res-preloadable/src/__generated__/TestPreloadedQuery_graphql.res
+1 −1 compiler/test-project-res-preloadable/src/__generated__/TestPreloadedQuery_preloadable_graphql.res
+73 −0 compiler/test-project-res-preloadable/src/__generated__/UserAvatar_user_graphql.res
+68 −0 compiler/test-project-res-preloadable/src/__generated__/UserName_user_graphql.res
+5 −0 compiler/test-project-res/schema.graphql
+5 −0 compiler/test-project-res/src/FriendComponent.res
+5 −0 compiler/test-project-res/src/FriendComponent2.res
+5 −0 compiler/test-project-res/src/FriendComponentSkip.res
+5 −0 compiler/test-project-res/src/GroupAvatar.res
+5 −0 compiler/test-project-res/src/RichContent.res
+10 −0 compiler/test-project-res/src/Test_aliasedFragments.res
+21 −0 compiler/test-project-res/src/Test_codesplit.res
+6 −0 compiler/test-project-res/src/UserAvatar.res
+6 −0 compiler/test-project-res/src/UserName.res
+5 −0 compiler/test-project-res/src/UserNode.res
+60 −0 compiler/test-project-res/src/__generated__/FriendComponent2_user_graphql.res
+60 −0 compiler/test-project-res/src/__generated__/FriendComponentSkip_user_graphql.res
+60 −0 compiler/test-project-res/src/__generated__/FriendComponent_user_graphql.res
+60 −0 compiler/test-project-res/src/__generated__/GroupAvatar_group_graphql.res
+60 −0 compiler/test-project-res/src/__generated__/RichContent_content_graphql.res
+3 −9 compiler/test-project-res/src/__generated__/TestAliasedFragments_container_graphql.res
+100 −0 compiler/test-project-res/src/__generated__/TestAliasedFragments_required_graphql.res
+497 −0 compiler/test-project-res/src/__generated__/TestCodesplitQuery_graphql.res
+79 −0 compiler/test-project-res/src/__generated__/UserAvatar_user_graphql.res
+68 −0 compiler/test-project-res/src/__generated__/UserName_user_graphql.res
+68 −0 compiler/test-project-res/src/__generated__/UserNode_node_graphql.res
2 changes: 1 addition & 1 deletion packages/rescript-relay-cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"@types/node": "15.12.5",
"@types/prettier": "2.3.0",
"@types/relay-config": "6.0.1",
"@vercel/ncc": "0.28.6",
"@vercel/ncc": "0.38.1",
"fast-glob": "3.2.6",
"jest": "27.0.6",
"ts-jest": "27.0.3",
Expand Down
8 changes: 4 additions & 4 deletions packages/rescript-relay-cli/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -693,10 +693,10 @@
dependencies:
"@types/yargs-parser" "*"

"@vercel/ncc@0.28.6":
version "0.28.6"
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.28.6.tgz#073c0ce8e0269210c0a9f180fb0bf949eecc20e0"
integrity sha512-t4BoSSuyK8BZaUE0gV18V6bkFs4st7baumtFGa50dv1tMu2GDBEBF8sUZaKBdKiL6DzJ2D2+XVCwYWWDcQOYdQ==
"@vercel/ncc@0.38.1":
version "0.38.1"
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.38.1.tgz#13f08738111e1d9e8a22fd6141f3590e54d9a60e"
integrity sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==

abab@^2.0.3, abab@^2.0.5:
version "2.0.5"
Expand Down
11 changes: 11 additions & 0 deletions packages/rescript-relay/__tests__/GroupAvatar.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module Fragment = %relay(`
fragment GroupAvatar_group on Group {
name
}
`)

@react.component
let make = (~group: RescriptRelay.fragmentRefs<[#GroupAvatar_group]>) => {
let group = Fragment.use(group)
React.string("Group name: " ++ group.name)
}
12 changes: 12 additions & 0 deletions packages/rescript-relay/__tests__/HasNameComponent.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module Fragment = %relay(`
fragment HasNameComponent_hasName on HasName {
name
}
`)

@react.component
let make = (~hasName: RescriptRelay.fragmentRefs<[#HasNameComponent_hasName]>) => {
let hasName = Fragment.use(hasName)

<div> {React.string("Has name: " ++ hasName.name)} </div>
}
4 changes: 3 additions & 1 deletion packages/rescript-relay/__tests__/RelayEnv.res
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ let fetchQuery: RescriptRelay.Network.fetchFunctionPromise = async (
)

if Response.ok(resp) {
await Response.json(resp)
let json = await Response.json(resp)
RescriptRelay.Network.preloadResources(~operation, ~variables, ~response=json)
json
} else {
raise(Graphql_error("Request failed: " ++ Response.statusText(resp)))
}
Expand Down
12 changes: 12 additions & 0 deletions packages/rescript-relay/__tests__/RichContent.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module Fragment = %relay(`
fragment RichContent_content on RichContent {
content
}
`)

@react.component
let make = (~content: RescriptRelay.fragmentRefs<[#RichContent_content]>) => {
let content = Fragment.use(content)

<div> {React.string("Rich content: " ++ content.content)} </div>
}
8 changes: 2 additions & 6 deletions packages/rescript-relay/__tests__/Test_aliasedFragments.res
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,8 @@ module Test = {
@react.component
let make = () => {
let query = Query.use(~variables={skipThing: false})
let firstNameData = FragmentFirstName.use(
query.loggedInUser.testAliasedFragments_userFirstName.fragmentRefs,
)
let lastNameData = FragmentLastName.useOpt(
query.loggedInUser.testAliasedFragments_userLastName->Belt.Option.map(f => f.fragmentRefs),
)
let firstNameData = FragmentFirstName.use(query.loggedInUser.testAliasedFragments_userFirstName)
let lastNameData = FragmentLastName.useOpt(query.loggedInUser.testAliasedFragments_userLastName)

<div>
{React.string(
Expand Down
Loading

0 comments on commit 73953de

Please sign in to comment.