Skip to content

Commit e74194f

Browse files
authored
Merge pull request #774 from appwrite/fix-exports-enums-js
fix: exports enums js
2 parents 6382f41 + d99c26d commit e74194f

File tree

11 files changed

+38
-37
lines changed

11 files changed

+38
-37
lines changed

src/SDK/SDK.php

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ public function generate(string $target): void
545545
'contactURL' => $this->spec->getContactURL(),
546546
'contactEmail' => $this->spec->getContactEmail(),
547547
'services' => $this->spec->getServices(),
548-
'enums' => $this->spec->getEnumNames(),
548+
'enums' => $this->spec->getEnums(),
549549
'definitions' => $this->spec->getDefinitions(),
550550
'global' => [
551551
'headers' => $this->spec->getGlobalHeaders(),
@@ -636,24 +636,10 @@ public function generate(string $target): void
636636
}
637637
break;
638638
case 'enum':
639-
foreach ($this->spec->getServices() as $key => $service) {
640-
$methods = $this->spec->getMethods($key);
639+
foreach ($this->spec->getEnums() as $key => $enum) {
640+
$params['enum'] = $enum;
641641

642-
foreach ($methods as $method) {
643-
$parameters = $method['parameters']['all'];
644-
645-
foreach ($parameters as $parameter) {
646-
// Check if the enum field is defined
647-
if (isset($parameter['enumValues'])) {
648-
$params['enum'] = [
649-
'name' => $parameter['enumName'] ?? $parameter['name'],
650-
'enum' => $parameter['enumValues'],
651-
'keys' => $parameter['enumKeys'],
652-
];
653-
$this->render($template, $destination, $block, $params, $minify);
654-
}
655-
}
656-
}
642+
$this->render($template, $destination, $block, $params, $minify);
657643
}
658644
break;
659645
}

src/Spec/Spec.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,9 @@ public function setAttribute($key, $value, $type = self::SET_TYPE_ASSIGN)
166166
}
167167

168168
/**
169-
* Get EnumNames
169+
* Get Enums
170170
*
171171
* @return array
172172
*/
173-
abstract public function getEnumNames();
173+
abstract public function getEnums();
174174
}

src/Spec/Swagger2.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -357,21 +357,28 @@ public function getDefinitions()
357357
/**
358358
* @return array
359359
*/
360-
public function getEnumNames(): array
360+
public function getEnums(): array
361361
{
362362
$list = [];
363363

364364
foreach ($this->getServices() as $key => $service) {
365365
foreach ($this->getMethods($key) as $method) {
366366
if (isset($method['parameters']) && is_array($method['parameters'])) {
367367
foreach ($method['parameters']['all'] as $parameter) {
368-
if (isset($parameter['enumValues'])) {
369-
$list[] = $parameter['enumName'] ?? $parameter['name'];
368+
$enumName = $parameter['enumName'] ?? $parameter['name'];
369+
370+
if (isset($parameter['enumValues']) && !\in_array($enumName, $list)) {
371+
$list[$enumName] = [
372+
'name' => $enumName,
373+
'enum' => $parameter['enumValues'],
374+
'keys' => $parameter['enumKeys'],
375+
];
370376
}
371377
}
372378
}
373379
}
374380
}
375-
return \array_values(\array_unique($list));
381+
382+
return \array_values($list);
376383
}
377384
}

templates/dart/lib/enums.dart.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
library {{ language.params.packageName }}.enums;
33

44
{% for enum in spec.enums %}
5-
part 'src/enums/{{enum | caseSnake}}.dart';
5+
part 'src/enums/{{enum.name | caseSnake}}.dart';
66
{% endfor %}

templates/deno/mod.ts.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { {{spec.title | caseUcfirst}}Exception } from "./src/exception.ts";
99
import { {{service.name | caseUcfirst}} } from "./src/services/{{service.name | caseDash}}.ts";
1010
{% endfor %}
1111
{% for enum in spec.enums %}
12-
import { {{enum | caseUcfirst}} } from "./src/enums/{{enum | caseDash}}.ts";
12+
import { {{enum.name | caseUcfirst}} } from "./src/enums/{{enum.name | caseDash}}.ts";
1313
{% endfor %}
1414

