Skip to content

Commit 631c096

Browse files
committed
feat(package): Add transformer, doc and README
1 parent 5fee8c5 commit 631c096

4 files changed

Lines changed: 530 additions & 16 deletions

File tree

.eslintrc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
{
2-
"extends": ["airbnb"]
2+
"extends": ["airbnb"],
3+
"rules": {
4+
"global-require": "off",
5+
"import/no-extraneous-dependencies": "off",
6+
"import/no-unresolved": "off",
7+
"no-param-reassign": "off"
8+
}
39
}

index.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,49 @@
1-
const a = 1;
1+
const gqlLoader = require('graphql-tag/loader');
2+
3+
let rnTransform = null;
4+
5+
try {
6+
// handle RN >= 0.47
7+
rnTransform = require('metro-bundler/src/transformer').transform;
8+
} catch (e) {
9+
try {
10+
// handle RN 0.46
11+
rnTransform = require('metro-bundler/build/transformer').transform;
12+
} catch (e2) {
13+
// handle RN <= 0.45
14+
const oldrnTransform = require('react-native/packager/transformer').transform;
15+
rnTransform = {
16+
transform({ src, filename, options }) {
17+
return oldrnTransform.transform(src, filename, options);
18+
},
19+
};
20+
}
21+
}
22+
23+
const gqlTransform = gqlLoader.bind({
24+
cacheable: () => null,
25+
});
26+
27+
function transform(src, filename, options) {
28+
if (typeof src === 'object') {
29+
// handle RN >= 0.46
30+
({ src, filename, options } = src);
31+
}
32+
33+
// Do custom transformations
34+
let result = src;
35+
if (filename.endsWith('.gql') || filename.endsWith('.graphql')) {
36+
result = gqlTransform(result);
37+
}
38+
39+
const babelCompileResult = rnTransform({
40+
src: result,
41+
filename,
42+
options,
43+
});
44+
45+
// Pass the transformed source to the original react native transformer
46+
return babelCompileResult;
47+
}
48+
49+
module.exports.transform = transform;

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
{
2-
"name": "react-native-graphql-transformer",
3-
"version": "1.0.0",
2+
"name": "@bam.tech/react-native-graphql-transformer",
3+
"version": "0.1.1",
44
"description": "Transform GraphQL source files with ReactNative",
55
"main": "index.js",
66
"repository": "git@github.com:bamlab/react-native-graphql-transformer.git",
77
"author": "Thomas Pucci",
88
"license": "MIT",
99
"scripts": {
10+
"contributors:add": "all-contributors add",
11+
"contributors:generate": "all-contributors generate",
1012
"lint": "eslint '**/*.{js,jsx}' --quiet",
1113
"format": "prettier --write '**/*.{js,jsx}'"
1214
},
@@ -17,6 +19,7 @@
1719
"graphql-tag": "^2.6.0"
1820
},
1921
"devDependencies": {
22+
"all-contributors-cli": "^4.10.0",
2023
"eslint": "^4.13.0",
2124
"eslint-config-airbnb": "^16.1.0",
2225
"eslint-plugin-import": "^2.8.0",

0 commit comments

Comments
 (0)