stigg-api-client 0.457.0 → 0.459.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/stigg/generated/operations.rb +1286 -0
- data/lib/stigg/generated/schema.json +64399 -0
- data/lib/stigg/version.rb +1 -1
- data/stigg-api-client.gemspec +2 -2
- metadata +4 -5
- data/scripts/generate-operations.mjs +0 -99
- data/scripts/generate.sh +0 -17
- data/scripts/publish.sh +0 -31
data/lib/stigg/version.rb
CHANGED
data/stigg-api-client.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
# Specify which files should be added to the gem when it is released.
|
19
19
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
20
|
spec.files = Dir.chdir(__dir__) do
|
21
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
22
|
-
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
21
|
+
`git ls-files -z ; find lib/stigg/generated -print0`.split("\x0").reject do |f|
|
22
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features|scripts)/|\.(?:git|travis|circleci)|appveyor)})
|
23
23
|
end
|
24
24
|
end
|
25
25
|
spec.bindir = "exe"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stigg-api-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.459.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stigg
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphlient
|
@@ -40,11 +40,10 @@ files:
|
|
40
40
|
- Rakefile
|
41
41
|
- lib/stigg.rb
|
42
42
|
- lib/stigg/client.rb
|
43
|
+
- lib/stigg/generated/operations.rb
|
44
|
+
- lib/stigg/generated/schema.json
|
43
45
|
- lib/stigg/version.rb
|
44
46
|
- project.json
|
45
|
-
- scripts/generate-operations.mjs
|
46
|
-
- scripts/generate.sh
|
47
|
-
- scripts/publish.sh
|
48
47
|
- stigg-api-client.gemspec
|
49
48
|
homepage: https://stigg.io
|
50
49
|
licenses:
|
@@ -1,99 +0,0 @@
|
|
1
|
-
import * as gql from 'graphql';
|
2
|
-
import fs from 'fs';
|
3
|
-
|
4
|
-
const schema = fs.readFileSync(
|
5
|
-
'../api-client-schema/src/generated/schema.graphql',
|
6
|
-
'utf8'
|
7
|
-
);
|
8
|
-
|
9
|
-
const operations = fs.readFileSync('operations.graphql', 'utf8');
|
10
|
-
|
11
|
-
const gqlSchema = gql.buildSchema(schema);
|
12
|
-
|
13
|
-
const gqlOperations = gql.parse(operations);
|
14
|
-
|
15
|
-
function generateOperationsModule() {
|
16
|
-
const typeInfo = new gql.TypeInfo(gqlSchema);
|
17
|
-
const outputProgram = gql.visit(
|
18
|
-
gqlOperations,
|
19
|
-
gql.visitWithTypeInfo(typeInfo, visitor(gqlSchema, typeInfo))
|
20
|
-
);
|
21
|
-
|
22
|
-
const modules = ['Fragment', 'Mutation', 'Query']
|
23
|
-
.map(
|
24
|
-
(moduleName) =>
|
25
|
-
`module ${moduleName}\n${outputProgram
|
26
|
-
.filter((x) => x.moduleName === moduleName)
|
27
|
-
.map((x) => x.element)
|
28
|
-
.join('\n\n')}\nend`
|
29
|
-
)
|
30
|
-
.join('\n');
|
31
|
-
|
32
|
-
return `# frozen_string_literal: true\n\nmodule Stigg\n${modules}\nend`;
|
33
|
-
}
|
34
|
-
|
35
|
-
function findFragments(node, results = new Set()) {
|
36
|
-
if (node.kind === 'FragmentSpread') {
|
37
|
-
results.add(node.name.value);
|
38
|
-
gqlOperations.definitions.find((def) => {
|
39
|
-
if (
|
40
|
-
def.kind === 'FragmentDefinition' &&
|
41
|
-
def.name.value === node.name.value
|
42
|
-
) {
|
43
|
-
findFragments(def, results);
|
44
|
-
}
|
45
|
-
});
|
46
|
-
}
|
47
|
-
node.selectionSet?.selections?.forEach((node) =>
|
48
|
-
findFragments(node, results)
|
49
|
-
);
|
50
|
-
return results;
|
51
|
-
}
|
52
|
-
|
53
|
-
function visitor(schema, typeInfo) {
|
54
|
-
return {
|
55
|
-
enter(node) {
|
56
|
-
typeInfo.enter(node);
|
57
|
-
},
|
58
|
-
leave(node) {
|
59
|
-
typeInfo.leave(node);
|
60
|
-
switch (node.kind) {
|
61
|
-
case 'Document':
|
62
|
-
return node.definitions;
|
63
|
-
case 'OperationDefinition': {
|
64
|
-
const results = findFragments(node);
|
65
|
-
const rawQuery = node.loc.source.body.substring(
|
66
|
-
node.loc.start,
|
67
|
-
node.loc.end
|
68
|
-
);
|
69
|
-
const namelessQuery = rawQuery.replace(
|
70
|
-
`${node.operation} ${node.name.value}`,
|
71
|
-
`${node.operation} `
|
72
|
-
);
|
73
|
-
const includedFragments = [...results]
|
74
|
-
.map((x) => `#{Fragment::${x}}\n`)
|
75
|
-
.join('');
|
76
|
-
const constantName =
|
77
|
-
node.name.value[0].toUpperCase() + node.name.value.slice(1);
|
78
|
-
return {
|
79
|
-
moduleName: node.operation === 'mutation' ? 'Mutation' : 'Query',
|
80
|
-
element: `${constantName} = <<-GRAPHQL\n${namelessQuery}\n${includedFragments}GRAPHQL`,
|
81
|
-
};
|
82
|
-
}
|
83
|
-
case 'FragmentDefinition': {
|
84
|
-
const querySource = node.loc.source.body.substring(
|
85
|
-
node.loc.start,
|
86
|
-
node.loc.end
|
87
|
-
);
|
88
|
-
return {
|
89
|
-
moduleName: 'Fragment',
|
90
|
-
element: `${node.name.value} = <<-GRAPHQL\n${querySource}\nGRAPHQL`,
|
91
|
-
};
|
92
|
-
}
|
93
|
-
}
|
94
|
-
},
|
95
|
-
};
|
96
|
-
}
|
97
|
-
|
98
|
-
const module = generateOperationsModule();
|
99
|
-
fs.writeFileSync('lib/stigg/generated/operations.rb', module);
|
data/scripts/generate.sh
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
#!/bin/bash -e
|
2
|
-
|
3
|
-
# stitch the operation files together
|
4
|
-
cat ../api-client-schema/src/operations/*.graphql > operations.graphql
|
5
|
-
|
6
|
-
mkdir -p lib/stigg/generated/
|
7
|
-
|
8
|
-
cat <<-EOF > lib/stigg/generated/schema.json
|
9
|
-
$(echo { \"data\": ) $(cat ../api-client-schema/src/generated/schema.json) $(echo })
|
10
|
-
EOF
|
11
|
-
|
12
|
-
node scripts/generate-operations.mjs
|
13
|
-
rm operations.graphql
|
14
|
-
|
15
|
-
bundle exec rubocop -a lib/stigg/generated/operations.rb
|
16
|
-
|
17
|
-
printf "api-client-ruby generated!\n"
|
data/scripts/publish.sh
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
#!/bin/bash -e
|
2
|
-
|
3
|
-
VERSION=$1
|
4
|
-
|
5
|
-
if [ -z "$VERSION" ]; then
|
6
|
-
echo "Usage: ./scripts/publish.sh <version>"
|
7
|
-
exit 1
|
8
|
-
fi
|
9
|
-
|
10
|
-
bundle config unset deployment
|
11
|
-
|
12
|
-
bundle exec bump set "${VERSION}" --no-commit --no-bundle
|
13
|
-
git diff
|
14
|
-
|
15
|
-
echo "Building..."
|
16
|
-
bundle exec rake build
|
17
|
-
|
18
|
-
# create a temporary commit, since it's not possible to
|
19
|
-
# release with a dirty working directory
|
20
|
-
TAG="v${VERSION}"
|
21
|
-
echo "Creating temporary commit and tag (${TAG})..."
|
22
|
-
git add .
|
23
|
-
git commit --no-verify -m "tmp commit for ruby release"
|
24
|
-
git tag "${TAG}"
|
25
|
-
|
26
|
-
echo "Releasing..."
|
27
|
-
bundle exec rake release -v || (git tag -d "${TAG}" ; git reset --soft HEAD~1 ; exit 1)
|
28
|
-
git tag -d "${TAG}"
|
29
|
-
git reset --soft HEAD~1
|
30
|
-
|
31
|
-
echo "api-client-ruby published!"
|