1515
export {
@@ -24,7 +24,7 @@ export {
2424
{{service.name | caseUcfirst}},
2525
{% endfor %}
2626
{% for enum in spec.enums %}
27-
{{enum | caseUcfirst}},
27+
{{enum.name | caseUcfirst}},
2828
{% endfor %}
2929
};
3030

templates/node/index.d.ts.twig

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,4 +254,12 @@ declare module "{{ language.params.npmPackage|caseDash }}" {
254254
{% endfor %}
255255
}
256256
{% endfor %}
257-
}
257+
{% for enum in spec.enums %}
258+
export const {{ enum.name | caseUcfirst }}: Readonly<{
259+
{% for value in enum.enum %}
260+
{% set key = enum.keys is empty ? value : enum.keys[loop.index0] %}
261+
{{ key | caseEnumKey }}: '{{ value }}',
262+
{% endfor %}
263+
}>
264+
{% endfor %}
265+
}

templates/node/index.js.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const {{spec.title | caseUcfirst}}Exception = require('./lib/exception.js');
99
const {{service.name | caseUcfirst}} = require('./lib/services/{{service.name | caseDash}}.js');
1010
{% endfor %}
1111
{% for enum in spec.enums %}
12-
const {{enum | caseUcfirst}} = require("./lib/enums/{{enum | caseDash}}.js");
12+
const {{enum.name | caseUcfirst}} = require("./lib/enums/{{enum.name | caseDash}}.js");
1313
{% endfor %}
1414

1515
module.exports = {
@@ -23,6 +23,6 @@ module.exports = {
2323
{% for service in spec.services %}
2424
{{service.name | caseUcfirst}},
2525
{% endfor %}{% for enum in spec.enums %}
26-
{{ enum | caseUcfirst }},
26+
{{ enum.name | caseUcfirst }},
2727
{% endfor %}
2828
};

templates/node/lib/enums/enum.js.twig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
const {{ enum.name | caseUcfirst | overrideIdentifier }} = {
1+
const {{ enum.name | caseUcfirst | overrideIdentifier }} = Object.freeze({
22
{% for value in enum.enum %}
33
{% set key = enum.keys is empty ? value : enum.keys[loop.index0] %}
4-
{{ key | replace({'-': '',' ': ''}) | caseEnumKey }}: '{{value}}' {% if not loop.last %},{% endif %}
4+
{{ key | caseEnumKey }}: '{{value}}' {% if not loop.last %},{% endif %}
55

66
{% endfor %}
7-
}
7+
});
88

99
module.exports = {{ enum.name | caseUcfirst | overrideIdentifier }};

templates/python/package/encoders/value_class_encoder.py.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import json
22
{%~ for enum in spec.enums %}
3-
from ..enums.{{ enum | caseSnake }} import {{ enum | caseUcfirst | overrideIdentifier }}
3+
from ..enums.{{ enum.name | caseSnake }} import {{ enum.name | caseUcfirst | overrideIdentifier }}
44
{%~ endfor %}
55

66
class ValueClassEncoder(json.JSONEncoder):
77
def default(self, o):
88
{%~ for enum in spec.enums %}
9-
if isinstance(o, {{ enum | caseUcfirst | overrideIdentifier }}):
9+
if isinstance(o, {{ enum.name | caseUcfirst | overrideIdentifier }}):
1010
return o.value
1111

1212
{%~ endfor %}

templates/ruby/lib/container.rb.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ require_relative '{{ spec.title | caseSnake }}/models/{{ defintion.name | caseSn
1717
{% endfor %}
1818

1919
{% for enum in spec.enums %}
20-
require_relative '{{ spec.title | caseSnake }}/enums/{{ enum | caseSnake }}'
20+
require_relative '{{ spec.title | caseSnake }}/enums/{{ enum.name | caseSnake }}'
2121
{% endfor %}
2222

2323
{% for service in spec.services %}

0 commit comments

Comments
 (0)